@pierre/diffs 1.3.0-beta.1 → 1.3.0-beta.11

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 (705) 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 +335 -51
  5. package/dist/components/CodeView.js.map +1 -1
  6. package/dist/components/File.d.ts +12 -8
  7. package/dist/components/File.d.ts.map +1 -1
  8. package/dist/components/File.js +103 -40
  9. package/dist/components/File.js.map +1 -1
  10. package/dist/components/FileDiff.d.ts +82 -36
  11. package/dist/components/FileDiff.d.ts.map +1 -1
  12. package/dist/components/FileDiff.js +382 -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 +36 -9
  27. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  28. package/dist/components/VirtualizedFileDiff.js +371 -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 +12 -2
  47. package/dist/editor/editStack.d.ts.map +1 -1
  48. package/dist/editor/editStack.js +57 -16
  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 +1951 -709
  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 +306 -190
  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 +191 -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 +101 -16
  91. package/dist/editor/selection.d.ts.map +1 -1
  92. package/dist/editor/selection.js +863 -137
  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 +518 -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 +20 -2
  208. package/dist/managers/InteractionManager.d.ts.map +1 -1
  209. package/dist/managers/InteractionManager.js +159 -83
  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 +10 -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 +3 -7
  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 +278 -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 +51 -4
  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/isGutterUtilityPath.d.ts +5 -0
  581. package/dist/utils/isGutterUtilityPath.d.ts.map +1 -0
  582. package/dist/utils/isGutterUtilityPath.js +12 -0
  583. package/dist/utils/isGutterUtilityPath.js.map +1 -0
  584. package/dist/utils/isStyleNode.d.ts.map +1 -1
  585. package/dist/utils/isStyleNode.js +1 -1
  586. package/dist/utils/isStyleNode.js.map +1 -1
  587. package/dist/utils/isWorkerContext.d.ts.map +1 -1
  588. package/dist/utils/isWorkerContext.js +1 -1
  589. package/dist/utils/isWorkerContext.js.map +1 -1
  590. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  591. package/dist/utils/iterateOverDiff.js +178 -214
  592. package/dist/utils/iterateOverDiff.js.map +1 -1
  593. package/dist/utils/normalizeDiffResolution.d.ts.map +1 -1
  594. package/dist/utils/normalizeDiffResolution.js +1 -1
  595. package/dist/utils/normalizeDiffResolution.js.map +1 -1
  596. package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  597. package/dist/utils/parseDiffDecorations.js +1 -2
  598. package/dist/utils/parseDiffDecorations.js.map +1 -1
  599. package/dist/utils/parseDiffFromFile.d.ts +1 -2
  600. package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
  601. package/dist/utils/parseDiffFromFile.js +27 -7
  602. package/dist/utils/parseDiffFromFile.js.map +1 -1
  603. package/dist/utils/parseLineType.d.ts.map +1 -1
  604. package/dist/utils/parseLineType.js +1 -1
  605. package/dist/utils/parseLineType.js.map +1 -1
  606. package/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
  607. package/dist/utils/parseMergeConflictDiffFromFile.js +5 -5
  608. package/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -1
  609. package/dist/utils/parsePatchFiles.d.ts.map +1 -1
  610. package/dist/utils/parsePatchFiles.js +101 -11
  611. package/dist/utils/parsePatchFiles.js.map +1 -1
  612. package/dist/utils/prefersReducedMotion.d.ts.map +1 -1
  613. package/dist/utils/prefersReducedMotion.js +1 -1
  614. package/dist/utils/prefersReducedMotion.js.map +1 -1
  615. package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
  616. package/dist/utils/prerenderHTMLIfNecessary.js +1 -1
  617. package/dist/utils/prerenderHTMLIfNecessary.js.map +1 -1
  618. package/dist/utils/processLine.d.ts +1 -1
  619. package/dist/utils/processLine.d.ts.map +1 -1
  620. package/dist/utils/processLine.js +1 -2
  621. package/dist/utils/processLine.js.map +1 -1
  622. package/dist/utils/realignChangeContent.d.ts +28 -0
  623. package/dist/utils/realignChangeContent.d.ts.map +1 -0
  624. package/dist/utils/realignChangeContent.js +142 -0
  625. package/dist/utils/realignChangeContent.js.map +1 -0
  626. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  627. package/dist/utils/renderDiffWithHighlighter.js +9 -8
  628. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  629. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  630. package/dist/utils/renderFileWithHighlighter.js +5 -4
  631. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  632. package/dist/utils/resolveConflict.d.ts.map +1 -1
  633. package/dist/utils/resolveConflict.js +1 -2
  634. package/dist/utils/resolveConflict.js.map +1 -1
  635. package/dist/utils/resolveRegion.d.ts.map +1 -1
  636. package/dist/utils/resolveRegion.js +1 -1
  637. package/dist/utils/resolveRegion.js.map +1 -1
  638. package/dist/utils/roundToDevicePixel.d.ts.map +1 -1
  639. package/dist/utils/roundToDevicePixel.js +1 -1
  640. package/dist/utils/roundToDevicePixel.js.map +1 -1
  641. package/dist/utils/scrollbarGutter.d.ts.map +1 -1
  642. package/dist/utils/scrollbarGutter.js +1 -2
  643. package/dist/utils/scrollbarGutter.js.map +1 -1
  644. package/dist/utils/setLanguageOverride.d.ts.map +1 -1
  645. package/dist/utils/setLanguageOverride.js +1 -1
  646. package/dist/utils/setLanguageOverride.js.map +1 -1
  647. package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
  648. package/dist/utils/setWrapperNodeProps.js +1 -2
  649. package/dist/utils/setWrapperNodeProps.js.map +1 -1
  650. package/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
  651. package/dist/utils/shouldUseTokenTransformer.js +1 -1
  652. package/dist/utils/shouldUseTokenTransformer.js.map +1 -1
  653. package/dist/utils/splitFileContents.d.ts.map +1 -1
  654. package/dist/utils/splitFileContents.js +1 -2
  655. package/dist/utils/splitFileContents.js.map +1 -1
  656. package/dist/utils/trimPatchContext.d.ts.map +1 -1
  657. package/dist/utils/trimPatchContext.js +1 -2
  658. package/dist/utils/trimPatchContext.js.map +1 -1
  659. package/dist/utils/updateDiffHunks.d.ts +24 -0
  660. package/dist/utils/updateDiffHunks.d.ts.map +1 -0
  661. package/dist/utils/updateDiffHunks.js +235 -0
  662. package/dist/utils/updateDiffHunks.js.map +1 -0
  663. package/dist/utils/virtualDiffLayout.d.ts +62 -2
  664. package/dist/utils/virtualDiffLayout.d.ts.map +1 -1
  665. package/dist/utils/virtualDiffLayout.js +137 -3
  666. package/dist/utils/virtualDiffLayout.js.map +1 -1
  667. package/dist/utils/wrapTokenFragments.d.ts +1 -1
  668. package/dist/utils/wrapTokenFragments.d.ts.map +1 -1
  669. package/dist/utils/wrapTokenFragments.js +1 -2
  670. package/dist/utils/wrapTokenFragments.js.map +1 -1
  671. package/dist/worker/WorkerPoolManager.d.ts +7 -2
  672. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  673. package/dist/worker/WorkerPoolManager.js +88 -23
  674. package/dist/worker/WorkerPoolManager.js.map +1 -1
  675. package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
  676. package/dist/worker/getOrCreateWorkerPoolSingleton.js +1 -2
  677. package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -1
  678. package/dist/worker/index.d.ts +2 -2
  679. package/dist/worker/index.js +1 -2
  680. package/dist/worker/types.d.ts +11 -1
  681. package/dist/worker/types.d.ts.map +1 -1
  682. package/dist/worker/wasm-B9ZqxnKj.js +8 -0
  683. package/dist/worker/wasm-B9ZqxnKj.js.map +1 -0
  684. package/dist/worker/worker-portable.js +3361 -6211
  685. package/dist/worker/worker-portable.js.map +1 -1
  686. package/dist/worker/worker.js +321 -314
  687. package/dist/worker/worker.js.map +1 -1
  688. package/package.json +29 -32
  689. package/dist/editor/css.d.ts +0 -6
  690. package/dist/editor/css.d.ts.map +0 -1
  691. package/dist/editor/css.js +0 -218
  692. package/dist/editor/css.js.map +0 -1
  693. package/dist/editor/quickEdit.d.ts +0 -29
  694. package/dist/editor/quickEdit.d.ts.map +0 -1
  695. package/dist/editor/quickEdit.js +0 -81
  696. package/dist/editor/quickEdit.js.map +0 -1
  697. package/dist/editor/tokenzier.d.ts.map +0 -1
  698. package/dist/editor/tokenzier.js +0 -348
  699. package/dist/editor/tokenzier.js.map +0 -1
  700. package/dist/react/EditorContext.d.ts +0 -16
  701. package/dist/react/EditorContext.d.ts.map +0 -1
  702. package/dist/react/EditorContext.js +0 -26
  703. package/dist/react/EditorContext.js.map +0 -1
  704. package/dist/worker/wasm-D4DU5jgR.js +0 -10
  705. 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,30 @@ 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
