@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,18 @@
1
- import { CORE_CSS_ATTRIBUTE, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DIFFS_DEVELOPMENT_BUILD, DIFFS_TAG_NAME, THEME_CSS_ATTRIBUTE, UNSAFE_CSS_ATTRIBUTE } from "../constants.js";
1
+ import { DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DIFFS_DEVELOPMENT_BUILD, DIFFS_TAG_NAME } from "../constants.js";
2
2
  import { dequeueRender, queueRender } from "../managers/UniversalRenderingManager.js";
3
+ import { areManagedSnapshotsEqual } from "../utils/areManagedSnapshotsEqual.js";
3
4
  import { areObjectsEqual } from "../utils/areObjectsEqual.js";
4
5
  import { areThemesEqual } from "../utils/areThemesEqual.js";
5
6
  import { areOptionsEqual } from "../utils/areOptionsEqual.js";
6
7
  import { areSelectionsEqual } from "../utils/areSelectionsEqual.js";
8
+ import { createCodeViewHeaderFooterHostElement } from "../utils/createCodeViewHeaderFooterHostElement.js";
7
9
  import { createWindowFromScrollPosition } from "../utils/createWindowFromScrollPosition.js";
10
+ import { finishEditSessionForDiff } from "../utils/editSessionHunks.js";
8
11
  import { isStyleNode } from "../utils/isStyleNode.js";
9
12
  import { prefersReducedMotion } from "../utils/prefersReducedMotion.js";
10
13
  import { roundToDevicePixel } from "../utils/roundToDevicePixel.js";
11
14
  import { VirtualizedFile } from "./VirtualizedFile.js";
12
15
  import { VirtualizedFileDiff } from "./VirtualizedFileDiff.js";
13
-
14
16
  //#region src/components/CodeView.ts
