@openclaw/diffs 2026.8.1-beta.3 → 2026.8.1

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 (1238) hide show
  1. package/dist/assets/viewer-runtime.js +134 -161
  2. package/dist/{browser.runtime-_hkQDewM.js → browser.runtime-DTKAejqd.js} +1 -1
  3. package/dist/index.js +7 -6
  4. package/dist/{viewer-assets-DKR8WLAI.js → viewer-assets-D3qrnaxI.js} +11 -23
  5. package/node_modules/@pierre/diffs/README.md +9 -0
  6. package/node_modules/@pierre/diffs/dist/components/CodeView.d.ts +94 -7
  7. package/node_modules/@pierre/diffs/dist/components/CodeView.d.ts.map +1 -1
  8. package/node_modules/@pierre/diffs/dist/components/CodeView.js +333 -47
  9. package/node_modules/@pierre/diffs/dist/components/CodeView.js.map +1 -1
  10. package/node_modules/@pierre/diffs/dist/components/File.d.ts +22 -4
  11. package/node_modules/@pierre/diffs/dist/components/File.d.ts.map +1 -1
  12. package/node_modules/@pierre/diffs/dist/components/File.js +143 -23
  13. package/node_modules/@pierre/diffs/dist/components/File.js.map +1 -1
  14. package/node_modules/@pierre/diffs/dist/components/FileDiff.d.ts +83 -19
  15. package/node_modules/@pierre/diffs/dist/components/FileDiff.d.ts.map +1 -1
  16. package/node_modules/@pierre/diffs/dist/components/FileDiff.js +461 -46
  17. package/node_modules/@pierre/diffs/dist/components/FileDiff.js.map +1 -1
  18. package/node_modules/@pierre/diffs/dist/components/FileStream.d.ts.map +1 -1
  19. package/node_modules/@pierre/diffs/dist/components/FileStream.js +2 -1
  20. package/node_modules/@pierre/diffs/dist/components/FileStream.js.map +1 -1
  21. package/node_modules/@pierre/diffs/dist/components/UnresolvedFile.d.ts +2 -2
  22. package/node_modules/@pierre/diffs/dist/components/UnresolvedFile.d.ts.map +1 -1
  23. package/node_modules/@pierre/diffs/dist/components/UnresolvedFile.js +9 -4
  24. package/node_modules/@pierre/diffs/dist/components/UnresolvedFile.js.map +1 -1
  25. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.d.ts +7 -3
  26. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.d.ts.map +1 -1
  27. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js +87 -60
  28. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js.map +1 -1
  29. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.d.ts +30 -5
  30. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  31. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js +277 -56
  32. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js.map +1 -1
  33. package/node_modules/@pierre/diffs/dist/components/Virtualizer.d.ts +17 -3
  34. package/node_modules/@pierre/diffs/dist/components/Virtualizer.d.ts.map +1 -1
  35. package/node_modules/@pierre/diffs/dist/components/Virtualizer.js +44 -5
  36. package/node_modules/@pierre/diffs/dist/components/Virtualizer.js.map +1 -1
  37. package/node_modules/@pierre/diffs/dist/constants.d.ts +4 -1
  38. package/node_modules/@pierre/diffs/dist/constants.d.ts.map +1 -1
  39. package/node_modules/@pierre/diffs/dist/constants.js +4 -1
  40. package/node_modules/@pierre/diffs/dist/constants.js.map +1 -1
  41. package/node_modules/@pierre/diffs/dist/edit/index.d.ts +6 -0
  42. package/node_modules/@pierre/diffs/dist/edit/index.js +3 -0
  43. package/node_modules/@pierre/diffs/dist/editor/command.d.ts +15 -0
  44. package/node_modules/@pierre/diffs/dist/editor/command.d.ts.map +1 -0
  45. package/node_modules/@pierre/diffs/dist/editor/command.js +128 -0
  46. package/node_modules/@pierre/diffs/dist/editor/command.js.map +1 -0
  47. package/node_modules/@pierre/diffs/dist/editor/editStack.d.ts +76 -0
  48. package/node_modules/@pierre/diffs/dist/editor/editStack.d.ts.map +1 -0
  49. package/node_modules/@pierre/diffs/dist/editor/editStack.js +259 -0
  50. package/node_modules/@pierre/diffs/dist/editor/editStack.js.map +1 -0
  51. package/node_modules/@pierre/diffs/dist/editor/editor.d.ts +118 -0
  52. package/node_modules/@pierre/diffs/dist/editor/editor.d.ts.map +1 -0
  53. package/node_modules/@pierre/diffs/dist/editor/editor.js +2880 -0
  54. package/node_modules/@pierre/diffs/dist/editor/editor.js.map +1 -0
  55. package/node_modules/@pierre/diffs/dist/editor/editor2.js +6 -0
  56. package/node_modules/@pierre/diffs/dist/editor/editor2.js.map +1 -0
  57. package/node_modules/@pierre/diffs/dist/editor/languages.d.ts +26 -0
  58. package/node_modules/@pierre/diffs/dist/editor/languages.d.ts.map +1 -0
  59. package/node_modules/@pierre/diffs/dist/editor/languages.js +363 -0
  60. package/node_modules/@pierre/diffs/dist/editor/languages.js.map +1 -0
  61. package/node_modules/@pierre/diffs/dist/editor/lineAnnotations.d.ts +9 -0
  62. package/node_modules/@pierre/diffs/dist/editor/lineAnnotations.d.ts.map +1 -0
  63. package/node_modules/@pierre/diffs/dist/editor/lineAnnotations.js +212 -0
  64. package/node_modules/@pierre/diffs/dist/editor/lineAnnotations.js.map +1 -0
  65. package/node_modules/@pierre/diffs/dist/editor/marker.d.ts +38 -0
  66. package/node_modules/@pierre/diffs/dist/editor/marker.d.ts.map +1 -0
  67. package/node_modules/@pierre/diffs/dist/editor/marker.js +245 -0
  68. package/node_modules/@pierre/diffs/dist/editor/marker.js.map +1 -0
  69. package/node_modules/@pierre/diffs/dist/editor/matchBrackets.d.ts +9 -0
  70. package/node_modules/@pierre/diffs/dist/editor/matchBrackets.d.ts.map +1 -0
  71. package/node_modules/@pierre/diffs/dist/editor/matchBrackets.js +138 -0
  72. package/node_modules/@pierre/diffs/dist/editor/matchBrackets.js.map +1 -0
  73. package/node_modules/@pierre/diffs/dist/editor/pieceTable.d.ts +40 -0
  74. package/node_modules/@pierre/diffs/dist/editor/pieceTable.d.ts.map +1 -0
  75. package/node_modules/@pierre/diffs/dist/editor/pieceTable.js +706 -0
  76. package/node_modules/@pierre/diffs/dist/editor/pieceTable.js.map +1 -0
  77. package/node_modules/@pierre/diffs/dist/editor/platform.d.ts +11 -0
  78. package/node_modules/@pierre/diffs/dist/editor/platform.d.ts.map +1 -0
  79. package/node_modules/@pierre/diffs/dist/editor/platform.js +31 -0
  80. package/node_modules/@pierre/diffs/dist/editor/platform.js.map +1 -0
  81. package/node_modules/@pierre/diffs/dist/editor/popover.d.ts +65 -0
  82. package/node_modules/@pierre/diffs/dist/editor/popover.d.ts.map +1 -0
  83. package/node_modules/@pierre/diffs/dist/editor/popover.js +191 -0
  84. package/node_modules/@pierre/diffs/dist/editor/popover.js.map +1 -0
  85. package/node_modules/@pierre/diffs/dist/editor/searchPanel.d.ts +41 -0
  86. package/node_modules/@pierre/diffs/dist/editor/searchPanel.d.ts.map +1 -0
  87. package/node_modules/@pierre/diffs/dist/editor/searchPanel.js +318 -0
  88. package/node_modules/@pierre/diffs/dist/editor/searchPanel.js.map +1 -0
  89. package/node_modules/@pierre/diffs/dist/editor/selection.d.ts +211 -0
  90. package/node_modules/@pierre/diffs/dist/editor/selection.d.ts.map +1 -0
  91. package/node_modules/@pierre/diffs/dist/editor/selection.js +1626 -0
  92. package/node_modules/@pierre/diffs/dist/editor/selection.js.map +1 -0
  93. package/node_modules/@pierre/diffs/dist/editor/selectionAction.d.ts +47 -0
  94. package/node_modules/@pierre/diffs/dist/editor/selectionAction.d.ts.map +1 -0
  95. package/node_modules/@pierre/diffs/dist/editor/selectionAction.js +66 -0
  96. package/node_modules/@pierre/diffs/dist/editor/selectionAction.js.map +1 -0
  97. package/node_modules/@pierre/diffs/dist/editor/sprite.d.ts +8 -0
  98. package/node_modules/@pierre/diffs/dist/editor/sprite.d.ts.map +1 -0
  99. package/node_modules/@pierre/diffs/dist/editor/sprite.js +45 -0
  100. package/node_modules/@pierre/diffs/dist/editor/sprite.js.map +1 -0
  101. package/node_modules/@pierre/diffs/dist/editor/stateStorage.d.ts +15 -0
  102. package/node_modules/@pierre/diffs/dist/editor/stateStorage.d.ts.map +1 -0
  103. package/node_modules/@pierre/diffs/dist/editor/stateStorage.js +65 -0
  104. package/node_modules/@pierre/diffs/dist/editor/stateStorage.js.map +1 -0
  105. package/node_modules/@pierre/diffs/dist/editor/textDocument.d.ts +67 -0
  106. package/node_modules/@pierre/diffs/dist/editor/textDocument.d.ts.map +1 -0
  107. package/node_modules/@pierre/diffs/dist/editor/textDocument.js +278 -0
  108. package/node_modules/@pierre/diffs/dist/editor/textDocument.js.map +1 -0
  109. package/node_modules/@pierre/diffs/dist/editor/textMeasure.d.ts +61 -0
  110. package/node_modules/@pierre/diffs/dist/editor/textMeasure.d.ts.map +1 -0
  111. package/node_modules/@pierre/diffs/dist/editor/textMeasure.js +209 -0
  112. package/node_modules/@pierre/diffs/dist/editor/textMeasure.js.map +1 -0
  113. package/node_modules/@pierre/diffs/dist/editor/tokenizer.d.ts +41 -0
  114. package/node_modules/@pierre/diffs/dist/editor/tokenizer.d.ts.map +1 -0
  115. package/node_modules/@pierre/diffs/dist/editor/tokenizer.js +596 -0
  116. package/node_modules/@pierre/diffs/dist/editor/tokenizer.js.map +1 -0
  117. package/node_modules/@pierre/diffs/dist/editor/utils.d.ts +22 -0
  118. package/node_modules/@pierre/diffs/dist/editor/utils.d.ts.map +1 -0
  119. package/node_modules/@pierre/diffs/dist/editor/utils.js +78 -0
  120. package/node_modules/@pierre/diffs/dist/editor/utils.js.map +1 -0
  121. package/node_modules/@pierre/diffs/dist/index.d.ts +12 -9
  122. package/node_modules/@pierre/diffs/dist/index.js +13 -10
  123. package/node_modules/@pierre/diffs/dist/managers/InteractionManager.d.ts +20 -2
  124. package/node_modules/@pierre/diffs/dist/managers/InteractionManager.d.ts.map +1 -1
  125. package/node_modules/@pierre/diffs/dist/managers/InteractionManager.js +155 -79
  126. package/node_modules/@pierre/diffs/dist/managers/InteractionManager.js.map +1 -1
  127. package/node_modules/@pierre/diffs/dist/managers/ResizeManager.d.ts +10 -2
  128. package/node_modules/@pierre/diffs/dist/managers/ResizeManager.d.ts.map +1 -1
  129. package/node_modules/@pierre/diffs/dist/managers/ResizeManager.js +33 -13
  130. package/node_modules/@pierre/diffs/dist/managers/ResizeManager.js.map +1 -1
  131. package/node_modules/@pierre/diffs/dist/managers/UniversalRenderingManager.d.ts +2 -1
  132. package/node_modules/@pierre/diffs/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  133. package/node_modules/@pierre/diffs/dist/managers/UniversalRenderingManager.js +7 -3
  134. package/node_modules/@pierre/diffs/dist/managers/UniversalRenderingManager.js.map +1 -1
  135. package/node_modules/@pierre/diffs/dist/react/CodeView.d.ts +29 -3
  136. package/node_modules/@pierre/diffs/dist/react/CodeView.d.ts.map +1 -1
  137. package/node_modules/@pierre/diffs/dist/react/CodeView.js +111 -30
  138. package/node_modules/@pierre/diffs/dist/react/CodeView.js.map +1 -1
  139. package/node_modules/@pierre/diffs/dist/react/EditContext.d.ts +20 -0
  140. package/node_modules/@pierre/diffs/dist/react/EditContext.d.ts.map +1 -0
  141. package/node_modules/@pierre/diffs/dist/react/EditContext.js +27 -0
  142. package/node_modules/@pierre/diffs/dist/react/EditContext.js.map +1 -0
  143. package/node_modules/@pierre/diffs/dist/react/File.d.ts +4 -1
  144. package/node_modules/@pierre/diffs/dist/react/File.d.ts.map +1 -1
  145. package/node_modules/@pierre/diffs/dist/react/File.js +5 -2
  146. package/node_modules/@pierre/diffs/dist/react/File.js.map +1 -1
  147. package/node_modules/@pierre/diffs/dist/react/FileDiff.d.ts +4 -1
  148. package/node_modules/@pierre/diffs/dist/react/FileDiff.d.ts.map +1 -1
  149. package/node_modules/@pierre/diffs/dist/react/FileDiff.js +5 -2
  150. package/node_modules/@pierre/diffs/dist/react/FileDiff.js.map +1 -1
  151. package/node_modules/@pierre/diffs/dist/react/MultiFileDiff.d.ts +7 -5
  152. package/node_modules/@pierre/diffs/dist/react/MultiFileDiff.d.ts.map +1 -1
  153. package/node_modules/@pierre/diffs/dist/react/MultiFileDiff.js +5 -2
  154. package/node_modules/@pierre/diffs/dist/react/MultiFileDiff.js.map +1 -1
  155. package/node_modules/@pierre/diffs/dist/react/PatchDiff.d.ts +4 -1
  156. package/node_modules/@pierre/diffs/dist/react/PatchDiff.d.ts.map +1 -1
  157. package/node_modules/@pierre/diffs/dist/react/PatchDiff.js +5 -2
  158. package/node_modules/@pierre/diffs/dist/react/PatchDiff.js.map +1 -1
  159. package/node_modules/@pierre/diffs/dist/react/UnresolvedFile.d.ts +2 -1
  160. package/node_modules/@pierre/diffs/dist/react/UnresolvedFile.d.ts.map +1 -1
  161. package/node_modules/@pierre/diffs/dist/react/UnresolvedFile.js +2 -1
  162. package/node_modules/@pierre/diffs/dist/react/UnresolvedFile.js.map +1 -1
  163. package/node_modules/@pierre/diffs/dist/react/index.d.ts +4 -3
  164. package/node_modules/@pierre/diffs/dist/react/index.js +3 -2
  165. package/node_modules/@pierre/diffs/dist/react/types.d.ts +11 -0
  166. package/node_modules/@pierre/diffs/dist/react/types.d.ts.map +1 -1
  167. package/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.d.ts +2 -0
  168. package/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  169. package/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.js +16 -8
  170. package/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.js.map +1 -1
  171. package/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.d.ts +2 -0
  172. package/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  173. package/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.js +16 -8
  174. package/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.js.map +1 -1
  175. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.d.ts +6 -2
  176. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  177. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.js +21 -6
  178. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.js.map +1 -1
  179. package/node_modules/@pierre/diffs/dist/react/utils/useFileInstance.d.ts +7 -2
  180. package/node_modules/@pierre/diffs/dist/react/utils/useFileInstance.d.ts.map +1 -1
  181. package/node_modules/@pierre/diffs/dist/react/utils/useFileInstance.js +21 -6
  182. package/node_modules/@pierre/diffs/dist/react/utils/useFileInstance.js.map +1 -1
  183. package/node_modules/@pierre/diffs/dist/react/utils/useUnresolvedFileInstance.js +4 -4
  184. package/node_modules/@pierre/diffs/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
  185. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.d.ts +47 -2
  186. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  187. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js +361 -37
  188. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js.map +1 -1
  189. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.d.ts +26 -1
  190. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.d.ts.map +1 -1
  191. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js +240 -55
  192. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js.map +1 -1
  193. package/node_modules/@pierre/diffs/dist/ssr/index.d.ts +2 -2
  194. package/node_modules/@pierre/diffs/dist/ssr/preloadDiffs.d.ts +11 -10
  195. package/node_modules/@pierre/diffs/dist/ssr/preloadDiffs.d.ts.map +1 -1
  196. package/node_modules/@pierre/diffs/dist/ssr/preloadDiffs.js +17 -7
  197. package/node_modules/@pierre/diffs/dist/ssr/preloadDiffs.js.map +1 -1
  198. package/node_modules/@pierre/diffs/dist/ssr/preloadFile.d.ts.map +1 -1
  199. package/node_modules/@pierre/diffs/dist/ssr/preloadFile.js +2 -0
  200. package/node_modules/@pierre/diffs/dist/ssr/preloadFile.js.map +1 -1
  201. package/node_modules/@pierre/diffs/dist/style.js +1 -1
  202. package/node_modules/@pierre/diffs/dist/types.d.ts +336 -5
  203. package/node_modules/@pierre/diffs/dist/types.d.ts.map +1 -1
  204. package/node_modules/@pierre/diffs/dist/utils/annotationHelpers.d.ts +20 -0
  205. package/node_modules/@pierre/diffs/dist/utils/annotationHelpers.d.ts.map +1 -0
  206. package/node_modules/@pierre/diffs/dist/utils/annotationHelpers.js +29 -0
  207. package/node_modules/@pierre/diffs/dist/utils/annotationHelpers.js.map +1 -0
  208. package/node_modules/@pierre/diffs/dist/utils/applyLineTextWithNewline.d.ts +5 -0
  209. package/node_modules/@pierre/diffs/dist/utils/applyLineTextWithNewline.d.ts.map +1 -0
  210. package/node_modules/@pierre/diffs/dist/utils/applyLineTextWithNewline.js +11 -0
  211. package/node_modules/@pierre/diffs/dist/utils/applyLineTextWithNewline.js.map +1 -0
  212. package/node_modules/@pierre/diffs/dist/utils/areHunkDataEqual.js +1 -1
  213. package/node_modules/@pierre/diffs/dist/utils/areHunkDataEqual.js.map +1 -1
  214. package/node_modules/@pierre/diffs/dist/utils/areManagedSnapshotsEqual.d.ts +2 -2
  215. package/node_modules/@pierre/diffs/dist/utils/areManagedSnapshotsEqual.d.ts.map +1 -1
  216. package/node_modules/@pierre/diffs/dist/utils/areManagedSnapshotsEqual.js +6 -1
  217. package/node_modules/@pierre/diffs/dist/utils/areManagedSnapshotsEqual.js.map +1 -1
  218. package/node_modules/@pierre/diffs/dist/utils/awaitWithTimeout.d.ts +5 -0
  219. package/node_modules/@pierre/diffs/dist/utils/awaitWithTimeout.d.ts.map +1 -0
  220. package/node_modules/@pierre/diffs/dist/utils/awaitWithTimeout.js +15 -0
  221. package/node_modules/@pierre/diffs/dist/utils/awaitWithTimeout.js.map +1 -0
  222. package/node_modules/@pierre/diffs/dist/utils/cleanLastNewline.js +6 -1
  223. package/node_modules/@pierre/diffs/dist/utils/cleanLastNewline.js.map +1 -1
  224. package/node_modules/@pierre/diffs/dist/utils/cloneFileDiffMetadata.d.ts +7 -0
  225. package/node_modules/@pierre/diffs/dist/utils/cloneFileDiffMetadata.d.ts.map +1 -0
  226. package/node_modules/@pierre/diffs/dist/utils/cloneFileDiffMetadata.js +16 -0
  227. package/node_modules/@pierre/diffs/dist/utils/cloneFileDiffMetadata.js.map +1 -0
  228. package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.d.ts +3 -1
  229. package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -1
  230. package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.js +8 -1
  231. package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.js.map +1 -1
  232. package/node_modules/@pierre/diffs/dist/utils/computeFileOffsets.d.ts +21 -0
  233. package/node_modules/@pierre/diffs/dist/utils/computeFileOffsets.d.ts.map +1 -0
  234. package/node_modules/@pierre/diffs/dist/utils/computeFileOffsets.js +80 -0
  235. package/node_modules/@pierre/diffs/dist/utils/computeFileOffsets.js.map +1 -0
  236. package/node_modules/@pierre/diffs/dist/utils/createCodeViewHeaderFooterHostElement.d.ts +5 -0
  237. package/node_modules/@pierre/diffs/dist/utils/createCodeViewHeaderFooterHostElement.d.ts.map +1 -0
  238. package/node_modules/@pierre/diffs/dist/utils/createCodeViewHeaderFooterHostElement.js +19 -0
  239. package/node_modules/@pierre/diffs/dist/utils/createCodeViewHeaderFooterHostElement.js.map +1 -0
  240. package/node_modules/@pierre/diffs/dist/utils/createFileHeaderElement.d.ts.map +1 -1
  241. package/node_modules/@pierre/diffs/dist/utils/createFileHeaderElement.js +5 -1
  242. package/node_modules/@pierre/diffs/dist/utils/createFileHeaderElement.js.map +1 -1
  243. package/node_modules/@pierre/diffs/dist/utils/createTransformerWithState.js +9 -0
  244. package/node_modules/@pierre/diffs/dist/utils/createTransformerWithState.js.map +1 -1
  245. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.d.ts +66 -0
  246. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.d.ts.map +1 -0
  247. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.js +437 -0
  248. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.js.map +1 -0
  249. package/node_modules/@pierre/diffs/dist/utils/getDiffFileInput.d.ts +14 -0
  250. package/node_modules/@pierre/diffs/dist/utils/getDiffFileInput.d.ts.map +1 -0
  251. package/node_modules/@pierre/diffs/dist/utils/getDiffFileInput.js +24 -0
  252. package/node_modules/@pierre/diffs/dist/utils/getDiffFileInput.js.map +1 -0
  253. package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -1
  254. package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.js +3 -1
  255. package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
  256. package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.d.ts.map +1 -1
  257. package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.js +2 -1
  258. package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.js.map +1 -1
  259. package/node_modules/@pierre/diffs/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  260. package/node_modules/@pierre/diffs/dist/utils/getFiletypeFromFileName.js +2 -0
  261. package/node_modules/@pierre/diffs/dist/utils/getFiletypeFromFileName.js.map +1 -1
  262. package/node_modules/@pierre/diffs/dist/utils/getHunkSideBoundaries.d.ts +7 -0
  263. package/node_modules/@pierre/diffs/dist/utils/getHunkSideBoundaries.d.ts.map +1 -0
  264. package/node_modules/@pierre/diffs/dist/utils/getHunkSideBoundaries.js +12 -0
  265. package/node_modules/@pierre/diffs/dist/utils/getHunkSideBoundaries.js.map +1 -0
  266. package/node_modules/@pierre/diffs/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
  267. package/node_modules/@pierre/diffs/dist/utils/getTotalLineCountFromHunks.js +2 -1
  268. package/node_modules/@pierre/diffs/dist/utils/getTotalLineCountFromHunks.js.map +1 -1
  269. package/node_modules/@pierre/diffs/dist/utils/guardWebKitScrollDuringRebuild.d.ts +20 -0
  270. package/node_modules/@pierre/diffs/dist/utils/guardWebKitScrollDuringRebuild.d.ts.map +1 -0
  271. package/node_modules/@pierre/diffs/dist/utils/guardWebKitScrollDuringRebuild.js +34 -0
  272. package/node_modules/@pierre/diffs/dist/utils/guardWebKitScrollDuringRebuild.js.map +1 -0
  273. package/node_modules/@pierre/diffs/dist/utils/hydratePartialDiff.d.ts +10 -0
  274. package/node_modules/@pierre/diffs/dist/utils/hydratePartialDiff.d.ts.map +1 -0
  275. package/node_modules/@pierre/diffs/dist/utils/hydratePartialDiff.js +141 -0
  276. package/node_modules/@pierre/diffs/dist/utils/hydratePartialDiff.js.map +1 -0
  277. package/node_modules/@pierre/diffs/dist/utils/isGutterUtilityPath.d.ts +5 -0
  278. package/node_modules/@pierre/diffs/dist/utils/isGutterUtilityPath.d.ts.map +1 -0
  279. package/node_modules/@pierre/diffs/dist/utils/isGutterUtilityPath.js +12 -0
  280. package/node_modules/@pierre/diffs/dist/utils/isGutterUtilityPath.js.map +1 -0
  281. package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.d.ts.map +1 -1
  282. package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.js +20 -15
  283. package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.js.map +1 -1
  284. package/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.d.ts +1 -1
  285. package/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.d.ts.map +1 -1
  286. package/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.js +26 -5
  287. package/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.js.map +1 -1
  288. package/node_modules/@pierre/diffs/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
  289. package/node_modules/@pierre/diffs/dist/utils/parseMergeConflictDiffFromFile.js +9 -6
  290. package/node_modules/@pierre/diffs/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -1
  291. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.d.ts.map +1 -1
  292. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js +6 -3
  293. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js.map +1 -1
  294. package/node_modules/@pierre/diffs/dist/utils/platform.d.ts +14 -0
  295. package/node_modules/@pierre/diffs/dist/utils/platform.d.ts.map +1 -0
  296. package/node_modules/@pierre/diffs/dist/utils/platform.js +32 -0
  297. package/node_modules/@pierre/diffs/dist/utils/platform.js.map +1 -0
  298. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.d.ts +33 -0
  299. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.d.ts.map +1 -0
  300. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.js +148 -0
  301. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.js.map +1 -0
  302. package/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.js +1 -1
  303. package/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  304. package/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.js +5 -14
  305. package/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.js.map +1 -1
  306. package/node_modules/@pierre/diffs/dist/utils/resolveRegion.d.ts.map +1 -1
  307. package/node_modules/@pierre/diffs/dist/utils/resolveRegion.js +18 -2
  308. package/node_modules/@pierre/diffs/dist/utils/resolveRegion.js.map +1 -1
  309. package/node_modules/@pierre/diffs/dist/utils/shouldUseTokenTransformer.d.ts +7 -3
  310. package/node_modules/@pierre/diffs/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
  311. package/node_modules/@pierre/diffs/dist/utils/shouldUseTokenTransformer.js +1 -1
  312. package/node_modules/@pierre/diffs/dist/utils/shouldUseTokenTransformer.js.map +1 -1
  313. package/node_modules/@pierre/diffs/dist/utils/updateDiffHunks.d.ts +24 -0
  314. package/node_modules/@pierre/diffs/dist/utils/updateDiffHunks.d.ts.map +1 -0
  315. package/node_modules/@pierre/diffs/dist/utils/updateDiffHunks.js +236 -0
  316. package/node_modules/@pierre/diffs/dist/utils/updateDiffHunks.js.map +1 -0
  317. package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.d.ts +43 -2
  318. package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.d.ts.map +1 -1
  319. package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.js +107 -5
  320. package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.js.map +1 -1
  321. package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.d.ts +9 -3
  322. package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  323. package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.js +86 -18
  324. package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.js.map +1 -1
  325. package/node_modules/@pierre/diffs/dist/worker/index.d.ts +2 -2
  326. package/node_modules/@pierre/diffs/dist/worker/types.d.ts +11 -1
  327. package/node_modules/@pierre/diffs/dist/worker/types.d.ts.map +1 -1
  328. package/node_modules/@pierre/diffs/dist/worker/wasm-B9ZqxnKj.js.map +1 -1
  329. package/node_modules/@pierre/diffs/dist/worker/worker-portable.js +116 -95
  330. package/node_modules/@pierre/diffs/dist/worker/worker-portable.js.map +1 -1
  331. package/node_modules/@pierre/diffs/dist/worker/worker.js +102 -80
  332. package/node_modules/@pierre/diffs/dist/worker/worker.js.map +1 -1
  333. package/node_modules/@pierre/diffs/node_modules/@pierre/theme/LICENSE +189 -21
  334. package/node_modules/@pierre/diffs/node_modules/@pierre/theme/NOTICE.md +32 -0
  335. package/node_modules/@pierre/diffs/node_modules/@pierre/theme/package.json +3 -2
  336. package/node_modules/@pierre/diffs/node_modules/@pierre/theming/LICENSE.md +189 -0
  337. package/node_modules/@pierre/diffs/node_modules/@pierre/theming/README.md +9 -0
  338. package/node_modules/@pierre/diffs/node_modules/@pierre/theming/package.json +5 -5
  339. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/LICENSE +22 -0
  340. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/README.md +7 -0
  341. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/1c-query.d.mts +3 -0
  342. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/1c-query.mjs +2 -0
  343. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/1c.d.mts +3 -0
  344. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/1c.mjs +2 -0
  345. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/abap.d.mts +3 -0
  346. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/abap.mjs +5 -0
  347. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/actionscript-3.d.mts +3 -0
  348. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/actionscript-3.mjs +5 -0
  349. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ada.d.mts +3 -0
  350. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ada.mjs +5 -0
  351. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/adoc.d.mts +3 -0
  352. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/adoc.mjs +2 -0
  353. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-expression.d.mts +3 -0
  354. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-expression.mjs +5 -0
  355. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-html.d.mts +3 -0
  356. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-html.mjs +16 -0
  357. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-inline-style.d.mts +3 -0
  358. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-inline-style.mjs +8 -0
  359. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-inline-template.d.mts +3 -0
  360. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-inline-template.mjs +10 -0
  361. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-let-declaration.d.mts +3 -0
  362. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-let-declaration.mjs +8 -0
  363. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-template-blocks.d.mts +3 -0
  364. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-template-blocks.mjs +10 -0
  365. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-template.d.mts +3 -0
  366. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-template.mjs +8 -0
  367. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-ts.d.mts +3 -0
  368. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/angular-ts.mjs +18 -0
  369. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/apache.d.mts +3 -0
  370. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/apache.mjs +5 -0
  371. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/apex.d.mts +3 -0
  372. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/apex.mjs +5 -0
  373. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/apl.d.mts +3 -0
  374. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/apl.mjs +16 -0
  375. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/applescript.d.mts +3 -0
  376. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/applescript.mjs +5 -0
  377. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ara.d.mts +3 -0
  378. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ara.mjs +5 -0
  379. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/asciidoc.d.mts +3 -0
  380. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/asciidoc.mjs +5 -0
  381. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/asm.d.mts +3 -0
  382. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/asm.mjs +5 -0
  383. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/astro.d.mts +3 -0
  384. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/astro.mjs +18 -0
  385. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/awk.d.mts +3 -0
  386. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/awk.mjs +5 -0
  387. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ballerina.d.mts +3 -0
  388. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ballerina.mjs +5 -0
  389. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bash.d.mts +3 -0
  390. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bash.mjs +2 -0
  391. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bat.d.mts +3 -0
  392. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bat.mjs +5 -0
  393. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/batch.d.mts +3 -0
  394. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/batch.mjs +2 -0
  395. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/be.d.mts +3 -0
  396. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/be.mjs +2 -0
  397. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/beancount.d.mts +3 -0
  398. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/beancount.mjs +5 -0
  399. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/berry.d.mts +3 -0
  400. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/berry.mjs +5 -0
  401. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bibtex.d.mts +3 -0
  402. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bibtex.mjs +5 -0
  403. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bicep.d.mts +3 -0
  404. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bicep.mjs +5 -0
  405. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bird.d.mts +3 -0
  406. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bird.mjs +2 -0
  407. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bird2.d.mts +3 -0
  408. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bird2.mjs +5 -0
  409. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/blade.d.mts +3 -0
  410. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/blade.mjs +20 -0
  411. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bsl.d.mts +3 -0
  412. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/bsl.mjs +8 -0
  413. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/c.d.mts +3 -0
  414. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/c.mjs +5 -0
  415. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/c3.d.mts +3 -0
  416. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/c3.mjs +5 -0
  417. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cadence.d.mts +3 -0
  418. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cadence.mjs +5 -0
  419. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cairo.d.mts +3 -0
  420. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cairo.mjs +8 -0
  421. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cdc.d.mts +3 -0
  422. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cdc.mjs +2 -0
  423. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cjs.d.mts +3 -0
  424. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cjs.mjs +2 -0
  425. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/clarity.d.mts +3 -0
  426. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/clarity.mjs +5 -0
  427. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/clj.d.mts +3 -0
  428. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/clj.mjs +2 -0
  429. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/clojure.d.mts +3 -0
  430. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/clojure.mjs +5 -0
  431. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/closure-templates.d.mts +3 -0
  432. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/closure-templates.mjs +2 -0
  433. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cmake.d.mts +3 -0
  434. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cmake.mjs +5 -0
  435. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cmd.d.mts +3 -0
  436. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cmd.mjs +2 -0
  437. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cobol.d.mts +3 -0
  438. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cobol.mjs +10 -0
  439. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/codeowners.d.mts +3 -0
  440. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/codeowners.mjs +5 -0
  441. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/codeql.d.mts +3 -0
  442. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/codeql.mjs +5 -0
  443. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/coffee.d.mts +3 -0
  444. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/coffee.mjs +8 -0
  445. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/coffeescript.d.mts +3 -0
  446. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/coffeescript.mjs +2 -0
  447. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/common-lisp.d.mts +3 -0
  448. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/common-lisp.mjs +5 -0
  449. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/console.d.mts +3 -0
  450. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/console.mjs +2 -0
  451. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/coq.d.mts +3 -0
  452. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/coq.mjs +5 -0
  453. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cpp-macro.d.mts +3 -0
  454. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cpp-macro.mjs +12 -0
  455. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cpp.d.mts +3 -0
  456. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cpp.mjs +14 -0
  457. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cql.d.mts +3 -0
  458. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cql.mjs +2 -0
  459. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/crystal.d.mts +3 -0
  460. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/crystal.mjs +18 -0
  461. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cs.d.mts +3 -0
  462. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cs.mjs +2 -0
  463. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/csharp.d.mts +3 -0
  464. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/csharp.mjs +5 -0
  465. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/css.d.mts +3 -0
  466. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/css.mjs +5 -0
  467. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/csv.d.mts +3 -0
  468. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/csv.mjs +5 -0
  469. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cts.d.mts +3 -0
  470. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cts.mjs +2 -0
  471. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cue.d.mts +3 -0
  472. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cue.mjs +5 -0
  473. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cypher.d.mts +3 -0
  474. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/cypher.mjs +5 -0
  475. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/d.d.mts +3 -0
  476. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/d.mjs +5 -0
  477. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dart.d.mts +3 -0
  478. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dart.mjs +5 -0
  479. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dax.d.mts +3 -0
  480. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dax.mjs +5 -0
  481. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/desktop.d.mts +3 -0
  482. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/desktop.mjs +5 -0
  483. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/diff.d.mts +3 -0
  484. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/diff.mjs +5 -0
  485. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/docker.d.mts +3 -0
  486. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/docker.mjs +5 -0
  487. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dockerfile.d.mts +3 -0
  488. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dockerfile.mjs +2 -0
  489. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dotenv.d.mts +3 -0
  490. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dotenv.mjs +5 -0
  491. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dream-maker.d.mts +3 -0
  492. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/dream-maker.mjs +5 -0
  493. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/edge.d.mts +3 -0
  494. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/edge.mjs +12 -0
  495. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/elisp.d.mts +3 -0
  496. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/elisp.mjs +2 -0
  497. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/elixir.d.mts +3 -0
  498. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/elixir.mjs +8 -0
  499. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/elm.d.mts +3 -0
  500. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/elm.mjs +8 -0
  501. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/emacs-lisp.d.mts +3 -0
  502. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/emacs-lisp.mjs +5 -0
  503. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/erb.d.mts +3 -0
  504. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/erb.mjs +10 -0
  505. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/erl.d.mts +3 -0
  506. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/erl.mjs +2 -0
  507. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/erlang.d.mts +3 -0
  508. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/erlang.mjs +8 -0
  509. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-css.d.mts +3 -0
  510. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-css.mjs +12 -0
  511. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-glsl.d.mts +3 -0
  512. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-glsl.mjs +12 -0
  513. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-html.d.mts +3 -0
  514. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-html.mjs +12 -0
  515. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-sql.d.mts +3 -0
  516. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-sql.mjs +10 -0
  517. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-xml.d.mts +3 -0
  518. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/es-tag-xml.mjs +8 -0
  519. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f.d.mts +3 -0
  520. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f.mjs +2 -0
  521. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f03.d.mts +3 -0
  522. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f03.mjs +2 -0
  523. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f08.d.mts +3 -0
  524. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f08.mjs +2 -0
  525. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f18.d.mts +3 -0
  526. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f18.mjs +2 -0
  527. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f77.d.mts +3 -0
  528. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f77.mjs +2 -0
  529. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f90.d.mts +3 -0
  530. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f90.mjs +2 -0
  531. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f95.d.mts +3 -0
  532. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/f95.mjs +2 -0
  533. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fennel.d.mts +3 -0
  534. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fennel.mjs +5 -0
  535. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fish.d.mts +3 -0
  536. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fish.mjs +5 -0
  537. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fluent.d.mts +3 -0
  538. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fluent.mjs +5 -0
  539. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/for.d.mts +3 -0
  540. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/for.mjs +2 -0
  541. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fortran-fixed-form.d.mts +3 -0
  542. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fortran-fixed-form.mjs +8 -0
  543. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fortran-free-form.d.mts +3 -0
  544. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fortran-free-form.mjs +5 -0
  545. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fs.d.mts +3 -0
  546. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fs.mjs +2 -0
  547. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fsharp.d.mts +3 -0
  548. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fsharp.mjs +8 -0
  549. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fsl.d.mts +3 -0
  550. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/fsl.mjs +2 -0
  551. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ftl.d.mts +3 -0
  552. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ftl.mjs +2 -0
  553. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gd.d.mts +3 -0
  554. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gd.mjs +2 -0
  555. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gdresource.d.mts +3 -0
  556. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gdresource.mjs +10 -0
  557. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gdscript.d.mts +3 -0
  558. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gdscript.mjs +5 -0
  559. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gdshader.d.mts +3 -0
  560. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gdshader.mjs +5 -0
  561. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/genie.d.mts +3 -0
  562. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/genie.mjs +5 -0
  563. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gherkin.d.mts +3 -0
  564. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gherkin.mjs +5 -0
  565. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/git-commit.d.mts +3 -0
  566. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/git-commit.mjs +8 -0
  567. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/git-rebase.d.mts +3 -0
  568. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/git-rebase.mjs +8 -0
  569. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gjs.d.mts +3 -0
  570. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gjs.mjs +2 -0
  571. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gleam.d.mts +3 -0
  572. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gleam.mjs +5 -0
  573. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/glimmer-js.d.mts +3 -0
  574. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/glimmer-js.mjs +14 -0
  575. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/glimmer-ts.d.mts +3 -0
  576. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/glimmer-ts.mjs +14 -0
  577. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/glsl.d.mts +3 -0
  578. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/glsl.mjs +8 -0
  579. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gn.d.mts +3 -0
  580. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gn.mjs +5 -0
  581. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gnuplot.d.mts +3 -0
  582. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gnuplot.mjs +5 -0
  583. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/go.d.mts +3 -0
  584. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/go.mjs +5 -0
  585. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gql.d.mts +3 -0
  586. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gql.mjs +2 -0
  587. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/graphql.d.mts +3 -0
  588. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/graphql.mjs +14 -0
  589. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/groovy.d.mts +3 -0
  590. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/groovy.mjs +5 -0
  591. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gts.d.mts +3 -0
  592. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/gts.mjs +2 -0
  593. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hack.d.mts +3 -0
  594. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hack.mjs +10 -0
  595. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/haml.d.mts +3 -0
  596. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/haml.mjs +10 -0
  597. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/handlebars.d.mts +3 -0
  598. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/handlebars.mjs +14 -0
  599. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/haskell.d.mts +3 -0
  600. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/haskell.mjs +5 -0
  601. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/haxe.d.mts +3 -0
  602. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/haxe.mjs +5 -0
  603. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hbs.d.mts +3 -0
  604. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hbs.mjs +2 -0
  605. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hcl.d.mts +3 -0
  606. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hcl.mjs +5 -0
  607. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hjson.d.mts +3 -0
  608. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hjson.mjs +5 -0
  609. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hlsl.d.mts +3 -0
  610. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hlsl.mjs +5 -0
  611. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hs.d.mts +3 -0
  612. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hs.mjs +2 -0
  613. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/html-derivative.d.mts +3 -0
  614. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/html-derivative.mjs +8 -0
  615. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/html.d.mts +3 -0
  616. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/html.mjs +10 -0
  617. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/http.d.mts +3 -0
  618. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/http.mjs +14 -0
  619. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hurl.d.mts +3 -0
  620. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hurl.mjs +12 -0
  621. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hxml.d.mts +3 -0
  622. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hxml.mjs +8 -0
  623. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hy.d.mts +3 -0
  624. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/hy.mjs +5 -0
  625. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/imba.d.mts +3 -0
  626. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/imba.mjs +5 -0
  627. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/index.d.mts +3 -0
  628. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/index.mjs +353 -0
  629. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ini.d.mts +3 -0
  630. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ini.mjs +5 -0
  631. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jade.d.mts +3 -0
  632. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jade.mjs +2 -0
  633. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/java.d.mts +3 -0
  634. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/java.mjs +5 -0
  635. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/javascript.d.mts +3 -0
  636. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/javascript.mjs +5 -0
  637. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jinja-html.d.mts +3 -0
  638. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jinja-html.mjs +8 -0
  639. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jinja.d.mts +3 -0
  640. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jinja.mjs +8 -0
  641. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jison.d.mts +3 -0
  642. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jison.mjs +8 -0
  643. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jl.d.mts +3 -0
  644. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jl.mjs +2 -0
  645. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/js.d.mts +3 -0
  646. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/js.mjs +2 -0
  647. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/json.d.mts +3 -0
  648. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/json.mjs +5 -0
  649. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/json5.d.mts +3 -0
  650. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/json5.mjs +5 -0
  651. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jsonc.d.mts +3 -0
  652. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jsonc.mjs +5 -0
  653. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jsonl.d.mts +3 -0
  654. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jsonl.mjs +5 -0
  655. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jsonnet.d.mts +3 -0
  656. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jsonnet.mjs +5 -0
  657. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jssm.d.mts +3 -0
  658. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jssm.mjs +5 -0
  659. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jsx.d.mts +3 -0
  660. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/jsx.mjs +5 -0
  661. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/julia.d.mts +3 -0
  662. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/julia.mjs +16 -0
  663. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/just.d.mts +3 -0
  664. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/just.mjs +18 -0
  665. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kdl.d.mts +3 -0
  666. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kdl.mjs +5 -0
  667. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kotlin.d.mts +3 -0
  668. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kotlin.mjs +5 -0
  669. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kql.d.mts +3 -0
  670. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kql.mjs +2 -0
  671. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kt.d.mts +3 -0
  672. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kt.mjs +2 -0
  673. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kts.d.mts +3 -0
  674. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kts.mjs +2 -0
  675. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kusto.d.mts +3 -0
  676. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/kusto.mjs +5 -0
  677. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/latex.d.mts +3 -0
  678. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/latex.mjs +8 -0
  679. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lean.d.mts +3 -0
  680. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lean.mjs +5 -0
  681. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lean4.d.mts +3 -0
  682. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lean4.mjs +2 -0
  683. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/less.d.mts +3 -0
  684. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/less.mjs +5 -0
  685. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/liquid.d.mts +3 -0
  686. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/liquid.mjs +14 -0
  687. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lisp.d.mts +3 -0
  688. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lisp.mjs +2 -0
  689. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lit.d.mts +3 -0
  690. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lit.mjs +2 -0
  691. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/llvm.d.mts +3 -0
  692. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/llvm.mjs +5 -0
  693. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/log.d.mts +3 -0
  694. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/log.mjs +5 -0
  695. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/logo.d.mts +3 -0
  696. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/logo.mjs +5 -0
  697. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lua.d.mts +3 -0
  698. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/lua.mjs +8 -0
  699. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/luau.d.mts +3 -0
  700. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/luau.mjs +5 -0
  701. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/make.d.mts +3 -0
  702. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/make.mjs +5 -0
  703. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/makefile.d.mts +3 -0
  704. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/makefile.mjs +2 -0
  705. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/markdown-nix.d.mts +3 -0
  706. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/markdown-nix.mjs +5 -0
  707. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/markdown-vue.d.mts +3 -0
  708. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/markdown-vue.mjs +5 -0
  709. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/markdown.d.mts +3 -0
  710. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/markdown.mjs +5 -0
  711. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/marko.d.mts +3 -0
  712. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/marko.mjs +14 -0
  713. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/matlab.d.mts +3 -0
  714. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/matlab.mjs +5 -0
  715. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mbt.d.mts +3 -0
  716. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mbt.mjs +2 -0
  717. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mbti.d.mts +3 -0
  718. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mbti.mjs +2 -0
  719. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/md.d.mts +3 -0
  720. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/md.mjs +2 -0
  721. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mdc.d.mts +3 -0
  722. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mdc.mjs +12 -0
  723. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mdx.d.mts +3 -0
  724. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mdx.mjs +5 -0
  725. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mediawiki.d.mts +3 -0
  726. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mediawiki.mjs +2 -0
  727. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mermaid.d.mts +3 -0
  728. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mermaid.mjs +5 -0
  729. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mips.d.mts +3 -0
  730. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mips.mjs +2 -0
  731. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mipsasm.d.mts +3 -0
  732. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mipsasm.mjs +5 -0
  733. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mjs.d.mts +3 -0
  734. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mjs.mjs +2 -0
  735. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mmd.d.mts +3 -0
  736. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mmd.mjs +2 -0
  737. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mojo.d.mts +3 -0
  738. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mojo.mjs +5 -0
  739. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/moonbit.d.mts +3 -0
  740. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/moonbit.mjs +5 -0
  741. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/move.d.mts +3 -0
  742. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/move.mjs +5 -0
  743. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mts.d.mts +3 -0
  744. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/mts.mjs +2 -0
  745. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nar.d.mts +3 -0
  746. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nar.mjs +2 -0
  747. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/narrat.d.mts +3 -0
  748. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/narrat.mjs +5 -0
  749. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nextflow-groovy.d.mts +3 -0
  750. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nextflow-groovy.mjs +5 -0
  751. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nextflow.d.mts +3 -0
  752. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nextflow.mjs +8 -0
  753. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nf.d.mts +3 -0
  754. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nf.mjs +2 -0
  755. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nginx.d.mts +3 -0
  756. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nginx.mjs +8 -0
  757. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nim.d.mts +3 -0
  758. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nim.mjs +20 -0
  759. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nix.d.mts +3 -0
  760. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nix.mjs +8 -0
  761. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nu.d.mts +3 -0
  762. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nu.mjs +2 -0
  763. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nushell.d.mts +3 -0
  764. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/nushell.mjs +5 -0
  765. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/objc.d.mts +3 -0
  766. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/objc.mjs +2 -0
  767. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/objective-c.d.mts +3 -0
  768. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/objective-c.mjs +5 -0
  769. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/objective-cpp.d.mts +3 -0
  770. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/objective-cpp.mjs +5 -0
  771. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ocaml.d.mts +3 -0
  772. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ocaml.mjs +5 -0
  773. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/odin.d.mts +3 -0
  774. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/odin.mjs +5 -0
  775. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/openscad.d.mts +3 -0
  776. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/openscad.mjs +5 -0
  777. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/pascal.d.mts +3 -0
  778. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/pascal.mjs +5 -0
  779. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/perl.d.mts +3 -0
  780. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/perl.mjs +16 -0
  781. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/perl6.d.mts +3 -0
  782. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/perl6.mjs +2 -0
  783. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/php.d.mts +3 -0
  784. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/php.mjs +18 -0
  785. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/pkl.d.mts +3 -0
  786. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/pkl.mjs +5 -0
  787. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/plsql.d.mts +3 -0
  788. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/plsql.mjs +5 -0
  789. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/po.d.mts +3 -0
  790. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/po.mjs +5 -0
  791. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/polar.d.mts +3 -0
  792. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/polar.mjs +5 -0
  793. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/postcss.d.mts +3 -0
  794. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/postcss.mjs +5 -0
  795. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/pot.d.mts +3 -0
  796. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/pot.mjs +2 -0
  797. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/potx.d.mts +3 -0
  798. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/potx.mjs +2 -0
  799. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/powerquery.d.mts +3 -0
  800. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/powerquery.mjs +5 -0
  801. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/powershell.d.mts +3 -0
  802. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/powershell.mjs +5 -0
  803. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/prisma.d.mts +3 -0
  804. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/prisma.mjs +5 -0
  805. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/prolog.d.mts +3 -0
  806. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/prolog.mjs +5 -0
  807. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/properties.d.mts +3 -0
  808. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/properties.mjs +2 -0
  809. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/proto.d.mts +3 -0
  810. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/proto.mjs +5 -0
  811. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/protobuf.d.mts +3 -0
  812. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/protobuf.mjs +2 -0
  813. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ps.d.mts +3 -0
  814. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ps.mjs +2 -0
  815. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ps1.d.mts +3 -0
  816. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ps1.mjs +2 -0
  817. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/pug.d.mts +3 -0
  818. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/pug.mjs +12 -0
  819. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/puppet.d.mts +3 -0
  820. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/puppet.mjs +5 -0
  821. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/purescript.d.mts +3 -0
  822. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/purescript.mjs +5 -0
  823. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/py.d.mts +3 -0
  824. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/py.mjs +2 -0
  825. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/python.d.mts +3 -0
  826. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/python.mjs +5 -0
  827. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ql.d.mts +3 -0
  828. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ql.mjs +2 -0
  829. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/qml.d.mts +3 -0
  830. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/qml.mjs +8 -0
  831. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/qmldir.d.mts +3 -0
  832. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/qmldir.mjs +5 -0
  833. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/qss.d.mts +3 -0
  834. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/qss.mjs +5 -0
  835. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/r.d.mts +3 -0
  836. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/r.mjs +5 -0
  837. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/racket.d.mts +3 -0
  838. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/racket.mjs +5 -0
  839. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/raku.d.mts +3 -0
  840. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/raku.mjs +5 -0
  841. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/razor.d.mts +3 -0
  842. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/razor.mjs +10 -0
  843. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rb.d.mts +3 -0
  844. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rb.mjs +2 -0
  845. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/reg.d.mts +3 -0
  846. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/reg.mjs +5 -0
  847. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/regex.d.mts +3 -0
  848. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/regex.mjs +2 -0
  849. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/regexp.d.mts +3 -0
  850. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/regexp.mjs +5 -0
  851. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rel.d.mts +3 -0
  852. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rel.mjs +5 -0
  853. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/riscv.d.mts +3 -0
  854. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/riscv.mjs +5 -0
  855. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ron.d.mts +3 -0
  856. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ron.mjs +5 -0
  857. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rosmsg.d.mts +3 -0
  858. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rosmsg.mjs +5 -0
  859. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rs.d.mts +3 -0
  860. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rs.mjs +2 -0
  861. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rst.d.mts +3 -0
  862. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rst.mjs +22 -0
  863. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ruby.d.mts +3 -0
  864. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ruby.mjs +30 -0
  865. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rust.d.mts +3 -0
  866. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/rust.mjs +5 -0
  867. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sas.d.mts +3 -0
  868. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sas.mjs +8 -0
  869. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sass.d.mts +3 -0
  870. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sass.mjs +5 -0
  871. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/scad.d.mts +3 -0
  872. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/scad.mjs +2 -0
  873. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/scala.d.mts +3 -0
  874. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/scala.mjs +5 -0
  875. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/scheme.d.mts +3 -0
  876. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/scheme.mjs +5 -0
  877. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/scss.d.mts +3 -0
  878. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/scss.mjs +8 -0
  879. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sdbl.d.mts +3 -0
  880. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sdbl.mjs +5 -0
  881. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sh.d.mts +3 -0
  882. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sh.mjs +2 -0
  883. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shader.d.mts +3 -0
  884. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shader.mjs +2 -0
  885. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shaderlab.d.mts +3 -0
  886. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shaderlab.mjs +8 -0
  887. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shell.d.mts +3 -0
  888. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shell.mjs +2 -0
  889. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shellscript.d.mts +3 -0
  890. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shellscript.mjs +5 -0
  891. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shellsession.d.mts +3 -0
  892. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/shellsession.mjs +8 -0
  893. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/smalltalk.d.mts +3 -0
  894. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/smalltalk.mjs +5 -0
  895. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/solidity.d.mts +3 -0
  896. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/solidity.mjs +5 -0
  897. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/soy.d.mts +3 -0
  898. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/soy.mjs +8 -0
  899. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sparql.d.mts +3 -0
  900. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sparql.mjs +8 -0
  901. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/spl.d.mts +3 -0
  902. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/spl.mjs +2 -0
  903. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/splunk.d.mts +3 -0
  904. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/splunk.mjs +5 -0
  905. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sql.d.mts +3 -0
  906. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/sql.mjs +5 -0
  907. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ssh-config.d.mts +3 -0
  908. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ssh-config.mjs +5 -0
  909. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/stata.d.mts +3 -0
  910. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/stata.mjs +8 -0
  911. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/styl.d.mts +3 -0
  912. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/styl.mjs +2 -0
  913. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/stylus.d.mts +3 -0
  914. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/stylus.mjs +5 -0
  915. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/surql.d.mts +3 -0
  916. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/surql.mjs +2 -0
  917. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/surrealql.d.mts +3 -0
  918. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/surrealql.mjs +8 -0
  919. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/svelte.d.mts +3 -0
  920. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/svelte.mjs +14 -0
  921. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/swift.d.mts +3 -0
  922. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/swift.mjs +5 -0
  923. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/system-verilog.d.mts +3 -0
  924. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/system-verilog.mjs +5 -0
  925. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/systemd.d.mts +3 -0
  926. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/systemd.mjs +5 -0
  927. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/talon.d.mts +3 -0
  928. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/talon.mjs +2 -0
  929. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/talonscript.d.mts +3 -0
  930. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/talonscript.mjs +5 -0
  931. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tasl.d.mts +3 -0
  932. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tasl.mjs +5 -0
  933. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tcl.d.mts +3 -0
  934. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tcl.mjs +5 -0
  935. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/templ.d.mts +3 -0
  936. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/templ.mjs +12 -0
  937. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/terraform.d.mts +3 -0
  938. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/terraform.mjs +5 -0
  939. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tex.d.mts +3 -0
  940. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tex.mjs +8 -0
  941. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tf.d.mts +3 -0
  942. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tf.mjs +2 -0
  943. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tfvars.d.mts +3 -0
  944. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tfvars.mjs +2 -0
  945. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/toml.d.mts +3 -0
  946. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/toml.mjs +5 -0
  947. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tres.d.mts +3 -0
  948. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tres.mjs +2 -0
  949. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ts-tags.d.mts +3 -0
  950. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ts-tags.mjs +18 -0
  951. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ts.d.mts +3 -0
  952. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/ts.mjs +2 -0
  953. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tscn.d.mts +3 -0
  954. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tscn.mjs +2 -0
  955. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tsp.d.mts +3 -0
  956. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tsp.mjs +2 -0
  957. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tsv.d.mts +3 -0
  958. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tsv.mjs +5 -0
  959. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tsx.d.mts +3 -0
  960. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/tsx.mjs +5 -0
  961. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/turtle.d.mts +3 -0
  962. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/turtle.mjs +5 -0
  963. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/twig.d.mts +3 -0
  964. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/twig.mjs +18 -0
  965. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/typ.d.mts +3 -0
  966. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/typ.mjs +2 -0
  967. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/typescript.d.mts +3 -0
  968. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/typescript.mjs +5 -0
  969. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/typespec.d.mts +3 -0
  970. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/typespec.mjs +5 -0
  971. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/typst.d.mts +3 -0
  972. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/typst.mjs +5 -0
  973. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/v.d.mts +3 -0
  974. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/v.mjs +5 -0
  975. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vala.d.mts +3 -0
  976. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vala.mjs +5 -0
  977. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vb.d.mts +3 -0
  978. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vb.mjs +5 -0
  979. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/verilog.d.mts +3 -0
  980. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/verilog.mjs +5 -0
  981. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vhdl.d.mts +3 -0
  982. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vhdl.mjs +5 -0
  983. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vim.d.mts +3 -0
  984. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vim.mjs +2 -0
  985. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/viml.d.mts +3 -0
  986. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/viml.mjs +5 -0
  987. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vimscript.d.mts +3 -0
  988. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vimscript.mjs +2 -0
  989. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-directives.d.mts +3 -0
  990. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-directives.mjs +5 -0
  991. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-html.d.mts +3 -0
  992. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-html.mjs +8 -0
  993. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-interpolations.d.mts +3 -0
  994. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-interpolations.mjs +5 -0
  995. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-sfc-style-variable-injection.d.mts +3 -0
  996. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-sfc-style-variable-injection.mjs +8 -0
  997. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-vine.d.mts +3 -0
  998. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue-vine.mjs +18 -0
  999. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue.d.mts +3 -0
  1000. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vue.mjs +26 -0
  1001. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vy.d.mts +3 -0
  1002. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vy.mjs +2 -0
  1003. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vyper.d.mts +3 -0
  1004. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/vyper.mjs +5 -0
  1005. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wasm.d.mts +3 -0
  1006. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wasm.mjs +5 -0
  1007. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wenyan.d.mts +3 -0
  1008. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wenyan.mjs +5 -0
  1009. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wgsl.d.mts +3 -0
  1010. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wgsl.mjs +5 -0
  1011. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wiki.d.mts +3 -0
  1012. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wiki.mjs +2 -0
  1013. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wikitext.d.mts +3 -0
  1014. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wikitext.mjs +5 -0
  1015. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wit.d.mts +3 -0
  1016. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wit.mjs +5 -0
  1017. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wl.d.mts +3 -0
  1018. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wl.mjs +2 -0
  1019. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wolfram.d.mts +3 -0
  1020. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/wolfram.mjs +5 -0
  1021. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/xml.d.mts +3 -0
  1022. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/xml.mjs +8 -0
  1023. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/xsl.d.mts +3 -0
  1024. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/xsl.mjs +8 -0
  1025. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/yaml.d.mts +3 -0
  1026. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/yaml.mjs +5 -0
  1027. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/yml.d.mts +3 -0
  1028. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/yml.mjs +2 -0
  1029. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/zenscript.d.mts +3 -0
  1030. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/zenscript.mjs +5 -0
  1031. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/zig.d.mts +3 -0
  1032. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/zig.mjs +5 -0
  1033. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/zsh.d.mts +3 -0
  1034. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/dist/zsh.mjs +2 -0
  1035. package/node_modules/@pierre/diffs/node_modules/@shikijs/langs/package.json +387 -0
  1036. package/node_modules/@pierre/diffs/package.json +13 -4
  1037. package/node_modules/@shikijs/langs/dist/actionscript-3.mjs +1 -1
  1038. package/node_modules/@shikijs/langs/dist/actionscript.d.mts +3 -0
  1039. package/node_modules/@shikijs/langs/dist/actionscript.mjs +2 -0
  1040. package/node_modules/@shikijs/langs/dist/ahk.d.mts +3 -0
  1041. package/node_modules/@shikijs/langs/dist/ahk.mjs +5 -0
  1042. package/node_modules/@shikijs/langs/dist/ahk1.d.mts +3 -0
  1043. package/node_modules/@shikijs/langs/dist/ahk1.mjs +2 -0
  1044. package/node_modules/@shikijs/langs/dist/ahk2.d.mts +3 -0
  1045. package/node_modules/@shikijs/langs/dist/ahk2.mjs +5 -0
  1046. package/node_modules/@shikijs/langs/dist/apex.mjs +1 -1
  1047. package/node_modules/@shikijs/langs/dist/as3.d.mts +3 -0
  1048. package/node_modules/@shikijs/langs/dist/as3.mjs +2 -0
  1049. package/node_modules/@shikijs/langs/dist/asciidoc.mjs +1 -1
  1050. package/node_modules/@shikijs/langs/dist/bat.mjs +1 -1
  1051. package/node_modules/@shikijs/langs/dist/bird2.mjs +1 -1
  1052. package/node_modules/@shikijs/langs/dist/bsl.mjs +1 -1
  1053. package/node_modules/@shikijs/langs/dist/c3.mjs +1 -1
  1054. package/node_modules/@shikijs/langs/dist/chapel.d.mts +3 -0
  1055. package/node_modules/@shikijs/langs/dist/chapel.mjs +8 -0
  1056. package/node_modules/@shikijs/langs/dist/chpl.d.mts +3 -0
  1057. package/node_modules/@shikijs/langs/dist/chpl.mjs +2 -0
  1058. package/node_modules/@shikijs/langs/dist/clarity.mjs +1 -1
  1059. package/node_modules/@shikijs/langs/dist/cmd.mjs +2 -2
  1060. package/node_modules/@shikijs/langs/dist/coq.mjs +1 -1
  1061. package/node_modules/@shikijs/langs/dist/cpp-macro.mjs +1 -3
  1062. package/node_modules/@shikijs/langs/dist/cpp.mjs +1 -3
  1063. package/node_modules/@shikijs/langs/dist/emacs-lisp.mjs +1 -1
  1064. package/node_modules/@shikijs/langs/dist/gdscript.mjs +1 -1
  1065. package/node_modules/@shikijs/langs/dist/hack.mjs +1 -1
  1066. package/node_modules/@shikijs/langs/dist/haxe.mjs +1 -1
  1067. package/node_modules/@shikijs/langs/dist/hxml.mjs +1 -1
  1068. package/node_modules/@shikijs/langs/dist/index.mjs +14 -0
  1069. package/node_modules/@shikijs/langs/dist/just.mjs +1 -1
  1070. package/node_modules/@shikijs/langs/dist/justfile.d.mts +3 -0
  1071. package/node_modules/@shikijs/langs/dist/justfile.mjs +2 -0
  1072. package/node_modules/@shikijs/langs/dist/llvm.mjs +1 -1
  1073. package/node_modules/@shikijs/langs/dist/luau.mjs +1 -1
  1074. package/node_modules/@shikijs/langs/dist/mdc.mjs +1 -1
  1075. package/node_modules/@shikijs/langs/dist/mermaid.mjs +1 -1
  1076. package/node_modules/@shikijs/langs/dist/mojo.mjs +1 -1
  1077. package/node_modules/@shikijs/langs/dist/moonbit.mjs +1 -1
  1078. package/node_modules/@shikijs/langs/dist/move.mjs +1 -1
  1079. package/node_modules/@shikijs/langs/dist/nsis.d.mts +3 -0
  1080. package/node_modules/@shikijs/langs/dist/nsis.mjs +5 -0
  1081. package/node_modules/@shikijs/langs/dist/nushell.mjs +1 -1
  1082. package/node_modules/@shikijs/langs/dist/org.d.mts +3 -0
  1083. package/node_modules/@shikijs/langs/dist/org.mjs +100 -0
  1084. package/node_modules/@shikijs/langs/dist/powershell.mjs +1 -1
  1085. package/node_modules/@shikijs/langs/dist/prisma.mjs +1 -1
  1086. package/node_modules/@shikijs/langs/dist/pwsh.d.mts +3 -0
  1087. package/node_modules/@shikijs/langs/dist/pwsh.mjs +2 -0
  1088. package/node_modules/@shikijs/langs/dist/r.mjs +1 -1
  1089. package/node_modules/@shikijs/langs/dist/rbs.d.mts +3 -0
  1090. package/node_modules/@shikijs/langs/dist/rbs.mjs +5 -0
  1091. package/node_modules/@shikijs/langs/dist/ruby-signature.d.mts +3 -0
  1092. package/node_modules/@shikijs/langs/dist/ruby-signature.mjs +2 -0
  1093. package/node_modules/@shikijs/langs/dist/scala.mjs +1 -1
  1094. package/node_modules/@shikijs/langs/dist/smalltalk.mjs +1 -1
  1095. package/node_modules/@shikijs/langs/dist/smithy.d.mts +3 -0
  1096. package/node_modules/@shikijs/langs/dist/smithy.mjs +5 -0
  1097. package/node_modules/@shikijs/langs/dist/solidity.mjs +1 -1
  1098. package/node_modules/@shikijs/langs/dist/surrealql.mjs +1 -1
  1099. package/node_modules/@shikijs/langs/dist/swift.mjs +1 -1
  1100. package/node_modules/@shikijs/langs/dist/system-verilog.mjs +1 -1
  1101. package/node_modules/@shikijs/langs/dist/twig.mjs +1 -1
  1102. package/node_modules/@shikijs/langs/dist/typst.mjs +116 -1
  1103. package/node_modules/@shikijs/langs/dist/v.mjs +1 -1
  1104. package/node_modules/@shikijs/langs/dist/vb.mjs +1 -1
  1105. package/node_modules/@shikijs/langs/dist/verilog.mjs +1 -1
  1106. package/node_modules/@shikijs/langs/dist/vue.mjs +1 -1
  1107. package/node_modules/@shikijs/langs/node_modules/@shikijs/types/dist/index.d.mts +0 -1
  1108. package/node_modules/@shikijs/langs/node_modules/@shikijs/types/package.json +2 -2
  1109. package/node_modules/@shikijs/langs/package.json +18 -4
  1110. package/node_modules/typebox/build/format/date.d.mts +1 -1
  1111. package/node_modules/typebox/build/format/date.mjs +1 -1
  1112. package/node_modules/typebox/build/format/date_time.d.mts +2 -2
  1113. package/node_modules/typebox/build/format/date_time.mjs +3 -3
  1114. package/node_modules/typebox/build/format/email.d.mts +1 -1
  1115. package/node_modules/typebox/build/format/email.mjs +2 -2
  1116. package/node_modules/typebox/build/format/hostname.mjs +2 -10
  1117. package/node_modules/typebox/build/format/idn_email.d.mts +1 -1
  1118. package/node_modules/typebox/build/format/idn_email.mjs +3 -3
  1119. package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -0
  1120. package/node_modules/typebox/build/format/idn_hostname.mjs +3 -11
  1121. package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
  1122. package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
  1123. package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
  1124. package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
  1125. package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
  1126. package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
  1127. package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
  1128. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +23 -0
  1129. package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
  1130. package/node_modules/typebox/build/format/idna/index.mjs +2 -0
  1131. package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
  1132. package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
  1133. package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
  1134. package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
  1135. package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
  1136. package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
  1137. package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
  1138. package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
  1139. package/node_modules/typebox/build/format/ipv4.d.mts +0 -1
  1140. package/node_modules/typebox/build/format/ipv4.mjs +2 -32
  1141. package/node_modules/typebox/build/format/ipv6.mjs +2 -61
  1142. package/node_modules/typebox/build/format/iri.d.mts +2 -2
  1143. package/node_modules/typebox/build/format/iri.mjs +26 -8
  1144. package/node_modules/typebox/build/format/iri_reference.d.mts +2 -2
  1145. package/node_modules/typebox/build/format/iri_reference.mjs +9 -55
  1146. package/node_modules/typebox/build/format/regex.d.mts +1 -2
  1147. package/node_modules/typebox/build/format/regex.mjs +2 -6
  1148. package/node_modules/typebox/build/format/time.d.mts +2 -2
  1149. package/node_modules/typebox/build/format/time.mjs +19 -14
  1150. package/node_modules/typebox/build/format/uri.d.mts +1 -1
  1151. package/node_modules/typebox/build/format/uri.mjs +3 -130
  1152. package/node_modules/typebox/build/format/uri_reference.d.mts +1 -1
  1153. package/node_modules/typebox/build/format/uri_reference.mjs +2 -3
  1154. package/node_modules/typebox/build/format/uri_template.d.mts +2 -3
  1155. package/node_modules/typebox/build/format/uri_template.mjs +4 -5
  1156. package/node_modules/typebox/build/format/url.d.mts +3 -3
  1157. package/node_modules/typebox/build/format/url.mjs +4 -5
  1158. package/node_modules/typebox/build/guard/emit.d.mts +3 -1
  1159. package/node_modules/typebox/build/guard/emit.mjs +12 -5
  1160. package/node_modules/typebox/build/guard/guard.d.mts +8 -2
  1161. package/node_modules/typebox/build/guard/guard.mjs +25 -4
  1162. package/node_modules/typebox/build/guard/string.d.mts +2 -2
  1163. package/node_modules/typebox/build/guard/string.mjs +7 -7
  1164. package/node_modules/typebox/build/schema/engine/_context.mjs +3 -3
  1165. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -2
  1166. package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
  1167. package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
  1168. package/node_modules/typebox/build/schema/engine/_stack.mjs +12 -13
  1169. package/node_modules/typebox/build/schema/engine/additionalItems.mjs +17 -7
  1170. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -3
  1171. package/node_modules/typebox/build/schema/engine/contains.mjs +18 -6
  1172. package/node_modules/typebox/build/schema/engine/enum.mjs +1 -1
  1173. package/node_modules/typebox/build/schema/engine/items.mjs +26 -6
  1174. package/node_modules/typebox/build/schema/engine/maxContains.mjs +3 -3
  1175. package/node_modules/typebox/build/schema/engine/minContains.mjs +14 -4
  1176. package/node_modules/typebox/build/schema/engine/not.mjs +4 -2
  1177. package/node_modules/typebox/build/schema/engine/oneOf.mjs +7 -6
  1178. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -2
  1179. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +4 -3
  1180. package/node_modules/typebox/build/schema/engine/ref.mjs +1 -7
  1181. package/node_modules/typebox/build/schema/engine/schema.mjs +13 -4
  1182. package/node_modules/typebox/build/schema/engine/type.mjs +1 -1
  1183. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +4 -1
  1184. package/node_modules/typebox/build/schema/resolve/resolve.mjs +202 -1
  1185. package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
  1186. package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
  1187. package/node_modules/typebox/build/schema/static/schema.d.mts +3 -0
  1188. package/node_modules/typebox/build/schema/types/index.d.mts +0 -2
  1189. package/node_modules/typebox/build/schema/types/index.mjs +0 -2
  1190. package/node_modules/typebox/build/system/memory/clone.mjs +14 -11
  1191. package/node_modules/typebox/build/system/memory/discard.mjs +6 -5
  1192. package/node_modules/typebox/build/system/settings/settings.d.mts +9 -0
  1193. package/node_modules/typebox/build/system/settings/settings.mjs +2 -0
  1194. package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +6 -1
  1195. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +16 -3
  1196. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +34 -4
  1197. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +5 -5
  1198. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +20 -26
  1199. package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +6 -10
  1200. package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +9 -13
  1201. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +7 -4
  1202. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +12 -19
  1203. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +4 -20
  1204. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +8 -20
  1205. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +4 -4
  1206. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +11 -8
  1207. package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +1 -1
  1208. package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +3 -4
  1209. package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +17 -2
  1210. package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +26 -6
  1211. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +3 -4
  1212. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +1 -1
  1213. package/node_modules/typebox/build/type/engine/extract/operation.mjs +3 -4
  1214. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +2 -2
  1215. package/node_modules/typebox/build/type/engine/priority/priority.mjs +3 -4
  1216. package/node_modules/typebox/build/type/script/mapping.d.mts +32 -29
  1217. package/node_modules/typebox/build/type/script/mapping.mjs +18 -25
  1218. package/node_modules/typebox/build/type/script/parser.d.mts +19 -25
  1219. package/node_modules/typebox/build/type/script/parser.mjs +27 -23
  1220. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -2
  1221. package/node_modules/typebox/build/value/errors/errors.mjs +1 -1
  1222. package/node_modules/typebox/package.json +27 -27
  1223. package/node_modules/typebox/readme.md +79 -82
  1224. package/package.json +9 -8
  1225. package/node_modules/@pierre/diffs/dist/utils/iterateOverFile.d.ts +0 -50
  1226. package/node_modules/@pierre/diffs/dist/utils/iterateOverFile.d.ts.map +0 -1
  1227. package/node_modules/@pierre/diffs/dist/utils/iterateOverFile.js +0 -49
  1228. package/node_modules/@pierre/diffs/dist/utils/iterateOverFile.js.map +0 -1
  1229. package/node_modules/typebox/build/format/_idna.d.mts +0 -2
  1230. package/node_modules/typebox/build/format/_idna.mjs +0 -246
  1231. package/node_modules/typebox/build/format/_puny.d.mts +0 -1
  1232. package/node_modules/typebox/build/format/_puny.mjs +0 -77
  1233. package/node_modules/typebox/build/schema/resolve/ref.d.mts +0 -3
  1234. package/node_modules/typebox/build/schema/resolve/ref.mjs +0 -146
  1235. package/node_modules/typebox/build/schema/types/contentEncoding.d.mts +0 -9
  1236. package/node_modules/typebox/build/schema/types/contentEncoding.mjs +0 -13
  1237. package/node_modules/typebox/build/schema/types/contentMediaType.d.mts +0 -9
  1238. package/node_modules/typebox/build/schema/types/contentMediaType.mjs +0 -13
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiff.js","names":[],"sources":["../../src/components/FileDiff.ts"],"sourcesContent":["import type { ElementContent, Element as HASTElement } from 'hast';\nimport { toHtml } from 'hast-util-to-html';\n\nimport {\n CUSTOM_HEADER_SLOT_ID,\n DEFAULT_THEMES,\n DEFAULT_TOKENIZE_MAX_LENGTH,\n DIFFS_TAG_NAME,\n EMPTY_RENDER_RANGE,\n HEADER_METADATA_SLOT_ID,\n HEADER_PREFIX_SLOT_ID,\n THEME_CSS_ATTRIBUTE,\n UNSAFE_CSS_ATTRIBUTE,\n} from '../constants';\nimport {\n type GetHoveredLineResult,\n type GetLineIndexUtility,\n InteractionManager,\n type InteractionManagerBaseOptions,\n pluckInteractionOptions,\n type SelectionWriteOptions,\n} from '../managers/InteractionManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { ScrollSyncManager } from '../managers/ScrollSyncManager';\nimport {\n DiffHunksRenderer,\n type DiffHunksRendererOptions,\n type HunksRenderResult,\n} from '../renderers/DiffHunksRenderer';\nimport { SVGSpriteSheet } from '../sprite';\nimport type {\n AppliedThemeStyleCache,\n BaseDiffOptions,\n CustomPreProperties,\n DiffLineAnnotation,\n ExpansionDirections,\n FileContents,\n FileDiffMetadata,\n HunkData,\n HunkSeparators,\n PostRenderPhase,\n PrePropertiesConfig,\n RenderHeaderMetadataCallback,\n RenderHeaderPrefixCallback,\n RenderRange,\n SelectedLineRange,\n SelectionSide,\n ThemeTypes,\n} from '../types';\nimport { areDiffLineAnnotationsEqual } from '../utils/areDiffLineAnnotationsEqual';\nimport { areFilesEqual } from '../utils/areFilesEqual';\nimport { areHunkDataEqual } from '../utils/areHunkDataEqual';\nimport { arePrePropertiesEqual } from '../utils/arePrePropertiesEqual';\nimport { areRenderRangesEqual } from '../utils/areRenderRangesEqual';\nimport { areThemesEqual } from '../utils/areThemesEqual';\nimport { createAnnotationWrapperNode } from '../utils/createAnnotationWrapperNode';\nimport { createGutterUtilityContentNode } from '../utils/createGutterUtilityContentNode';\nimport { createUnsafeCSSStyleNode } from '../utils/createUnsafeCSSStyleNode';\nimport {\n patchScrollbarGutterSize,\n wrapThemeCSS,\n wrapUnsafeCSS,\n} from '../utils/cssWrappers';\nimport { getDiffHunksRendererOptions } from '../utils/getDiffHunksRendererOptions';\nimport { getLineAnnotationName } from '../utils/getLineAnnotationName';\nimport { getOrCreateCodeNode } from '../utils/getOrCreateCodeNode';\nimport { upsertHostThemeStyle } from '../utils/hostTheme';\nimport { isDiffPlainText } from '../utils/isDiffPlainText';\nimport { isStyleNode } from '../utils/isStyleNode';\nimport { parseDiffFromFile } from '../utils/parseDiffFromFile';\nimport { prerenderHTMLIfNecessary } from '../utils/prerenderHTMLIfNecessary';\nimport { getMeasuredScrollbarGutter } from '../utils/scrollbarGutter';\nimport { setPreNodeProperties } from '../utils/setWrapperNodeProps';\nimport type { WorkerPoolManager } from '../worker';\nimport { DiffsContainerLoaded } from './web-components';\n\nexport interface FileDiffRenderProps<LAnnotation> {\n fileDiff?: FileDiffMetadata;\n oldFile?: FileContents;\n newFile?: FileContents;\n deferManagers?: boolean;\n forceRender?: boolean;\n preventEmit?: boolean;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n lineAnnotations?: DiffLineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\n\nexport interface FileDiffHydrationProps<LAnnotation> extends Omit<\n FileDiffRenderProps<LAnnotation>,\n 'fileContainer'\n> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\n\nexport type FileDiffType = 'file-diff' | 'unresolved-file';\n\nexport interface FileDiffOptions<LAnnotation>\n extends\n Omit<BaseDiffOptions, 'hunkSeparators'>,\n InteractionManagerBaseOptions<'diff'> {\n hunkSeparators?:\n | Exclude<HunkSeparators, 'custom'> /**\n * @deprecated Custom hunk separator functions are deprecated and will be\n * removed in a future version.\n */\n | ((\n hunk: HunkData,\n instance: FileDiff<LAnnotation>\n ) => HTMLElement | DocumentFragment | null | undefined);\n disableFileHeader?: boolean;\n renderHeaderPrefix?: RenderHeaderPrefixCallback;\n renderHeaderMetadata?: RenderHeaderMetadataCallback;\n renderCustomHeader?: RenderHeaderMetadataCallback;\n /**\n * When true, errors during rendering are rethrown instead of being caught\n * and displayed in the DOM. Useful for testing or when you want to handle\n * errors yourself.\n */\n disableErrorHandling?: boolean;\n renderAnnotation?(\n annotation: DiffLineAnnotation<LAnnotation>\n ): HTMLElement | undefined;\n renderGutterUtility?(\n getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined\n ): HTMLElement | null | undefined;\n\n onPostRender?(\n node: HTMLElement,\n instance: FileDiff<LAnnotation>,\n phase: PostRenderPhase\n ): unknown;\n}\n\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: DiffLineAnnotation<LAnnotation>;\n}\n\ninterface CustomHunkElementCache {\n element: HTMLElement;\n hunkData: HunkData;\n}\n\ninterface ColumnElements {\n gutter: HTMLElement;\n content: HTMLElement;\n}\n\ninterface TrimColumnsToOverlapProps {\n columns:\n | [ColumnElements | undefined, ColumnElements | undefined]\n | ColumnElements;\n diffStyle: 'split' | 'unified';\n overlapEnd: number;\n overlapStart: number;\n previousStart: number;\n trimEnd: number;\n trimStart: number;\n}\n\ninterface ApplyPartialRenderProps {\n previousRenderRange: RenderRange | undefined;\n renderRange: RenderRange | undefined;\n}\n\ninterface HydrationSetup<LAnnotation> {\n fileDiff: FileDiffMetadata | undefined;\n lineAnnotations: DiffLineAnnotation<LAnnotation>[] | undefined;\n oldFile?: FileContents;\n newFile?: FileContents;\n}\n\nlet instanceId = -1;\n\nexport class FileDiff<LAnnotation = undefined> {\n // NOTE(amadeus): We sorta need this to ensure the web-component file is\n // properly loaded\n static LoadedCustomComponent: boolean = DiffsContainerLoaded;\n\n readonly __id: string = `file-diff:${++instanceId}`;\n readonly type: FileDiffType = 'file-diff';\n\n protected fileContainer: HTMLElement | undefined;\n protected spriteSVG: SVGElement | undefined;\n protected pre: HTMLPreElement | undefined;\n protected codeUnified: HTMLElement | undefined;\n protected codeDeletions: HTMLElement | undefined;\n protected codeAdditions: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected themeCSSStyle: HTMLStyleElement | undefined;\n protected appliedThemeCSS: AppliedThemeStyleCache | undefined;\n protected hasAdoptedThemeCSS = false;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected appliedUnsafeCSS: string | undefined;\n protected gutterUtilityContent: HTMLElement | undefined;\n\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected headerCustom: HTMLElement | undefined;\n protected separatorCache: Map<string, CustomHunkElementCache> = new Map();\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n\n protected hunksRenderer: DiffHunksRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected scrollSyncManager: ScrollSyncManager;\n protected interactionManager: InteractionManager<'diff'>;\n\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>> =\n new Map();\n protected lineAnnotations: DiffLineAnnotation<LAnnotation>[] = [];\n protected managersDirty = false;\n\n protected deletionFile: FileContents | undefined;\n protected additionFile: FileContents | undefined;\n public fileDiff: FileDiffMetadata | undefined;\n protected renderRange: RenderRange | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected cachedHeaderHTML: string | undefined;\n protected lastRowCount: number | undefined;\n private mounted = false;\n\n protected enabled = true;\n\n constructor(\n public options: FileDiffOptions<LAnnotation> = { theme: DEFAULT_THEMES },\n protected workerManager?: WorkerPoolManager | undefined,\n protected isContainerManaged = false\n ) {\n this.hunksRenderer = this.createHunksRenderer(options);\n this.resizeManager = new ResizeManager();\n this.scrollSyncManager = new ScrollSyncManager();\n this.interactionManager = new InteractionManager(\n 'diff',\n pluckInteractionOptions(\n options,\n typeof options.hunkSeparators === 'function' ||\n (options.hunkSeparators ?? 'line-info') === 'line-info' ||\n options.hunkSeparators === 'line-info-basic'\n ? this.handleExpandHunk\n : undefined,\n this.getLineIndex\n )\n );\n this.workerManager?.subscribeToThemeChanges(this);\n this.enabled = true;\n }\n\n protected handleHighlightRender = (): void => {\n this.rerender();\n };\n\n protected getHunksRendererOptions(\n options: FileDiffOptions<LAnnotation>\n ): DiffHunksRendererOptions {\n return getDiffHunksRendererOptions(options);\n }\n\n protected createHunksRenderer(\n options: FileDiffOptions<LAnnotation>\n ): DiffHunksRenderer<LAnnotation> {\n return new DiffHunksRenderer(\n this.getHunksRendererOptions(options),\n this.handleHighlightRender,\n this.workerManager\n );\n }\n\n public getLineIndex: GetLineIndexUtility = (\n lineNumber: number,\n side: SelectionSide = 'additions'\n ) => {\n if (this.fileDiff == null) {\n return undefined;\n }\n const lastHunk = this.fileDiff.hunks.at(-1);\n let targetUnifiedIndex: number | undefined;\n let targetSplitIndex: number | undefined;\n hunkIterator: for (const hunk of this.fileDiff.hunks) {\n let currentLineNumber =\n side === 'deletions' ? hunk.deletionStart : hunk.additionStart;\n const hunkCount =\n side === 'deletions' ? hunk.deletionCount : hunk.additionCount;\n let splitIndex = hunk.splitLineStart;\n let unifiedIndex = hunk.unifiedLineStart;\n\n // If we've selected a line between or before a hunk,\n // we should grab its index here\n if (lineNumber < currentLineNumber) {\n const difference = currentLineNumber - lineNumber;\n targetUnifiedIndex = Math.max(unifiedIndex - difference, 0);\n targetSplitIndex = Math.max(splitIndex - difference, 0);\n break hunkIterator;\n }\n\n if (lineNumber >= currentLineNumber + hunkCount) {\n if (hunk === lastHunk) {\n const difference = lineNumber - (currentLineNumber + hunkCount);\n targetUnifiedIndex =\n unifiedIndex + hunk.unifiedLineCount + difference;\n targetSplitIndex = splitIndex + hunk.splitLineCount + difference;\n break hunkIterator;\n }\n continue;\n }\n\n for (const content of hunk.hunkContent) {\n if (content.type === 'context') {\n if (lineNumber < currentLineNumber + content.lines) {\n const difference = lineNumber - currentLineNumber;\n targetSplitIndex = splitIndex + difference;\n targetUnifiedIndex = unifiedIndex + difference;\n break hunkIterator;\n } else {\n currentLineNumber += content.lines;\n splitIndex += content.lines;\n unifiedIndex += content.lines;\n }\n } else {\n const sideCount =\n side === 'deletions' ? content.deletions : content.additions;\n if (lineNumber < currentLineNumber + sideCount) {\n const indexDifference = lineNumber - currentLineNumber;\n targetUnifiedIndex =\n unifiedIndex +\n (side === 'additions' ? content.deletions : 0) +\n indexDifference;\n targetSplitIndex = splitIndex + indexDifference;\n\n break hunkIterator;\n } else {\n currentLineNumber += sideCount;\n splitIndex += Math.max(content.deletions, content.additions);\n unifiedIndex += content.deletions + content.additions;\n }\n }\n }\n\n break hunkIterator;\n }\n\n if (targetUnifiedIndex == null || targetSplitIndex == null) {\n return undefined;\n }\n return [targetUnifiedIndex, targetSplitIndex];\n };\n\n // FIXME(amadeus): This is a bit of a looming issue that I'll need to resolve:\n // * Do we publicly allow merging of options or do we have individualized setters?\n // * When setting new options, we need to figure out what settings require a\n // re-render and which can just be applied more elegantly\n // * There's also an issue of options that live here on the File class and\n // those that live on the Hunk class, and it's a bit of an issue with passing\n // settings down and mirroring them (not great...)\n public setOptions(options: FileDiffOptions<LAnnotation> | undefined): void {\n if (options == null) return;\n this.options = options;\n this.cachedHeaderHTML = undefined;\n this.hunksRenderer.setOptions(this.getHunksRendererOptions(options));\n this.syncInteractionOptions();\n }\n\n protected syncInteractionOptions(): void {\n this.interactionManager.setOptions(\n pluckInteractionOptions(\n this.options,\n typeof this.options.hunkSeparators === 'function' ||\n (this.options.hunkSeparators ?? 'line-info') === 'line-info' ||\n this.options.hunkSeparators === 'line-info-basic'\n ? this.handleExpandHunk\n : undefined,\n this.getLineIndex\n )\n );\n }\n\n private mergeOptions(options: Partial<FileDiffOptions<LAnnotation>>): void {\n this.options = { ...this.options, ...options };\n }\n\n public setThemeType(themeType: ThemeTypes): void {\n if ((this.options.themeType ?? 'system') === themeType) {\n return;\n }\n this.mergeOptions({ themeType });\n this.applyCachedThemeState(themeType);\n }\n\n private applyCachedThemeState(themeType: ThemeTypes): boolean {\n if (\n typeof this.options.theme === 'string' ||\n this.fileContainer == null ||\n this.appliedThemeCSS == null\n ) {\n return false;\n }\n const effectiveThemeType = this.appliedThemeCSS.baseThemeType ?? themeType;\n if (this.appliedThemeCSS.themeType === effectiveThemeType) {\n return false;\n }\n this.applyThemeState(\n this.fileContainer,\n this.appliedThemeCSS.themeStyles,\n themeType,\n this.appliedThemeCSS.baseThemeType\n );\n return true;\n }\n\n private hasThemeChanged(): boolean {\n return (\n this.appliedThemeCSS != null &&\n !areThemesEqual(\n this.appliedThemeCSS.theme,\n this.options.theme ?? DEFAULT_THEMES\n )\n );\n }\n\n public getHoveredLine = (): GetHoveredLineResult<'diff'> | undefined => {\n return this.interactionManager.getHoveredLine();\n };\n\n public setLineAnnotations(\n lineAnnotations: DiffLineAnnotation<LAnnotation>[]\n ): void {\n this.lineAnnotations = lineAnnotations;\n }\n\n private canPartiallyRender(\n forceRender: boolean,\n annotationsChanged: boolean,\n didContentChange: boolean\n ): boolean {\n if (\n forceRender ||\n annotationsChanged ||\n didContentChange ||\n typeof this.options.hunkSeparators === 'function'\n ) {\n return false;\n }\n return true;\n }\n\n public setSelectedLines(\n range: SelectedLineRange | null,\n options?: SelectionWriteOptions\n ): void {\n this.interactionManager.setSelection(range, options);\n }\n\n public flushManagers(): void {\n if (!this.managersDirty || this.pre == null) {\n this.managersDirty = false;\n return;\n }\n\n const { diffStyle = 'split', overflow = 'scroll' } = this.options;\n this.interactionManager.setup(this.pre);\n this.resizeManager.setup(this.pre, overflow === 'wrap');\n if (overflow === 'scroll' && diffStyle === 'split') {\n this.scrollSyncManager.setup(\n this.pre,\n this.codeDeletions,\n this.codeAdditions\n );\n } else {\n this.scrollSyncManager.cleanUp();\n }\n this.managersDirty = false;\n }\n\n public cleanUp(recycle: boolean = false): void {\n this.emitPostRender(true);\n this.resizeManager.cleanUp();\n this.interactionManager.cleanUp();\n this.scrollSyncManager.cleanUp();\n this.managersDirty = false;\n this.workerManager?.unsubscribeToThemeChanges(this);\n this.renderRange = undefined;\n\n // Clean up the elements\n if (!this.isContainerManaged) {\n this.fileContainer?.remove();\n }\n this.fileContainer = undefined;\n this.mounted = false;\n if (!recycle) {\n this.lineAnnotations = [];\n }\n this.clearAuxiliaryNodes();\n this.annotationCache.clear();\n this.pre = undefined;\n this.codeUnified = undefined;\n this.codeDeletions = undefined;\n this.codeAdditions = undefined;\n this.bufferBefore = undefined;\n this.bufferAfter = undefined;\n this.appliedPreAttributes = undefined;\n this.headerElement = undefined;\n this.headerPrefix = undefined;\n this.headerMetadata = undefined;\n this.headerCustom = undefined;\n this.placeHolder = undefined;\n this.lastRenderedHeaderHTML = undefined;\n if (!recycle) {\n this.cachedHeaderHTML = undefined;\n }\n this.errorWrapper = undefined;\n this.spriteSVG = undefined;\n this.lastRowCount = undefined;\n this.themeCSSStyle = undefined;\n this.appliedThemeCSS = undefined;\n this.hasAdoptedThemeCSS = false;\n this.unsafeCSSStyle = undefined;\n this.appliedUnsafeCSS = undefined;\n\n if (recycle) {\n this.hunksRenderer.recycle();\n } else {\n this.hunksRenderer.cleanUp();\n this.workerManager = undefined;\n // Clean up the data\n this.fileDiff = undefined;\n this.deletionFile = undefined;\n this.additionFile = undefined;\n }\n\n this.enabled = false;\n }\n\n public virtualizedSetup(): void {\n this.enabled = true;\n this.workerManager?.subscribeToThemeChanges(this);\n }\n\n public hydrate(props: FileDiffHydrationProps<LAnnotation>): void {\n const {\n fileContainer,\n prerenderedHTML,\n preventEmit = false,\n lineAnnotations,\n oldFile,\n newFile,\n fileDiff,\n } = props;\n this.hydrateElements(fileContainer, prerenderedHTML);\n if (\n shouldRenderCode(\n this.pre,\n hasDiffContent({ fileDiff, oldFile, newFile }),\n this.options.collapsed\n ) ||\n shouldRenderHeader(\n this.headerElement,\n hasDiffHeaderContent({ fileDiff, oldFile, newFile }),\n this.options.disableFileHeader\n )\n ) {\n this.render({ ...props, preventEmit: true });\n }\n // Otherwise orchestrate our setup\n else {\n this.hydrationSetup({\n fileDiff,\n oldFile,\n newFile,\n lineAnnotations,\n });\n }\n if (!preventEmit) {\n this.emitPostRender();\n }\n }\n\n protected hydrateElements(\n fileContainer: HTMLElement,\n prerenderedHTML: string | undefined\n ): void {\n if (this.fileContainer !== fileContainer) {\n this.emitPostRender(true);\n }\n prerenderHTMLIfNecessary(fileContainer, prerenderedHTML);\n for (const element of fileContainer.shadowRoot?.children ?? []) {\n if (element instanceof SVGElement) {\n this.spriteSVG = element;\n continue;\n }\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n if (element instanceof HTMLPreElement) {\n this.pre = element;\n for (const code of element.children) {\n if (\n !(code instanceof HTMLElement) ||\n code.tagName.toLowerCase() !== 'code'\n ) {\n continue;\n }\n if ('deletions' in code.dataset) {\n this.codeDeletions = code;\n }\n if ('additions' in code.dataset) {\n this.codeAdditions = code;\n }\n if ('unified' in code.dataset) {\n this.codeUnified = code;\n }\n }\n continue;\n }\n if ('diffsHeader' in element.dataset) {\n this.headerElement = element;\n continue;\n }\n if (\n element instanceof HTMLStyleElement &&\n element.hasAttribute(THEME_CSS_ATTRIBUTE)\n ) {\n this.themeCSSStyle = element;\n continue;\n }\n if (\n element instanceof HTMLStyleElement &&\n element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)\n ) {\n this.unsafeCSSStyle = element;\n this.appliedUnsafeCSS = element.textContent;\n continue;\n }\n }\n if (this.pre != null) {\n this.syncCodeNodesFromPre(this.pre);\n this.pre.removeAttribute('data-dehydrated');\n }\n this.fileContainer = fileContainer;\n this.hydrateMeasuredScrollbar();\n }\n\n protected hydrationSetup({\n fileDiff,\n oldFile,\n newFile,\n lineAnnotations,\n }: HydrationSetup<LAnnotation>): void {\n // It's possible we are hydrating a pure-rename and therefore there will be\n // no pre element\n this.lineAnnotations = lineAnnotations ?? this.lineAnnotations;\n this.additionFile = newFile;\n this.deletionFile = oldFile;\n this.fileDiff =\n fileDiff ??\n (oldFile != null && newFile != null\n ? parseDiffFromFile(oldFile, newFile, this.options.parseDiffOptions)\n : undefined);\n\n if (this.pre == null) {\n return;\n }\n\n this.syncInteractionOptions();\n this.hunksRenderer.hydrate(this.fileDiff);\n // FIXME(amadeus): not sure how to handle this yet...\n // this.renderSeparators();\n this.renderAnnotations();\n this.renderGutterUtility();\n this.injectUnsafeCSS();\n this.managersDirty = true;\n this.flushManagers();\n }\n\n public rerender(): void {\n if (\n !this.enabled ||\n (this.fileDiff == null &&\n this.additionFile == null &&\n this.deletionFile == null)\n ) {\n return;\n }\n this.render({ forceRender: true, renderRange: this.renderRange });\n }\n\n public onThemeChange(): void {\n this.hunksRenderer.clearRenderCache();\n this.rerender();\n }\n\n // This wrapper must stay separate from `expandHunk` because subclasses like\n // `VirtualizedFileDiff` replace `expandHunk` with their own instance field\n // after `super()` returns. `InteractionManager` is created in this base\n // constructor, so it needs a stable callback that resolves `this.expandHunk`\n // at click time instead of capturing the base implementation too early.\n public handleExpandHunk = (\n hunkIndex: number,\n direction: ExpansionDirections,\n expansionLineCountOverride?: number\n ): void => {\n this.expandHunk(hunkIndex, direction, expansionLineCountOverride);\n };\n\n public expandHunk = (\n hunkIndex: number,\n direction: ExpansionDirections,\n expansionLineCountOverride?: number\n ): void => {\n this.hunksRenderer.expandHunk(\n hunkIndex,\n direction,\n expansionLineCountOverride\n );\n this.rerender();\n };\n\n public render({\n oldFile,\n newFile,\n fileDiff,\n deferManagers = false,\n forceRender = false,\n preventEmit = false,\n lineAnnotations,\n fileContainer,\n containerWrapper,\n renderRange,\n }: FileDiffRenderProps<LAnnotation>): boolean {\n if (!this.enabled) {\n // NOTE(amadeus): May need to be a silent failure? Making it loud for now\n // to better understand it\n throw new Error(\n 'FileDiff.render: attempting to call render after cleaned up'\n );\n }\n const { collapsed = false, themeType = 'system' } = this.options;\n const nextRenderRange = collapsed ? undefined : renderRange;\n const themeChanged = this.hasThemeChanged();\n const filesDidChange =\n oldFile != null &&\n newFile != null &&\n (!areFilesEqual(oldFile, this.deletionFile) ||\n !areFilesEqual(newFile, this.additionFile));\n let diffDidChange = fileDiff != null && fileDiff !== this.fileDiff;\n const annotationsChanged =\n lineAnnotations != null &&\n (lineAnnotations.length > 0 || this.lineAnnotations.length > 0)\n ? lineAnnotations !== this.lineAnnotations\n : false;\n\n if (\n !collapsed &&\n areRenderRangesEqual(nextRenderRange, this.renderRange) &&\n !forceRender &&\n !annotationsChanged &&\n !themeChanged &&\n // If using the fileDiff API, lets check to see if they are equal to\n // avoid doing work\n ((fileDiff != null && fileDiff === this.fileDiff) ||\n // If using the oldFile/newFile API then lets check to see if they are\n // equal\n (fileDiff == null && !filesDidChange))\n ) {\n return this.applyCachedThemeState(themeType);\n }\n\n const { renderRange: previousRenderRange } = this;\n this.renderRange = nextRenderRange;\n this.deletionFile = oldFile;\n this.additionFile = newFile;\n\n if (fileDiff != null) {\n this.fileDiff = fileDiff;\n } else if (oldFile != null && newFile != null && filesDidChange) {\n diffDidChange = true;\n this.fileDiff = parseDiffFromFile(\n oldFile,\n newFile,\n this.options.parseDiffOptions\n );\n }\n if (diffDidChange) {\n this.cachedHeaderHTML = undefined;\n }\n\n if (lineAnnotations != null) {\n this.setLineAnnotations(lineAnnotations);\n }\n if (this.fileDiff == null) {\n return false;\n }\n this.hunksRenderer.setOptions(this.getHunksRendererOptions(this.options));\n this.syncInteractionOptions();\n\n this.hunksRenderer.setLineAnnotations(this.lineAnnotations);\n\n const { disableErrorHandling = false, disableFileHeader = false } =\n this.options;\n\n if (disableFileHeader) {\n // Remove existing header from DOM\n if (this.headerElement != null) {\n this.headerElement.remove();\n this.headerElement = undefined;\n this.lastRenderedHeaderHTML = undefined;\n }\n this.clearHeaderSlots();\n }\n fileContainer = this.getOrCreateFileContainer(\n fileContainer,\n containerWrapper\n );\n this.applyCachedThemeState(themeType);\n\n if (collapsed) {\n this.removeRenderedCode();\n this.clearAuxiliaryNodes();\n\n try {\n const hunksResult = this.hunksRenderer.renderDiff(\n this.fileDiff,\n EMPTY_RENDER_RANGE\n );\n if (hunksResult != null) {\n this.applyThemeState(\n fileContainer,\n hunksResult.themeStyles,\n themeType,\n hunksResult.baseThemeType\n );\n }\n if (hunksResult?.headerElement != null) {\n this.applyHeaderToDOM(hunksResult.headerElement, fileContainer);\n }\n this.renderSeparators([]);\n this.injectUnsafeCSS();\n } catch (error: unknown) {\n if (disableErrorHandling) {\n throw error;\n }\n console.error(error);\n if (error instanceof Error) {\n this.applyErrorToDOM(error, fileContainer);\n }\n }\n if (!preventEmit) {\n this.emitPostRender();\n }\n return true;\n }\n\n try {\n const pre = this.getOrCreatePreNode(fileContainer);\n\n // Attempt to partially render\n const didPartiallyRender =\n this.canPartiallyRender(\n forceRender,\n annotationsChanged,\n filesDidChange || diffDidChange || themeChanged\n ) &&\n this.applyPartialRender({\n previousRenderRange,\n renderRange: nextRenderRange,\n });\n\n // If we were unable to partially render, perform a full render\n if (!didPartiallyRender) {\n const hunksResult = this.hunksRenderer.renderDiff(\n this.fileDiff,\n nextRenderRange\n );\n if (hunksResult == null) {\n // FIXME(amadeus): I don't think we actually need this check, as\n // DiffHunksRenderer should probably take care of it for us?\n if (this.workerManager?.isInitialized() === false) {\n void this.workerManager.initialize().then(() => this.rerender());\n }\n return false;\n }\n\n this.applyThemeState(\n fileContainer,\n hunksResult.themeStyles,\n themeType,\n hunksResult.baseThemeType\n );\n\n if (hunksResult.headerElement != null) {\n this.applyHeaderToDOM(hunksResult.headerElement, fileContainer);\n }\n if (\n hunksResult.additionsContentAST != null ||\n hunksResult.deletionsContentAST != null ||\n hunksResult.unifiedContentAST != null\n ) {\n this.applyHunksToDOM(pre, hunksResult);\n } else if (this.pre != null) {\n this.pre.remove();\n this.pre = undefined;\n }\n this.renderSeparators(hunksResult.hunkData);\n }\n\n this.applyBuffers(pre, nextRenderRange);\n this.injectUnsafeCSS();\n this.renderAnnotations();\n this.renderGutterUtility();\n\n this.managersDirty = true;\n if (!deferManagers) {\n this.flushManagers();\n }\n } catch (error: unknown) {\n if (disableErrorHandling) {\n throw error;\n }\n console.error(error);\n if (error instanceof Error) {\n this.applyErrorToDOM(error, fileContainer);\n }\n }\n if (!preventEmit) {\n this.emitPostRender();\n }\n return true;\n }\n\n protected emitPostRender(unmount = false): void {\n const {\n fileContainer,\n options: { onPostRender },\n } = this;\n\n if (unmount) {\n if (!this.mounted) {\n return;\n }\n this.mounted = false;\n if (fileContainer == null) {\n return;\n }\n this.options.onPostRender?.(fileContainer, this, 'unmount');\n return;\n }\n\n if (fileContainer == null) {\n return;\n }\n\n const phase: PostRenderPhase = this.mounted ? 'update' : 'mount';\n this.mounted = true;\n onPostRender?.(fileContainer, this, phase);\n }\n\n private removeRenderedCode(): void {\n this.resizeManager.cleanUp();\n this.scrollSyncManager.cleanUp();\n this.interactionManager.cleanUp();\n\n this.bufferBefore?.remove();\n this.bufferBefore = undefined;\n this.bufferAfter?.remove();\n this.bufferAfter = undefined;\n\n this.codeUnified?.remove();\n this.codeUnified = undefined;\n this.codeDeletions?.remove();\n this.codeDeletions = undefined;\n this.codeAdditions?.remove();\n this.codeAdditions = undefined;\n\n this.pre?.remove();\n this.pre = undefined;\n\n this.appliedPreAttributes = undefined;\n this.lastRowCount = undefined;\n }\n\n private clearAuxiliaryNodes(): void {\n for (const { element } of this.separatorCache.values()) {\n element.remove();\n }\n this.separatorCache.clear();\n\n for (const { element } of this.annotationCache.values()) {\n element.remove();\n }\n this.annotationCache.clear();\n\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n }\n\n public renderPlaceholder(height: number): boolean {\n if (this.fileContainer == null) {\n return false;\n }\n this.emitPostRender(true);\n this.cleanChildNodes();\n\n if (this.placeHolder == null) {\n const shadowRoot =\n this.fileContainer.shadowRoot ??\n this.fileContainer.attachShadow({ mode: 'open' });\n this.placeHolder = document.createElement('div');\n this.placeHolder.dataset.placeholder = '';\n shadowRoot.appendChild(this.placeHolder);\n }\n this.placeHolder.style.setProperty('height', `${height}px`);\n return true;\n }\n\n public primeHighlightCache(): void {\n const { fileDiff, workerManager } = this;\n if (\n fileDiff == null ||\n workerManager == null ||\n isDiffPlainText(fileDiff)\n ) {\n return;\n }\n const tokenizeMaxLength =\n this.options.tokenizeMaxLength ?? DEFAULT_TOKENIZE_MAX_LENGTH;\n if (\n Math.max(fileDiff.additionLines.length, fileDiff.deletionLines.length) >\n tokenizeMaxLength\n ) {\n return;\n }\n workerManager.primeDiffHighlightCache(fileDiff);\n }\n\n private cleanChildNodes() {\n this.resizeManager.cleanUp();\n this.scrollSyncManager.cleanUp();\n this.interactionManager.cleanUp();\n this.clearAuxiliaryNodes();\n\n this.bufferAfter?.remove();\n this.bufferBefore?.remove();\n this.codeAdditions?.remove();\n this.codeDeletions?.remove();\n this.codeUnified?.remove();\n this.errorWrapper?.remove();\n this.headerElement?.remove();\n this.headerPrefix?.remove();\n this.headerMetadata?.remove();\n this.headerCustom?.remove();\n this.pre?.remove();\n this.spriteSVG?.remove();\n this.themeCSSStyle?.remove();\n this.unsafeCSSStyle?.remove();\n\n this.bufferAfter = undefined;\n this.bufferBefore = undefined;\n this.codeAdditions = undefined;\n this.codeDeletions = undefined;\n this.codeUnified = undefined;\n this.errorWrapper = undefined;\n this.headerElement = undefined;\n this.headerPrefix = undefined;\n this.headerMetadata = undefined;\n this.headerCustom = undefined;\n this.pre = undefined;\n this.spriteSVG = undefined;\n this.themeCSSStyle = undefined;\n this.appliedThemeCSS = undefined;\n this.hasAdoptedThemeCSS = false;\n this.unsafeCSSStyle = undefined;\n this.appliedUnsafeCSS = undefined;\n\n this.lastRenderedHeaderHTML = undefined;\n this.lastRowCount = undefined;\n this.mounted = false;\n }\n\n private renderSeparators(hunkData: HunkData[]): void {\n const { hunkSeparators } = this.options;\n if (\n this.isContainerManaged ||\n this.fileContainer == null ||\n typeof hunkSeparators !== 'function'\n ) {\n for (const { element } of this.separatorCache.values()) {\n element.remove();\n }\n this.separatorCache.clear();\n return;\n }\n const staleSeparators = new Map(this.separatorCache);\n for (const hunk of hunkData) {\n const id = hunk.slotName;\n let cache = this.separatorCache.get(id);\n if (cache == null || !areHunkDataEqual(hunk, cache.hunkData)) {\n cache?.element.remove();\n const element = document.createElement('div');\n element.style.display = 'contents';\n element.slot = hunk.slotName;\n const child = hunkSeparators(hunk, this);\n if (child != null) {\n element.appendChild(child);\n }\n this.fileContainer.appendChild(element);\n cache = { element, hunkData: hunk };\n this.separatorCache.set(id, cache);\n }\n staleSeparators.delete(id);\n }\n for (const [id, { element }] of staleSeparators.entries()) {\n this.separatorCache.delete(id);\n element.remove();\n }\n }\n\n protected renderAnnotations(): void {\n if (this.isContainerManaged || this.fileContainer == null) {\n for (const { element } of this.annotationCache.values()) {\n element.remove();\n }\n this.annotationCache.clear();\n return;\n }\n const staleAnnotations = new Map(this.annotationCache);\n const { renderAnnotation } = this.options;\n if (renderAnnotation != null && this.lineAnnotations.length > 0) {\n for (const [index, annotation] of this.lineAnnotations.entries()) {\n const id = `${index}-${getLineAnnotationName(annotation)}`;\n let cache = this.annotationCache.get(id);\n if (\n cache == null ||\n !areDiffLineAnnotationsEqual(annotation, cache.annotation)\n ) {\n cache?.element.remove();\n const content = renderAnnotation(annotation);\n // If we can't render anything, then we should not render anything\n // and clear the annotation cache if necessary.\n if (content == null) {\n continue;\n }\n cache = {\n element: createAnnotationWrapperNode(\n getLineAnnotationName(annotation)\n ),\n annotation,\n };\n cache.element.appendChild(content);\n this.fileContainer.appendChild(cache.element);\n this.annotationCache.set(id, cache);\n }\n staleAnnotations.delete(id);\n }\n }\n for (const [id, { element }] of staleAnnotations.entries()) {\n this.annotationCache.delete(id);\n element.remove();\n }\n }\n\n protected renderGutterUtility(): void {\n const { renderGutterUtility } = this.options;\n if (this.fileContainer == null || renderGutterUtility == null) {\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n return;\n }\n const element = renderGutterUtility(this.interactionManager.getHoveredLine);\n if (element != null && this.gutterUtilityContent != null) {\n return;\n } else if (element == null) {\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n return;\n }\n const gutterUtilityContent = createGutterUtilityContentNode();\n gutterUtilityContent.appendChild(element);\n this.fileContainer.appendChild(gutterUtilityContent);\n this.gutterUtilityContent = gutterUtilityContent;\n }\n\n protected getOrCreateFileContainer(\n fileContainer?: HTMLElement,\n parentNode?: HTMLElement\n ): HTMLElement {\n const { fileContainer: previousContainer } = this;\n const nextContainer =\n fileContainer ??\n previousContainer ??\n document.createElement(DIFFS_TAG_NAME);\n const containerChanged = previousContainer !== nextContainer;\n if (containerChanged) {\n this.emitPostRender(true);\n }\n this.fileContainer = nextContainer;\n if (previousContainer != null && containerChanged) {\n this.lastRenderedHeaderHTML = undefined;\n this.headerElement = undefined;\n }\n if (parentNode != null && this.fileContainer.parentNode !== parentNode) {\n parentNode.appendChild(this.fileContainer);\n }\n if (containerChanged) {\n this.adoptReusableShellElements(this.fileContainer);\n }\n this.ensureSpriteSVG(this.fileContainer);\n return this.fileContainer;\n }\n\n // NOTE(amadeus): Technically this method is not safe for use outside of\n // the CodeView component, however I don't think in practice it really\n // should matter, but maybe there's some system we need in place to prevent\n // this from running outside of that environment?\n //\n // It's making very specific assumptions that all the elements will have the\n // correct content based on CodeView global options\n private adoptReusableShellElements(fileContainer: HTMLElement): void {\n const { shadowRoot } = fileContainer;\n if (shadowRoot == null) {\n return;\n }\n\n for (const element of shadowRoot.children) {\n if (element instanceof SVGElement) {\n this.spriteSVG ??= element;\n } else if (\n isStyleNode(element) &&\n element.hasAttribute(THEME_CSS_ATTRIBUTE)\n ) {\n this.themeCSSStyle ??= element;\n this.hasAdoptedThemeCSS = true;\n } else if (\n isStyleNode(element) &&\n element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)\n ) {\n this.unsafeCSSStyle ??= element;\n this.appliedUnsafeCSS ??= this.options.unsafeCSS ?? undefined;\n }\n }\n }\n\n private ensureSpriteSVG(fileContainer: HTMLElement): void {\n const shadowRoot =\n fileContainer.shadowRoot ?? fileContainer.attachShadow({ mode: 'open' });\n if (this.spriteSVG == null) {\n const fragment = document.createElement('div');\n fragment.innerHTML = SVGSpriteSheet;\n const firstChild = fragment.firstChild;\n if (firstChild instanceof SVGElement) {\n this.spriteSVG = firstChild;\n }\n }\n if (this.spriteSVG != null && this.spriteSVG.parentNode !== shadowRoot) {\n shadowRoot.appendChild(this.spriteSVG);\n }\n }\n\n private getOrCreatePreNode(container: HTMLElement): HTMLPreElement {\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n // If we haven't created a pre element yet, lets go ahead and do that\n if (this.pre == null) {\n this.pre = document.createElement('pre');\n this.appliedPreAttributes = undefined;\n this.codeUnified = undefined;\n this.codeDeletions = undefined;\n this.codeAdditions = undefined;\n shadowRoot.appendChild(this.pre);\n }\n // If we have a new parent container for the pre element, lets go ahead and\n // move it into the new container\n else if (this.pre.parentNode !== shadowRoot) {\n shadowRoot.appendChild(this.pre);\n this.appliedPreAttributes = undefined;\n }\n\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n\n return this.pre;\n }\n\n protected syncCodeNodesFromPre(pre: HTMLPreElement): void {\n this.codeUnified = undefined;\n this.codeDeletions = undefined;\n this.codeAdditions = undefined;\n for (const child of Array.from(pre.children)) {\n if (!(child instanceof HTMLElement)) {\n continue;\n }\n if (child.hasAttribute('data-unified')) {\n this.codeUnified = child;\n } else if (child.hasAttribute('data-deletions')) {\n this.codeDeletions = child;\n } else if (child.hasAttribute('data-additions')) {\n this.codeAdditions = child;\n }\n }\n }\n\n private applyHeaderToDOM(\n headerAST: HASTElement,\n container: HTMLElement\n ): void {\n this.cleanupErrorWrapper();\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n const { fileDiff } = this;\n const headerHTML = this.cachedHeaderHTML ?? toHtml(headerAST);\n this.cachedHeaderHTML = headerHTML;\n if (headerHTML !== this.lastRenderedHeaderHTML) {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = headerHTML;\n const newHeader = tempDiv.firstElementChild;\n if (!(newHeader instanceof HTMLElement)) {\n return;\n }\n if (this.headerElement != null) {\n container.shadowRoot?.replaceChild(newHeader, this.headerElement);\n } else {\n container.shadowRoot?.prepend(newHeader);\n }\n this.headerElement = newHeader;\n this.lastRenderedHeaderHTML = headerHTML;\n }\n\n if (this.isContainerManaged || fileDiff == null) {\n return;\n }\n\n const { renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata } =\n this.options;\n\n if (renderCustomHeader != null) {\n const content = renderCustomHeader(fileDiff) ?? undefined;\n this.headerCustom = this.upsertHeaderSlotElement(\n container,\n this.headerCustom,\n CUSTOM_HEADER_SLOT_ID,\n content\n );\n this.headerPrefix?.remove();\n this.headerMetadata?.remove();\n this.headerPrefix = undefined;\n this.headerMetadata = undefined;\n return;\n }\n\n const prefix = renderHeaderPrefix?.(fileDiff) ?? undefined;\n const content = renderHeaderMetadata?.(fileDiff) ?? undefined;\n this.headerPrefix = this.upsertHeaderSlotElement(\n container,\n this.headerPrefix,\n HEADER_PREFIX_SLOT_ID,\n prefix\n );\n this.headerMetadata = this.upsertHeaderSlotElement(\n container,\n this.headerMetadata,\n HEADER_METADATA_SLOT_ID,\n content\n );\n this.headerCustom?.remove();\n this.headerCustom = undefined;\n }\n\n private clearHeaderSlots(): void {\n this.headerPrefix?.remove();\n this.headerMetadata?.remove();\n this.headerCustom?.remove();\n this.headerPrefix = undefined;\n this.headerMetadata = undefined;\n this.headerCustom = undefined;\n }\n\n // Header slot callbacks are presence-based render hooks, not reactive views.\n private upsertHeaderSlotElement(\n container: HTMLElement,\n current: HTMLElement | undefined,\n slot: string,\n content: Element | string | number | undefined\n ): HTMLElement | undefined {\n if (content == null) {\n current?.remove();\n return undefined;\n }\n const element = current ?? this.createHeaderSlotElement(slot);\n if (current == null) {\n container.appendChild(element);\n }\n this.replaceHeaderSlotContent(element, content);\n return element;\n }\n\n private replaceHeaderSlotContent(\n element: HTMLElement,\n content: Element | string | number\n ): void {\n element.replaceChildren();\n if (content instanceof Element) {\n element.appendChild(content);\n } else {\n element.innerText = `${content}`;\n }\n }\n\n private createHeaderSlotElement(slot: string): HTMLElement {\n const element = document.createElement('div');\n element.slot = slot;\n return element;\n }\n\n protected injectUnsafeCSS(): void {\n const { unsafeCSS } = this.options;\n const shadowRoot = this.fileContainer?.shadowRoot;\n if (shadowRoot == null) {\n return;\n }\n\n if (unsafeCSS == null || unsafeCSS === '') {\n if (this.unsafeCSSStyle != null) {\n this.unsafeCSSStyle.remove();\n this.unsafeCSSStyle = undefined;\n }\n this.appliedUnsafeCSS = undefined;\n return;\n }\n\n if (\n this.unsafeCSSStyle?.parentNode === shadowRoot &&\n this.appliedUnsafeCSS === unsafeCSS\n ) {\n return;\n }\n\n // Create or update the style element\n this.unsafeCSSStyle ??= createUnsafeCSSStyleNode();\n if (this.unsafeCSSStyle.parentNode !== shadowRoot) {\n shadowRoot.appendChild(this.unsafeCSSStyle);\n }\n // Wrap in @layer unsafe to match SSR behavior\n this.unsafeCSSStyle.textContent = wrapUnsafeCSS(unsafeCSS);\n this.appliedUnsafeCSS = unsafeCSS;\n }\n\n private applyThemeState(\n container: HTMLElement,\n themeStyles: string,\n themeType: ThemeTypes,\n baseThemeType?: 'light' | 'dark'\n ): void {\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n const effectiveThemeType = baseThemeType ?? themeType;\n const currentTheme = this.options.theme ?? DEFAULT_THEMES;\n const theme =\n typeof currentTheme === 'string' ? currentTheme : { ...currentTheme };\n const scrollbarGutter = getMeasuredScrollbarGutter(shadowRoot);\n if (\n this.themeCSSStyle?.parentNode === shadowRoot &&\n this.appliedThemeCSS?.themeStyles === themeStyles &&\n this.appliedThemeCSS.themeType === effectiveThemeType &&\n this.appliedThemeCSS.scrollbarGutter === scrollbarGutter\n ) {\n this.appliedThemeCSS.theme = theme;\n return;\n }\n if (\n this.hasAdoptedThemeCSS &&\n this.themeCSSStyle?.parentNode === shadowRoot\n ) {\n this.hasAdoptedThemeCSS = false;\n this.appliedThemeCSS = {\n theme,\n themeStyles,\n themeType: effectiveThemeType,\n baseThemeType,\n scrollbarGutter,\n };\n return;\n }\n this.themeCSSStyle = upsertHostThemeStyle({\n shadowRoot,\n currentNode: this.themeCSSStyle,\n themeCSS: wrapThemeCSS(themeStyles, effectiveThemeType, scrollbarGutter),\n });\n this.appliedThemeCSS =\n this.themeCSSStyle != null\n ? {\n theme,\n themeStyles,\n themeType: effectiveThemeType,\n baseThemeType,\n scrollbarGutter,\n }\n : undefined;\n }\n\n private hydrateMeasuredScrollbar(): void {\n const shadowRoot = this.fileContainer?.shadowRoot;\n if (shadowRoot == null || this.themeCSSStyle == null) {\n return;\n }\n this.themeCSSStyle.textContent = patchScrollbarGutterSize(\n this.themeCSSStyle.textContent ?? '',\n getMeasuredScrollbarGutter(shadowRoot)\n );\n }\n\n private applyHunksToDOM(\n pre: HTMLPreElement,\n result: HunksRenderResult\n ): void {\n const { overflow = 'scroll' } = this.options;\n const containerSize =\n (this.options.hunkSeparators ?? 'line-info') === 'line-info';\n const rowSpan = overflow === 'wrap' ? result.rowCount : undefined;\n this.cleanupErrorWrapper();\n this.applyPreNodeAttributes(pre, result);\n\n let shouldReplace = false;\n // Create code elements and insert HTML content\n const codeElements: HTMLElement[] = [];\n const unifiedAST = this.hunksRenderer.renderCodeAST('unified', result);\n const deletionsAST = this.hunksRenderer.renderCodeAST('deletions', result);\n const additionsAST = this.hunksRenderer.renderCodeAST('additions', result);\n if (unifiedAST != null) {\n shouldReplace =\n this.codeUnified == null ||\n this.codeAdditions != null ||\n this.codeDeletions != null;\n\n // Clean up addition/deletion elements if necessary\n this.codeDeletions?.remove();\n this.codeDeletions = undefined;\n this.codeAdditions?.remove();\n this.codeAdditions = undefined;\n\n this.codeUnified = getOrCreateCodeNode({\n code: this.codeUnified,\n columnType: 'unified',\n rowSpan,\n containerSize,\n });\n this.codeUnified.innerHTML =\n this.hunksRenderer.renderPartialHTML(unifiedAST);\n codeElements.push(this.codeUnified);\n } else if (deletionsAST != null || additionsAST != null) {\n if (deletionsAST != null) {\n shouldReplace = this.codeDeletions == null || this.codeUnified != null;\n\n // Clean up unified column if necessary\n this.codeUnified?.remove();\n this.codeUnified = undefined;\n\n this.codeDeletions = getOrCreateCodeNode({\n code: this.codeDeletions,\n columnType: 'deletions',\n rowSpan,\n containerSize,\n });\n this.codeDeletions.innerHTML =\n this.hunksRenderer.renderPartialHTML(deletionsAST);\n codeElements.push(this.codeDeletions);\n } else {\n // If we have no deletion column, lets clean it up if it exists\n this.codeDeletions?.remove();\n this.codeDeletions = undefined;\n }\n\n if (additionsAST != null) {\n shouldReplace =\n shouldReplace ||\n this.codeAdditions == null ||\n this.codeUnified != null;\n\n // Clean up unified column if necessary\n this.codeUnified?.remove();\n this.codeUnified = undefined;\n\n this.codeAdditions = getOrCreateCodeNode({\n code: this.codeAdditions,\n columnType: 'additions',\n rowSpan,\n containerSize,\n });\n this.codeAdditions.innerHTML =\n this.hunksRenderer.renderPartialHTML(additionsAST);\n codeElements.push(this.codeAdditions);\n } else {\n // If we have no addition column, lets clean it up if it exists\n this.codeAdditions?.remove();\n this.codeAdditions = undefined;\n }\n } else {\n // if we get in here, there's no content to render, so lets just clean\n // everything up\n this.codeUnified?.remove();\n this.codeUnified = undefined;\n this.codeDeletions?.remove();\n this.codeDeletions = undefined;\n this.codeAdditions?.remove();\n this.codeAdditions = undefined;\n }\n\n if (codeElements.length === 0) {\n pre.textContent = '';\n } else if (shouldReplace) {\n pre.replaceChildren(...codeElements);\n }\n\n this.lastRowCount = result.rowCount;\n }\n\n private applyPartialRender({\n previousRenderRange,\n renderRange,\n }: ApplyPartialRenderProps): boolean {\n const {\n pre,\n codeUnified,\n codeAdditions,\n codeDeletions,\n options: { diffStyle = 'split' },\n } = this;\n if (\n pre == null ||\n // We must have a current and previous render range to do a partial render\n previousRenderRange == null ||\n renderRange == null ||\n // Neither render range may be infinite\n !Number.isFinite(previousRenderRange.totalLines) ||\n !Number.isFinite(renderRange.totalLines) ||\n this.lastRowCount == null\n ) {\n return false;\n }\n const codeElements = this.getCodeColumns(\n diffStyle,\n codeUnified,\n codeDeletions,\n codeAdditions\n );\n if (codeElements == null) {\n return false;\n }\n\n const previousStart = previousRenderRange.startingLine;\n const nextStart = renderRange.startingLine;\n const previousEnd = previousStart + previousRenderRange.totalLines;\n const nextEnd = nextStart + renderRange.totalLines;\n\n const overlapStart = Math.max(previousStart, nextStart);\n const overlapEnd = Math.min(previousEnd, nextEnd);\n if (overlapEnd <= overlapStart) {\n return false;\n }\n\n const trimStart = Math.max(0, overlapStart - previousStart);\n const trimEnd = Math.max(0, previousEnd - overlapEnd);\n\n const trimResult = this.trimColumns({\n columns: codeElements,\n trimStart,\n trimEnd,\n previousStart,\n overlapStart,\n overlapEnd,\n diffStyle,\n });\n if (trimResult < 0) {\n throw new Error('applyPartialRender: failed to trim to overlap');\n }\n\n if (this.lastRowCount < trimResult) {\n throw new Error('applyPartialRender: trimmed beyond DOM row count');\n }\n\n let rowCount = this.lastRowCount - trimResult;\n const renderChunk = (\n startingLine: number,\n totalLines: number\n ): HunksRenderResult | undefined => {\n if (totalLines <= 0 || this.fileDiff == null) {\n return undefined;\n }\n return this.hunksRenderer.renderDiff(this.fileDiff, {\n startingLine,\n totalLines,\n bufferBefore: 0,\n bufferAfter: 0,\n });\n };\n\n const prependResult = renderChunk(\n nextStart,\n Math.max(overlapStart - nextStart, 0)\n );\n if (prependResult == null && nextStart < overlapStart) {\n return false;\n }\n\n const appendResult = renderChunk(\n overlapEnd,\n Math.max(nextEnd - overlapEnd, 0)\n );\n if (appendResult == null && nextEnd > overlapEnd) {\n return false;\n }\n\n const applyChunk = (\n result: HunksRenderResult | undefined,\n insertPosition: 'afterbegin' | 'beforeend'\n ) => {\n if (result == null) {\n return;\n }\n if (diffStyle === 'unified' && !Array.isArray(codeElements)) {\n this.insertPartialHTML(diffStyle, codeElements, result, insertPosition);\n } else if (diffStyle === 'split' && Array.isArray(codeElements)) {\n this.insertPartialHTML(diffStyle, codeElements, result, insertPosition);\n } else {\n throw new Error(\n 'FileDiff.applyPartialRender.applyChunk: invalid chunk application'\n );\n }\n rowCount += result.rowCount;\n };\n\n this.cleanupErrorWrapper();\n applyChunk(prependResult, 'afterbegin');\n applyChunk(appendResult, 'beforeend');\n\n if (this.lastRowCount !== rowCount) {\n this.applyRowSpan(diffStyle, codeElements, rowCount);\n this.lastRowCount = rowCount;\n }\n\n return true;\n }\n\n private insertPartialHTML(\n diffStyle: 'unified',\n columns: ColumnElements,\n result: HunksRenderResult,\n insertPosition: 'afterbegin' | 'beforeend'\n ): void;\n private insertPartialHTML(\n diffStyle: 'split',\n columns: [ColumnElements | undefined, ColumnElements | undefined],\n result: HunksRenderResult,\n insertPosition: 'afterbegin' | 'beforeend'\n ): void;\n private insertPartialHTML(\n diffStyle: 'split' | 'unified',\n columns:\n | [ColumnElements | undefined, ColumnElements | undefined]\n | ColumnElements,\n result: HunksRenderResult,\n insertPosition: 'afterbegin' | 'beforeend'\n ): void {\n if (diffStyle === 'unified' && !Array.isArray(columns)) {\n const unifiedAST = this.hunksRenderer.renderCodeAST('unified', result);\n this.renderPartialColumn(columns, unifiedAST, insertPosition);\n } else if (diffStyle === 'split' && Array.isArray(columns)) {\n const deletionsAST = this.hunksRenderer.renderCodeAST(\n 'deletions',\n result\n );\n const additionsAST = this.hunksRenderer.renderCodeAST(\n 'additions',\n result\n );\n this.renderPartialColumn(columns[0], deletionsAST, insertPosition);\n this.renderPartialColumn(columns[1], additionsAST, insertPosition);\n } else {\n throw new Error(\n 'FileDiff.insertPartialHTML: Invalid argument composition'\n );\n }\n }\n\n private renderPartialColumn(\n column: ColumnElements | undefined,\n ast: ElementContent[] | undefined,\n insertPosition: 'afterbegin' | 'beforeend'\n ) {\n if (column == null || ast == null) {\n return;\n }\n const gutterChildren = getElementChildren(ast[0]);\n const contentChildren = getElementChildren(ast[1]);\n if (gutterChildren == null || contentChildren == null) {\n throw new Error('FileDiff.insertPartialHTML: Unexpected AST structure');\n }\n const firstHASTElement = contentChildren.at(0);\n if (\n insertPosition === 'beforeend' &&\n firstHASTElement?.type === 'element' &&\n typeof firstHASTElement.properties['data-buffer-size'] === 'number'\n ) {\n this.mergeBuffersIfNecessary(\n firstHASTElement.properties['data-buffer-size'],\n column.content.children[column.content.children.length - 1],\n column.gutter.children[column.gutter.children.length - 1],\n gutterChildren,\n contentChildren,\n true\n );\n }\n const lastHASTElement = contentChildren.at(-1);\n if (\n insertPosition === 'afterbegin' &&\n lastHASTElement?.type === 'element' &&\n typeof lastHASTElement.properties['data-buffer-size'] === 'number'\n ) {\n this.mergeBuffersIfNecessary(\n lastHASTElement.properties['data-buffer-size'],\n column.content.children[0],\n column.gutter.children[0],\n gutterChildren,\n contentChildren,\n false\n );\n }\n\n column.gutter.insertAdjacentHTML(\n insertPosition,\n this.hunksRenderer.renderPartialHTML(gutterChildren)\n );\n column.content.insertAdjacentHTML(\n insertPosition,\n this.hunksRenderer.renderPartialHTML(contentChildren)\n );\n }\n\n private mergeBuffersIfNecessary(\n adjustmentSize: number,\n contentElement: Element,\n gutterElement: Element,\n gutterChildren: ElementContent[],\n contentChildren: ElementContent[],\n fromStart: boolean\n ) {\n if (\n !(contentElement instanceof HTMLElement) ||\n !(gutterElement instanceof HTMLElement)\n ) {\n return;\n }\n const currentSize = this.getBufferSize(contentElement.dataset);\n if (currentSize == null) {\n return;\n }\n if (fromStart) {\n gutterChildren.shift();\n contentChildren.shift();\n } else {\n gutterChildren.pop();\n contentChildren.pop();\n }\n this.updateBufferSize(contentElement, currentSize + adjustmentSize);\n this.updateBufferSize(gutterElement, currentSize + adjustmentSize);\n }\n\n private applyRowSpan(\n diffStyle: 'split' | 'unified',\n columns:\n | [ColumnElements | undefined, ColumnElements | undefined]\n | ColumnElements,\n rowCount: number\n ): void {\n const applySpan = (column: ColumnElements | undefined) => {\n if (column == null) {\n return;\n }\n column.gutter.style.setProperty('grid-row', `span ${rowCount}`);\n column.content.style.setProperty('grid-row', `span ${rowCount}`);\n };\n if (diffStyle === 'unified' && !Array.isArray(columns)) {\n applySpan(columns);\n } else if (diffStyle === 'split' && Array.isArray(columns)) {\n applySpan(columns[0]);\n applySpan(columns[1]);\n } else {\n throw new Error('dun fuuuuked up');\n }\n }\n\n private trimColumnRows(\n columns: ColumnElements | undefined,\n preTrimCount: number,\n postTrimStart: number\n ): number {\n let visibleLineIndex = 0;\n let rowCount = 0;\n let rowIndex = 0;\n let pendingMetadataTrim = false;\n const hasPostTrim = postTrimStart >= 0;\n\n if (columns == null) {\n return 0;\n }\n const contentChildren = Array.from(columns.content.children);\n const gutterChildren = Array.from(columns.gutter.children);\n if (contentChildren.length !== gutterChildren.length) {\n throw new Error('FileDiff.trimColumnRows: columns do not match');\n }\n\n while (rowIndex < contentChildren.length) {\n if (preTrimCount <= 0 && !hasPostTrim && !pendingMetadataTrim) {\n break;\n }\n const gutterElement = gutterChildren[rowIndex];\n const contentElement = contentChildren[rowIndex];\n rowIndex++;\n\n if (\n !(gutterElement instanceof HTMLElement) ||\n !(contentElement instanceof HTMLElement)\n ) {\n console.error({ gutterElement, contentElement });\n throw new Error('FileDiff.trimColumnRows: invalid row elements');\n }\n\n if (pendingMetadataTrim) {\n pendingMetadataTrim = false;\n if (\n (gutterElement.dataset.gutterBuffer === 'annotation' &&\n 'lineAnnotation' in contentElement.dataset) ||\n (gutterElement.dataset.gutterBuffer === 'metadata' &&\n 'noNewline' in contentElement.dataset)\n ) {\n gutterElement.remove();\n contentElement.remove();\n rowCount++;\n continue;\n }\n }\n\n // If we found a line element, lets trim it if necessary\n if (\n 'lineIndex' in gutterElement.dataset &&\n 'lineIndex' in contentElement.dataset\n ) {\n if (\n preTrimCount > 0 ||\n (hasPostTrim && visibleLineIndex >= postTrimStart)\n ) {\n gutterElement.remove();\n contentElement.remove();\n if (preTrimCount > 0) {\n preTrimCount--;\n if (preTrimCount === 0) {\n pendingMetadataTrim = true;\n }\n }\n rowCount++;\n }\n visibleLineIndex++;\n continue;\n }\n\n // Separators should be removed, but don't count towards line indices\n if (\n 'separator' in gutterElement.dataset &&\n 'separator' in contentElement.dataset\n ) {\n if (\n preTrimCount > 0 ||\n (hasPostTrim && visibleLineIndex >= postTrimStart)\n ) {\n gutterElement.remove();\n contentElement.remove();\n rowCount++;\n }\n continue;\n }\n\n // Annotations should be removed, but don't count towards line indices\n if (\n gutterElement.dataset.gutterBuffer === 'annotation' &&\n 'lineAnnotation' in contentElement.dataset\n ) {\n if (\n preTrimCount > 0 ||\n (hasPostTrim && visibleLineIndex >= postTrimStart)\n ) {\n gutterElement.remove();\n contentElement.remove();\n rowCount++;\n }\n continue;\n }\n\n if (\n gutterElement.dataset.gutterBuffer === 'metadata' &&\n 'noNewline' in contentElement.dataset\n ) {\n if (\n preTrimCount > 0 ||\n (hasPostTrim && visibleLineIndex >= postTrimStart)\n ) {\n gutterElement.remove();\n contentElement.remove();\n rowCount++;\n }\n continue;\n }\n\n if (\n gutterElement.dataset.gutterBuffer === 'buffer' &&\n 'contentBuffer' in contentElement.dataset\n ) {\n const totalRows = this.getBufferSize(contentElement.dataset);\n if (totalRows == null) {\n throw new Error('FileDiff.trimColumnRows: invalid element');\n }\n if (preTrimCount > 0) {\n const rowsToRemove = Math.min(preTrimCount, totalRows);\n const newSize = totalRows - rowsToRemove;\n if (newSize > 0) {\n this.updateBufferSize(gutterElement, newSize);\n this.updateBufferSize(contentElement, newSize);\n rowCount += rowsToRemove;\n } else {\n gutterElement.remove();\n contentElement.remove();\n rowCount += totalRows;\n }\n preTrimCount -= rowsToRemove;\n if (preTrimCount === 0 && newSize === 0) {\n pendingMetadataTrim = true;\n }\n }\n // If we are in a post clip era...\n else if (hasPostTrim) {\n const bufferStart = visibleLineIndex;\n const bufferEnd = visibleLineIndex + totalRows - 1;\n if (postTrimStart <= bufferStart) {\n gutterElement.remove();\n contentElement.remove();\n rowCount += totalRows;\n } else if (postTrimStart <= bufferEnd) {\n const rowsToRemove = bufferEnd - postTrimStart + 1;\n const newSize = totalRows - rowsToRemove;\n this.updateBufferSize(gutterElement, newSize);\n this.updateBufferSize(contentElement, newSize);\n rowCount += rowsToRemove;\n }\n }\n visibleLineIndex += totalRows;\n continue;\n }\n\n console.error({ gutterElement, contentElement });\n throw new Error('FileDiff.trimColumnRows: unknown row elements');\n }\n\n return rowCount;\n }\n\n private trimColumns({\n columns,\n diffStyle,\n overlapEnd,\n overlapStart,\n previousStart,\n trimEnd,\n trimStart,\n // NOTE(amadeus): If we return -1 it means something went wrong\n // with the trim...\n // oxlint-disable-next-line no-redundant-type-constituents\n }: TrimColumnsToOverlapProps): number | -1 {\n const preTrimCount = Math.max(0, overlapStart - previousStart);\n const postTrimStart = overlapEnd - previousStart;\n if (postTrimStart < 0) {\n throw new Error('FileDiff.trimColumns: overlap ends before previous');\n }\n const shouldTrimStart = trimStart > 0;\n const shouldTrimEnd = trimEnd > 0;\n if (!shouldTrimStart && !shouldTrimEnd) {\n return 0;\n }\n const effectivePreTrimCount = shouldTrimStart ? preTrimCount : 0;\n const effectivePostTrimStart = shouldTrimEnd ? postTrimStart : -1;\n\n if (diffStyle === 'unified' && !Array.isArray(columns)) {\n const removedRows = this.trimColumnRows(\n columns,\n effectivePreTrimCount,\n effectivePostTrimStart\n );\n return removedRows;\n } else if (diffStyle === 'split' && Array.isArray(columns)) {\n const deletionsTrim = this.trimColumnRows(\n columns[0],\n effectivePreTrimCount,\n effectivePostTrimStart\n );\n const additionsTrim = this.trimColumnRows(\n columns[1],\n effectivePreTrimCount,\n effectivePostTrimStart\n );\n // We should avoid the trim validation if we are split but\n // there's only one side\n if (\n columns[0] != null &&\n columns[1] != null &&\n deletionsTrim !== additionsTrim\n ) {\n throw new Error('FileDiff.trimColumns: split columns out of sync');\n }\n return columns[0] != null ? deletionsTrim : additionsTrim;\n } else {\n console.error({ diffStyle, columns });\n throw new Error('FileDiff.trimColumns: Invalid columns for diffType');\n }\n }\n\n private getBufferSize(properties: DOMStringMap): number | undefined {\n const parsed = Number.parseInt(properties?.bufferSize ?? '', 10);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n private updateBufferSize(element: HTMLElement, size: number): void {\n element.dataset.bufferSize = `${size}`;\n element.style.setProperty('grid-row', `span ${size}`);\n element.style.setProperty('min-height', `calc(${size} * 1lh)`);\n }\n\n private getCodeColumns(\n diffStyle: 'split' | 'unified',\n codeUnified: HTMLElement | undefined,\n codeDeletions: HTMLElement | undefined,\n codeAdditions: HTMLElement | undefined\n ):\n | [ColumnElements | undefined, ColumnElements | undefined]\n | ColumnElements\n | undefined {\n function getColumns(\n code: HTMLElement | undefined\n ): ColumnElements | undefined {\n if (code == null) {\n return undefined;\n }\n const gutter = code.children[0];\n const content = code.children[1];\n if (\n !(gutter instanceof HTMLElement) ||\n !(content instanceof HTMLElement) ||\n gutter.dataset.gutter == null ||\n content.dataset.content == null\n ) {\n return undefined;\n }\n return { gutter, content };\n }\n\n if (diffStyle === 'unified') {\n return getColumns(codeUnified);\n } else {\n const deletions = getColumns(codeDeletions);\n const additions = getColumns(codeAdditions);\n return deletions != null || additions != null\n ? [deletions, additions]\n : undefined;\n }\n }\n\n private applyBuffers(\n pre: HTMLPreElement,\n renderRange: RenderRange | undefined\n ) {\n if (renderRange == null || this.shouldDisableVirtualizationBuffers()) {\n if (this.bufferBefore != null) {\n this.bufferBefore.remove();\n this.bufferBefore = undefined;\n }\n if (this.bufferAfter != null) {\n this.bufferAfter.remove();\n this.bufferAfter = undefined;\n }\n return;\n }\n // NOTE(amadeus): A very hacky pass at buffers outside the pre elements...\n // i may need to improve this...\n if (renderRange.bufferBefore > 0) {\n if (this.bufferBefore == null) {\n this.bufferBefore = document.createElement('div');\n this.bufferBefore.dataset.virtualizerBuffer = 'before';\n pre.before(this.bufferBefore);\n }\n this.bufferBefore.style.setProperty(\n 'height',\n `${renderRange.bufferBefore}px`\n );\n this.bufferBefore.style.setProperty('contain', 'strict');\n } else if (this.bufferBefore != null) {\n this.bufferBefore.remove();\n this.bufferBefore = undefined;\n }\n\n if (renderRange.bufferAfter > 0) {\n if (this.bufferAfter == null) {\n this.bufferAfter = document.createElement('div');\n this.bufferAfter.dataset.virtualizerBuffer = 'after';\n pre.after(this.bufferAfter);\n }\n this.bufferAfter.style.setProperty(\n 'height',\n `${renderRange.bufferAfter}px`\n );\n this.bufferAfter.style.setProperty('contain', 'strict');\n } else if (this.bufferAfter != null) {\n this.bufferAfter.remove();\n this.bufferAfter = undefined;\n }\n }\n\n protected shouldDisableVirtualizationBuffers(): boolean {\n return this.options.disableVirtualizationBuffers ?? false;\n }\n\n protected applyPreNodeAttributes(\n pre: HTMLPreElement,\n { additionsContentAST, deletionsContentAST, totalLines }: HunksRenderResult,\n customProperties?: CustomPreProperties\n ): void {\n const {\n diffIndicators = 'bars',\n disableBackground = false,\n disableLineNumbers = false,\n overflow = 'scroll',\n diffStyle = 'split',\n } = this.options;\n const preProperties: PrePropertiesConfig = {\n type: 'diff',\n diffIndicators,\n disableBackground,\n disableLineNumbers,\n overflow,\n split:\n diffStyle === 'unified'\n ? false\n : additionsContentAST != null && deletionsContentAST != null,\n totalLines,\n customProperties,\n };\n if (arePrePropertiesEqual(preProperties, this.appliedPreAttributes)) {\n return;\n }\n setPreNodeProperties(pre, preProperties);\n this.appliedPreAttributes = preProperties;\n }\n\n private applyErrorToDOM(error: Error, container: HTMLElement) {\n this.cleanupErrorWrapper();\n this.pre?.remove();\n this.pre = undefined;\n this.appliedPreAttributes = undefined;\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n this.errorWrapper ??= document.createElement('div');\n this.errorWrapper.dataset.errorWrapper = '';\n this.errorWrapper.textContent = '';\n shadowRoot.appendChild(this.errorWrapper);\n const errorMessage = document.createElement('div');\n errorMessage.dataset.errorMessage = '';\n errorMessage.innerText = error.message;\n this.errorWrapper.appendChild(errorMessage);\n const errorStack = document.createElement('pre');\n errorStack.dataset.errorStack = '';\n errorStack.innerText = error.stack ?? 'No Error Stack';\n this.errorWrapper.appendChild(errorStack);\n }\n\n private cleanupErrorWrapper() {\n this.errorWrapper?.remove();\n this.errorWrapper = undefined;\n }\n}\n\ninterface HasContentProps {\n fileDiff: FileDiffMetadata | undefined;\n oldFile: FileContents | undefined;\n newFile: FileContents | undefined;\n}\n\nfunction hasDiffContent({\n fileDiff,\n oldFile,\n newFile,\n}: HasContentProps): boolean {\n return (\n (fileDiff != null && fileDiff.hunks.length > 0) ||\n oldFile != null ||\n newFile != null\n );\n}\n\nfunction hasDiffHeaderContent({\n fileDiff,\n oldFile,\n newFile,\n}: HasContentProps): boolean {\n return fileDiff != null || oldFile != null || newFile != null;\n}\n\nfunction shouldRenderCode(\n pre: HTMLPreElement | undefined,\n hasContent: boolean,\n collapsed = false\n): boolean {\n return !collapsed && pre == null && hasContent;\n}\n\nfunction shouldRenderHeader(\n headerElement: HTMLElement | undefined,\n hasContent: boolean,\n disableFileHeader = false\n): boolean {\n return headerElement == null && hasContent && !disableFileHeader;\n}\n\nfunction getElementChildren(\n node: ElementContent | undefined\n): ElementContent[] | undefined {\n if (node == null || node.type !== 'element') {\n return undefined;\n }\n return node.children ?? [];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileDiff.js","names":[],"sources":["../../src/components/FileDiff.ts"],"sourcesContent":["import type { ElementContent, Element as HASTElement } from 'hast';\nimport { toHtml } from 'hast-util-to-html';\n\nimport {\n CUSTOM_HEADER_SLOT_ID,\n DEFAULT_COLLAPSED_CONTEXT_THRESHOLD,\n DEFAULT_THEMES,\n DEFAULT_TOKENIZE_MAX_LENGTH,\n DIFFS_TAG_NAME,\n EMPTY_RENDER_RANGE,\n HEADER_FILENAME_SUFFIX_SLOT_ID,\n HEADER_METADATA_SLOT_ID,\n HEADER_PREFIX_SLOT_ID,\n THEME_CSS_ATTRIBUTE,\n UNSAFE_CSS_ATTRIBUTE,\n} from '../constants';\nimport {\n type GetHoveredLineResult,\n type GetLineIndexUtility,\n InteractionManager,\n type InteractionManagerBaseOptions,\n pluckInteractionOptions,\n type SelectionWriteOptions,\n} from '../managers/InteractionManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { ScrollSyncManager } from '../managers/ScrollSyncManager';\nimport {\n dequeueRender,\n queueRender,\n} from '../managers/UniversalRenderingManager';\nimport {\n DiffHunksRenderer,\n type DiffHunksRendererOptions,\n type HunksRenderResult,\n} from '../renderers/DiffHunksRenderer';\nimport { SVGSpriteSheet } from '../sprite';\nimport type {\n AppliedThemeStyleCache,\n BaseCodeOptions,\n BaseDiffOptions,\n CustomPreProperties,\n DiffLineAnnotation,\n DiffsEditableComponent,\n DiffsEditor,\n DiffsTextDocument,\n EditorActiveLineOptions,\n ExpansionDirections,\n FileContents,\n FileDiffMetadata,\n HighlightedToken,\n HunkData,\n HunkSeparators,\n MaybeDiffFileInput,\n PostRenderPhase,\n PrePropertiesConfig,\n RenderHeaderFilenameSuffixCallback,\n RenderHeaderMetadataCallback,\n RenderHeaderPrefixCallback,\n RenderRange,\n SelectedLineRange,\n SelectionSide,\n ThemeTypes,\n} from '../types';\nimport { areDiffLineAnnotationsEqual } from '../utils/areDiffLineAnnotationsEqual';\nimport { areFilesEqual } from '../utils/areFilesEqual';\nimport { areHunkDataEqual } from '../utils/areHunkDataEqual';\nimport { arePrePropertiesEqual } from '../utils/arePrePropertiesEqual';\nimport { areRenderRangesEqual } from '../utils/areRenderRangesEqual';\nimport { areThemesEqual } from '../utils/areThemesEqual';\nimport { awaitWithTimeout } from '../utils/awaitWithTimeout';\nimport { createAnnotationWrapperNode } from '../utils/createAnnotationWrapperNode';\nimport { createGutterUtilityContentNode } from '../utils/createGutterUtilityContentNode';\nimport { createUnsafeCSSStyleNode } from '../utils/createUnsafeCSSStyleNode';\nimport {\n patchScrollbarGutterSize,\n wrapThemeCSS,\n wrapUnsafeCSS,\n} from '../utils/cssWrappers';\nimport {\n captureExpansionAnchors,\n finishEditSessionForDiff,\n rebuildExpansionFromAnchors,\n} from '../utils/editSessionHunks';\nimport { getDiffFileInput } from '../utils/getDiffFileInput';\nimport { getDiffHunksRendererOptions } from '../utils/getDiffHunksRendererOptions';\nimport { getHunkSideStartBoundary } from '../utils/getHunkSideBoundaries';\nimport { getLineAnnotationName } from '../utils/getLineAnnotationName';\nimport { getOrCreateCodeNode } from '../utils/getOrCreateCodeNode';\nimport { guardWebKitScrollDuringRebuild } from '../utils/guardWebKitScrollDuringRebuild';\nimport { upsertHostThemeStyle } from '../utils/hostTheme';\nimport { hydratePartialDiff } from '../utils/hydratePartialDiff';\nimport { isDefaultRenderRange } from '../utils/isDefaultRenderRange';\nimport { isDiffPlainText } from '../utils/isDiffPlainText';\nimport { isStyleNode } from '../utils/isStyleNode';\nimport { iterateOverDiff } from '../utils/iterateOverDiff';\nimport { parseDiffFromFile } from '../utils/parseDiffFromFile';\nimport { isSafari } from '../utils/platform';\nimport { prerenderHTMLIfNecessary } from '../utils/prerenderHTMLIfNecessary';\nimport { getMeasuredScrollbarGutter } from '../utils/scrollbarGutter';\nimport { setPreNodeProperties } from '../utils/setWrapperNodeProps';\nimport {\n getExpandedRegion,\n getHunkAdditionLineRange,\n getNearestRenderableAdditionLine,\n getTrailingExpandedRegion,\n isAdditionLineRenderable,\n} from '../utils/virtualDiffLayout';\nimport type { WorkerPoolManager } from '../worker';\nimport { DiffsContainerLoaded } from './web-components';\n\ntype LoadedPartialDiffContents = Awaited<\n ReturnType<NonNullable<BaseDiffOptions['loadDiffFiles']>>\n>;\n\ntype DeferredSelectedLinesWrite = [\n range: SelectedLineRange | null,\n options: SelectionWriteOptions | undefined,\n];\n\ntype DeferredEditorActiveLineWrite = [\n lineNumber: number | null,\n options: EditorActiveLineOptions | undefined,\n];\n\nfunction canHydrateDiff(fileDiff: FileDiffMetadata): boolean {\n return (\n fileDiff.isPartial &&\n (fileDiff.type === 'change' ||\n fileDiff.type === 'rename-changed' ||\n fileDiff.type === 'rename-pure')\n );\n}\n\nexport interface FileDiffRenderBaseProps<LAnnotation> {\n fileDiff?: FileDiffMetadata;\n deferManagers?: boolean;\n forceRender?: boolean;\n preventEmit?: boolean;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n lineAnnotations?: DiffLineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\n\nexport type FileDiffRenderProps<LAnnotation> =\n FileDiffRenderBaseProps<LAnnotation> & MaybeDiffFileInput;\n\nexport type FileDiffHydrationProps<LAnnotation> = Omit<\n FileDiffRenderBaseProps<LAnnotation>,\n 'fileContainer'\n> &\n MaybeDiffFileInput & {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n };\n\nexport type FileDiffType = 'file-diff' | 'unresolved-file';\n\nexport interface FileDiffOptions<LAnnotation>\n extends\n Omit<BaseDiffOptions, 'hunkSeparators'>,\n InteractionManagerBaseOptions<'diff'> {\n hunkSeparators?:\n | Exclude<HunkSeparators, 'custom'> /**\n * @deprecated Custom hunk separator functions are deprecated and will be\n * removed in a future version.\n */\n | ((\n hunk: HunkData,\n instance: FileDiff<LAnnotation>\n ) => HTMLElement | DocumentFragment | null | undefined);\n disableFileHeader?: boolean;\n renderHeaderPrefix?: RenderHeaderPrefixCallback;\n renderHeaderFilenameSuffix?: RenderHeaderFilenameSuffixCallback;\n renderHeaderMetadata?: RenderHeaderMetadataCallback;\n renderCustomHeader?: RenderHeaderMetadataCallback;\n /**\n * When true, errors during rendering are rethrown instead of being caught\n * and displayed in the DOM. Useful for testing or when you want to handle\n * errors yourself.\n */\n disableErrorHandling?: boolean;\n renderAnnotation?(\n annotation: DiffLineAnnotation<LAnnotation>\n ): HTMLElement | undefined;\n renderGutterUtility?(\n getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined\n ): HTMLElement | null | undefined;\n\n onPostRender?(\n node: HTMLElement,\n instance: FileDiff<LAnnotation>,\n phase: PostRenderPhase\n ): unknown;\n}\n\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: DiffLineAnnotation<LAnnotation>;\n}\n\ninterface CustomHunkElementCache {\n element: HTMLElement;\n hunkData: HunkData;\n}\n\ninterface ColumnElements {\n gutter: HTMLElement;\n content: HTMLElement;\n}\n\ninterface TrimColumnsToOverlapProps {\n columns:\n | [ColumnElements | undefined, ColumnElements | undefined]\n | ColumnElements;\n diffStyle: 'split' | 'unified';\n overlapEnd: number;\n overlapStart: number;\n previousStart: number;\n trimEnd: number;\n trimStart: number;\n}\n\ninterface ApplyPartialRenderProps {\n previousRenderRange: RenderRange | undefined;\n renderRange: RenderRange | undefined;\n}\n\ninterface PendingFileLoad {\n fileDiff: FileDiffMetadata;\n promise: Promise<void>;\n}\n\ntype HydrationSetup<LAnnotation> = {\n fileDiff: FileDiffMetadata | undefined;\n lineAnnotations: DiffLineAnnotation<LAnnotation>[] | undefined;\n} & MaybeDiffFileInput;\n\nlet instanceId = -1;\n\nexport class FileDiff<\n LAnnotation = undefined,\n> implements DiffsEditableComponent<LAnnotation> {\n // NOTE(amadeus): We sorta need this to ensure the web-component file is\n // properly loaded\n static LoadedCustomComponent: boolean = DiffsContainerLoaded;\n\n readonly __id: string = `file-diff:${++instanceId}`;\n readonly type: FileDiffType = 'file-diff';\n\n protected fileContainer: HTMLElement | undefined;\n protected spriteSVG: SVGElement | undefined;\n protected pre: HTMLPreElement | undefined;\n protected codeUnified: HTMLElement | undefined;\n protected codeDeletions: HTMLElement | undefined;\n protected codeAdditions: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected themeCSSStyle: HTMLStyleElement | undefined;\n protected appliedThemeCSS: AppliedThemeStyleCache | undefined;\n protected hasAdoptedThemeCSS = false;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected appliedUnsafeCSS: string | undefined;\n protected gutterUtilityContent: HTMLElement | undefined;\n\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerFilenameSuffix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected headerCustom: HTMLElement | undefined;\n protected separatorCache: Map<string, CustomHunkElementCache> = new Map();\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n\n protected hunksRenderer: DiffHunksRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected scrollSyncManager: ScrollSyncManager;\n protected interactionManager: InteractionManager<'diff'>;\n\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>> =\n new Map();\n protected lineAnnotations: DiffLineAnnotation<LAnnotation>[] = [];\n protected managersDirty = false;\n\n protected deletionFile?: FileContents | null;\n protected additionFile?: FileContents | null;\n public fileDiff: FileDiffMetadata | undefined;\n protected renderRange: RenderRange | undefined;\n protected pendingFiles: PendingFileLoad | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected cachedHeaderHTML: string | undefined;\n protected lastRowCount: number | undefined;\n private mounted = false;\n\n protected enabled = true;\n\n protected editor: DiffsEditor<LAnnotation> | undefined;\n protected refreshViewTimeout: ReturnType<typeof setTimeout> | undefined;\n // Defer selected-line and editor active-line writes while a refresh rebuilds\n // the diff rows. This is separate from the timeout because the refresh can\n // escalate to a full rerender without one.\n protected lineStateRefreshPending = false;\n protected deferredSelectedLines: DeferredSelectedLinesWrite | undefined;\n protected deferredEditorActiveLine: DeferredEditorActiveLineWrite | undefined;\n\n constructor(\n public options: FileDiffOptions<LAnnotation> = { theme: DEFAULT_THEMES },\n protected workerManager?: WorkerPoolManager | undefined,\n protected isContainerManaged = false\n ) {\n this.hunksRenderer = this.createHunksRenderer(options);\n this.resizeManager = new ResizeManager();\n this.scrollSyncManager = new ScrollSyncManager();\n this.interactionManager = new InteractionManager(\n 'diff',\n pluckInteractionOptions(\n options,\n typeof options.hunkSeparators === 'function' ||\n (options.hunkSeparators ?? 'line-info') === 'line-info' ||\n options.hunkSeparators === 'line-info-basic'\n ? this.handleExpandHunk\n : undefined,\n this.getLineIndex\n )\n );\n this.workerManager?.subscribeToThemeChanges(this);\n this.enabled = true;\n }\n\n protected handleHighlightRender = (): void => {\n this.rerender();\n };\n\n protected getHunksRendererOptions(\n options: FileDiffOptions<LAnnotation>\n ): DiffHunksRendererOptions {\n return getDiffHunksRendererOptions(options);\n }\n\n protected createHunksRenderer(\n options: FileDiffOptions<LAnnotation>\n ): DiffHunksRenderer<LAnnotation> {\n return new DiffHunksRenderer(\n this.getHunksRendererOptions(options),\n this.handleHighlightRender,\n this.workerManager\n );\n }\n\n public getLineIndex: GetLineIndexUtility = (\n lineNumber: number,\n side: SelectionSide = 'additions'\n ) => {\n // use the fileDiff from the hunksRenderer if it exists, it maybe updated\n // by the host\n const fileDiff = this.fileDiffCache;\n if (fileDiff == null) {\n return undefined;\n }\n const lastHunk = fileDiff.hunks.at(-1);\n let targetUnifiedIndex: number | undefined;\n let targetSplitIndex: number | undefined;\n hunkIterator: for (const hunk of fileDiff.hunks) {\n const hunkStart =\n side === 'deletions' ? hunk.deletionStart : hunk.additionStart;\n const hunkCount =\n side === 'deletions' ? hunk.deletionCount : hunk.additionCount;\n let currentLineNumber =\n getHunkSideStartBoundary(hunkStart, hunkCount) + 1;\n let splitIndex = hunk.splitLineStart;\n let unifiedIndex = hunk.unifiedLineStart;\n\n // If we've selected a line between or before a hunk,\n // we should grab its index here\n if (lineNumber < currentLineNumber) {\n const difference = currentLineNumber - lineNumber;\n targetUnifiedIndex = Math.max(unifiedIndex - difference, 0);\n targetSplitIndex = Math.max(splitIndex - difference, 0);\n break hunkIterator;\n }\n\n if (lineNumber >= currentLineNumber + hunkCount) {\n if (hunk === lastHunk) {\n const difference = lineNumber - (currentLineNumber + hunkCount);\n targetUnifiedIndex =\n unifiedIndex + hunk.unifiedLineCount + difference;\n targetSplitIndex = splitIndex + hunk.splitLineCount + difference;\n break hunkIterator;\n }\n continue;\n }\n\n for (const content of hunk.hunkContent) {\n if (content.type === 'context') {\n if (lineNumber < currentLineNumber + content.lines) {\n const difference = lineNumber - currentLineNumber;\n targetSplitIndex = splitIndex + difference;\n targetUnifiedIndex = unifiedIndex + difference;\n break hunkIterator;\n } else {\n currentLineNumber += content.lines;\n splitIndex += content.lines;\n unifiedIndex += content.lines;\n }\n } else {\n const sideCount =\n side === 'deletions' ? content.deletions : content.additions;\n if (lineNumber < currentLineNumber + sideCount) {\n const indexDifference = lineNumber - currentLineNumber;\n targetUnifiedIndex =\n unifiedIndex +\n (side === 'additions' ? content.deletions : 0) +\n indexDifference;\n targetSplitIndex = splitIndex + indexDifference;\n\n break hunkIterator;\n } else {\n currentLineNumber += sideCount;\n splitIndex += Math.max(content.deletions, content.additions);\n unifiedIndex += content.deletions + content.additions;\n }\n }\n }\n\n break hunkIterator;\n }\n\n if (targetUnifiedIndex == null || targetSplitIndex == null) {\n return undefined;\n }\n return [targetUnifiedIndex, targetSplitIndex];\n };\n\n // FIXME(amadeus): This is a bit of a looming issue that I'll need to resolve:\n // * Do we publicly allow merging of options or do we have individualized setters?\n // * When setting new options, we need to figure out what settings require a\n // re-render and which can just be applied more elegantly\n // * There's also an issue of options that live here on the File class and\n // those that live on the Hunk class, and it's a bit of an issue with passing\n // settings down and mirroring them (not great...)\n public setOptions(options: FileDiffOptions<LAnnotation> | undefined): void {\n if (options == null) return;\n this.options = options;\n this.cachedHeaderHTML = undefined;\n this.hunksRenderer.setOptions(this.getHunksRendererOptions(options));\n this.syncInteractionOptions();\n }\n\n protected syncInteractionOptions(): void {\n this.interactionManager.setOptions(\n pluckInteractionOptions(\n this.options,\n typeof this.options.hunkSeparators === 'function' ||\n (this.options.hunkSeparators ?? 'line-info') === 'line-info' ||\n this.options.hunkSeparators === 'line-info-basic'\n ? this.handleExpandHunk\n : undefined,\n this.getLineIndex\n )\n );\n }\n\n private mergeOptions(options: Partial<FileDiffOptions<LAnnotation>>): void {\n this.options = { ...this.options, ...options };\n }\n\n public setThemeType(themeType: ThemeTypes): void {\n if ((this.options.themeType ?? 'system') === themeType) {\n return;\n }\n this.mergeOptions({ themeType });\n this.applyCachedThemeState(themeType);\n }\n\n private applyCachedThemeState(themeType: ThemeTypes): boolean {\n if (\n typeof this.options.theme === 'string' ||\n this.fileContainer == null ||\n this.appliedThemeCSS == null\n ) {\n return false;\n }\n const effectiveThemeType = this.appliedThemeCSS.baseThemeType ?? themeType;\n if (this.appliedThemeCSS.themeType === effectiveThemeType) {\n return false;\n }\n this.applyThemeState(\n this.fileContainer,\n this.appliedThemeCSS.themeStyles,\n themeType,\n this.appliedThemeCSS.baseThemeType\n );\n return true;\n }\n\n private hasThemeChanged(): boolean {\n return (\n this.appliedThemeCSS != null &&\n !areThemesEqual(\n this.appliedThemeCSS.theme,\n this.options.theme ?? DEFAULT_THEMES\n )\n );\n }\n\n public getHoveredLine = (): GetHoveredLineResult<'diff'> | undefined => {\n return this.interactionManager.getHoveredLine();\n };\n\n public setLineAnnotations(\n lineAnnotations: DiffLineAnnotation<LAnnotation>[]\n ): void {\n this.lineAnnotations = lineAnnotations;\n }\n\n private canPartiallyRender(\n forceRender: boolean,\n annotationsChanged: boolean,\n didContentChange: boolean\n ): boolean {\n if (\n forceRender ||\n annotationsChanged ||\n didContentChange ||\n typeof this.options.hunkSeparators === 'function'\n ) {\n return false;\n }\n return true;\n }\n\n public setSelectedLines(\n range: SelectedLineRange | null,\n options?: SelectionWriteOptions\n ): void {\n if (this.lineStateRefreshPending) {\n this.deferredSelectedLines = [range, options];\n } else {\n this.interactionManager.setSelection(range, options);\n }\n }\n\n public setEditorActiveLine(\n lineNumber: number | null,\n options?: EditorActiveLineOptions\n ): void {\n if (this.lineStateRefreshPending) {\n this.deferredEditorActiveLine = [lineNumber, options];\n } else {\n this.interactionManager.setEditorActiveLine(lineNumber, {\n lineNumberOnly: options?.lineNumberOnly,\n side: options?.side ?? 'additions',\n });\n }\n }\n\n // A refresh can receive selected-lines and editor active-line writes in either\n // order. Apply the latest value from each after the rows are stable.\n protected flushDeferredLineState(): void {\n const {\n deferredEditorActiveLine: editorActiveLine,\n deferredSelectedLines: selectedLines,\n } = this;\n this.lineStateRefreshPending = false;\n this.deferredEditorActiveLine = undefined;\n this.deferredSelectedLines = undefined;\n\n if (editorActiveLine != null) {\n this.setEditorActiveLine(...editorActiveLine);\n }\n if (selectedLines != null) {\n this.interactionManager.setSelection(...selectedLines);\n }\n }\n\n public flushManagers(): void {\n if (!this.managersDirty || this.pre == null) {\n this.managersDirty = false;\n return;\n }\n\n const { diffStyle = 'split', overflow = 'scroll' } = this.options;\n this.interactionManager.setup(this.pre);\n this.resizeManager.setup(this.pre, {\n disableAnnotations: overflow === 'wrap',\n columnVariables: this.shouldApplyColumnVariables(overflow)\n ? 'apply'\n : 'measure',\n });\n if (overflow === 'scroll' && diffStyle === 'split') {\n this.scrollSyncManager.setup(\n this.pre,\n this.codeDeletions,\n this.codeAdditions\n );\n } else {\n this.scrollSyncManager.cleanUp();\n }\n this.managersDirty = false;\n }\n\n protected shouldApplyColumnVariables(overflow: 'scroll' | 'wrap'): boolean {\n if (typeof this.options.hunkSeparators === 'function') {\n return true;\n }\n return (\n overflow === 'scroll' &&\n (this.lineAnnotations.length > 0 ||\n this.pre?.hasAttribute('data-has-merge-conflict') === true)\n );\n }\n\n public getCodeScrollLeft(): number {\n return Math.max(\n this.codeUnified?.scrollLeft ?? 0,\n this.codeDeletions?.scrollLeft ?? 0,\n this.codeAdditions?.scrollLeft ?? 0\n );\n }\n\n public setCodeScrollLeft(position: number): void {\n if (this.codeUnified != null) {\n this.codeUnified.scrollLeft = position;\n }\n if (this.codeAdditions != null) {\n this.codeAdditions.scrollLeft = position;\n }\n if (this.codeDeletions != null) {\n this.codeDeletions.scrollLeft = position;\n }\n }\n\n public __getEffectiveCodeOptions(): BaseCodeOptions {\n return { ...this.options, ...this.hunksRenderer.getEffectiveCodeOptions() };\n }\n\n public cleanUp(recycle: boolean = false): void {\n dequeueRender(this.handleEditSessionRender);\n this.emitPostRender(true);\n // Persist editor state while the code scrollers still exist.\n this.editor?.cleanUp(recycle);\n this.editor = undefined;\n this.resizeManager.cleanUp();\n this.interactionManager.cleanUp();\n this.scrollSyncManager.cleanUp();\n this.managersDirty = false;\n this.workerManager?.unsubscribeToThemeChanges(this);\n this.renderRange = undefined;\n this.pendingFiles = undefined;\n\n // Clean up the elements\n if (!this.isContainerManaged) {\n this.fileContainer?.remove();\n }\n this.fileContainer = undefined;\n this.mounted = false;\n if (!recycle) {\n this.lineAnnotations = [];\n }\n this.clearAuxiliaryNodes();\n this.annotationCache.clear();\n this.pre = undefined;\n this.codeUnified = undefined;\n this.codeDeletions = undefined;\n this.codeAdditions = undefined;\n this.bufferBefore?.remove();\n this.bufferBefore = undefined;\n this.bufferAfter?.remove();\n this.bufferAfter = undefined;\n this.appliedPreAttributes = undefined;\n this.headerElement = undefined;\n this.headerPrefix = undefined;\n this.headerFilenameSuffix = undefined;\n this.headerMetadata = undefined;\n this.headerCustom = undefined;\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n this.lastRenderedHeaderHTML = undefined;\n if (!recycle) {\n this.cachedHeaderHTML = undefined;\n }\n this.errorWrapper?.remove();\n this.errorWrapper = undefined;\n this.spriteSVG = undefined;\n this.lastRowCount = undefined;\n this.themeCSSStyle = undefined;\n this.appliedThemeCSS = undefined;\n this.hasAdoptedThemeCSS = false;\n this.unsafeCSSStyle = undefined;\n this.appliedUnsafeCSS = undefined;\n\n if (recycle) {\n this.hunksRenderer.recycle();\n } else {\n this.hunksRenderer.cleanUp();\n this.workerManager = undefined;\n // Clean up the data\n this.fileDiff = undefined;\n this.deletionFile = undefined;\n this.additionFile = undefined;\n }\n\n if (this.refreshViewTimeout != null) {\n clearTimeout(this.refreshViewTimeout);\n this.refreshViewTimeout = undefined;\n }\n this.lineStateRefreshPending = false;\n this.deferredEditorActiveLine = undefined;\n this.deferredSelectedLines = undefined;\n this.enabled = false;\n }\n\n public virtualizedSetup(): void {\n this.enabled = true;\n this.workerManager?.subscribeToThemeChanges(this);\n }\n\n public hydrate({\n fileContainer,\n prerenderedHTML,\n preventEmit = false,\n lineAnnotations,\n fileDiff,\n ...fileInputProps\n }: FileDiffHydrationProps<LAnnotation>): void {\n if (!this.enabled) {\n throw new Error(\n 'FileDiff.hydrate: attempting to call hydrate after cleaned up'\n );\n }\n if (this.fileContainer != null) {\n throw new Error(\n 'FileDiff.hydrate: hydrate can only be called before the instance has rendered or hydrated'\n );\n }\n const fileInput = getDiffFileInput(fileInputProps, 'FileDiff.hydrate');\n const oldFile = fileInput?.oldFile;\n const newFile = fileInput?.newFile;\n this.hydrateElements(fileContainer, prerenderedHTML);\n if (\n shouldRenderCode(\n this.pre,\n hasDiffContent({ fileDiff, oldFile, newFile }),\n this.options.collapsed\n ) ||\n shouldRenderHeader(\n this.headerElement,\n hasDiffHeaderContent({ fileDiff, oldFile, newFile }),\n this.options.disableFileHeader\n )\n ) {\n this.render({\n ...fileInputProps,\n fileContainer,\n lineAnnotations,\n fileDiff,\n preventEmit: true,\n });\n }\n // Otherwise orchestrate our setup\n else {\n this.hydrationSetup({\n fileDiff,\n lineAnnotations,\n ...fileInput,\n });\n }\n if (!preventEmit) {\n this.emitPostRender();\n }\n }\n\n protected hydrateElements(\n fileContainer: HTMLElement,\n prerenderedHTML: string | undefined\n ): void {\n if (this.fileContainer !== fileContainer) {\n this.emitPostRender(true);\n }\n prerenderHTMLIfNecessary(fileContainer, prerenderedHTML);\n for (const element of fileContainer.shadowRoot?.children ?? []) {\n if (element instanceof SVGElement) {\n this.spriteSVG = element;\n continue;\n }\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n if (element instanceof HTMLPreElement) {\n this.pre = element;\n for (const code of element.children) {\n if (\n !(code instanceof HTMLElement) ||\n code.tagName.toLowerCase() !== 'code'\n ) {\n continue;\n }\n if ('deletions' in code.dataset) {\n this.codeDeletions = code;\n }\n if ('additions' in code.dataset) {\n this.codeAdditions = code;\n }\n if ('unified' in code.dataset) {\n this.codeUnified = code;\n }\n }\n continue;\n }\n if ('diffsHeader' in element.dataset) {\n this.headerElement = element;\n continue;\n }\n if (\n element instanceof HTMLStyleElement &&\n element.hasAttribute(THEME_CSS_ATTRIBUTE)\n ) {\n this.themeCSSStyle = element;\n continue;\n }\n if (\n element instanceof HTMLStyleElement &&\n element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)\n ) {\n this.unsafeCSSStyle = element;\n this.appliedUnsafeCSS = element.textContent;\n continue;\n }\n }\n if (this.pre != null) {\n this.syncCodeNodesFromPre(this.pre);\n this.pre.removeAttribute('data-dehydrated');\n }\n this.fileContainer = fileContainer;\n this.hydrateMeasuredScrollbar();\n }\n\n protected hydrationSetup({\n fileDiff,\n oldFile,\n newFile,\n lineAnnotations,\n }: HydrationSetup<LAnnotation>): void {\n // It's possible we are hydrating a pure-rename and therefore there will be\n // no pre element\n this.lineAnnotations = lineAnnotations ?? this.lineAnnotations;\n this.additionFile = newFile;\n this.deletionFile = oldFile;\n this.fileDiff =\n fileDiff ??\n (oldFile !== undefined && newFile !== undefined\n ? parseDiffFromFile(oldFile, newFile, this.options.parseDiffOptions)\n : undefined);\n\n if (this.pre == null) {\n return;\n }\n\n this.syncInteractionOptions();\n this.hunksRenderer.hydrate(this.fileDiff);\n // FIXME(amadeus): not sure how to handle this yet...\n // this.renderSeparators();\n this.renderAnnotations();\n this.renderGutterUtility();\n this.injectUnsafeCSS();\n this.managersDirty = true;\n this.flushManagers();\n }\n\n public rerender(): void {\n if (\n !this.enabled ||\n (this.fileDiff == null &&\n this.additionFile == null &&\n this.deletionFile == null)\n ) {\n return;\n }\n this.render({ forceRender: true, renderRange: this.renderRange });\n }\n\n public onThemeChange(): void {\n this.hunksRenderer.clearRenderCache();\n this.rerender();\n }\n\n // This wrapper must stay separate from `expandHunk` because subclasses like\n // `VirtualizedFileDiff` replace `expandHunk` with their own instance field\n // after `super()` returns. `InteractionManager` is created in this base\n // constructor, so it needs a stable callback that resolves `this.expandHunk`\n // at click time instead of capturing the base implementation too early.\n public handleExpandHunk = (\n hunkIndex: number,\n direction: ExpansionDirections,\n expansionLineCountOverride?: number\n ): void => {\n this.expandHunk(hunkIndex, direction, expansionLineCountOverride);\n };\n\n public expandHunk = (\n hunkIndex: number,\n direction: ExpansionDirections,\n expansionLineCountOverride?: number\n ): void => {\n this.hunksRenderer.expandHunk(\n hunkIndex,\n direction,\n expansionLineCountOverride\n );\n this.loadFilesIfNecessary();\n this.rerender();\n };\n\n protected loadFilesIfNecessary(): void {\n const {\n fileDiff,\n options: { loadDiffFiles },\n } = this;\n if (\n fileDiff == null ||\n loadDiffFiles == null ||\n !canHydrateDiff(fileDiff) ||\n this.pendingFiles?.fileDiff === fileDiff\n ) {\n return;\n }\n\n this.pendingFiles = {\n fileDiff,\n promise: this.loadFilesForDiff(fileDiff, loadDiffFiles),\n };\n }\n\n private async loadFilesForDiff(\n fileDiff: FileDiffMetadata,\n loadDiffFiles: NonNullable<BaseDiffOptions['loadDiffFiles']>\n ): Promise<void> {\n try {\n const files = await loadDiffFiles(fileDiff);\n if (!this.enabled || this.fileDiff !== fileDiff) {\n return;\n }\n\n await this.handleFilesLoaded(fileDiff, files);\n } catch (error: unknown) {\n if (this.options.disableErrorHandling === true) {\n throw error;\n }\n console.error(error);\n } finally {\n if (this.pendingFiles?.fileDiff === fileDiff) {\n this.pendingFiles = undefined;\n }\n }\n }\n\n protected async handleFilesLoaded(\n expectedDiff: FileDiffMetadata,\n files: LoadedPartialDiffContents\n ): Promise<void> {\n if (this.fileDiff !== expectedDiff || !expectedDiff.isPartial) {\n return;\n }\n hydratePartialDiff('merge', expectedDiff, files);\n this.setHydratedState(files);\n await awaitWithTimeout(() => this.primeHighlightCache(expectedDiff));\n if (!this.enabled || this.fileDiff !== expectedDiff) {\n return;\n }\n this.rerender();\n }\n\n protected setHydratedState(files: LoadedPartialDiffContents): void {\n this.deletionFile = files.oldFile;\n this.additionFile = files.newFile;\n this.workerManager?.cleanUpTasks(this.hunksRenderer);\n this.hunksRenderer.clearRenderCache();\n }\n\n public render({\n fileDiff,\n deferManagers = false,\n forceRender = false,\n preventEmit = false,\n lineAnnotations,\n fileContainer,\n containerWrapper,\n renderRange,\n ...fileInputProps\n }: FileDiffRenderProps<LAnnotation>): boolean {\n const fileInput = getDiffFileInput(fileInputProps, 'FileDiff.render');\n const oldFile = fileInput?.oldFile;\n const newFile = fileInput?.newFile;\n if (!this.enabled) {\n // NOTE(amadeus): May need to be a silent failure? Making it loud for now\n // to better understand it\n throw new Error(\n 'FileDiff.render: attempting to call render after cleaned up'\n );\n }\n\n // use the file name as the cache key if it is not set\n if (fileDiff != null && fileDiff.cacheKey === undefined) {\n fileDiff.cacheKey =\n fileDiff.prevName != null\n ? fileDiff.prevName + ':' + fileDiff.name\n : fileDiff.name;\n }\n\n // postpone background tokenizing to next frame for avoiding UI freeze\n // during render\n this.editor?.__postponeBgTokenizeToNextFrame();\n\n const {\n collapsed = false,\n themeType = 'system',\n expandUnchanged = false,\n } = this.options;\n const nextRenderRange = collapsed ? undefined : renderRange;\n const themeChanged = this.hasThemeChanged();\n const hasFileInput = fileInput != null;\n const filesDidChange =\n hasFileInput &&\n (!areOptionalFilesEqual(oldFile, this.deletionFile) ||\n !areOptionalFilesEqual(newFile, this.additionFile));\n let diffDidChange = fileDiff != null && fileDiff !== this.fileDiff;\n const annotationsChanged =\n lineAnnotations != null &&\n (lineAnnotations.length > 0 || this.lineAnnotations.length > 0)\n ? lineAnnotations !== this.lineAnnotations\n : false;\n\n if (\n !collapsed &&\n areRenderRangesEqual(nextRenderRange, this.renderRange) &&\n !forceRender &&\n !annotationsChanged &&\n !themeChanged &&\n // If using the fileDiff API, lets check to see if they are equal to\n // avoid doing work\n ((fileDiff != null && fileDiff === this.fileDiff) ||\n // If using the oldFile/newFile API then lets check to see if they are\n // equal\n (fileDiff == null && !filesDidChange))\n ) {\n return this.applyCachedThemeState(themeType);\n }\n\n let nextParsedFileDiff: FileDiffMetadata | undefined;\n if (\n fileDiff == null &&\n hasFileInput &&\n (filesDidChange || this.fileDiff == null)\n ) {\n nextParsedFileDiff = parseDiffFromFile(\n fileInput.oldFile,\n fileInput.newFile,\n this.options.parseDiffOptions\n );\n }\n\n const { renderRange: previousRenderRange } = this;\n this.renderRange = nextRenderRange;\n // Store files only when this render actually carried a file input:\n // internal rerenders pass none, and wiping the pair here would defeat the\n // oldFile/newFile early-return on every later host render. An explicit\n // fileDiff input supersedes a previously parsed pair, so clear it then.\n if (hasFileInput) {\n this.deletionFile = oldFile;\n this.additionFile = newFile;\n } else if (fileDiff != null) {\n this.deletionFile = undefined;\n this.additionFile = undefined;\n }\n\n if (fileDiff != null) {\n this.fileDiff = fileDiff;\n } else if (nextParsedFileDiff != null) {\n diffDidChange = true;\n this.fileDiff = nextParsedFileDiff;\n }\n if (diffDidChange) {\n this.cachedHeaderHTML = undefined;\n }\n\n if (lineAnnotations != null) {\n this.setLineAnnotations(lineAnnotations);\n }\n if (this.fileDiff == null) {\n return false;\n }\n // Backstop for sessions that ended without their exit hook running (e.g.\n // session-shaped metadata reused after a host teardown): restore\n // recompute-shaped hunks before rendering.\n if (\n this.fileDiff.editSessionDirty === true &&\n this.shouldSelfHealEditSession()\n ) {\n finishEditSessionForDiff(this.fileDiff, this.options.parseDiffOptions);\n void this.hunksRenderer.refreshHighlightedResult();\n }\n if (expandUnchanged) {\n this.loadFilesIfNecessary();\n }\n this.hunksRenderer.setOptions(this.getHunksRendererOptions(this.options));\n this.syncInteractionOptions();\n\n this.hunksRenderer.setLineAnnotations(this.lineAnnotations);\n\n const { disableErrorHandling = false, disableFileHeader = false } =\n this.options;\n\n if (disableFileHeader) {\n // Remove existing header from DOM\n if (this.headerElement != null) {\n this.headerElement.remove();\n this.headerElement = undefined;\n this.lastRenderedHeaderHTML = undefined;\n }\n this.clearHeaderSlots();\n }\n fileContainer = this.getOrCreateFileContainer(\n fileContainer,\n containerWrapper\n );\n this.applyCachedThemeState(themeType);\n\n if (collapsed) {\n this.removeRenderedCode();\n this.clearAuxiliaryNodes();\n\n try {\n const hunksResult = this.hunksRenderer.renderDiff(\n this.fileDiff,\n EMPTY_RENDER_RANGE\n );\n if (hunksResult != null) {\n this.applyThemeState(\n fileContainer,\n hunksResult.themeStyles,\n themeType,\n hunksResult.baseThemeType\n );\n }\n if (hunksResult?.headerElement != null) {\n this.applyHeaderToDOM(hunksResult.headerElement, fileContainer);\n }\n this.renderSeparators([]);\n this.injectUnsafeCSS();\n } catch (error: unknown) {\n if (disableErrorHandling) {\n throw error;\n }\n console.error(error);\n if (error instanceof Error) {\n this.applyErrorToDOM(error, fileContainer);\n }\n }\n if (!preventEmit) {\n this.emitPostRender();\n }\n return true;\n }\n\n try {\n const pre = this.getOrCreatePreNode(fileContainer);\n\n // Attempt to partially render\n const didPartiallyRender =\n this.canPartiallyRender(\n forceRender,\n annotationsChanged,\n filesDidChange || diffDidChange || themeChanged\n ) &&\n this.applyPartialRender({\n previousRenderRange,\n renderRange: nextRenderRange,\n });\n\n // If we were unable to partially render, perform a full render\n if (!didPartiallyRender) {\n const hunksResult = this.hunksRenderer.renderDiff(\n this.fileDiff,\n nextRenderRange\n );\n if (hunksResult == null) {\n // FIXME(amadeus): I don't think we actually need this check, as\n // DiffHunksRenderer should probably take care of it for us?\n if (this.workerManager?.isInitialized() === false) {\n void this.workerManager.initialize().then(() => this.rerender());\n }\n return false;\n }\n\n this.applyThemeState(\n fileContainer,\n hunksResult.themeStyles,\n themeType,\n hunksResult.baseThemeType\n );\n\n if (hunksResult.headerElement != null) {\n this.applyHeaderToDOM(hunksResult.headerElement, fileContainer);\n }\n if (\n hunksResult.additionsContentAST != null ||\n hunksResult.deletionsContentAST != null ||\n hunksResult.unifiedContentAST != null\n ) {\n this.applyHunksToDOM(pre, hunksResult);\n } else if (this.pre != null) {\n this.pre.remove();\n this.pre = undefined;\n }\n this.renderSeparators(hunksResult.hunkData);\n }\n this.applyBuffers(pre, nextRenderRange);\n this.injectUnsafeCSS();\n this.renderAnnotations();\n this.renderGutterUtility();\n\n this.managersDirty = true;\n if (!deferManagers) {\n this.flushManagers();\n }\n\n if (this.editor != null) {\n this.syncRenderViewToEditor();\n }\n } catch (error: unknown) {\n if (disableErrorHandling) {\n throw error;\n }\n console.error(error);\n if (error instanceof Error) {\n this.applyErrorToDOM(error, fileContainer);\n }\n }\n if (!preventEmit) {\n this.emitPostRender();\n }\n return true;\n }\n\n protected emitPostRender(unmount = false): void {\n const {\n fileContainer,\n options: { onPostRender },\n } = this;\n\n if (unmount) {\n if (!this.mounted) {\n return;\n }\n this.mounted = false;\n if (fileContainer == null) {\n return;\n }\n this.options.onPostRender?.(fileContainer, this, 'unmount');\n return;\n }\n\n if (fileContainer == null) {\n return;\n }\n\n const phase: PostRenderPhase = this.mounted ? 'update' : 'mount';\n this.mounted = true;\n onPostRender?.(fileContainer, this, phase);\n }\n\n protected get fileDiffCache(): FileDiffMetadata | undefined {\n return this.hunksRenderer.diffCache ?? this.fileDiff;\n }\n\n private syncRenderViewToEditor(): void {\n const editor = this.editor;\n const fileContainer = this.fileContainer;\n const fileDiff = this.fileDiffCache;\n const lineAnnotations = this.lineAnnotations;\n const renderRange = this.computeEditorRenderRange(this.renderRange);\n if (\n editor != null &&\n fileContainer != null &&\n fileDiff != null &&\n !fileDiff.isPartial\n ) {\n void this.hunksRenderer.initializeHighlighter().then((highlighter) => {\n if (\n !this.enabled ||\n this.editor !== editor ||\n this.fileContainer !== fileContainer ||\n this.fileDiffCache !== fileDiff\n ) {\n return;\n }\n editor.__syncRenderView(\n highlighter,\n fileContainer,\n fileDiff,\n lineAnnotations,\n renderRange\n );\n });\n }\n }\n\n // The stored render range is in rendered-row units for the windowed AST\n // pipeline, but the editor consumes render ranges in document-line units.\n // Derive the addition-side document window covered by the rendered rows:\n // startingLine = first addition line with a row in the window, totalLines =\n // last such line - first + 1, and 0 when the window holds no addition rows\n // (e.g. a pure-deletion run taller than the viewport).\n private computeEditorRenderRange(\n renderRange: RenderRange | undefined\n ): RenderRange | undefined {\n const fileDiff = this.fileDiffCache;\n if (\n renderRange == null ||\n fileDiff == null ||\n isDefaultRenderRange(renderRange)\n ) {\n return renderRange;\n }\n const {\n diffStyle = 'split',\n expandUnchanged = false,\n collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD,\n } = this.options;\n let firstLineNumber: number | undefined;\n let lastLineNumber: number | undefined;\n iterateOverDiff({\n diff: fileDiff,\n diffStyle,\n startingLine: renderRange.startingLine,\n totalLines: renderRange.totalLines,\n expandedHunks: expandUnchanged\n ? true\n : this.hunksRenderer.getExpandedHunksMap(),\n collapsedContextThreshold,\n callback: ({ additionLine }) => {\n if (additionLine != null) {\n firstLineNumber ??= additionLine.lineNumber;\n lastLineNumber = additionLine.lineNumber;\n }\n },\n });\n if (firstLineNumber == null || lastLineNumber == null) {\n return { ...renderRange, startingLine: 0, totalLines: 0 };\n }\n return {\n ...renderRange,\n startingLine: firstLineNumber - 1,\n totalLines: lastLineNumber - firstLineNumber + 1,\n };\n }\n\n public attachEditor(\n editor: DiffsEditor<LAnnotation>\n ): (recycle?: boolean) => void {\n // Editing is a plain file-diff concern only. Subclasses with their own\n // hunk semantics (UnresolvedFile) are not editable, so an editor must\n // never attach to them.\n if (this.type !== 'file-diff') {\n throw new Error(\n `FileDiff.attachEditor: cannot attach an editor to a \"${this.type}\" diff`\n );\n }\n this.editor?.cleanUp();\n this.editor = editor;\n this.hunksRenderer.beginEditSession();\n // The editor sync below refuses partial diffs (it needs the full file\n // contents); kick off hydration so the loaded re-render re-runs it.\n if (this.fileDiff?.isPartial === true) {\n this.loadFilesIfNecessary();\n }\n if (this.hunksRenderer.editorRenderReady()) {\n this.syncRenderViewToEditor();\n } else {\n // The current markup is missing the editor's token metadata, or its\n // highlight is still pending: render through the session, which also\n // syncs the render view once it paints.\n this.rerender();\n }\n return (recycle?: boolean) => {\n this.editor = undefined;\n // A recycle detach is a virtualized unmount mid-session: the session\n // continues on remount, so hunks stay session-shaped. Only a genuine\n // end runs the exit recompute.\n if (recycle !== true) {\n this.finishEditSession();\n }\n };\n }\n\n // Genuine session exit for the live detach path.\n private finishEditSession(): void {\n this.hunksRenderer.endEditSession();\n this.completeEditSession();\n }\n\n /**\n * Run the genuine session-end recompute: restore recompute-shaped hunks (a\n * context-only region collapses away, boundaries re-derive), preserve\n * expansion state best-effort via old-side anchors, and repaint through\n * the session render path — which also invalidates virtualized layout,\n * since nothing else does at exit now that editing does not flip\n * expandUnchanged. Marker-guarded and idempotent; CodeView also calls this\n * when reaping a session whose detach closure was consumed by a recycle.\n * Safe on a cleaned-up instance: the recompute is pure metadata work and\n * the deferred rerender is enabled-guarded. Returns true when a recompute\n * ran.\n */\n public completeEditSession(): boolean {\n const fileDiff = this.fileDiffCache;\n if (fileDiff == null || fileDiff.editSessionDirty !== true) {\n return false;\n }\n const { collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } =\n this.options;\n const anchors = captureExpansionAnchors(\n fileDiff,\n this.hunksRenderer.getExpandedHunksMap(),\n collapsedContextThreshold\n );\n finishEditSessionForDiff(fileDiff, this.options.parseDiffOptions);\n this.hunksRenderer.setExpandedHunksMap(\n rebuildExpansionFromAnchors(fileDiff, anchors)\n );\n void this.hunksRenderer.refreshHighlightedResult();\n this.escalateEditSessionRender();\n return true;\n }\n\n // normally triggered by the host when the document line count changes\n public applyDocumentChange(\n textDocument: DiffsTextDocument,\n newLineAnnotations?: DiffLineAnnotation<LAnnotation>[]\n ): void {\n this.hunksRenderer.applyDocumentChange(textDocument);\n const fileDiff = this.hunksRenderer.diffCache;\n if (fileDiff != null) {\n const cacheKey = this.fileDiff?.cacheKey;\n if (cacheKey != null && fileDiff.cacheKey == null) {\n fileDiff.cacheKey = cacheKey;\n }\n this.fileDiff = fileDiff;\n }\n if (\n newLineAnnotations !== undefined &&\n newLineAnnotations !== this.lineAnnotations\n ) {\n this.setLineAnnotations(newLineAnnotations);\n this.hunksRenderer.setLineAnnotations(this.lineAnnotations);\n this.renderAnnotations();\n }\n this.rerender();\n this.interactionManager.setSelectionDirty();\n }\n\n public updateRenderCache(\n dirtyLines: Map<number, Array<HighlightedToken>>,\n themeType: 'dark' | 'light',\n options: {\n shouldRefreshDiffsView?: boolean;\n lineCountChangeInFlight?: boolean;\n } = {}\n ): void {\n const { shouldRefreshDiffsView, lineCountChangeInFlight } = options;\n const regionsChanged = this.hunksRenderer.updateRenderCache(\n dirtyLines,\n themeType,\n lineCountChangeInFlight\n );\n // A same-line-count edit that reshaped the session regions (an edit into\n // a collapsed gap) changes the rendered row set, which the debounced\n // line-type refresh below cannot express. Escalate to a deferred full\n // re-render — never a synchronous one, since this runs mid-editor-pass\n // and rebuilding rows the editor is about to touch detaches its geometry\n // caches.\n if (regionsChanged) {\n if (this.refreshViewTimeout != null) {\n clearTimeout(this.refreshViewTimeout);\n this.refreshViewTimeout = undefined;\n }\n this.lineStateRefreshPending = true;\n this.escalateEditSessionRender();\n return;\n }\n if (shouldRefreshDiffsView === true) {\n if (this.refreshViewTimeout != null) {\n clearTimeout(this.refreshViewTimeout);\n }\n this.lineStateRefreshPending = true;\n this.refreshViewTimeout = setTimeout(() => {\n this.refreshViewTimeout = undefined;\n if (this.options.diffStyle === 'split') {\n this.refreshSplitDiffView();\n } else {\n this.refreshUnifiedDiffView();\n }\n this.flushDeferredLineState();\n }, 150);\n }\n }\n\n // Editor-facing visibility oracle: whether a one-based new-file line has\n // (or will have on scroll) a rendered row under the current expansion\n // state. See isAdditionLineRenderable.\n public isLineRenderable(lineNumber: number): boolean {\n const fileDiff = this.fileDiffCache;\n if (fileDiff == null) {\n return true;\n }\n const {\n expandUnchanged = false,\n collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD,\n } = this.options;\n return isAdditionLineRenderable({\n fileDiff,\n lineNumber,\n expandedHunks: expandUnchanged\n ? true\n : this.hunksRenderer.getExpandedHunksMap(),\n collapsedContextThreshold,\n });\n }\n\n // Fold-skip companion to isLineRenderable: the nearest renderable one-based\n // new-file line at or beyond lineNumber in the given direction.\n public getNearestRenderableLine(\n lineNumber: number,\n direction: 'up' | 'down'\n ): number | undefined {\n const fileDiff = this.fileDiffCache;\n if (fileDiff == null) {\n return lineNumber;\n }\n const {\n expandUnchanged = false,\n collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD,\n } = this.options;\n return getNearestRenderableAdditionLine({\n fileDiff,\n lineNumber,\n direction,\n expandedHunks: expandUnchanged\n ? true\n : this.hunksRenderer.getExpandedHunksMap(),\n collapsedContextThreshold,\n });\n }\n\n // Expand collapsed context so a one-based new-file line can render: one\n // deterministic expansion from the nearest gap edge, sized to reach the\n // target plus the normal expansion step (clamped to the gap at render).\n // Routed through expandHunk so subclass expansion flows (CodeView's\n // deferred pendingExpansions) apply.\n public revealLine(lineNumber: number): boolean {\n const fileDiff = this.fileDiffCache;\n const {\n expandUnchanged = false,\n collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD,\n expansionLineCount = 100,\n } = this.options;\n if (fileDiff == null || fileDiff.isPartial || expandUnchanged) {\n return false;\n }\n const expandedHunks = this.hunksRenderer.getExpandedHunksMap();\n\n for (const [hunkIndex, hunk] of fileDiff.hunks.entries()) {\n const [hunkStart, hunkEnd] = getHunkAdditionLineRange(hunk);\n if (lineNumber < hunkStart) {\n const region = getExpandedRegion({\n isPartial: fileDiff.isPartial,\n rangeSize: hunk.collapsedBefore,\n expandedHunks,\n hunkIndex,\n collapsedContextThreshold,\n });\n const gapStart = hunkStart - region.rangeSize;\n if (\n region.renderAll ||\n lineNumber < gapStart + region.fromStart ||\n lineNumber >= hunkStart - region.fromEnd\n ) {\n return false;\n }\n const fromStartDistance =\n lineNumber - (gapStart + region.fromStart) + 1;\n const fromEndDistance = hunkStart - region.fromEnd - lineNumber;\n if (fromStartDistance <= fromEndDistance) {\n this.expandHunk(\n hunkIndex,\n 'up',\n fromStartDistance + expansionLineCount\n );\n } else {\n this.expandHunk(\n hunkIndex,\n 'down',\n fromEndDistance + expansionLineCount\n );\n }\n return true;\n }\n if (lineNumber < hunkEnd) {\n return false;\n }\n }\n\n const trailingRegion = getTrailingExpandedRegion({\n fileDiff,\n hunkIndex: fileDiff.hunks.length - 1,\n expandedHunks,\n collapsedContextThreshold,\n errorPrefix: 'FileDiff.revealLine',\n });\n if (trailingRegion == null || trailingRegion.renderAll) {\n return false;\n }\n const lastHunk = fileDiff.hunks[fileDiff.hunks.length - 1];\n const [, trailingStart] = getHunkAdditionLineRange(lastHunk);\n if (\n lineNumber < trailingStart + trailingRegion.fromStart ||\n lineNumber >= trailingStart + trailingRegion.rangeSize\n ) {\n return false;\n }\n this.expandHunk(\n fileDiff.hunks.length,\n 'up',\n lineNumber -\n (trailingStart + trailingRegion.fromStart) +\n 1 +\n expansionLineCount\n );\n return true;\n }\n\n // Whether render() may run the session-exit recompute on dirty metadata.\n // False while an editor is attached (the session is live). CodeView-managed\n // instances override this: their sessions survive recycling with no editor\n // attached, and CodeView runs the exit recompute itself when it reaps a\n // session.\n protected shouldSelfHealEditSession(): boolean {\n return this.editor == null;\n }\n\n // Deferred full re-render for session region changes. The subsequent\n // render() ends in syncRenderViewToEditor, which resets the editor's\n // geometry caches against the rebuilt rows. VirtualizedFileDiff overrides\n // this to also invalidate its layout caches.\n protected escalateEditSessionRender(): void {\n queueRender(this.handleEditSessionRender);\n }\n\n private handleEditSessionRender = (): void => {\n this.rerender();\n this.flushDeferredLineState();\n };\n\n private removeRenderedCode(): void {\n this.resizeManager.cleanUp();\n this.scrollSyncManager.cleanUp();\n this.interactionManager.cleanUp();\n\n this.bufferBefore?.remove();\n this.bufferBefore = undefined;\n this.bufferAfter?.remove();\n this.bufferAfter = undefined;\n\n this.codeUnified?.remove();\n this.codeUnified = undefined;\n this.codeDeletions?.remove();\n this.codeDeletions = undefined;\n this.codeAdditions?.remove();\n this.codeAdditions = undefined;\n\n this.pre?.remove();\n this.pre = undefined;\n\n this.appliedPreAttributes = undefined;\n this.lastRowCount = undefined;\n }\n\n private clearAuxiliaryNodes(): void {\n for (const { element } of this.separatorCache.values()) {\n element.remove();\n }\n this.separatorCache.clear();\n\n for (const { element } of this.annotationCache.values()) {\n element.remove();\n }\n this.annotationCache.clear();\n\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n }\n\n public renderPlaceholder(height: number): boolean {\n if (this.fileContainer == null) {\n return false;\n }\n this.emitPostRender(true);\n this.cleanChildNodes();\n\n if (this.placeHolder == null) {\n const shadowRoot =\n this.fileContainer.shadowRoot ??\n this.fileContainer.attachShadow({ mode: 'open' });\n this.placeHolder = document.createElement('div');\n this.placeHolder.dataset.placeholder = '';\n shadowRoot.appendChild(this.placeHolder);\n }\n this.placeHolder.style.setProperty('height', `${height}px`);\n return true;\n }\n\n public async primeHighlightCache(\n fileDiff: FileDiffMetadata | undefined = this.fileDiff\n ): Promise<void> {\n const { workerManager } = this;\n if (\n fileDiff == null ||\n workerManager == null ||\n !workerManager.isWorkingPool() ||\n fileDiff.cacheKey == null ||\n isDiffPlainText(fileDiff)\n ) {\n return;\n }\n const tokenizeMaxLength =\n this.options.tokenizeMaxLength ?? DEFAULT_TOKENIZE_MAX_LENGTH;\n if (\n Math.max(fileDiff.additionLines.length, fileDiff.deletionLines.length) >\n tokenizeMaxLength\n ) {\n return;\n }\n\n await workerManager\n .primeDiffHighlightCache(fileDiff)\n .catch((error: unknown) => {\n console.error(error);\n });\n }\n\n private cleanChildNodes() {\n this.resizeManager.cleanUp();\n this.scrollSyncManager.cleanUp();\n this.interactionManager.cleanUp();\n this.clearAuxiliaryNodes();\n\n this.bufferAfter?.remove();\n this.bufferBefore?.remove();\n this.codeAdditions?.remove();\n this.codeDeletions?.remove();\n this.codeUnified?.remove();\n this.errorWrapper?.remove();\n this.headerElement?.remove();\n this.headerPrefix?.remove();\n this.headerFilenameSuffix?.remove();\n this.headerMetadata?.remove();\n this.headerCustom?.remove();\n this.pre?.remove();\n this.spriteSVG?.remove();\n this.themeCSSStyle?.remove();\n this.unsafeCSSStyle?.remove();\n\n this.bufferAfter = undefined;\n this.bufferBefore = undefined;\n this.codeAdditions = undefined;\n this.codeDeletions = undefined;\n this.codeUnified = undefined;\n this.errorWrapper = undefined;\n this.headerElement = undefined;\n this.headerPrefix = undefined;\n this.headerFilenameSuffix = undefined;\n this.headerMetadata = undefined;\n this.headerCustom = undefined;\n this.pre = undefined;\n this.spriteSVG = undefined;\n this.themeCSSStyle = undefined;\n this.appliedThemeCSS = undefined;\n this.hasAdoptedThemeCSS = false;\n this.unsafeCSSStyle = undefined;\n this.appliedUnsafeCSS = undefined;\n\n this.lastRenderedHeaderHTML = undefined;\n this.lastRowCount = undefined;\n this.mounted = false;\n }\n\n private renderSeparators(hunkData: HunkData[]): void {\n const { hunkSeparators } = this.options;\n if (\n this.isContainerManaged ||\n this.fileContainer == null ||\n typeof hunkSeparators !== 'function'\n ) {\n for (const { element } of this.separatorCache.values()) {\n element.remove();\n }\n this.separatorCache.clear();\n return;\n }\n const staleSeparators = new Map(this.separatorCache);\n for (const hunk of hunkData) {\n const id = hunk.slotName;\n let cache = this.separatorCache.get(id);\n if (cache == null || !areHunkDataEqual(hunk, cache.hunkData)) {\n cache?.element.remove();\n const element = document.createElement('div');\n element.style.display = 'contents';\n element.slot = hunk.slotName;\n const child = hunkSeparators(hunk, this);\n if (child != null) {\n element.appendChild(child);\n }\n this.fileContainer.appendChild(element);\n cache = { element, hunkData: hunk };\n this.separatorCache.set(id, cache);\n }\n staleSeparators.delete(id);\n }\n for (const [id, { element }] of staleSeparators.entries()) {\n this.separatorCache.delete(id);\n element.remove();\n }\n }\n\n protected renderAnnotations(): void {\n if (this.isContainerManaged || this.fileContainer == null) {\n for (const { element } of this.annotationCache.values()) {\n element.remove();\n }\n this.annotationCache.clear();\n return;\n }\n const staleAnnotations = new Map(this.annotationCache);\n const { renderAnnotation } = this.options;\n if (renderAnnotation != null && this.lineAnnotations.length > 0) {\n for (const [index, annotation] of this.lineAnnotations.entries()) {\n const id = `${index}-${getLineAnnotationName(annotation)}`;\n let cache = this.annotationCache.get(id);\n if (\n cache == null ||\n !areDiffLineAnnotationsEqual(annotation, cache.annotation)\n ) {\n cache?.element.remove();\n const content = renderAnnotation(annotation);\n // If we can't render anything, then we should not render anything\n // and clear the annotation cache if necessary.\n if (content == null) {\n continue;\n }\n cache = {\n element: createAnnotationWrapperNode(\n getLineAnnotationName(annotation)\n ),\n annotation,\n };\n cache.element.appendChild(content);\n this.fileContainer.appendChild(cache.element);\n this.annotationCache.set(id, cache);\n }\n staleAnnotations.delete(id);\n }\n }\n for (const [id, { element }] of staleAnnotations.entries()) {\n this.annotationCache.delete(id);\n element.remove();\n }\n }\n\n protected renderGutterUtility(): void {\n const { renderGutterUtility } = this.options;\n if (this.fileContainer == null || renderGutterUtility == null) {\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n return;\n }\n const element = renderGutterUtility(this.interactionManager.getHoveredLine);\n if (element != null && this.gutterUtilityContent != null) {\n return;\n } else if (element == null) {\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n return;\n }\n const gutterUtilityContent = createGutterUtilityContentNode();\n gutterUtilityContent.appendChild(element);\n this.fileContainer.appendChild(gutterUtilityContent);\n this.gutterUtilityContent = gutterUtilityContent;\n }\n\n protected getOrCreateFileContainer(\n fileContainer?: HTMLElement,\n parentNode?: HTMLElement\n ): HTMLElement {\n const { fileContainer: previousContainer } = this;\n const nextContainer =\n fileContainer ??\n previousContainer ??\n document.createElement(DIFFS_TAG_NAME);\n const containerChanged = previousContainer !== nextContainer;\n if (previousContainer != null && containerChanged) {\n this.editor?.__captureFocusForDOMReplacement();\n }\n if (containerChanged) {\n this.emitPostRender(true);\n }\n this.fileContainer = nextContainer;\n if (previousContainer != null && containerChanged) {\n this.lastRenderedHeaderHTML = undefined;\n this.headerElement = undefined;\n }\n if (parentNode != null && this.fileContainer.parentNode !== parentNode) {\n parentNode.appendChild(this.fileContainer);\n }\n if (containerChanged) {\n this.adoptReusableShellElements(this.fileContainer);\n }\n this.ensureSpriteSVG(this.fileContainer);\n return this.fileContainer;\n }\n\n // NOTE(amadeus): Technically this method is not safe for use outside of\n // the CodeView component, however I don't think in practice it really\n // should matter, but maybe there's some system we need in place to prevent\n // this from running outside of that environment?\n //\n // It's making very specific assumptions that all the elements will have the\n // correct content based on CodeView global options\n private adoptReusableShellElements(fileContainer: HTMLElement): void {\n const { shadowRoot } = fileContainer;\n if (shadowRoot == null) {\n return;\n }\n\n for (const element of shadowRoot.children) {\n if (element instanceof SVGElement) {\n this.spriteSVG ??= element;\n } else if (\n isStyleNode(element) &&\n element.hasAttribute(THEME_CSS_ATTRIBUTE)\n ) {\n this.themeCSSStyle ??= element;\n this.hasAdoptedThemeCSS = true;\n } else if (\n isStyleNode(element) &&\n element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)\n ) {\n this.unsafeCSSStyle ??= element;\n this.appliedUnsafeCSS ??= this.options.unsafeCSS ?? undefined;\n }\n }\n }\n\n private ensureSpriteSVG(fileContainer: HTMLElement): void {\n const shadowRoot =\n fileContainer.shadowRoot ?? fileContainer.attachShadow({ mode: 'open' });\n if (this.spriteSVG == null) {\n const fragment = document.createElement('div');\n fragment.innerHTML = SVGSpriteSheet;\n const firstChild = fragment.firstChild;\n if (firstChild instanceof SVGElement) {\n this.spriteSVG = firstChild;\n }\n }\n if (this.spriteSVG != null && this.spriteSVG.parentNode !== shadowRoot) {\n shadowRoot.appendChild(this.spriteSVG);\n }\n }\n\n private getOrCreatePreNode(container: HTMLElement): HTMLPreElement {\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n // If we haven't created a pre element yet, lets go ahead and do that\n if (this.pre == null) {\n this.pre = document.createElement('pre');\n this.appliedPreAttributes = undefined;\n this.codeUnified = undefined;\n this.codeDeletions = undefined;\n this.codeAdditions = undefined;\n shadowRoot.appendChild(this.pre);\n }\n // If we have a new parent container for the pre element, lets go ahead and\n // move it into the new container\n else if (this.pre.parentNode !== shadowRoot) {\n this.editor?.__captureFocusForDOMReplacement();\n shadowRoot.appendChild(this.pre);\n this.appliedPreAttributes = undefined;\n }\n\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n\n return this.pre;\n }\n\n protected syncCodeNodesFromPre(pre: HTMLPreElement): void {\n this.codeUnified = undefined;\n this.codeDeletions = undefined;\n this.codeAdditions = undefined;\n for (const child of Array.from(pre.children)) {\n if (!(child instanceof HTMLElement)) {\n continue;\n }\n if (child.hasAttribute('data-unified')) {\n this.codeUnified = child;\n } else if (child.hasAttribute('data-deletions')) {\n this.codeDeletions = child;\n } else if (child.hasAttribute('data-additions')) {\n this.codeAdditions = child;\n }\n }\n }\n\n private applyHeaderToDOM(\n headerAST: HASTElement,\n container: HTMLElement\n ): void {\n this.cleanupErrorWrapper();\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n const { fileDiff } = this;\n const headerHTML = this.cachedHeaderHTML ?? toHtml(headerAST);\n this.cachedHeaderHTML = headerHTML;\n if (headerHTML !== this.lastRenderedHeaderHTML) {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = headerHTML;\n const newHeader = tempDiv.firstElementChild;\n if (!(newHeader instanceof HTMLElement)) {\n return;\n }\n if (this.headerElement != null) {\n container.shadowRoot?.replaceChild(newHeader, this.headerElement);\n } else {\n container.shadowRoot?.prepend(newHeader);\n }\n this.headerElement = newHeader;\n this.lastRenderedHeaderHTML = headerHTML;\n }\n\n if (this.isContainerManaged || fileDiff == null) {\n return;\n }\n\n const {\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n } = this.options;\n\n if (renderCustomHeader != null) {\n const content = renderCustomHeader(fileDiff) ?? undefined;\n this.headerCustom = this.upsertHeaderSlotElement(\n container,\n this.headerCustom,\n CUSTOM_HEADER_SLOT_ID,\n content\n );\n this.headerPrefix?.remove();\n this.headerFilenameSuffix?.remove();\n this.headerMetadata?.remove();\n this.headerPrefix = undefined;\n this.headerFilenameSuffix = undefined;\n this.headerMetadata = undefined;\n return;\n }\n\n const prefix = renderHeaderPrefix?.(fileDiff) ?? undefined;\n const suffix = renderHeaderFilenameSuffix?.(fileDiff) ?? undefined;\n const content = renderHeaderMetadata?.(fileDiff) ?? undefined;\n this.headerPrefix = this.upsertHeaderSlotElement(\n container,\n this.headerPrefix,\n HEADER_PREFIX_SLOT_ID,\n prefix\n );\n this.headerFilenameSuffix = this.upsertHeaderSlotElement(\n container,\n this.headerFilenameSuffix,\n HEADER_FILENAME_SUFFIX_SLOT_ID,\n suffix\n );\n this.headerMetadata = this.upsertHeaderSlotElement(\n container,\n this.headerMetadata,\n HEADER_METADATA_SLOT_ID,\n content\n );\n this.headerCustom?.remove();\n this.headerCustom = undefined;\n }\n\n private clearHeaderSlots(): void {\n this.headerPrefix?.remove();\n this.headerFilenameSuffix?.remove();\n this.headerMetadata?.remove();\n this.headerCustom?.remove();\n this.headerPrefix = undefined;\n this.headerFilenameSuffix = undefined;\n this.headerMetadata = undefined;\n this.headerCustom = undefined;\n }\n\n // Header slot callbacks are presence-based render hooks, not reactive views.\n private upsertHeaderSlotElement(\n container: HTMLElement,\n current: HTMLElement | undefined,\n slot: string,\n content: Element | string | number | undefined\n ): HTMLElement | undefined {\n if (content == null) {\n current?.remove();\n return undefined;\n }\n const element = current ?? this.createHeaderSlotElement(slot);\n if (current == null) {\n container.appendChild(element);\n }\n this.replaceHeaderSlotContent(element, content);\n return element;\n }\n\n private replaceHeaderSlotContent(\n element: HTMLElement,\n content: Element | string | number\n ): void {\n element.replaceChildren();\n if (content instanceof Element) {\n element.appendChild(content);\n } else {\n element.innerText = `${content}`;\n }\n }\n\n private createHeaderSlotElement(slot: string): HTMLElement {\n const element = document.createElement('div');\n element.slot = slot;\n return element;\n }\n\n protected injectUnsafeCSS(): void {\n const { unsafeCSS } = this.options;\n const shadowRoot = this.fileContainer?.shadowRoot;\n if (shadowRoot == null) {\n return;\n }\n\n if (unsafeCSS == null || unsafeCSS === '') {\n if (this.unsafeCSSStyle != null) {\n this.unsafeCSSStyle.remove();\n this.unsafeCSSStyle = undefined;\n }\n this.appliedUnsafeCSS = undefined;\n return;\n }\n\n if (\n this.unsafeCSSStyle?.parentNode === shadowRoot &&\n this.appliedUnsafeCSS === unsafeCSS\n ) {\n return;\n }\n\n // Create or update the style element\n this.unsafeCSSStyle ??= createUnsafeCSSStyleNode();\n if (this.unsafeCSSStyle.parentNode !== shadowRoot) {\n shadowRoot.appendChild(this.unsafeCSSStyle);\n }\n // Wrap in @layer unsafe to match SSR behavior\n this.unsafeCSSStyle.textContent = wrapUnsafeCSS(unsafeCSS);\n this.appliedUnsafeCSS = unsafeCSS;\n }\n\n private applyThemeState(\n container: HTMLElement,\n themeStyles: string,\n themeType: ThemeTypes,\n baseThemeType?: 'light' | 'dark'\n ): void {\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n const effectiveThemeType = baseThemeType ?? themeType;\n const currentTheme = this.options.theme ?? DEFAULT_THEMES;\n const theme =\n typeof currentTheme === 'string' ? currentTheme : { ...currentTheme };\n const scrollbarGutter = getMeasuredScrollbarGutter(shadowRoot);\n if (\n this.themeCSSStyle?.parentNode === shadowRoot &&\n this.appliedThemeCSS?.themeStyles === themeStyles &&\n this.appliedThemeCSS.themeType === effectiveThemeType &&\n this.appliedThemeCSS.scrollbarGutter === scrollbarGutter\n ) {\n this.appliedThemeCSS.theme = theme;\n return;\n }\n if (\n this.hasAdoptedThemeCSS &&\n this.themeCSSStyle?.parentNode === shadowRoot\n ) {\n this.hasAdoptedThemeCSS = false;\n this.appliedThemeCSS = {\n theme,\n themeStyles,\n themeType: effectiveThemeType,\n baseThemeType,\n scrollbarGutter,\n };\n return;\n }\n this.themeCSSStyle = upsertHostThemeStyle({\n shadowRoot,\n currentNode: this.themeCSSStyle,\n themeCSS: wrapThemeCSS(themeStyles, effectiveThemeType, scrollbarGutter),\n });\n this.appliedThemeCSS =\n this.themeCSSStyle != null\n ? {\n theme,\n themeStyles,\n themeType: effectiveThemeType,\n baseThemeType,\n scrollbarGutter,\n }\n : undefined;\n }\n\n private hydrateMeasuredScrollbar(): void {\n const shadowRoot = this.fileContainer?.shadowRoot;\n if (shadowRoot == null || this.themeCSSStyle == null) {\n return;\n }\n this.themeCSSStyle.textContent = patchScrollbarGutterSize(\n this.themeCSSStyle.textContent ?? '',\n getMeasuredScrollbarGutter(shadowRoot)\n );\n }\n\n // A boolean check to ensure that edit mode in WebKit doesn't cause potential\n // scroll jumps to due bugs with WebKit. The workarounds have performance\n // implications so we avoid running the workarounds on browsers or scenarios\n // where they are not applicable\n protected shouldGuardRebuildScroll(): boolean {\n return this.editor != null && isSafari();\n }\n\n private applyHunksToDOM(\n pre: HTMLPreElement,\n result: HunksRenderResult\n ): void {\n if (this.shouldGuardRebuildScroll()) {\n guardWebKitScrollDuringRebuild(pre, () =>\n this.replaceCodeColumns(pre, result)\n );\n } else {\n this.replaceCodeColumns(pre, result);\n }\n }\n\n // Renders a code column's AST into an existing elements without replacing\n // the gutter and content parents. Identity matters in edit mode: the content\n // element is the focused contenteditable, and replacing it ends the\n // browser's editing session — focus tears down and restores, and iOS\n // answers every session restart with an animated caret reveal.\n //\n // Returns false when the element has no column pair yet (initial render,\n // or a diff-style switch built a fresh element); the caller then assigns\n // the full innerHTML.\n private applyCodeColumnsInPlace(\n code: HTMLElement,\n ast: ElementContent[],\n rowCount: number\n ): boolean {\n const columns = this.getColumnPair(code);\n if (columns == null) {\n return false;\n }\n const gutterChildren = getElementChildren(ast[0]);\n const contentChildren = getElementChildren(ast[1]);\n if (gutterChildren == null || contentChildren == null) {\n return false;\n }\n columns.gutter.innerHTML = toHtml(gutterChildren);\n columns.content.innerHTML = toHtml(contentChildren);\n if (rowCount !== this.lastRowCount) {\n columns.gutter.style.setProperty('grid-row', `span ${rowCount}`);\n columns.content.style.setProperty('grid-row', `span ${rowCount}`);\n }\n return true;\n }\n\n private replaceCodeColumns(\n pre: HTMLPreElement,\n result: HunksRenderResult\n ): void {\n const { overflow = 'scroll' } = this.options;\n const containerSize =\n (this.options.hunkSeparators ?? 'line-info') === 'line-info';\n const rowSpan = overflow === 'wrap' ? result.rowCount : undefined;\n this.cleanupErrorWrapper();\n this.applyPreNodeAttributes(pre, result);\n\n let shouldReplace = false;\n // Create code elements and insert HTML content\n const codeElements: HTMLElement[] = [];\n const unifiedAST = this.hunksRenderer.renderCodeAST('unified', result);\n const deletionsAST = this.hunksRenderer.renderCodeAST('deletions', result);\n const additionsAST = this.hunksRenderer.renderCodeAST('additions', result);\n this.editor?.__captureFocusForDOMReplacement();\n if (unifiedAST != null) {\n shouldReplace =\n this.codeUnified == null ||\n this.codeAdditions != null ||\n this.codeDeletions != null;\n\n // Clean up addition/deletion elements if necessary\n this.codeDeletions?.remove();\n this.codeDeletions = undefined;\n this.codeAdditions?.remove();\n this.codeAdditions = undefined;\n\n this.codeUnified = getOrCreateCodeNode({\n code: this.codeUnified,\n columnType: 'unified',\n rowSpan,\n containerSize,\n });\n if (\n !this.applyCodeColumnsInPlace(\n this.codeUnified,\n unifiedAST,\n result.rowCount\n )\n ) {\n this.codeUnified.innerHTML =\n this.hunksRenderer.renderPartialHTML(unifiedAST);\n }\n codeElements.push(this.codeUnified);\n } else if (deletionsAST != null || additionsAST != null) {\n if (deletionsAST != null) {\n shouldReplace = this.codeDeletions == null || this.codeUnified != null;\n\n // Clean up unified column if necessary\n this.codeUnified?.remove();\n this.codeUnified = undefined;\n\n this.codeDeletions = getOrCreateCodeNode({\n code: this.codeDeletions,\n columnType: 'deletions',\n rowSpan,\n containerSize,\n });\n if (\n !this.applyCodeColumnsInPlace(\n this.codeDeletions,\n deletionsAST,\n result.rowCount\n )\n ) {\n this.codeDeletions.innerHTML =\n this.hunksRenderer.renderPartialHTML(deletionsAST);\n }\n codeElements.push(this.codeDeletions);\n } else {\n // If we have no deletion column, lets clean it up if it exists\n this.codeDeletions?.remove();\n this.codeDeletions = undefined;\n }\n\n if (additionsAST != null) {\n shouldReplace =\n shouldReplace ||\n this.codeAdditions == null ||\n this.codeUnified != null;\n\n // Clean up unified column if necessary\n this.codeUnified?.remove();\n this.codeUnified = undefined;\n\n this.codeAdditions = getOrCreateCodeNode({\n code: this.codeAdditions,\n columnType: 'additions',\n rowSpan,\n containerSize,\n });\n if (\n !this.applyCodeColumnsInPlace(\n this.codeAdditions,\n additionsAST,\n result.rowCount\n )\n ) {\n this.codeAdditions.innerHTML =\n this.hunksRenderer.renderPartialHTML(additionsAST);\n }\n codeElements.push(this.codeAdditions);\n } else {\n // If we have no addition column, lets clean it up if it exists\n this.codeAdditions?.remove();\n this.codeAdditions = undefined;\n }\n } else {\n // if we get in here, there's no content to render, so lets just clean\n // everything up\n this.codeUnified?.remove();\n this.codeUnified = undefined;\n this.codeDeletions?.remove();\n this.codeDeletions = undefined;\n this.codeAdditions?.remove();\n this.codeAdditions = undefined;\n }\n\n if (codeElements.length === 0) {\n pre.textContent = '';\n } else if (shouldReplace) {\n pre.replaceChildren(...codeElements);\n }\n\n this.lastRowCount = result.rowCount;\n }\n\n private applyPartialRender({\n previousRenderRange,\n renderRange,\n }: ApplyPartialRenderProps): boolean {\n const {\n pre,\n codeUnified,\n codeAdditions,\n codeDeletions,\n options: { diffStyle = 'split' },\n } = this;\n if (\n pre == null ||\n // We must have a current and previous render range to do a partial render\n previousRenderRange == null ||\n renderRange == null ||\n // Neither render range may be infinite\n !Number.isFinite(previousRenderRange.totalLines) ||\n !Number.isFinite(renderRange.totalLines) ||\n this.lastRowCount == null\n ) {\n return false;\n }\n const codeElements = this.getCodeColumns(\n diffStyle,\n codeUnified,\n codeDeletions,\n codeAdditions\n );\n if (codeElements == null) {\n return false;\n }\n\n const previousStart = previousRenderRange.startingLine;\n const nextStart = renderRange.startingLine;\n const previousEnd = previousStart + previousRenderRange.totalLines;\n const nextEnd = nextStart + renderRange.totalLines;\n\n const overlapStart = Math.max(previousStart, nextStart);\n const overlapEnd = Math.min(previousEnd, nextEnd);\n if (overlapEnd <= overlapStart) {\n return false;\n }\n\n const trimStart = Math.max(0, overlapStart - previousStart);\n const trimEnd = Math.max(0, previousEnd - overlapEnd);\n\n const trimResult = this.trimColumns({\n columns: codeElements,\n trimStart,\n trimEnd,\n previousStart,\n overlapStart,\n overlapEnd,\n diffStyle,\n });\n if (trimResult < 0) {\n throw new Error('FileDiff.applyPartialRender: failed to trim to overlap');\n }\n\n if (this.lastRowCount < trimResult) {\n throw new Error(\n 'FileDiff.applyPartialRender: trimmed beyond DOM row count'\n );\n }\n\n let rowCount = this.lastRowCount - trimResult;\n const renderChunk = (\n startingLine: number,\n totalLines: number\n ): HunksRenderResult | undefined => {\n if (totalLines <= 0 || this.fileDiff == null) {\n return undefined;\n }\n return this.hunksRenderer.renderDiff(this.fileDiff, {\n startingLine,\n totalLines,\n bufferBefore: 0,\n bufferAfter: 0,\n });\n };\n\n const prependResult = renderChunk(\n nextStart,\n Math.max(overlapStart - nextStart, 0)\n );\n if (prependResult == null && nextStart < overlapStart) {\n return false;\n }\n\n const appendResult = renderChunk(\n overlapEnd,\n Math.max(nextEnd - overlapEnd, 0)\n );\n if (appendResult == null && nextEnd > overlapEnd) {\n return false;\n }\n\n const applyChunk = (\n result: HunksRenderResult | undefined,\n insertPosition: 'afterbegin' | 'beforeend'\n ) => {\n if (result == null) {\n return;\n }\n if (diffStyle === 'unified' && !Array.isArray(codeElements)) {\n this.insertPartialHTML(diffStyle, codeElements, result, insertPosition);\n } else if (diffStyle === 'split' && Array.isArray(codeElements)) {\n this.insertPartialHTML(diffStyle, codeElements, result, insertPosition);\n } else {\n throw new Error(\n 'FileDiff.applyPartialRender.applyChunk: invalid chunk application'\n );\n }\n rowCount += result.rowCount;\n };\n\n this.cleanupErrorWrapper();\n applyChunk(prependResult, 'afterbegin');\n applyChunk(appendResult, 'beforeend');\n\n if (this.lastRowCount !== rowCount) {\n this.applyRowSpan(diffStyle, codeElements, rowCount);\n this.lastRowCount = rowCount;\n }\n\n return true;\n }\n\n private insertPartialHTML(\n diffStyle: 'unified',\n columns: ColumnElements,\n result: HunksRenderResult,\n insertPosition: 'afterbegin' | 'beforeend'\n ): void;\n private insertPartialHTML(\n diffStyle: 'split',\n columns: [ColumnElements | undefined, ColumnElements | undefined],\n result: HunksRenderResult,\n insertPosition: 'afterbegin' | 'beforeend'\n ): void;\n private insertPartialHTML(\n diffStyle: 'split' | 'unified',\n columns:\n | [ColumnElements | undefined, ColumnElements | undefined]\n | ColumnElements,\n result: HunksRenderResult,\n insertPosition: 'afterbegin' | 'beforeend'\n ): void {\n if (diffStyle === 'unified' && !Array.isArray(columns)) {\n const unifiedAST = this.hunksRenderer.renderCodeAST('unified', result);\n this.renderPartialColumn(columns, unifiedAST, insertPosition);\n } else if (diffStyle === 'split' && Array.isArray(columns)) {\n const deletionsAST = this.hunksRenderer.renderCodeAST(\n 'deletions',\n result\n );\n const additionsAST = this.hunksRenderer.renderCodeAST(\n 'additions',\n result\n );\n this.renderPartialColumn(columns[0], deletionsAST, insertPosition);\n this.renderPartialColumn(columns[1], additionsAST, insertPosition);\n } else {\n throw new Error(\n 'FileDiff.insertPartialHTML: Invalid argument composition'\n );\n }\n }\n\n // fast refresh diff view via updating the `data-line-type` after an edit.\n // only for split view.\n private refreshSplitDiffView(): void {\n if (this.options.diffStyle !== 'split') {\n return;\n }\n\n const hunksResult = this.hunksRenderer.renderDiff(\n this.fileDiff,\n this.renderRange\n );\n if (hunksResult == null) {\n return;\n }\n\n const columns = this.getCodeColumns(\n 'split',\n this.codeUnified,\n this.codeDeletions,\n this.codeAdditions\n );\n if (!Array.isArray(columns)) {\n return;\n }\n\n const applyLineType = (\n type: 'deletions' | 'additions',\n column: ColumnElements | undefined\n ) => {\n if (column == null) {\n return;\n }\n const ast = this.hunksRenderer.renderCodeAST(type, hunksResult);\n const gutterChildren = getElementChildren(ast?.[0]);\n const contentChildren = getElementChildren(ast?.[1]);\n for (const [el, astChildren] of [\n [column.gutter, gutterChildren],\n [column.content, contentChildren],\n ] as const) {\n if (\n astChildren != null &&\n el.childElementCount === astChildren.length\n ) {\n for (let i = 0; i < astChildren.length; i++) {\n const gutterElement = el.children[i] as HTMLElement;\n const gutterChild = astChildren[i] as HASTElement;\n const lineType = gutterChild.properties['data-line-type'] as\n | string\n | undefined;\n if (\n lineType != null &&\n gutterElement.dataset.lineType !== lineType\n ) {\n gutterElement.dataset.lineType = lineType;\n }\n }\n }\n }\n };\n\n applyLineType('deletions', columns[0]);\n applyLineType('additions', columns[1]);\n }\n\n // full diff view re-rendering\n // only for unified view.\n private refreshUnifiedDiffView(): void {\n if (this.options.diffStyle !== 'unified') {\n return;\n }\n\n const hunksResult = this.hunksRenderer.renderDiff(\n this.fileDiff,\n this.renderRange\n );\n if (hunksResult == null) {\n return;\n }\n\n const columns = this.getCodeColumns(\n 'unified',\n this.codeUnified,\n this.codeDeletions,\n this.codeAdditions\n );\n if (columns == null || Array.isArray(columns)) {\n return;\n }\n\n const ast = this.hunksRenderer.renderCodeAST('unified', hunksResult);\n const gutterChildren = getElementChildren(ast?.[0]);\n const contentChildren = getElementChildren(ast?.[1]);\n const applyColumns = () => {\n for (const [el, astChildren] of [\n [columns.gutter, gutterChildren],\n [columns.content, contentChildren],\n ] as const) {\n if (astChildren != null) {\n el.innerHTML = toHtml(astChildren);\n }\n }\n\n if (hunksResult.rowCount !== this.lastRowCount) {\n this.applyRowSpan('unified', columns, hunksResult.rowCount);\n this.lastRowCount = hunksResult.rowCount;\n }\n };\n if (this.shouldGuardRebuildScroll()) {\n guardWebKitScrollDuringRebuild(this.pre, applyColumns);\n } else {\n applyColumns();\n }\n this.renderSeparators(hunksResult.hunkData);\n\n this.managersDirty = true;\n this.flushManagers();\n\n // sync the render view to the editor\n this.syncRenderViewToEditor();\n }\n\n private renderPartialColumn(\n column: ColumnElements | undefined,\n ast: ElementContent[] | undefined,\n insertPosition: 'afterbegin' | 'beforeend'\n ) {\n if (column == null || ast == null) {\n return;\n }\n const gutterChildren = getElementChildren(ast[0]);\n const contentChildren = getElementChildren(ast[1]);\n if (gutterChildren == null || contentChildren == null) {\n throw new Error('FileDiff.insertPartialHTML: Unexpected AST structure');\n }\n const firstHASTElement = contentChildren.at(0);\n if (\n insertPosition === 'beforeend' &&\n firstHASTElement?.type === 'element' &&\n typeof firstHASTElement.properties['data-buffer-size'] === 'number'\n ) {\n this.mergeBuffersIfNecessary(\n firstHASTElement.properties['data-buffer-size'],\n column.content.children[column.content.children.length - 1],\n column.gutter.children[column.gutter.children.length - 1],\n gutterChildren,\n contentChildren,\n true\n );\n }\n const lastHASTElement = contentChildren.at(-1);\n if (\n insertPosition === 'afterbegin' &&\n lastHASTElement?.type === 'element' &&\n typeof lastHASTElement.properties['data-buffer-size'] === 'number'\n ) {\n this.mergeBuffersIfNecessary(\n lastHASTElement.properties['data-buffer-size'],\n column.content.children[0],\n column.gutter.children[0],\n gutterChildren,\n contentChildren,\n false\n );\n }\n\n column.gutter.insertAdjacentHTML(\n insertPosition,\n this.hunksRenderer.renderPartialHTML(gutterChildren)\n );\n column.content.insertAdjacentHTML(\n insertPosition,\n this.hunksRenderer.renderPartialHTML(contentChildren)\n );\n }\n\n private mergeBuffersIfNecessary(\n adjustmentSize: number,\n contentElement: Element,\n gutterElement: Element,\n gutterChildren: ElementContent[],\n contentChildren: ElementContent[],\n fromStart: boolean\n ) {\n if (\n !(contentElement instanceof HTMLElement) ||\n !(gutterElement instanceof HTMLElement)\n ) {\n return;\n }\n const currentSize = this.getBufferSize(contentElement.dataset);\n if (currentSize == null) {\n return;\n }\n if (fromStart) {\n gutterChildren.shift();\n contentChildren.shift();\n } else {\n gutterChildren.pop();\n contentChildren.pop();\n }\n this.updateBufferSize(contentElement, currentSize + adjustmentSize);\n this.updateBufferSize(gutterElement, currentSize + adjustmentSize);\n }\n\n private applyRowSpan(\n diffStyle: 'split' | 'unified',\n columns:\n | [ColumnElements | undefined, ColumnElements | undefined]\n | ColumnElements,\n rowCount: number\n ): void {\n const applySpan = (column: ColumnElements | undefined) => {\n if (column == null) {\n return;\n }\n column.gutter.style.setProperty('grid-row', `span ${rowCount}`);\n column.content.style.setProperty('grid-row', `span ${rowCount}`);\n };\n if (diffStyle === 'unified' && !Array.isArray(columns)) {\n applySpan(columns);\n } else if (diffStyle === 'split' && Array.isArray(columns)) {\n applySpan(columns[0]);\n applySpan(columns[1]);\n } else {\n throw new Error('dun fuuuuked up');\n }\n }\n\n private trimColumnRows(\n columns: ColumnElements | undefined,\n preTrimCount: number,\n postTrimStart: number\n ): number {\n let visibleLineIndex = 0;\n let rowCount = 0;\n let rowIndex = 0;\n let pendingMetadataTrim = false;\n const hasPostTrim = postTrimStart >= 0;\n\n if (columns == null) {\n return 0;\n }\n const contentChildren = Array.from(columns.content.children);\n const gutterChildren = Array.from(columns.gutter.children);\n if (contentChildren.length !== gutterChildren.length) {\n throw new Error('FileDiff.trimColumnRows: columns do not match');\n }\n\n while (rowIndex < contentChildren.length) {\n if (preTrimCount <= 0 && !hasPostTrim && !pendingMetadataTrim) {\n break;\n }\n const gutterElement = gutterChildren[rowIndex];\n const contentElement = contentChildren[rowIndex];\n rowIndex++;\n\n if (\n !(gutterElement instanceof HTMLElement) ||\n !(contentElement instanceof HTMLElement)\n ) {\n console.error({ gutterElement, contentElement });\n throw new Error('FileDiff.trimColumnRows: invalid row elements');\n }\n\n if (pendingMetadataTrim) {\n pendingMetadataTrim = false;\n if (\n (gutterElement.dataset.gutterBuffer === 'annotation' &&\n 'lineAnnotation' in contentElement.dataset) ||\n (gutterElement.dataset.gutterBuffer === 'metadata' &&\n 'noNewline' in contentElement.dataset)\n ) {\n gutterElement.remove();\n contentElement.remove();\n rowCount++;\n continue;\n }\n }\n\n // If we found a line element, lets trim it if necessary\n if (\n 'lineIndex' in gutterElement.dataset &&\n 'lineIndex' in contentElement.dataset\n ) {\n if (\n preTrimCount > 0 ||\n (hasPostTrim && visibleLineIndex >= postTrimStart)\n ) {\n gutterElement.remove();\n contentElement.remove();\n if (preTrimCount > 0) {\n preTrimCount--;\n if (preTrimCount === 0) {\n pendingMetadataTrim = true;\n }\n }\n rowCount++;\n }\n visibleLineIndex++;\n continue;\n }\n\n // Separators should be removed, but don't count towards line indices\n if (\n 'separator' in gutterElement.dataset &&\n 'separator' in contentElement.dataset\n ) {\n if (\n preTrimCount > 0 ||\n (hasPostTrim && visibleLineIndex >= postTrimStart)\n ) {\n gutterElement.remove();\n contentElement.remove();\n rowCount++;\n }\n continue;\n }\n\n // Annotations should be removed, but don't count towards line indices\n if (\n gutterElement.dataset.gutterBuffer === 'annotation' &&\n 'lineAnnotation' in contentElement.dataset\n ) {\n if (\n preTrimCount > 0 ||\n (hasPostTrim && visibleLineIndex >= postTrimStart)\n ) {\n gutterElement.remove();\n contentElement.remove();\n rowCount++;\n }\n continue;\n }\n\n if (\n gutterElement.dataset.gutterBuffer === 'metadata' &&\n 'noNewline' in contentElement.dataset\n ) {\n if (\n preTrimCount > 0 ||\n (hasPostTrim && visibleLineIndex >= postTrimStart)\n ) {\n gutterElement.remove();\n contentElement.remove();\n rowCount++;\n }\n continue;\n }\n\n if (\n gutterElement.dataset.gutterBuffer === 'buffer' &&\n 'contentBuffer' in contentElement.dataset\n ) {\n const totalRows = this.getBufferSize(contentElement.dataset);\n if (totalRows == null) {\n throw new Error('FileDiff.trimColumnRows: invalid element');\n }\n if (preTrimCount > 0) {\n const rowsToRemove = Math.min(preTrimCount, totalRows);\n const newSize = totalRows - rowsToRemove;\n if (newSize > 0) {\n this.updateBufferSize(gutterElement, newSize);\n this.updateBufferSize(contentElement, newSize);\n rowCount += rowsToRemove;\n } else {\n gutterElement.remove();\n contentElement.remove();\n rowCount += totalRows;\n }\n preTrimCount -= rowsToRemove;\n if (preTrimCount === 0 && newSize === 0) {\n pendingMetadataTrim = true;\n }\n }\n // If we are in a post clip era...\n else if (hasPostTrim) {\n const bufferStart = visibleLineIndex;\n const bufferEnd = visibleLineIndex + totalRows - 1;\n if (postTrimStart <= bufferStart) {\n gutterElement.remove();\n contentElement.remove();\n rowCount += totalRows;\n } else if (postTrimStart <= bufferEnd) {\n const rowsToRemove = bufferEnd - postTrimStart + 1;\n const newSize = totalRows - rowsToRemove;\n this.updateBufferSize(gutterElement, newSize);\n this.updateBufferSize(contentElement, newSize);\n rowCount += rowsToRemove;\n }\n }\n visibleLineIndex += totalRows;\n continue;\n }\n\n console.error({ gutterElement, contentElement });\n throw new Error('FileDiff.trimColumnRows: unknown row elements');\n }\n\n return rowCount;\n }\n\n private trimColumns({\n columns,\n diffStyle,\n overlapEnd,\n overlapStart,\n previousStart,\n trimEnd,\n trimStart,\n // NOTE(amadeus): If we return -1 it means something went wrong\n // with the trim...\n // oxlint-disable-next-line no-redundant-type-constituents\n }: TrimColumnsToOverlapProps): number | -1 {\n const preTrimCount = Math.max(0, overlapStart - previousStart);\n const postTrimStart = overlapEnd - previousStart;\n if (postTrimStart < 0) {\n throw new Error('FileDiff.trimColumns: overlap ends before previous');\n }\n const shouldTrimStart = trimStart > 0;\n const shouldTrimEnd = trimEnd > 0;\n if (!shouldTrimStart && !shouldTrimEnd) {\n return 0;\n }\n const effectivePreTrimCount = shouldTrimStart ? preTrimCount : 0;\n const effectivePostTrimStart = shouldTrimEnd ? postTrimStart : -1;\n\n if (diffStyle === 'unified' && !Array.isArray(columns)) {\n const removedRows = this.trimColumnRows(\n columns,\n effectivePreTrimCount,\n effectivePostTrimStart\n );\n return removedRows;\n } else if (diffStyle === 'split' && Array.isArray(columns)) {\n const deletionsTrim = this.trimColumnRows(\n columns[0],\n effectivePreTrimCount,\n effectivePostTrimStart\n );\n const additionsTrim = this.trimColumnRows(\n columns[1],\n effectivePreTrimCount,\n effectivePostTrimStart\n );\n // We should avoid the trim validation if we are split but\n // there's only one side\n if (\n columns[0] != null &&\n columns[1] != null &&\n deletionsTrim !== additionsTrim\n ) {\n throw new Error('FileDiff.trimColumns: split columns out of sync');\n }\n return columns[0] != null ? deletionsTrim : additionsTrim;\n } else {\n console.error({ diffStyle, columns });\n throw new Error('FileDiff.trimColumns: Invalid columns for diffType');\n }\n }\n\n private getBufferSize(properties: DOMStringMap): number | undefined {\n const parsed = Number.parseInt(properties?.bufferSize ?? '', 10);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n private updateBufferSize(element: HTMLElement, size: number): void {\n element.dataset.bufferSize = `${size}`;\n element.style.setProperty('grid-row', `span ${size}`);\n element.style.setProperty('min-height', `calc(${size} * 1lh)`);\n }\n\n private getColumnPair(\n code: HTMLElement | undefined\n ): ColumnElements | undefined {\n if (code == null) {\n return undefined;\n }\n const gutter = code.children[0];\n const content = code.children[1];\n if (\n !(gutter instanceof HTMLElement) ||\n !(content instanceof HTMLElement) ||\n gutter.dataset.gutter == null ||\n content.dataset.content == null\n ) {\n return undefined;\n }\n return { gutter, content };\n }\n\n private getCodeColumns(\n diffStyle: 'split' | 'unified',\n codeUnified: HTMLElement | undefined,\n codeDeletions: HTMLElement | undefined,\n codeAdditions: HTMLElement | undefined\n ):\n | [ColumnElements | undefined, ColumnElements | undefined]\n | ColumnElements\n | undefined {\n if (diffStyle === 'unified') {\n return this.getColumnPair(codeUnified);\n } else {\n const deletions = this.getColumnPair(codeDeletions);\n const additions = this.getColumnPair(codeAdditions);\n return deletions != null || additions != null\n ? [deletions, additions]\n : undefined;\n }\n }\n\n protected updateBuffers(renderRange: RenderRange): void {\n if (this.pre != null) {\n this.applyBuffers(this.pre, renderRange);\n }\n }\n\n private applyBuffers(\n pre: HTMLPreElement,\n renderRange: RenderRange | undefined\n ) {\n if (renderRange == null || this.shouldDisableVirtualizationBuffers()) {\n if (this.bufferBefore != null) {\n this.bufferBefore.remove();\n this.bufferBefore = undefined;\n }\n if (this.bufferAfter != null) {\n this.bufferAfter.remove();\n this.bufferAfter = undefined;\n }\n return;\n }\n // NOTE(amadeus): A very hacky pass at buffers outside the pre elements...\n // i may need to improve this...\n if (renderRange.bufferBefore > 0) {\n if (this.bufferBefore == null) {\n this.bufferBefore = document.createElement('div');\n this.bufferBefore.dataset.virtualizerBuffer = 'before';\n pre.before(this.bufferBefore);\n }\n this.bufferBefore.style.setProperty(\n 'height',\n `${renderRange.bufferBefore}px`\n );\n this.bufferBefore.style.setProperty('contain', 'strict');\n } else if (this.bufferBefore != null) {\n this.bufferBefore.remove();\n this.bufferBefore = undefined;\n }\n\n if (renderRange.bufferAfter > 0) {\n if (this.bufferAfter == null) {\n this.bufferAfter = document.createElement('div');\n this.bufferAfter.dataset.virtualizerBuffer = 'after';\n pre.after(this.bufferAfter);\n }\n this.bufferAfter.style.setProperty(\n 'height',\n `${renderRange.bufferAfter}px`\n );\n this.bufferAfter.style.setProperty('contain', 'strict');\n } else if (this.bufferAfter != null) {\n this.bufferAfter.remove();\n this.bufferAfter = undefined;\n }\n }\n\n protected shouldDisableVirtualizationBuffers(): boolean {\n return this.options.disableVirtualizationBuffers ?? false;\n }\n\n protected applyPreNodeAttributes(\n pre: HTMLPreElement,\n { additionsContentAST, deletionsContentAST, totalLines }: HunksRenderResult,\n customProperties?: CustomPreProperties\n ): void {\n const {\n diffIndicators = 'bars',\n disableBackground = false,\n disableLineNumbers = false,\n overflow = 'scroll',\n diffStyle = 'split',\n } = this.options;\n const preProperties: PrePropertiesConfig = {\n type: 'diff',\n diffIndicators,\n disableBackground,\n disableLineNumbers,\n overflow,\n split:\n diffStyle === 'unified'\n ? false\n : additionsContentAST != null && deletionsContentAST != null,\n totalLines,\n customProperties,\n };\n if (arePrePropertiesEqual(preProperties, this.appliedPreAttributes)) {\n return;\n }\n setPreNodeProperties(pre, preProperties);\n this.appliedPreAttributes = preProperties;\n }\n\n private applyErrorToDOM(error: Error, container: HTMLElement) {\n this.cleanupErrorWrapper();\n this.pre?.remove();\n this.pre = undefined;\n this.appliedPreAttributes = undefined;\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n this.errorWrapper ??= document.createElement('div');\n this.errorWrapper.dataset.errorWrapper = '';\n this.errorWrapper.textContent = '';\n shadowRoot.appendChild(this.errorWrapper);\n const errorMessage = document.createElement('div');\n errorMessage.dataset.errorMessage = '';\n errorMessage.innerText = error.message;\n this.errorWrapper.appendChild(errorMessage);\n const errorStack = document.createElement('pre');\n errorStack.dataset.errorStack = '';\n errorStack.innerText = error.stack ?? 'No Error Stack';\n this.errorWrapper.appendChild(errorStack);\n }\n\n private cleanupErrorWrapper() {\n this.errorWrapper?.remove();\n this.errorWrapper = undefined;\n }\n}\n\ninterface HasContentProps {\n fileDiff: FileDiffMetadata | undefined;\n oldFile: FileContents | null | undefined;\n newFile: FileContents | null | undefined;\n}\n\nfunction areOptionalFilesEqual(\n fileA: FileContents | null | undefined,\n fileB: FileContents | null | undefined\n): boolean {\n if (fileA == null || fileB == null) {\n return fileA == null && fileB == null;\n }\n return areFilesEqual(fileA, fileB);\n}\n\nfunction hasDiffContent({\n fileDiff,\n oldFile,\n newFile,\n}: HasContentProps): boolean {\n return (\n (fileDiff != null && fileDiff.hunks.length > 0) ||\n oldFile != null ||\n newFile != null\n );\n}\n\nfunction hasDiffHeaderContent({\n fileDiff,\n oldFile,\n newFile,\n}: HasContentProps): boolean {\n return fileDiff != null || oldFile != null || newFile != null;\n}\n\nfunction shouldRenderCode(\n pre: HTMLPreElement | undefined,\n hasContent: boolean,\n collapsed = false\n): boolean {\n return !collapsed && pre == null && hasContent;\n}\n\nfunction shouldRenderHeader(\n headerElement: HTMLElement | undefined,\n hasContent: boolean,\n disableFileHeader = false\n): boolean {\n return headerElement == null && hasContent && !disableFileHeader;\n}\n\nfunction getElementChildren(\n node: ElementContent | undefined\n): ElementContent[] | undefined {\n if (node == null || node.type !== 'element') {\n return undefined;\n }\n return node.children ?? [];\n}\n"],"mappings":"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"}