+ flushManagers() {
171
+ super.flushManagers();
172
+ if (this.lineStateRefreshPending) this.flushDeferredLineState();
173
+ }
174
+ prepareCodeViewItem(fileDiff, top, reset, lineAnnotations) {
129
175
  const targetChanged = !areDiffTargetsEqual(this.fileDiff, fileDiff);
130
- let shouldResetLayoutCache = reset?.resetDiffLayoutCache === true || targetChanged;
176
+ const annotationsChanged = this.syncLineAnnotations(lineAnnotations);
177
+ let shouldResetLayoutCache = reset?.resetDiffLayoutCache === true || targetChanged || annotationsChanged;
131
178
  let includeEstimatedHeights = targetChanged || reset?.resetDiffLayoutCache === true && reset.includeEstimatedDiffHeights;
132
179
  if (reset?.metrics != null) {
133
180
  this.metrics = computeVirtualFileMetrics(reset.metrics);
134
181
  shouldResetLayoutCache = true;
135
182
  includeEstimatedHeights = true;
136
183
  }
137
- const { collapsed = false } = this.options;
184
+ const { collapsed = false, expandUnchanged = false } = this.options;
138
185
  if (this.currentCollapsed !== collapsed) {
139
186
  this.currentCollapsed = collapsed;
140
187
  shouldResetLayoutCache = true;
141
188
  }
189
+ if (this.currentExpandUnchanged !== expandUnchanged) {
190
+ this.currentExpandUnchanged = expandUnchanged;
191
+ shouldResetLayoutCache = true;
192
+ includeEstimatedHeights = true;
193
+ }
142
194
  if (shouldResetLayoutCache) this.resetLayoutCache({ includeEstimatedHeights });
143
195
  this.fileDiff = fileDiff;
144
196
  this.top = top;
@@ -146,18 +198,19 @@ var VirtualizedFileDiff = class extends FileDiff {
146
198
  return this.height;
147
199
  }
148
200
  getLinePosition(lineNumber, side = "additions") {
149
- if (this.fileDiff == null) return;
201
+ if (this.fileDiff == null || lineNumber < 1) return;
150
202
  const targetLineIndexes = this.getLineIndex(lineNumber, side);
151
203
  if (targetLineIndexes == null) return;
152
- const { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
204
+ const { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = 1 } = this.options;
153
205
  const diffStyle = this.getDiffStyle();
154
206
  const hunkSeparators = this.getHunkSeparatorType();
155
207
  const targetLineIndex = diffStyle === "split" ? targetLineIndexes[1] : targetLineIndexes[0];
156
208
  this.approximateLayoutCheckpoints();
209
+ const headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
157
210
  const checkpoint = this.getLayoutCheckpointBeforeLineIndex(targetLineIndex);
158
- let top = checkpoint?.top ?? getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
211
+ let top = checkpoint?.top ?? headerRegion + this.cache.fileAnnotationHeight;
159
212
  if (collapsed) return {
160
- top,
213
+ top: headerRegion,
161
214
  height: 0
162
215
  };
163
216
  let position;
@@ -219,15 +272,19 @@ var VirtualizedFileDiff = class extends FileDiff {
219
272
  });
220
273
  return position;
221
274
  }
275
+ getScrollContainer() {
276
+ const root = this.getSimpleVirtualizer()?.getRoot();
277
+ return root instanceof HTMLElement ? root : root?.documentElement;
278
+ }
222
279
  getNumericScrollAnchor(localViewportTop) {
223
280
  if (this.fileDiff == null) return;
224
- const { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
281
+ const { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = 1 } = this.options;
225
282
  if (collapsed) return;
226
283
  const diffStyle = this.getDiffStyle();
227
284
  const hunkSeparators = this.getHunkSeparatorType();
228
285
  this.approximateLayoutCheckpoints();
229
286
  const checkpoint = this.getLayoutCheckpointBeforeTop(localViewportTop);
230
- let top = checkpoint?.top ?? getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
287
+ let top = checkpoint?.top ?? getVirtualFileHeaderRegion(this.metrics, disableFileHeader) + this.cache.fileAnnotationHeight;
231
288
  let anchor;
232
289
  iterateOverDiff({
233
290
  diff: this.fileDiff,
@@ -286,23 +343,151 @@ var VirtualizedFileDiff = class extends FileDiff {
286
343
  const renderRange = windowSpecs != null ? this.computeRenderRangeFromWindow(this.fileDiff, this.top, windowSpecs) : this.renderRange;
287
344
  if (renderRange == null) return;
288
345
  const { bufferBefore, bufferAfter, totalLines } = renderRange;
346
+ let headerOnlyOffset = 0;
347
+ if (totalLines === 0) {
348
+ const activeWindow = windowSpecs ?? this.virtualizer.getWindowSpecs();
349
+ if (this.top < activeWindow.top) headerOnlyOffset = bufferAfter;
350
+ }
289
351
  return {
290
- topOffset: this.top + bufferBefore + (totalLines === 0 ? bufferAfter : 0),
352
+ topOffset: this.top + bufferBefore + headerOnlyOffset,
291
353
  height: this.height - (bufferBefore + bufferAfter)
292
354
  };
293
355
  }
294
356
  cleanUp(recycle = false) {
295
357
  if (this.fileContainer != null && this.isSimpleMode()) this.getSimpleVirtualizer()?.disconnect(this.fileContainer);
296
- if (!recycle) this.resetLayoutCache({ includeEstimatedHeights: true });
358
+ if (!recycle) {
359
+ this.resetLayoutCache({ includeEstimatedHeights: true });
360
+ this.pendingExpansions = void 0;
361
+ this.pendingHydratedDiff = void 0;
362
+ }
297
363
  this.isSetup = false;
298
364
  super.cleanUp(recycle);
299
365
  }
300
366
  expandHunk = (hunkIndex, direction, expansionLineCountOverride) => {
301
- this.hunksRenderer.expandHunk(hunkIndex, direction, expansionLineCountOverride);
302
- this.resetLayoutCache({ includeEstimatedHeights: true });
303
- this.computeApproximateSize();
367
+ if (this.fileDiff == null) return;
368
+ if (this.isAdvancedMode()) {
369
+ this.pendingExpansions ??= [];
370
+ this.pendingExpansions.push({
371
+ hunkIndex,
372
+ direction,
373
+ expansionLineCountOverride
374
+ });
375
+ } else {
376
+ this.hunksRenderer.expandHunk(hunkIndex, direction, expansionLineCountOverride);
377
+ this.resetLayoutCache({ includeEstimatedHeights: true });
378
+ this.computeApproximateSize();
379
+ }
380
+ this.loadFilesIfNecessary();
381
+ this.forceRenderOverride = true;
304
382
  this.virtualizer.instanceChanged(this, true);
305
383
  };
384
+ async handleFilesLoaded(expectedDiff, files) {
385
+ if (this.fileDiff !== expectedDiff || !expectedDiff.isPartial) return;
386
+ if (this.isAdvancedMode()) {
387
+ const nextDiff = hydratePartialDiff("clone", expectedDiff, files);
388
+ await awaitWithTimeout(() => this.primeHighlightCache(nextDiff));
389
+ if (!this.enabled || this.fileDiff !== expectedDiff) return;
390
+ this.pendingHydratedDiff = {
391
+ expectedDiff,
392
+ nextDiff,
393
+ files
394
+ };
395
+ } else {
396
+ hydratePartialDiff("merge", expectedDiff, files);
397
+ this.setHydratedState(files);
398
+ await awaitWithTimeout(() => this.primeHighlightCache(expectedDiff));
399
+ if (!this.enabled || this.fileDiff !== expectedDiff) return;
400
+ this.resetLayoutCache({ includeEstimatedHeights: true });
401
+ this.computeApproximateSize();
402
+ }
403
+ this.forceRenderOverride = true;
404
+ this.virtualizer.instanceChanged(this, true);
405
+ }
406
+ consumeCodeViewLayoutChanges(expectedFileDiff) {
407
+ let hasLayoutChange = false;
408
+ let nextDiff;
409
+ const { pendingExpansions, pendingHydratedDiff } = this;
410
+ if (pendingExpansions != null) {
411
+ this.pendingExpansions = void 0;
412
+ for (const pendingExpansion of pendingExpansions) {
413
+ this.hunksRenderer.expandHunk(pendingExpansion.hunkIndex, pendingExpansion.direction, pendingExpansion.expansionLineCountOverride);
414
+ hasLayoutChange = true;
415
+ }
416
+ }
417
+ if (pendingHydratedDiff != null) {
418
+ this.pendingHydratedDiff = void 0;
419
+ if (pendingHydratedDiff.expectedDiff === expectedFileDiff) {
420
+ this.setHydratedState(pendingHydratedDiff.files);
421
+ nextDiff = pendingHydratedDiff.nextDiff;
422
+ }
423
+ }
424
+ if (nextDiff != null) {
425
+ this.forceRenderOverride = true;
426
+ this.resetLayoutCache({ includeEstimatedHeights: true });
427
+ } else if (hasLayoutChange) {
428
+ this.forceRenderOverride = true;
429
+ this.invalidateDerivedLayoutCache(true);
430
+ }
431
+ return nextDiff;
432
+ }
433
+ loadFilesIfNecessary() {
434
+ if (this.pendingHydratedDiff != null) {
435
+ if (this.pendingHydratedDiff.expectedDiff === this.fileDiff) return;
436
+ this.pendingHydratedDiff = void 0;
437
+ }
438
+ super.loadFilesIfNecessary();
439
+ }
440
+ isLineRenderable(lineNumber) {
441
+ if (super.isLineRenderable(lineNumber)) return true;
442
+ const { pendingExpansions } = this;
443
+ const fileDiff = this.fileDiffCache;
444
+ if (pendingExpansions == null || pendingExpansions.length === 0 || fileDiff == null) return false;
445
+ const { expansionLineCount = 100, collapsedContextThreshold = 1 } = this.options;
446
+ const staged = new Map(this.hunksRenderer.getExpandedHunksMap());
447
+ for (const expansion of pendingExpansions) {
448
+ const region = { ...staged.get(expansion.hunkIndex) ?? {
449
+ fromStart: 0,
450
+ fromEnd: 0
451
+ } };
452
+ const count = expansion.expansionLineCountOverride ?? expansionLineCount;
453
+ if (expansion.direction === "up" || expansion.direction === "both") region.fromStart += count;
454
+ if (expansion.direction === "down" || expansion.direction === "both") region.fromEnd += count;
455
+ staged.set(expansion.hunkIndex, region);
456
+ }
457
+ return isAdditionLineRenderable({
458
+ fileDiff,
459
+ lineNumber,
460
+ expandedHunks: staged,
461
+ collapsedContextThreshold
462
+ });
463
+ }
464
+ /**
465
+ * Invalidate layout after an edit session changed the rendered row set
466
+ * without a line-count change (a mid-session region change or the exit
467
+ * recompute): estimated heights bake the hunk shapes in, and nothing else
468
+ * invalidates them now that editing does not flip expandUnchanged. Public
469
+ * so CodeView can run it when reaping a session whose instance was already
470
+ * released.
471
+ */
472
+ invalidateEditSessionLayout() {
473
+ this.getSimpleVirtualizer()?.markDOMDirty();
474
+ this.resetLayoutCache({
475
+ forceSimpleRecompute: this.isSimpleMode(),
476
+ includeEstimatedHeights: true,
477
+ resetRenderRange: false
478
+ });
479
+ if (!this.isSimpleMode()) this.computeApproximateSize(true);
480
+ this.getSimpleVirtualizer()?.requestHeightReconcile(this);
481
+ }
482
+ escalateEditSessionRender() {
483
+ this.invalidateEditSessionLayout();
484
+ if (!this.enabled || this.fileDiff == null) return;
485
+ this.forceRenderOverride = true;
486
+ this.virtualizer.instanceChanged(this, true);
487
+ }
488
+ shouldSelfHealEditSession() {
489
+ return !this.isAdvancedMode() && super.shouldSelfHealEditSession();
490
+ }
306
491
  setVisibility(visible) {
307
492
  if (this.isAdvancedMode() || this.fileContainer == null) return;
308
493
  this.renderRange = void 0;
@@ -319,14 +504,30 @@ var VirtualizedFileDiff = class extends FileDiff {
319
504
  this.forceRenderOverride = true;
320
505
  this.virtualizer.instanceChanged(this, false);
321
506
  }
322
- computeApproximateSize(force = false) {
507
+ applyDocumentChange(textDocument, newLineAnnotations, shouldUpdateBuffer = false) {
508
+ const previousRenderRange = this.renderRange;
509
+ super.applyDocumentChange(textDocument, newLineAnnotations);
510
+ this.getSimpleVirtualizer()?.markDOMDirty();
511
+ this.resetLayoutCache({
512
+ forceSimpleRecompute: this.isSimpleMode(),
513
+ includeEstimatedHeights: true,
514
+ resetRenderRange: false
515
+ });
516
+ if (!this.isSimpleMode()) this.computeApproximateSize(true);
517
+ if (shouldUpdateBuffer && previousRenderRange !== void 0 && this.fileDiff !== void 0) {
518
+ const windowSpecs = this.virtualizer.getWindowSpecs();
519
+ const renderRange = this.computeRenderRangeFromWindow(this.fileDiff, this.top ?? 0, windowSpecs);
520
+ if (renderRange.bufferAfter !== previousRenderRange.bufferAfter) this.updateBuffers(renderRange);
521
+ }
522
+ }
523
+ computeApproximateSize(force = false, fileDiff = this.fileDiff) {
323
524
  const shouldValidateSize = this.isResizeDebuggingEnabled();
324
525
  if (!force && !this.layoutDirty && !shouldValidateSize) return;
325
526
  const isFirstCompute = this.height === 0;
326
527
  this.height = 0;
327
528
  this.cache.checkpoints = [];
328
529
  this.cache.totalLines = 0;
329
- if (this.fileDiff == null) {
530
+ if (fileDiff == null) {
330
531
  this.layoutDirty = false;
331
532
  return;
332
533
  }
@@ -337,57 +538,70 @@ var VirtualizedFileDiff = class extends FileDiff {
337
538
  this.layoutDirty = false;
338
539
  return;
339
540
  }
340
- this.height = this.getActiveEstimatedHeight() + this.cache.measuredHeightDeltaTotal;
341
- if (shouldValidateSize && !isFirstCompute) this.validateComputedHeight();
541
+ this.height = this.getActiveEstimatedHeight(fileDiff) + this.cache.measuredHeightDeltaTotal;
542
+ if (shouldValidateSize && !isFirstCompute) this.validateComputedHeight(fileDiff);
342
543
  this.layoutDirty = false;
343
544
  }
344
- getActiveEstimatedHeight() {
345
- this.ensureEstimatedDiffHeights();
545
+ getActiveEstimatedHeight(fileDiff = this.fileDiff) {
546
+ this.ensureEstimatedDiffHeights(fileDiff);
346
547
  const estimatedHeight = this.getDiffStyle() === "split" ? this.cache.estimatedSplitHeight : this.cache.estimatedUnifiedHeight;
347
548
  if (estimatedHeight == null) throw new Error("VirtualizedFileDiff.getActiveEstimatedHeight: missing estimated height");
348
549
  return estimatedHeight;
349
550
  }
350
- ensureEstimatedDiffHeights() {
351
- if (this.fileDiff == null) {
551
+ ensureEstimatedDiffHeights(fileDiff = this.fileDiff) {
552
+ if (fileDiff == null) {
352
553
  this.cache.estimatedSplitHeight = void 0;
353
554
  this.cache.estimatedUnifiedHeight = void 0;
354
555
  return;
355
556
  }
356
557
  if (this.cache.estimatedSplitHeight != null && this.cache.estimatedUnifiedHeight != null) return;
357
- const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
558
+ const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
358
559
  const { splitHeight, unifiedHeight } = computeEstimatedDiffHeights({
359
- fileDiff: this.fileDiff,
560
+ fileDiff,
360
561
  metrics: this.metrics,
361
562
  disableFileHeader,
362
563
  hunkSeparators: this.getHunkSeparatorType(),
363
564
  expandUnchanged,
364
565
  expandedHunks: this.hunksRenderer.getExpandedHunksMap(),
365
- collapsedContextThreshold
566
+ collapsedContextThreshold,
567
+ canHydratePartialDiff: canHydrateCollapsedContext(fileDiff, this.options.loadDiffFiles != null)
366
568
  });
367
569
  this.cache.estimatedSplitHeight = splitHeight;
368
570
  this.cache.estimatedUnifiedHeight = unifiedHeight;
369
571
  }
370
- validateComputedHeight() {
371
- if (this.fileContainer == null || this.fileDiff == null) return;
572
+ validateComputedHeight(fileDiff = this.fileDiff) {
573
+ if (this.fileContainer == null || fileDiff == null) return;
372
574
  const rect = this.fileContainer.getBoundingClientRect();
373
575
  if (rect.height !== this.height) console.log("VirtualizedFileDiff.computeApproximateSize: computed height doesnt match", {
374
- name: this.fileDiff.name,
576
+ name: fileDiff.name,
375
577
  elementHeight: rect.height,
376
578
  computedHeight: this.height
377
579
  });
378
580
  else console.log("VirtualizedFileDiff.computeApproximateSize: computed height IS CORRECT");
379
581
  }
380
- render({ fileContainer, oldFile, newFile, fileDiff, forceRender = false,...props } = {}) {
582
+ render({ fileContainer, fileDiff, forceRender = false, lineAnnotations, ...fileInputProps } = {}) {
583
+ const fileInput = getDiffFileInput(fileInputProps, "VirtualizedFileDiff.render");
584
+ const hasFileInput = fileInput != null;
585
+ const oldFile = fileInput?.oldFile;
586
+ const newFile = fileInput?.newFile;
587
+ const filesDidChange = hasFileInput && (!areOptionalFilesEqual(oldFile, this.deletionFile) || !areOptionalFilesEqual(newFile, this.additionFile));
588
+ let nextFileDiff = fileDiff ?? this.fileDiff;
589
+ if (fileDiff == null && hasFileInput && (filesDidChange || this.fileDiff == null)) nextFileDiff = parseDiffFromFile(fileInput.oldFile, fileInput.newFile, this.options.parseDiffOptions);
381
590
  const { forceRenderOverride, isSetup } = this;
382
591
  this.forceRenderOverride = void 0;
383
- this.fileDiff ??= fileDiff ?? (oldFile != null && newFile != null ? parseDiffFromFile(oldFile, newFile, this.options.parseDiffOptions) : void 0);
592
+ const annotationsChanged = this.syncLineAnnotations(lineAnnotations);
593
+ if (annotationsChanged) this.resetLayoutCache({ includeEstimatedHeights: false });
594
+ const diffInputChanged = fileDiff != null && fileDiff !== this.fileDiff;
595
+ const targetChanged = nextFileDiff != null && !areDiffTargetsEqual(this.fileDiff, nextFileDiff);
596
+ const dataChanged = diffInputChanged || filesDidChange;
597
+ if (targetChanged) this.resetLayoutCache({ includeEstimatedHeights: true });
384
598
  fileContainer = this.getOrCreateFileContainer(fileContainer);
385
- if (this.fileDiff == null) {
599
+ if (nextFileDiff == null) {
386
600
  console.error("VirtualizedFileDiff.render: attempting to virtually render when we dont have the correct data");
387
601
  return false;
388
602
  }
389
603
  if (!isSetup) {
390
- this.computeApproximateSize();
604
+ this.computeApproximateSize(false, nextFileDiff);
391
605
  const virtualizer = this.getSimpleVirtualizer();
392
606
  this.top ??= this.getVirtualizedTop();
393
607
  if (this.isAdvancedMode()) this.isVisible = true;
@@ -397,20 +611,33 @@ var VirtualizedFileDiff = class extends FileDiff {
397
611
  this.isVisible = virtualizer.isInstanceVisible(this.top ?? 0, this.height);
398
612
  }
399
613
  this.isSetup = true;
400
- } else this.top ??= this.getVirtualizedTop();
401
- if (!this.isVisible && this.isSimpleMode()) return this.renderPlaceholder(this.height);
614
+ } else {
615
+ this.top ??= this.getVirtualizedTop();
616
+ if (targetChanged) this.computeApproximateSize(false, nextFileDiff);
617
+ }
618
+ if (!this.isVisible && this.isSimpleMode() && (!dataChanged || !isSetup)) {
619
+ this.fileDiff = nextFileDiff;
620
+ if (fileInput != null) {
621
+ this.deletionFile = oldFile;
622
+ this.additionFile = newFile;
623
+ }
624
+ if (targetChanged) this.cachedHeaderHTML = void 0;
625
+ return this.renderPlaceholder(this.height);
626
+ }
402
627
  const windowSpecs = this.virtualizer.getWindowSpecs();
403
628
  const fileTop = this.top ?? 0;
404
- const renderRange = this.computeRenderRangeFromWindow(this.fileDiff, fileTop, windowSpecs);
405
- return super.render({
406
- fileDiff: this.fileDiff,
629
+ const renderRange = this.computeRenderRangeFromWindow(nextFileDiff, fileTop, windowSpecs);
630
+ const rendered = super.render({
631
+ fileDiff: nextFileDiff,
407
632
  fileContainer,
408
633
  renderRange,
409
- oldFile,
410
- newFile,
411
- forceRender: forceRenderOverride ?? forceRender,
412
- ...props
634
+ lineAnnotations,
635
+ forceRender: (forceRenderOverride ?? forceRender) || annotationsChanged || targetChanged,
636
+ ...fileInput,
637
+ ...fileInputProps
413
638
  });
639
+ if (this.isSimpleMode() && rendered) this.getSimpleVirtualizer()?.requestHeightReconcile(this);
640
+ return rendered;
414
641
  }
415
642
  syncVirtualizedTop() {
416
643
  this.top = this.getVirtualizedTop();
@@ -440,14 +667,16 @@ var VirtualizedFileDiff = class extends FileDiff {
440
667
  getHunkSeparatorType() {
441
668
  return getOptionHunkSeparatorType(this.options.hunkSeparators);
442
669
  }
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;
670
+ approximateLayoutCheckpoints(fileDiff = this.fileDiff) {
671
+ if (!this.layoutDirty && this.cache.checkpoints.length > 0 || fileDiff == null || fileDiff.hunks.length === 0 || this.options.collapsed === true) return;
672
+ const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
673
+ const finalHunkIndex = fileDiff.hunks.length - 1;
674
+ const canHydratePartialDiff = canHydrateCollapsedContext(fileDiff, this.options.loadDiffFiles != null);
446
675
  const diffStyle = this.getDiffStyle();
447
676
  const hunkSeparators = this.getHunkSeparatorType();
448
677
  const expandedHunks = expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap();
449
678
  const heightDeltaPrefix = createHeightDeltaPrefix(this.cache.heightDeltas);
450
- let top = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
679
+ let top = getVirtualFileHeaderRegion(this.metrics, disableFileHeader) + this.cache.fileAnnotationHeight;
451
680
  let renderedLineIndex = 0;
452
681
  const processRows = ({ rowCount, startLineIndex, preSeparatorHeight = 0, postSeparatorHeight = 0, metadataOffsets = [] }) => {
453
682
  if (rowCount <= 0) return;
@@ -462,16 +691,16 @@ var VirtualizedFileDiff = class extends FileDiff {
462
691
  lineIndex: startLineIndex + offset,
463
692
  top: checkpointTop
464
693
  });
465
- nextCheckpoint += LAYOUT_CHECKPOINT_INTERVAL;
694
+ nextCheckpoint += VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL;
466
695
  }
467
696
  top += preSeparatorHeight + rowCount * this.metrics.lineHeight + metadataOffsets.length * this.metrics.lineHeight + sumHeightDeltas(heightDeltaPrefix, startLineIndex, startLineIndex + rowCount) + postSeparatorHeight;
468
697
  renderedLineIndex = blockEnd;
469
698
  };
470
- for (let hunkIndex = 0; hunkIndex < this.fileDiff.hunks.length; hunkIndex++) {
471
- const hunk = this.fileDiff.hunks[hunkIndex];
699
+ for (let hunkIndex = 0; hunkIndex < fileDiff.hunks.length; hunkIndex++) {
700
+ const hunk = fileDiff.hunks[hunkIndex];
472
701
  if (hunk == null) throw new Error("VirtualizedFileDiff.approximateLayoutCheckpoints: invalid hunk index");
473
702
  const leadingRegion = getExpandedRegion({
474
- isPartial: this.fileDiff.isPartial,
703
+ isPartial: fileDiff.isPartial,
475
704
  rangeSize: hunk.collapsedBefore,
476
705
  expandedHunks,
477
706
  hunkIndex,
@@ -494,16 +723,19 @@ var VirtualizedFileDiff = class extends FileDiff {
494
723
  preSeparatorHeight: pendingLeadingSeparatorHeight
495
724
  });
496
725
  if (leadingRegion.fromEnd > 0) pendingLeadingSeparatorHeight = 0;
497
- const trailingRegion = getTrailingExpandedRegion({
498
- fileDiff: this.fileDiff,
499
- hunk,
726
+ const trailingRegion = hunkIndex === finalHunkIndex ? getTrailingExpandedRegion({
727
+ fileDiff,
500
728
  hunkIndex,
501
729
  expandedHunks,
502
- collapsedContextThreshold
503
- });
730
+ collapsedContextThreshold,
731
+ errorPrefix: "VirtualizedFileDiff"
732
+ }) : void 0;
504
733
  const trailingSeparatorHeight = trailingRegion != null && trailingRegion.collapsedLines > 0 ? getTrailingHunkSeparatorLayout({
505
734
  type: hunkSeparators,
506
735
  metrics: this.metrics
736
+ })?.totalHeight ?? 0 : hunkIndex === finalHunkIndex && canHydratePartialDiff ? getTrailingHunkSeparatorLayout({
737
+ type: hunkSeparators,
738
+ metrics: this.metrics
507
739
  })?.totalHeight ?? 0 : 0;
508
740
  const trailingExpandedCount = trailingRegion != null ? trailingRegion.fromStart + trailingRegion.fromEnd : 0;
509
741
  const hunkBodyRowCount = diffStyle === "split" ? hunk.splitLineCount : hunk.unifiedLineCount;
@@ -569,7 +801,7 @@ var VirtualizedFileDiff = class extends FileDiff {
569
801
  for (const hunk of fileDiff.hunks) count += diffStyle === "split" ? hunk.splitLineCount : hunk.unifiedLineCount;
570
802
  return count;
571
803
  }
572
- const { expandUnchanged = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
804
+ const { expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
573
805
  const expandedHunks = expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap();
574
806
  for (const [hunkIndex, hunk] of fileDiff.hunks.entries()) {
575
807
  const hunkCount = diffStyle === "split" ? hunk.splitLineCount : hunk.unifiedLineCount;
@@ -584,34 +816,37 @@ var VirtualizedFileDiff = class extends FileDiff {
584
816
  });
585
817
  if (collapsedBefore > 0) count += renderAll ? collapsedBefore : fromStart + fromEnd;
586
818
  }
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
- }
819
+ const trailingRegion = getTrailingExpandedRegion({
820
+ fileDiff,
821
+ hunkIndex: fileDiff.hunks.length - 1,
822
+ expandedHunks,
823
+ collapsedContextThreshold,
824
+ errorPrefix: "VirtualizedFileDiff"
825
+ });
826
+ if (trailingRegion != null) count += trailingRegion.fromStart + trailingRegion.fromEnd;
604
827
  return count;
605
828
  }
829
+ getLayoutLineCount(fileDiff, diffStyle) {
830
+ const expandedLineCount = this.getExpandedLineCount(fileDiff, diffStyle);
831
+ const metadataLineCount = diffStyle === "split" ? fileDiff.splitLineCount : fileDiff.unifiedLineCount;
832
+ return Math.max(expandedLineCount, metadataLineCount, fileDiff.additionLines.length, fileDiff.deletionLines.length, this.cache.totalLines);
833
+ }
606
834
  computeRenderRangeFromWindow(fileDiff, fileTop, { top, bottom }) {
607
- const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = this.options;
835
+ const { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
608
836
  const { hunkLineCount, lineHeight } = this.metrics;
609
837
  const diffStyle = this.getDiffStyle();
610
838
  const hunkSeparators = this.getHunkSeparatorType();
839
+ const canHydratePartialDiff = canHydrateCollapsedContext(fileDiff, this.options.loadDiffFiles != null);
611
840
  const fileHeight = this.height;
612
- let lineCount = this.cache.totalLines > 0 ? this.cache.totalLines : this.getExpandedLineCount(fileDiff, diffStyle);
841
+ let lineCount = this.getLayoutLineCount(fileDiff, diffStyle);
613
842
  const headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);
614
843
  const paddingBottom = fileDiff.hunks.length > 0 ? getVirtualFilePaddingBottom(this.metrics) : 0;
844
+ const { fileAnnotationHeight } = this.cache;
845
+ const codeRegionTop = headerRegion + fileAnnotationHeight;
846
+ const codeHeight = Math.max(0, fileHeight - headerRegion - fileAnnotationHeight - paddingBottom);
847
+ const hasFileAnnotations = this.hasFileAnnotations(fileDiff);
848
+ const fileAnnotationTop = fileTop + headerRegion;
849
+ const measuredFileAnnotationVisible = fileAnnotationHeight > 0 && hasFileAnnotations && fileAnnotationTop < bottom && fileAnnotationTop + fileAnnotationHeight > top;
615
850
  if (fileTop < top - fileHeight || fileTop > bottom) return {
616
851
  startingLine: 0,
617
852
  totalLines: 0,
@@ -624,8 +859,8 @@ var VirtualizedFileDiff = class extends FileDiff {
624
859
  bufferBefore: 0,
625
860
  bufferAfter: 0
626
861
  };
627
- this.approximateLayoutCheckpoints();
628
- lineCount = this.cache.totalLines > 0 ? this.cache.totalLines : lineCount;
862
+ this.approximateLayoutCheckpoints(fileDiff);
863
+ lineCount = this.getLayoutLineCount(fileDiff, diffStyle);
629
864
  const estimatedTargetLines = Math.ceil(Math.max(bottom - top, 0) / lineHeight);
630
865
  const totalLines = Math.ceil(estimatedTargetLines / hunkLineCount) * hunkLineCount + hunkLineCount;
631
866
  const totalHunks = totalLines / hunkLineCount;
@@ -633,7 +868,7 @@ var VirtualizedFileDiff = class extends FileDiff {
633
868
  const hunkOffsets = [];
634
869
  const viewportCenter = (top + bottom) / 2;
635
870
  const checkpoint = this.getLayoutCheckpointBeforeTop(Math.max(0, top - fileTop - totalLines * lineHeight * 2), hunkLineCount);
636
- let absoluteLineTop = fileTop + (checkpoint?.top ?? headerRegion);
871
+ let absoluteLineTop = fileTop + (checkpoint?.top ?? codeRegionTop);
637
872
  let currentLine = checkpoint?.renderedLineIndex ?? 0;
638
873
  let firstVisibleHunk;
639
874
  let centerHunk;
@@ -648,6 +883,7 @@ var VirtualizedFileDiff = class extends FileDiff {
648
883
  const splitLineIndex = additionLine != null ? additionLine.splitLineIndex : deletionLine.splitLineIndex;
649
884
  const unifiedLineIndex = additionLine != null ? additionLine.unifiedLineIndex : deletionLine.unifiedLineIndex;
650
885
  const hasMetadata = (additionLine?.noEOFCR ?? false) || (deletionLine?.noEOFCR ?? false);
886
+ const isFinalHunkRow = hunkIndex === fileDiff.hunks.length - 1 && hunk != null && (diffStyle === "split" ? splitLineIndex === hunk.splitLineStart + hunk.splitLineCount - 1 : unifiedLineIndex === hunk.unifiedLineStart + hunk.unifiedLineCount - 1);
651
887
  const gapAdjustment = (collapsedBefore > 0 ? getLeadingHunkSeparatorLayout({
652
888
  type: hunkSeparators,
653
889
  metrics: this.metrics,
@@ -658,26 +894,36 @@ var VirtualizedFileDiff = class extends FileDiff {
658
894
  const isAtHunkBoundary = currentLine % hunkLineCount === 0;
659
895
  const currentHunk = Math.floor(currentLine / hunkLineCount);
660
896
  if (isAtHunkBoundary) {
661
- hunkOffsets[currentHunk] = absoluteLineTop - (fileTop + headerRegion + gapAdjustment);
897
+ hunkOffsets[currentHunk] = absoluteLineTop - (fileTop + codeRegionTop + gapAdjustment);
662
898
  if (overflowCounter != null) {
663
899
  if (overflowCounter <= 0) return true;
664
900
  overflowCounter--;
665
901
  }
666
902
  }
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;
903
+ const lineHeight = this.getLineHeight(diffStyle === "split" ? splitLineIndex : unifiedLineIndex, hasMetadata);
904
+ if (absoluteLineTop > top - lineHeight && absoluteLineTop < bottom) firstVisibleHunk ??= currentHunk;
905
+ if (centerHunk == null && absoluteLineTop + lineHeight > viewportCenter) centerHunk = currentHunk;
670
906
  if (overflowCounter == null && absoluteLineTop >= bottom && isAtHunkBoundary) overflowCounter = overflowHunks;
671
907
  currentLine++;
672
- absoluteLineTop += lineHeight$1;
673
- if (collapsedAfter > 0) absoluteLineTop += getTrailingHunkSeparatorLayout({
674
- type: hunkSeparators,
675
- metrics: this.metrics
676
- })?.totalHeight ?? 0;
908
+ absoluteLineTop += lineHeight;
909
+ if (collapsedAfter > 0 || isFinalHunkRow && canHydratePartialDiff) {
910
+ const trailingSeparator = getTrailingHunkSeparatorLayout({
911
+ type: hunkSeparators,
912
+ metrics: this.metrics
913
+ });
914
+ if (trailingSeparator != null) {
915
+ if (absoluteLineTop < bottom && absoluteLineTop + trailingSeparator.totalHeight > top) firstVisibleHunk ??= currentHunk;
916
+ if (centerHunk == null && absoluteLineTop + trailingSeparator.totalHeight > viewportCenter) centerHunk = currentHunk;
917
+ absoluteLineTop += trailingSeparator.totalHeight;
918
+ }
919
+ }
677
920
  return false;
678
921
  }
679
922
  });
680
- if (firstVisibleHunk == null) return {
923
+ if (firstVisibleHunk == null) if (measuredFileAnnotationVisible) {
924
+ firstVisibleHunk = 0;
925
+ centerHunk = 0;
926
+ } else return {
681
927
  startingLine: 0,
682
928
  totalLines: 0,
683
929
  bufferBefore: 0,
@@ -689,16 +935,32 @@ var VirtualizedFileDiff = class extends FileDiff {
689
935
  const startHunk = Math.max(0, Math.min(idealStartHunk, maxStartHunk));
690
936
  const startingLine = startHunk * hunkLineCount;
691
937
  const clampedTotalLines = idealStartHunk < 0 ? totalLines + idealStartHunk * hunkLineCount : totalLines;
692
- const bufferBefore = hunkOffsets[startHunk] ?? 0;
938
+ const codeBufferBefore = hunkOffsets[startHunk] ?? 0;
939
+ const bufferBefore = startingLine === 0 ? 0 : fileAnnotationHeight + codeBufferBefore;
693
940
  const finalHunkIndex = startHunk + clampedTotalLines / hunkLineCount;
941
+ const bufferAfter = finalHunkIndex < hunkOffsets.length ? codeHeight - hunkOffsets[finalHunkIndex] : codeHeight - (absoluteLineTop - fileTop - codeRegionTop);
694
942
  return {
695
943
  startingLine,
696
944
  totalLines: clampedTotalLines,
697
945
  bufferBefore,
698
- bufferAfter: finalHunkIndex < hunkOffsets.length ? fileHeight - headerRegion - hunkOffsets[finalHunkIndex] - paddingBottom : fileHeight - (absoluteLineTop - fileTop) - paddingBottom
946
+ bufferAfter: Math.max(0, bufferAfter)
699
947
  };
700
948
  }
701
949
  };
950
+ function measureFileAnnotationHeight(codeGroups) {
951
+ let height;
952
+ for (const codeGroup of codeGroups) {
953
+ if (codeGroup == null) continue;
954
+ const content = codeGroup.children[1];
955
+ if (!(content instanceof HTMLElement)) continue;
956
+ for (const child of content.children) {
957
+ if (!(child instanceof HTMLElement)) continue;
958
+ if (child.dataset.lineAnnotation !== FILE_ANNOTATION_DOM_KEY) continue;
959
+ height = Math.max(height ?? 0, child.getBoundingClientRect().height);
960
+ }
961
+ }
962
+ return height;
963
+ }
702
964
  function createHeightDeltaPrefix(heightDeltas) {
703
965
  const entries = Array.from(heightDeltas).sort((a, b) => a[0] - b[0]);
704
966
  const lineIndexes = [];
@@ -732,7 +994,7 @@ function lowerBound(values, target) {
732
994
  return low;
733
995
  }
734
996
  function getNextCheckpointIndex(renderedLineIndex) {
735
- return Math.ceil(renderedLineIndex / LAYOUT_CHECKPOINT_INTERVAL) * LAYOUT_CHECKPOINT_INTERVAL;
997
+ return Math.ceil(renderedLineIndex / VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL) * VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL;
736
998
  }
737
999
  function countMetadataOffsetsBefore(metadataOffsets, offset) {
738
1000
  let count = 0;
@@ -753,38 +1015,27 @@ function getHunkMetadataOffsets({ diffStyle, hunk, rowCount }) {
753
1015
  if (lastContent.additions > 0 && hunk.noEOFCRAdditions) offsets.push(rowCount - 1);
754
1016
  return offsets;
755
1017
  }
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
1018
  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;
1019
+ 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
1020
  }
772
1021
  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);
1022
+ 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);
1023
+ }
1024
+ function canHydrateCollapsedContext(fileDiff, hasFileLoader) {
1025
+ return fileDiff.isPartial && hasFileLoader && (fileDiff.type === "change" || fileDiff.type === "rename-changed");
774
1026
  }
775
1027
  function getOptionHunkSeparatorType(hunkSeparators) {
776
1028
  return typeof hunkSeparators === "function" ? "custom" : hunkSeparators ?? "line-info";
777
1029
  }
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;
1030
+ function areOptionalFilesEqual(fileA, fileB) {
1031
+ if (fileA == null || fileB == null) return fileA == null && fileB == null;
1032
+ return areFilesEqual(fileA, fileB);
782
1033
  }
783
1034
  function parseLineIndex(lineIndexAttr, diffStyle) {
784
1035
  const [unifiedIndex, splitIndex] = lineIndexAttr.split(",").map(Number);
785
1036
  return diffStyle === "split" ? splitIndex : unifiedIndex;
786
1037
  }
787
-
788
1038
  //#endregion
789
- export { VirtualizedFileDiff };
1039
+ export { VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, VirtualizedFileDiff };
1040
+
790
1041
  //# sourceMappingURL=VirtualizedFileDiff.js.map