15
17
  const CODE_VIEW_DIFF_OPTION_KEYS = [
16
18
  "theme",
@@ -29,6 +31,7 @@ const CODE_VIEW_DIFF_OPTION_KEYS = [
29
31
  "diffIndicators",
30
32
  "disableBackground",
31
33
  "expandUnchanged",
34
+ "loadDiffFiles",
32
35
  "collapsedContextThreshold",
33
36
  "lineDiffType",
34
37
  "maxLineDiffLength",
@@ -62,9 +65,11 @@ const CODE_VIEW_FILE_OPTION_KEYS = [
62
65
  "controlledSelection",
63
66
  "disableErrorHandling"
64
67
  ];
68
+ const CODE_VIEW_EDIT_FORCED_OPTION_KEYS = /* @__PURE__ */ new Set(["useTokenTransformer"]);
65
69
  const CODE_VIEW_SHARED_CALLBACK_KEYS = [
66
70
  "renderCustomHeader",
67
71
  "renderHeaderPrefix",
72
+ "renderHeaderFilenameSuffix",
68
73
  "renderHeaderMetadata",
69
74
  "renderAnnotation",
70
75
  "renderGutterUtility",
@@ -130,6 +135,8 @@ var CodeView = class CodeView {
130
135
  items = [];
131
136
  idToItem = /* @__PURE__ */ new Map();
132
137
  selectedLines = null;
138
+ itemEditors = /* @__PURE__ */ new Map();
139
+ attachedEditors = /* @__PURE__ */ new Set();
133
140
  instanceToItem = /* @__PURE__ */ new Map();
134
141
  layoutDirtyIndex;
135
142
  pendingLayoutReset;
@@ -164,18 +171,30 @@ var CodeView = class CodeView {
164
171
  diffOptionsPrototype;
165
172
  pendingScrollTarget;
166
173
  pendingLayoutAnchor;
174
+ shouldFixContainerFocus = false;
167
175
  scrollAnimation;
168
176
  root;
169
177
  resizeObserver;
170
178
  container = document.createElement("div");
171
179
  stickyContainer = document.createElement("div");
172
180
  stickyOffset = document.createElement("div");
181
+ header = {
182
+ element: void 0,
183
+ render: void 0,
184
+ height: 0
185
+ };
186
+ footer = {
187
+ element: void 0,
188
+ render: void 0,
189
+ height: 0
190
+ };
173
191
  elementPool = [];
174
192
  elementPoolVersion = 0;
175
193
  elementPoolTracker = /* @__PURE__ */ new WeakMap();
176
194
  pendingElementPool = [];
177
195
  options;
178
196
  workerManager;
197
+ isReadySubscription;
179
198
  isContainerManaged;
180
199
  constructor(options = { theme: DEFAULT_THEMES }, workerManager, isContainerManaged = false) {
181
200
  this.options = options;
@@ -195,6 +214,9 @@ var CodeView = class CodeView {
195
214
  getLayout() {
196
215
  return this.options.layout ?? DEFAULT_CODE_VIEW_LAYOUT;
197
216
  }
217
+ getItemTopOffset() {
218
+ return this.getLayout().paddingTop + this.header.height;
219
+ }
198
220
  computeMetricsCache(itemMetrics) {
199
221
  this.itemMetricsCache = {
200
222
  hunkLineCount: itemMetrics?.hunkLineCount ?? DEFAULT_CODE_VIEW_FILE_METRICS.hunkLineCount,
@@ -240,6 +262,28 @@ var CodeView = class CodeView {
240
262
  instance: item.instance
241
263
  });
242
264
  }
265
+ validateStickyContainerHeight() {
266
+ if (!this.shouldValidateItemHeights()) return;
267
+ const { firstIndex, lastIndex, stickyHeight, stickyTop, stickyBottom } = this.renderState;
268
+ if (firstIndex === -1 || lastIndex === -1) return;
269
+ const actualHeight = this.stickyContainer.getBoundingClientRect().height;
270
+ if (Math.abs(actualHeight - stickyHeight) < 1) return;
271
+ console.error("CodeView: sticky container height does not match computed layout", {
272
+ computedStickyHeight: stickyHeight,
273
+ actualStickyHeight: actualHeight,
274
+ delta: actualHeight - stickyHeight,
275
+ stickyTop,
276
+ stickyBottom,
277
+ firstIndex,
278
+ lastIndex,
279
+ firstStickySpecs: this.items[firstIndex]?.instance.getAdvancedStickySpecs(),
280
+ lastStickySpecs: this.items[lastIndex]?.instance.getAdvancedStickySpecs(),
281
+ scrollTop: this.getScrollTop(),
282
+ scrollPageOffset: this.scrollPageOffset,
283
+ windowSpecs: { ...this.windowSpecs },
284
+ stickyContainer: this.stickyContainer
285
+ });
286
+ }
243
287
  clearScrollInteractionTimer() {
244
288
  if (this.scrollInteractionFixTimer != null) {
245
289
  clearTimeout(this.scrollInteractionFixTimer);
@@ -275,11 +319,49 @@ var CodeView = class CodeView {
275
319
  this.container?.style.setProperty("margin-top", `${paddingTop}px`);
276
320
  this.container?.style.setProperty("margin-bottom", `${paddingBottom}px`);
277
321
  }
322
+ reconcileHeaderFooterHosts() {
323
+ const headerChanged = this.reconcileHost("header");
324
+ const footerChanged = this.reconcileHost("footer");
325
+ return headerChanged || footerChanged;
326
+ }
327
+ reconcileHost(type) {
328
+ const { root, container } = this;
329
+ if (root == null || container == null) return false;
330
+ const host = type === "header" ? this.header : this.footer;
331
+ const render = type === "header" ? this.options.renderCodeViewHeader : this.options.renderCodeViewFooter;
332
+ if (render == null) {
333
+ if (host.element == null) return false;
334
+ this.resizeObserver?.unobserve(host.element);
335
+ host.element.remove();
336
+ host.element = void 0;
337
+ host.render = void 0;
338
+ this.setHostHeight(host, 0);
339
+ return false;
340
+ }
341
+ if (host.element != null && render === host.render) return false;
342
+ const element = host.element ?? createCodeViewHeaderFooterHostElement(type, container, this.resizeObserver);
343
+ host.element = element;
344
+ const content = render();
345
+ if (content != null) element.replaceChildren(content);
346
+ else if (!this.isContainerManaged && element.children.length > 0) element.textContent = "";
347
+ host.render = render;
348
+ return true;
349
+ }
350
+ setHostHeight(host, height) {
351
+ if (host.height === height) return;
352
+ host.height = height;
353
+ this.scrollDirty = true;
354
+ }
355
+ measureMountedHosts() {
356
+ if (this.header.element != null) this.setHostHeight(this.header, this.header.element.getBoundingClientRect().height);
357
+ if (this.footer.element != null) this.setHostHeight(this.footer, this.footer.element.getBoundingClientRect().height);
358
+ }
278
359
  setup(root) {
279
360
  if (this.root != null) throw new Error("CodeView.setup: already setup");
280
361
  this.workerManager?.subscribeToThemeChanges(this);
281
362
  this.root = root;
282
363
  this.root.style.overflowAnchor = "none";
364
+ if (!this.root.hasAttribute("tabindex")) this.root.tabIndex = -1;
283
365
  this.container ??= document.createElement("div");
284
366
  this.container.style.contain = "layout style";
285
367
  this.syncLayout();
@@ -313,8 +395,13 @@ var CodeView = class CodeView {
313
395
  };
314
396
  }
315
397
  reset() {
398
+ dequeueRender(this.computeRenderRangeAndEmit);
399
+ this.clearReadySubscription();
316
400
  this.restoreScrollInteractions();
317
401
  this.cleanAllRenderedItems();
402
+ for (const record of this.itemEditors.values()) record.editor.cleanUp();
403
+ this.itemEditors.clear();
404
+ this.attachedEditors.clear();
318
405
  this.selectedLines = null;
319
406
  this.items.length = 0;
320
407
  this.idToItem.clear();
@@ -330,6 +417,7 @@ var CodeView = class CodeView {
330
417
  bottom: 0
331
418
  };
332
419
  this.pendingLayoutAnchor = void 0;
420
+ this.shouldFixContainerFocus = false;
333
421
  this.height = 0;
334
422
  this.scrollTop = 0;
335
423
  this.scrollPageOffset = 0;
@@ -356,6 +444,14 @@ var CodeView = class CodeView {
356
444
  this.stickyOffset.remove();
357
445
  this.stickyContainer.remove();
358
446
  this.stickyContainer.textContent = "";
447
+ this.header.element?.remove();
448
+ this.header.element = void 0;
449
+ this.header.render = void 0;
450
+ this.header.height = 0;
451
+ this.footer.element?.remove();
452
+ this.footer.element = void 0;
453
+ this.footer.render = void 0;
454
+ this.footer.height = 0;
359
455
  this.root = void 0;
360
456
  this.container = void 0;
361
457
  }
@@ -388,13 +484,25 @@ var CodeView = class CodeView {
388
484
  }
389
485
  releaseRenderedItem(item) {
390
486
  const { element } = item;
487
+ if (element != null && this.renderedItemOwnsFocus(element)) this.shouldFixContainerFocus = true;
391
488
  item.instance.cleanUp(true);
489
+ this.attachedEditors.delete(item.item.id);
392
490
  item.element = void 0;
393
491
  if (element == null) return;
394
492
  element.remove();
395
493
  this.cleanElement(element);
396
494
  this.queueElementForPool(element);
397
495
  }
496
+ renderedItemOwnsFocus(element) {
497
+ const { activeElement } = document;
498
+ return activeElement === element || element.contains(activeElement) || element.shadowRoot?.activeElement != null;
499
+ }
500
+ fixContainerFocus() {
501
+ if (this.shouldFixContainerFocus) {
502
+ this.shouldFixContainerFocus = false;
503
+ this.root?.focus({ preventScroll: true });
504
+ }
505
+ }
398
506
  cleanElement(element) {
399
507
  const { shadowRoot } = element;
400
508
  if (shadowRoot != null) {
@@ -471,6 +579,14 @@ var CodeView = class CodeView {
471
579
  getItem(itemId) {
472
580
  return this.idToItem.get(itemId)?.item;
473
581
  }
582
+ /**
583
+ * Get the live editor for an item currently in edit mode. Use this to drive
584
+ * editor APIs CodeView does not wrap (applyEdits, undo, setMarkers, …).
585
+ * Returns undefined once the item leaves edit mode.
586
+ */
587
+ getEditor(itemId) {
588
+ return this.itemEditors.get(itemId)?.editor;
589
+ }
474
590
  updateItem(input) {
475
591
  const item = this.idToItem.get(input.id);
476
592
  if (item == null) {
@@ -482,6 +598,7 @@ var CodeView = class CodeView {
482
598
  this.scrollDirty = true;
483
599
  this.render();
484
600
  this.syncSelection();
601
+ this.syncItemEditors();
485
602
  return true;
486
603
  }
487
604
  updateItemId(oldId, newId) {
@@ -506,6 +623,13 @@ var CodeView = class CodeView {
506
623
  };
507
624
  this.options.onSelectedLinesChange?.(this.selectedLines);
508
625
  }
626
+ const editorRecord = this.itemEditors.get(oldId);
627
+ if (editorRecord != null) {
628
+ editorRecord.state.id = newId;
629
+ this.itemEditors.delete(oldId);
630
+ this.itemEditors.set(newId, editorRecord);
631
+ if (this.attachedEditors.delete(oldId)) this.attachedEditors.add(newId);
632
+ }
509
633
  this.renamePendingScrollTarget(oldId, newId);
510
634
  this.renamePendingLayoutAnchor(oldId, newId);
511
635
  this.render();
@@ -513,17 +637,25 @@ var CodeView = class CodeView {
513
637
  }
514
638
  addItem(input) {
515
639
  this.addItems([input]);
516
- this.syncSelection();
517
640
  }
518
641
  addItems(inputs) {
519
642
  this.appendItemsInternal(inputs);
520
643
  this.syncSelection();
644
+ this.syncItemEditors();
521
645
  }
522
646
  setItems(items) {
523
- if (items.length === 0) this.reset();
524
- else if (this.items.length === 0) this.appendItemsInternal(items);
647
+ if (items.length === 0) {
648
+ const completions = [];
649
+ for (const record of this.itemEditors.values()) {
650
+ const { lastChange } = record.state;
651
+ if (lastChange != null) completions.push(lastChange);
652
+ }
653
+ this.reset();
654
+ for (const { item, file, lineAnnotations } of completions) this.options.onItemEditComplete?.(item, file, lineAnnotations);
655
+ } else if (this.items.length === 0) this.appendItemsInternal(items);
525
656
  else if (!this.tryAppendItems(items)) this.reconcileItems(items);
526
657
  this.syncSelection();
658
+ this.syncItemEditors();
527
659
  }
528
660
  /**
529
661
  * Append new records to the viewer while preserving existing layout state.
@@ -585,7 +717,9 @@ var CodeView = class CodeView {
585
717
  this.scrollDirty = true;
586
718
  }
587
719
  if (!areOptionsEqual(prevOptions, options)) this.renderOptionsRevision++;
588
- if (!this.isContainerManaged && this.items.length > 0) this.render();
720
+ this.syncItemEditors();
721
+ const headerFooterChanged = prevOptions.renderCodeViewHeader !== options.renderCodeViewHeader || prevOptions.renderCodeViewFooter !== options.renderCodeViewFooter;
722
+ if (!this.isContainerManaged && (this.items.length > 0 || headerFooterChanged)) this.render();
589
723
  }
590
724
  capturePendingLayoutAnchor() {
591
725
  if (this.root == null || this.items.length === 0 || this.pendingScrollTarget != null) return;
@@ -598,6 +732,25 @@ var CodeView = class CodeView {
598
732
  this.computeRenderRangeAndEmit();
599
733
  } else queueRender(this.computeRenderRangeAndEmit);
600
734
  }
735
+ isReady() {
736
+ const { workerManager } = this;
737
+ if (workerManager == null || workerManager.isInitialized() || workerManager.getStats().workersFailed) {
738
+ this.clearReadySubscription();
739
+ return true;
740
+ }
741
+ this.isReadySubscription ??= workerManager.subscribeToStatChanges((stats) => {
742
+ if (stats.managerState !== "initialized" && !stats.workersFailed) return;
743
+ this.clearReadySubscription();
744
+ this.render(true);
745
+ });
746
+ if (workerManager.getStats().managerState === "waiting") workerManager.initialize().catch(() => {});
747
+ return false;
748
+ }
749
+ clearReadySubscription() {
750
+ if (this.isReadySubscription == null) return;
751
+ this.isReadySubscription();
752
+ this.isReadySubscription = void 0;
753
+ }
601
754
  instanceChanged(instance, layoutDirty) {
602
755
  const item = this.instanceToItem.get(instance);
603
756
  if (item == null) throw new Error("CodeView.instanceChanged: An instance has changed that is not registered");
@@ -610,6 +763,12 @@ var CodeView = class CodeView {
610
763
  getContainerElement() {
611
764
  return this.root;
612
765
  }
766
+ getHeaderElement() {
767
+ return this.header.element;
768
+ }
769
+ getFooterElement() {
770
+ return this.footer.element;
771
+ }
613
772
  getRenderedItems() {
614
773
  const { firstIndex, lastIndex } = this.renderState;
615
774
  if (firstIndex === -1 || lastIndex === -1 || lastIndex < firstIndex) return [];
@@ -643,7 +802,18 @@ var CodeView = class CodeView {
643
802
  return true;
644
803
  }
645
804
  getSlotSnapshot(coordinator) {
646
- return getSlotSnapshot(this.getRenderedItems(), coordinator);
805
+ return this.buildSlotSnapshot(coordinator);
806
+ }
807
+ buildSlotSnapshot(coordinator) {
808
+ const items = getSlotItems(this.getRenderedItems(), coordinator);
809
+ const { element: header } = this.header;
810
+ const { element: footer } = this.footer;
811
+ if (items == null && header == null && footer == null) return;
812
+ return {
813
+ items,
814
+ header,
815
+ footer
816
+ };
647
817
  }
648
818
  subscribeToScroll(listener) {
649
819
  this.scrollListeners.add(listener);
@@ -659,12 +829,12 @@ var CodeView = class CodeView {
659
829
  getTopForItem(id) {
660
830
  const item = this.idToItem.get(id);
661
831
  if (item == null) return;
662
- return item.top + this.getLayout().paddingTop;
832
+ return item.top + this.getItemTopOffset();
663
833
  }
664
834
  createItem(input, index, top) {
665
835
  const { itemMetricsCache: itemMetrics } = this;
666
836
  if (input.type === "diff") {
667
- const instance$1 = new VirtualizedFileDiff(this.createDiffOptions(input.id), this, itemMetrics, this.workerManager, this.isContainerManaged);
837
+ const instance = new VirtualizedFileDiff(this.createDiffOptions(input.id), this, itemMetrics, this.workerManager, this.isContainerManaged);
668
838
  return {
669
839
  type: "diff",
670
840
  item: input,
@@ -674,7 +844,7 @@ var CodeView = class CodeView {
674
844
  height: 0,
675
845
  element: void 0,
676
846
  renderedOptionsRevision: this.renderOptionsRevision,
677
- instance: instance$1
847
+ instance
678
848
  };
679
849
  }
680
850
  const instance = new VirtualizedFile(this.createFileOptions(input.id), this, itemMetrics, this.workerManager, this.isContainerManaged);
@@ -706,6 +876,82 @@ var CodeView = class CodeView {
706
876
  }
707
877
  item.instance.setSelectedLines(this.selectedLines.range, { notify: false });
708
878
  }
879
+ isItemInEditMode(item) {
880
+ return this.options.createEditor != null && item.item.edit === true && item.item.collapsed !== true;
881
+ }
882
+ isReceiverEdited(receiver, mode) {
883
+ const state = getItemOptionsState(receiver);
884
+ if (state == null) return false;
885
+ const item = this.getItemOptions(state, mode);
886
+ return item != null && this.isItemInEditMode(item);
887
+ }
888
+ /**
889
+ * Attach (or lazily create) the editor for a mounted edit-mode item. Called
890
+ * from the render loop so every mounted item passes through it: fresh
891
+ * mounts, remounts after virtualization released the item, and items whose
892
+ * edit flag was just turned on. Editors persist across unmounts, so a
893
+ * remounted item re-attaches its existing editor and resumes the retained
894
+ * document; the renderers keep the host's file/diff data in sync with the
895
+ * session so the remount paints the edited text.
896
+ */
897
+ attachItemEditor(item) {
898
+ const { id } = item.item;
899
+ const { createEditor } = this.options;
900
+ if (createEditor == null || item.element == null || this.attachedEditors.has(id) || !this.isItemInEditMode(item)) return;
901
+ let record = this.itemEditors.get(id);
902
+ if (record == null) {
903
+ const state = { id };
904
+ const editor = createEditor({ onChange: (file, lineAnnotations) => {
905
+ const latest = this.idToItem.get(state.id);
906
+ if (latest == null) return;
907
+ state.lastChange = {
908
+ item: latest.item,
909
+ file,
910
+ lineAnnotations
911
+ };
912
+ this.options.onItemEditChange?.(latest.item, file, lineAnnotations);
913
+ } });
914
+ if (editor == null) return;
915
+ record = {
916
+ editor,
917
+ state
918
+ };
919
+ this.itemEditors.set(id, record);
920
+ }
921
+ record.editor.edit(item.instance);
922
+ this.attachedEditors.add(id);
923
+ }
924
+ /**
925
+ * Drop editors for items that can no longer be edited: removed, edit turned
926
+ * off, collapsed, or the createEditor option was unset. Attachment happens
927
+ * in the render loop via attachItemEditor, so this only reconciles editors
928
+ * CodeView is already holding.
929
+ */
930
+ syncItemEditors() {
931
+ if (this.itemEditors.size === 0) return;
932
+ const completions = [];
933
+ for (const [id, record] of this.itemEditors) {
934
+ const item = this.idToItem.get(id);
935
+ if (item != null && this.isItemInEditMode(item)) continue;
936
+ record.editor.cleanUp();
937
+ this.itemEditors.delete(id);
938
+ this.attachedEditors.delete(id);
939
+ const itemSnapshot = item?.item ?? record.state.lastChange?.item;
940
+ if (itemSnapshot?.type === "diff") {
941
+ if (item != null && item.type === "diff" && item.instance.completeEditSession()) {
942
+ this.markItemLayoutDirty(item);
943
+ this.render();
944
+ }
945
+ finishEditSessionForDiff(itemSnapshot.fileDiff);
946
+ }
947
+ const { lastChange } = record.state;
948
+ if (lastChange != null) completions.push(item == null ? lastChange : {
949
+ ...lastChange,
950
+ item: item.item
951
+ });
952
+ }
953
+ for (const { item, file, lineAnnotations } of completions) this.options.onItemEditComplete?.(item, file, lineAnnotations);
954
+ }
709
955
  renamePendingScrollTarget(oldId, newId) {
710
956
  const { pendingScrollTarget } = this;
711
957
  if (pendingScrollTarget == null || pendingScrollTarget.type === "position" || pendingScrollTarget.id !== oldId) return;
@@ -719,19 +965,35 @@ var CodeView = class CodeView {
719
965
  }
720
966
  createFileOptionsPrototype() {
721
967
  const prototype = {};
722
- for (const key of CODE_VIEW_FILE_OPTION_KEYS) defineItemOption(prototype, key, () => this.options[key]);
968
+ for (const key of CODE_VIEW_FILE_OPTION_KEYS) {
969
+ if (CODE_VIEW_EDIT_FORCED_OPTION_KEYS.has(key)) continue;
970
+ defineItemOption(prototype, key, () => this.options[key]);
971
+ }
972
+ defineItemOption(prototype, "useTokenTransformer", (receiver) => this.isReceiverEdited(receiver, "file") ? true : this.options.useTokenTransformer);
723
973
  defineItemOption(prototype, "stickyHeader", () => this.options.stickyHeaders);
724
- defineItemOption(prototype, "collapsed", (receiver) => this.getItemOptions(getItemOptionsState(receiver), "file")?.item.collapsed === true);
974
+ defineItemOption(prototype, "collapsed", (receiver) => {
975
+ const state = getItemOptionsState(receiver);
976
+ if (state == null) return;
977
+ return this.getItemOptions(state, "file")?.item.collapsed;
978
+ });
725
979
  for (const key of CODE_VIEW_SHARED_CALLBACK_KEYS) this.defineItemSharedCallback(prototype, "file", key);
726
980
  for (const key of CODE_VIEW_SELECTION_CALLBACK_KEYS) this.defineItemSelectionCallback(prototype, "file", key);
727
981
  return prototype;
728
982
  }
729
983
  createDiffOptionsPrototype() {
730
984
  const prototype = {};
731
- for (const key of CODE_VIEW_DIFF_OPTION_KEYS) defineItemOption(prototype, key, () => this.options[key]);
985
+ for (const key of CODE_VIEW_DIFF_OPTION_KEYS) {
986
+ if (CODE_VIEW_EDIT_FORCED_OPTION_KEYS.has(key)) continue;
987
+ defineItemOption(prototype, key, () => this.options[key]);
988
+ }
989
+ defineItemOption(prototype, "useTokenTransformer", (receiver) => this.isReceiverEdited(receiver, "diff") ? true : this.options.useTokenTransformer);
732
990
  defineItemOption(prototype, "stickyHeader", () => this.options.stickyHeaders);
733
991
  defineItemOption(prototype, "hunkSeparators", () => this.options.hunkSeparators);
734
- defineItemOption(prototype, "collapsed", (receiver) => this.getItemOptions(getItemOptionsState(receiver), "diff")?.item.collapsed === true);
992
+ defineItemOption(prototype, "collapsed", (receiver) => {
993
+ const state = getItemOptionsState(receiver);
994
+ if (state == null) return;
995
+ return this.getItemOptions(state, "diff")?.item.collapsed;
996
+ });
735
997
  for (const key of CODE_VIEW_SHARED_CALLBACK_KEYS) this.defineItemSharedCallback(prototype, "diff", key);
736
998
  for (const key of CODE_VIEW_SELECTION_CALLBACK_KEYS) this.defineItemSelectionCallback(prototype, "diff", key);
737
999
  return prototype;
@@ -747,7 +1009,9 @@ var CodeView = class CodeView {
747
1009
  return options;
748
1010
  }
749
1011
  updateItemOptionsId(options, id) {
750
- getItemOptionsState(options).id = id;
1012
+ const state = getItemOptionsState(options);
1013
+ if (state == null) throw new Error(`CodeView.updateItemOptionsId: No valid state`);
1014
+ state.id = id;
751
1015
  }
752
1016
  getItemOptions(state, mode) {
753
1017
  const item = this.idToItem.get(state.id);
@@ -758,6 +1022,7 @@ var CodeView = class CodeView {
758
1022
  defineItemOption(options, key, (receiver) => {
759
1023
  if (this.options[key] == null) return;
760
1024
  const state = getItemOptionsState(receiver);
1025
+ if (state == null) return;
761
1026
  const callbackCache = state.callbackCache ??= {};
762
1027
  let wrapped = callbackCache[key];
763
1028
  if (wrapped == null) {
@@ -774,8 +1039,8 @@ var CodeView = class CodeView {
774
1039
  }
775
1040
  defineItemSelectionCallback(options, mode, key) {
776
1041
  defineItemOption(options, key, (receiver) => {
777
- if (this.options.enableLineSelection !== true) return;
778
1042
  const state = getItemOptionsState(receiver);
1043
+ if (state == null) return;
779
1044
  const callbackCache = state.callbackCache ??= {};
780
1045
  let wrapped = callbackCache[key];
781
1046
  if (wrapped == null) {
@@ -903,7 +1168,7 @@ var CodeView = class CodeView {
903
1168
  }
904
1169
  getMaxScrollTopForHeight(scrollHeight) {
905
1170
  const { paddingBottom, paddingTop } = this.getLayout();
906
- return Math.max(paddingTop + scrollHeight + paddingBottom - this.getHeight(), 0);
1171
+ return Math.max(paddingTop + this.header.height + scrollHeight + this.footer.height + paddingBottom - this.getHeight(), 0);
907
1172
  }
908
1173
  getMaxScrollTop() {
909
1174
  return this.getMaxScrollTopForHeight(this.getScrollHeight());
@@ -1015,7 +1280,7 @@ var CodeView = class CodeView {
1015
1280
  const rect = this.getScrollTargetRect(target);
1016
1281
  if (rect == null) return;
1017
1282
  const offset = target.offset ?? 0;
1018
- const targetTop = this.getLayout().paddingTop + rect.top;
1283
+ const targetTop = this.getItemTopOffset() + rect.top;
1019
1284
  const targetBottom = targetTop + rect.height;
1020
1285
  const currentTop = this.getScrollTop();
1021
1286
  const visibleTop = currentTop + (target.type === "line" || target.type === "range" ? this.getStickyHeaderOffset() : 0);
@@ -1067,7 +1332,7 @@ var CodeView = class CodeView {
1067
1332
  * and stickyOffset if necessary
1068
1333
  */
1069
1334
  resolveAlignedScrollPosition(targetTop, targetHeight, align, offset = 0, stickyOffset = 0) {
1070
- targetTop += this.getLayout().paddingTop;
1335
+ targetTop += this.getItemTopOffset();
1071
1336
  const viewportHeight = this.getHeight();
1072
1337
  if (align === "center" && targetHeight + offset < viewportHeight) return targetTop - (viewportHeight - targetHeight) / 2 + offset;
1073
1338
  if (align === "end") return targetTop - (viewportHeight - targetHeight) + offset;
@@ -1171,6 +1436,7 @@ var CodeView = class CodeView {
1171
1436
  }
1172
1437
  computeRenderRangeAndEmit = (timestamp = performance.now()) => {
1173
1438
  if (CodeView.__STOP || this.container == null) return;
1439
+ if (!this.isReady()) return;
1174
1440
  const viewportHeight = this.getHeight();
1175
1441
  const initialScrollTop = this.getScrollTop();
1176
1442
  let scrollTopAfterLayout = initialScrollTop;
@@ -1198,7 +1464,7 @@ var CodeView = class CodeView {
1198
1464
  const fitPerfectly = !computeScrollCorrection && (this.renderState.scrollTop === -1 || Math.abs(targetScrollTop - this.renderState.scrollTop) > viewportHeight + this.config.overscrollSize * 2);
1199
1465
  if (fitPerfectly) scrollAnchor = void 0;
1200
1466
  this.windowSpecs = createWindowFromScrollPosition({
1201
- scrollTop: targetScrollTop,
1467
+ scrollTop: targetScrollTop - this.header.height,
1202
1468
  height: viewportHeight,
1203
1469
  scrollHeight: this.getScrollHeight(),
1204
1470
  fitPerfectly,
@@ -1217,6 +1483,7 @@ var CodeView = class CodeView {
1217
1483
  if (item == null) throw new Error(`CodeView.computeRenderRangeAndEmit: No item at index: ${index}`);
1218
1484
  if (!(item.top > top - item.height && item.top <= bottom)) this.releaseRenderedItem(item);
1219
1485
  }
1486
+ const hostsChanged = this.reconcileHeaderFooterHosts();
1220
1487
  let prevElement;
1221
1488
  const updatedItems = /* @__PURE__ */ new Set();
1222
1489
  const startingIndex = this.findFirstVisibleIndex(top);
@@ -1242,10 +1509,13 @@ var CodeView = class CodeView {
1242
1509
  }
1243
1510
  prevElement = item.element;
1244
1511
  }
1512
+ if (item.item.edit === true) this.attachItemEditor(item);
1245
1513
  }
1246
1514
  this.renderState.firstIndex = startingIndex <= lastRenderedIndex ? startingIndex : -1;
1247
1515
  this.renderState.lastIndex = lastRenderedIndex;
1248
1516
  this.flushSlotCoordinator();
1517
+ this.flushManagers(updatedItems);
1518
+ if (hostsChanged) this.measureMountedHosts();
1249
1519
  this.reconcileRenderedItems(updatedItems);
1250
1520
  this.syncContainerHeight();
1251
1521
  this.updateStickyPositioning();
@@ -1270,7 +1540,9 @@ var CodeView = class CodeView {
1270
1540
  this.scrollAnimation = void 0;
1271
1541
  }
1272
1542
  this.renderState.scrollTop = roundToDevicePixel(syncedScrollTop);
1273
- this.flushManagers(updatedItems);
1543
+ this.updateStickyPositioning();
1544
+ this.validateStickyContainerHeight();
1545
+ this.fixContainerFocus();
1274
1546
  if (fitPerfectly || this.scrollAnimation != null) this.render();
1275
1547
  };
1276
1548
  flushManagers(updatedItems) {
@@ -1382,6 +1654,25 @@ var CodeView = class CodeView {
1382
1654
  this.scrollAnimation = void 0;
1383
1655
  }
1384
1656
  }
1657
+ } else if (entry.target === this.header.element || entry.target === this.footer.element) {
1658
+ const host = entry.target === this.header.element ? this.header : this.footer;
1659
+ const blockSize = entry.borderBoxSize[0].blockSize;
1660
+ if (blockSize !== host.height) {
1661
+ const currentScrollTop = this.getScrollTop();
1662
+ const anchor = this.getScrollAnchor(currentScrollTop);
1663
+ this.setHostHeight(host, blockSize);
1664
+ const anchoredScrollTop = anchor != null ? this.resolveAnchoredScrollTop(anchor) : void 0;
1665
+ if (anchoredScrollTop != null) {
1666
+ const resizeAnchorDelta = anchoredScrollTop - currentScrollTop;
1667
+ this.applyScrollFix(anchoredScrollTop, currentScrollTop, this.windowSpecs);
1668
+ if (this.scrollAnimation != null) this.scrollAnimation.position += resizeAnchorDelta;
1669
+ }
1670
+ if (this.pendingScrollTarget != null && this.isPendingTargetSettled(this.pendingScrollTarget)) {
1671
+ this.pendingScrollTarget = void 0;
1672
+ this.scrollAnimation = void 0;
1673
+ }
1674
+ this.render();
1675
+ }
1385
1676
  } else {
1386
1677
  this.scrollDirty = true;
1387
1678
  this.heightDirty = true;
@@ -1404,6 +1695,7 @@ var CodeView = class CodeView {
1404
1695
  */
1405
1696
  getScrollAnchor(scrollTop) {
1406
1697
  if (this.pendingLayoutAnchor != null) return this.pendingLayoutAnchor;
1698
+ if (scrollTop <= 0) return;
1407
1699
  const { firstIndex, lastIndex, stickyTop, stickyBottom } = this.renderState;
1408
1700
  if (firstIndex === -1 || lastIndex === -1) return;
1409
1701
  const viewportHeight = this.getHeight();
@@ -1411,7 +1703,7 @@ var CodeView = class CodeView {
1411
1703
  for (let index = firstIndex; index <= lastIndex; index++) {
1412
1704
  const item = this.items[index];
1413
1705
  if (item == null) continue;
1414
- const absoluteItemTop = this.getLayout().paddingTop + item.top;
1706
+ const absoluteItemTop = this.getItemTopOffset() + item.top;
1415
1707
  if (absoluteItemTop + item.height <= scrollTop) continue;
1416
1708
  if (absoluteItemTop >= scrollTop + viewportHeight) break;
1417
1709
  if (absoluteItemTop >= scrollTop) return {
@@ -1443,14 +1735,14 @@ var CodeView = class CodeView {
1443
1735
  resolveAnchoredScrollTop(anchor) {
1444
1736
  const item = this.idToItem.get(anchor.id);
1445
1737
  if (item == null) return;
1446
- const { paddingTop } = this.getLayout();
1738
+ const itemTopOffset = this.getItemTopOffset();
1447
1739
  if (anchor.type === "item") {
1448
- const absoluteItemTop = paddingTop + item.top;
1740
+ const absoluteItemTop = itemTopOffset + item.top;
1449
1741
  return this.clampScrollTop(absoluteItemTop - anchor.viewportOffset);
1450
1742
  }
1451
1743
  const linePosition = item.type === "diff" ? item.instance.getLinePosition(anchor.lineNumber, anchor.side) : item.instance.getLinePosition(anchor.lineNumber);
1452
1744
  if (linePosition == null) return;
1453
- const absoluteLineTop = paddingTop + item.top + linePosition.top;
1745
+ const absoluteLineTop = itemTopOffset + item.top + linePosition.top;
1454
1746
  return this.clampScrollTop(absoluteLineTop - anchor.viewportOffset);
1455
1747
  }
1456
1748
  /**
@@ -1507,11 +1799,10 @@ var CodeView = class CodeView {
1507
1799
  }
1508
1800
  flushSlotCoordinator() {
1509
1801
  if (this.slotCoordinator == null) return;
1510
- const { onSnapshotChange } = this.slotCoordinator;
1511
- const slotSnapshot = getSlotSnapshot(this.getRenderedItems(), this.slotCoordinator);
1512
- if (areSlotSnapshotsEqual(this.slotSnapshot, slotSnapshot)) return;
1802
+ const slotSnapshot = this.buildSlotSnapshot(this.slotCoordinator);
1803
+ if (areManagedSnapshotsEqual(this.slotSnapshot, slotSnapshot)) return;
1513
1804
  this.slotSnapshot = slotSnapshot;
1514
- onSnapshotChange(slotSnapshot);
1805
+ this.slotCoordinator.onSnapshotChange(slotSnapshot);
1515
1806
  }
1516
1807
  notifyScroll() {
1517
1808
  if (this.scrollListeners.size === 0) return;
@@ -1580,8 +1871,11 @@ var CodeView = class CodeView {
1580
1871
  const item = this.items[index];
1581
1872
  if (item == null) throw new Error("CodeView.recomputeLayout: invalid item index");
1582
1873
  item.top = runningTop;
1583
- if (item.type === "diff") item.height = item.instance.prepareCodeViewItem(item.item.fileDiff, runningTop, reset);
1584
- else item.height = item.instance.prepareCodeViewItem(item.item.file, runningTop, reset);
1874
+ if (item.type === "diff") {
1875
+ const fileDiff = item.instance.consumeCodeViewLayoutChanges(item.item.fileDiff);
1876
+ if (fileDiff != null) Object.assign(item.item.fileDiff, fileDiff);
1877
+ item.height = item.instance.prepareCodeViewItem(item.item.fileDiff, runningTop, reset, item.item.annotations ?? []);
1878
+ } else item.height = item.instance.prepareCodeViewItem(item.item.file, runningTop, reset, item.item.annotations ?? []);
1585
1879
  runningTop += item.height;
1586
1880
  if (index < this.items.length - 1) runningTop += layout.gap;
1587
1881
  }
@@ -1602,21 +1896,21 @@ var CodeView = class CodeView {
1602
1896
  };
1603
1897
  function prepareItemInstance(item) {
1604
1898
  item.instance.cleanUp(true);
1605
- if (item.type === "diff") return item.instance.prepareCodeViewItem(item.item.fileDiff, item.top);
1606
- else return item.instance.prepareCodeViewItem(item.item.file, item.top);
1899
+ if (item.type === "diff") return item.instance.prepareCodeViewItem(item.item.fileDiff, item.top, void 0, item.item.annotations ?? []);
1900
+ else return item.instance.prepareCodeViewItem(item.item.file, item.top, void 0, item.item.annotations ?? []);
1607
1901
  }
1608
1902
  function shouldClearPool(previousOptions, nextOptions) {
1609
1903
  return !areThemesEqual(previousOptions.theme ?? DEFAULT_THEMES, nextOptions.theme ?? DEFAULT_THEMES) || (previousOptions.themeType ?? "system") !== (nextOptions.themeType ?? "system") || previousOptions.unsafeCSS !== nextOptions.unsafeCSS;
1610
1904
  }
1611
1905
  function hasItemLayoutOptionChanged(previousOptions, nextOptions) {
1612
- return (previousOptions.overflow ?? "scroll") !== (nextOptions.overflow ?? "scroll") || (previousOptions.disableLineNumbers ?? false) !== (nextOptions.disableLineNumbers ?? false) || (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || previousOptions.unsafeCSS !== nextOptions.unsafeCSS || (previousOptions.diffStyle ?? "split") !== (nextOptions.diffStyle ?? "split") || (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);
1906
+ return (previousOptions.overflow ?? "scroll") !== (nextOptions.overflow ?? "scroll") || (previousOptions.disableLineNumbers ?? false) !== (nextOptions.disableLineNumbers ?? false) || (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || previousOptions.unsafeCSS !== nextOptions.unsafeCSS || (previousOptions.diffStyle ?? "split") !== (nextOptions.diffStyle ?? "split") || (previousOptions.diffIndicators ?? "bars") !== (nextOptions.diffIndicators ?? "bars") || (previousOptions.hunkSeparators ?? "line-info") !== (nextOptions.hunkSeparators ?? "line-info") || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? 1) !== (nextOptions.collapsedContextThreshold ?? 1);
1613
1907
  }
1614
1908
  function hasCodeViewDiffEstimateOptionChanged(previousOptions, nextOptions) {
1615
- 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);
1909
+ return (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || (previousOptions.hunkSeparators ?? "line-info") !== (nextOptions.hunkSeparators ?? "line-info") || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? 1) !== (nextOptions.collapsedContextThreshold ?? 1);
1616
1910
  }
1617
1911
  function isPooledShadowChild(child) {
1618
1912
  if (child instanceof SVGElement) return true;
1619
- return isStyleNode(child) && (child.hasAttribute(CORE_CSS_ATTRIBUTE) || child.hasAttribute(THEME_CSS_ATTRIBUTE) || child.hasAttribute(UNSAFE_CSS_ATTRIBUTE));
1913
+ return isStyleNode(child) && (child.hasAttribute("data-core-css") || child.hasAttribute("data-theme-css") || child.hasAttribute("data-unsafe-css"));
1620
1914
  }
1621
1915
  function formatSelectedLineRange(range) {
1622
1916
  const start = formatSelectedLinePoint(range.start, range.side);
@@ -1633,14 +1927,14 @@ function renderItem(item, fileContainer, forceRender = false) {
1633
1927
  fileContainer,
1634
1928
  fileDiff: item.item.fileDiff,
1635
1929
  forceRender,
1636
- lineAnnotations: item.item.annotations
1930
+ lineAnnotations: item.item.annotations ?? []
1637
1931
  });
1638
1932
  else return item.instance.render({
1639
1933
  deferManagers: true,
1640
1934
  fileContainer,
1641
1935
  file: item.item.file,
1642
1936
  forceRender,
1643
- lineAnnotations: item.item.annotations
1937
+ lineAnnotations: item.item.annotations ?? []
1644
1938
  });
1645
1939
  }
1646
1940
  /**
@@ -1659,7 +1953,7 @@ function syncRenderedItemOrder(container, element, prevElement) {
1659
1953
  function hasAnnotations(item) {
1660
1954
  return (item.annotations?.length ?? 0) > 0;
1661
1955
  }
1662
- function getSlotSnapshot(renderedItems, { hasHeaderRenderers, hasAnnotationRenderer, hasGutterRenderer }) {
1956
+ function getSlotItems(renderedItems, { hasHeaderRenderers, hasAnnotationRenderer, hasGutterRenderer }) {
1663
1957
  if (renderedItems.length === 0) return;
1664
1958
  if (hasHeaderRenderers || hasGutterRenderer) return renderedItems;
1665
1959
  if (!hasAnnotationRenderer) return;
@@ -1667,17 +1961,7 @@ function getSlotSnapshot(renderedItems, { hasHeaderRenderers, hasAnnotationRende
1667
1961
  for (const renderedItem of renderedItems) if (hasAnnotations(renderedItem.item)) slotSnapshot.push(renderedItem);
1668
1962
  return slotSnapshot.length > 0 ? slotSnapshot : void 0;
1669
1963
  }
1670
- function areSlotSnapshotsEqual(previous, next) {
1671
- if (previous == null || next == null) return previous === next;
1672
- if (previous.length !== next.length) return false;
1673
- for (let index = 0; index < previous.length; index++) {
1674
- const previousItem = previous[index];
1675
- const nextItem = next[index];
1676
- if (previousItem == null || nextItem == null || previousItem.id !== nextItem.id || previousItem.type !== nextItem.type || previousItem.element !== nextItem.element || previousItem.version !== nextItem.version) return false;
1677
- }
1678
- return true;
1679
- }
1680
-
1681
1964
  //#endregion
1682
- export { CodeView };
1965
+ export { CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CodeView };
1966
+
1683
1967
  //# sourceMappingURL=CodeView.js.map