@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":"InteractionManager.js","names":[],"sources":["../../src/managers/InteractionManager.ts"],"sourcesContent":["import { toHtml } from 'hast-util-to-html';\n\nimport type {\n AnnotationSide,\n DiffLineEventBaseProps,\n DiffTokenEventBaseProps,\n ExpansionDirections,\n LineEventBaseProps,\n LineTypes,\n MergeConflictResolution,\n SelectedLineRange,\n SelectionPoint,\n SelectionSide,\n TokenEventBase,\n} from '../types';\nimport { areSelectionPointsEqual } from '../utils/areSelectionPointsEqual';\nimport { areSelectionsEqual } from '../utils/areSelectionsEqual';\nimport { createGutterUtilityElement } from '../utils/createGutterUtilityElement';\n\ninterface TokenCache {\n tokenElement: HTMLElement;\n lineCharStart: number;\n lineCharEnd: number;\n tokenText: string;\n}\n\ninterface ExpandCache {\n hunkIndex: number | undefined;\n direction: ExpansionDirections;\n all: boolean;\n}\n\nexport type LogTypes = 'click' | 'move' | 'both' | 'none';\n\nexport type InteractionManagerMode = 'file' | 'diff';\n\nexport interface OnLineClickProps extends LineEventBaseProps {\n event: PointerEvent;\n}\n\nexport interface OnLineEnterLeaveProps extends LineEventBaseProps {\n event: PointerEvent;\n}\n\nexport interface OnDiffLineClickProps extends DiffLineEventBaseProps {\n event: PointerEvent;\n}\n\nexport interface OnDiffLineEnterLeaveProps extends DiffLineEventBaseProps {\n event: PointerEvent;\n}\n\nexport interface SelectionWriteOptions {\n notify?: boolean;\n}\n\nexport type GetLineIndexUtility = (\n lineNumber: number,\n side?: SelectionSide\n) => [number, number] | undefined;\n\ntype EventClickProps<TMode extends InteractionManagerMode> =\n TMode extends 'file' ? OnLineClickProps : OnDiffLineClickProps;\n\ntype PointerEventEnterLeaveProps<TMode extends InteractionManagerMode> =\n TMode extends 'file' ? OnLineEnterLeaveProps : OnDiffLineEnterLeaveProps;\n\ntype EventBaseProps<TMode extends InteractionManagerMode> = TMode extends 'file'\n ? LineEventBaseProps\n : DiffLineEventBaseProps;\n\nexport type OnTokenEventProps<TMode extends InteractionManagerMode> =\n TMode extends 'file' ? TokenEventBase : DiffTokenEventBaseProps;\n\ninterface ExpandoEventProps {\n type: 'line-info';\n hunkIndex: number;\n direction: ExpansionDirections;\n all: boolean;\n}\n\nexport type GetHoveredLineResult<TMode extends InteractionManagerMode> =\n TMode extends 'file'\n ? { lineNumber: number }\n : { lineNumber: number; side: AnnotationSide };\n\ninterface SelectionInfo {\n lineNumber: number;\n eventSide: SelectionSide | undefined;\n lineIndex: number;\n}\n\ntype SelectionHitSource = 'event-path' | 'coordinates-first';\n\ninterface SelectionHitOptions {\n source: SelectionHitSource;\n excludeUtility?: boolean;\n}\n\ninterface SelectionInfoOptions extends SelectionHitOptions {\n requireNumberColumn: boolean;\n}\n\ninterface SelectionEnds {\n top: SelectionPoint;\n bottom: SelectionPoint;\n}\n\ninterface ResolvedLineTarget<TMode extends InteractionManagerMode> {\n kind: 'line';\n lineType: LineTypes;\n lineElement: HTMLElement;\n lineNumber: number;\n numberColumn: boolean;\n numberElement: HTMLElement;\n side: TMode extends 'diff' ? AnnotationSide : undefined;\n splitLineIndex: number | undefined;\n}\n\ninterface ResolvedTokenTarget<TMode extends InteractionManagerMode> {\n kind: 'token';\n lineType: LineTypes;\n lineElement: HTMLElement;\n lineNumber: number;\n numberColumn: boolean;\n numberElement: HTMLElement;\n side: TMode extends 'diff' ? AnnotationSide : undefined;\n splitLineIndex: number | undefined;\n tokenElement: HTMLElement;\n tokenText: string;\n lineCharStart: number;\n lineCharEnd: number;\n}\n\nexport interface MergeConflictActionTarget {\n kind: 'merge-conflict-action';\n resolution: MergeConflictResolution;\n conflictIndex: number;\n}\n\ntype ResolvedPointerTarget<TMode extends InteractionManagerMode> =\n | ResolvedLineTarget<TMode>\n | ResolvedTokenTarget<TMode>\n | ExpandoEventProps\n | MergeConflictActionTarget;\n\ntype LinePointerTarget<TMode extends InteractionManagerMode> =\n ResolvedLineTarget<TMode>;\n\ntype TokenPointerTarget<TMode extends InteractionManagerMode> =\n ResolvedTokenTarget<TMode>;\n\ntype HoverableLinePointerTarget<TMode extends InteractionManagerMode> =\n | LinePointerTarget<TMode>\n | TokenPointerTarget<TMode>;\n\ninterface SessionIdle {\n mode: 'idle';\n}\n\ninterface SessionSelecting {\n mode: 'selecting';\n pointerId: number;\n}\n\ninterface SessionPendingSingleLineUnselect {\n mode: 'pendingSingleLineUnselect';\n pointerId: number;\n anchor: SelectionPoint;\n pending: SelectionPoint;\n}\n\ninterface SessionGutterSelecting {\n mode: 'gutterSelecting';\n pointerId: number;\n anchor: SelectionPoint;\n current: SelectionPoint;\n}\n\ntype PointerSession =\n | SessionIdle\n | SessionSelecting\n | SessionPendingSingleLineUnselect\n | SessionGutterSelecting;\n\nexport interface InteractionManagerBaseOptions<\n TMode extends InteractionManagerMode,\n> {\n lineHoverHighlight?: 'disabled' | 'both' | 'number' | 'line';\n enableTokenInteractionsOnWhitespace?: boolean;\n enableGutterUtility?: boolean;\n onGutterUtilityClick?(range: SelectedLineRange): unknown;\n onLineClick?(props: EventClickProps<TMode>): unknown;\n onLineNumberClick?(props: EventClickProps<TMode>): unknown;\n onLineEnter?(props: PointerEventEnterLeaveProps<TMode>): unknown;\n onLineLeave?(props: PointerEventEnterLeaveProps<TMode>): unknown;\n onTokenClick?(props: OnTokenEventProps<TMode>, event: MouseEvent): unknown;\n onTokenEnter?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;\n onTokenLeave?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;\n __debugPointerEvents?: LogTypes;\n enableLineSelection?: boolean;\n controlledSelection?: boolean;\n onLineSelected?: (range: SelectedLineRange | null) => void;\n onLineSelectionStart?: (range: SelectedLineRange | null) => void;\n onLineSelectionChange?: (range: SelectedLineRange | null) => void;\n onLineSelectionEnd?: (range: SelectedLineRange | null) => void;\n getLineIndex?: GetLineIndexUtility;\n}\n\nexport interface InteractionManagerOptions<\n TMode extends InteractionManagerMode,\n> extends InteractionManagerBaseOptions<TMode> {\n usesCustomGutterUtility?: boolean;\n onHunkExpand?(\n hunkIndex: number,\n direction: ExpansionDirections,\n expansionLineCountOverride?: number\n ): unknown;\n onMergeConflictActionClick?(target: MergeConflictActionTarget): void;\n}\n\ninterface HandlePointerEventProps {\n eventType: 'click' | 'move';\n event: PointerEvent | MouseEvent;\n}\n\nexport class InteractionManager<TMode extends InteractionManagerMode> {\n private hoveredLine: EventBaseProps<TMode> | undefined;\n private hoveredToken: OnTokenEventProps<TMode> | undefined;\n private pre: HTMLPreElement | undefined;\n\n private gutterUtilityLine: EventBaseProps<TMode> | undefined;\n private gutterUtilityContainer: HTMLDivElement | undefined;\n private gutterUtilityButton: HTMLButtonElement | undefined;\n private gutterUtilitySlot: HTMLSlotElement | undefined;\n\n private interactiveLinesAttr = false;\n private interactiveLineNumbersAttr = false;\n\n private hasPointerListeners = false;\n private hasDocumentPointerListeners = false;\n\n private selectedRange: SelectedLineRange | null = null;\n private proposedSelectedRange: SelectedLineRange | null | undefined;\n private renderedSelectionRange: SelectedLineRange | null | undefined;\n private selectionAnchor: SelectionPoint | undefined;\n private queuedSelectionRender: number | undefined;\n private pointerSession: PointerSession = { mode: 'idle' };\n\n constructor(\n private mode: TMode,\n private options: InteractionManagerOptions<TMode>\n ) {}\n\n setOptions(options: InteractionManagerOptions<TMode>): void {\n this.options = options;\n }\n\n cleanUp(): void {\n this.pre?.removeEventListener('click', this.handlePointerClick);\n this.pre?.removeEventListener('pointerdown', this.handlePointerDown);\n this.pre?.removeEventListener('pointermove', this.handlePointerMove);\n this.pre?.removeEventListener('pointerleave', this.handlePointerLeave);\n this.pre?.removeAttribute('data-interactive-lines');\n this.pre?.removeAttribute('data-interactive-line-numbers');\n this.pre = undefined;\n this.gutterUtilityContainer?.remove();\n this.gutterUtilityLine = undefined;\n this.gutterUtilityContainer = undefined;\n this.gutterUtilityButton = undefined;\n this.gutterUtilitySlot = undefined;\n this.clearHoveredLine();\n this.clearHoveredToken();\n this.detachDocumentPointerListeners();\n this.clearPointerSession();\n if (this.queuedSelectionRender != null) {\n cancelAnimationFrame(this.queuedSelectionRender);\n this.queuedSelectionRender = undefined;\n }\n this.interactiveLinesAttr = false;\n this.interactiveLineNumbersAttr = false;\n this.hasPointerListeners = false;\n }\n\n setup(pre: HTMLPreElement): void {\n this.setSelectionDirty();\n const { usesCustomGutterUtility = false, enableGutterUtility = false } =\n this.options;\n\n const newContainer = this.pre !== pre;\n if (newContainer) {\n this.cleanUp();\n this.pre = pre;\n }\n\n if (enableGutterUtility) {\n this.ensureGutterUtilityNode(usesCustomGutterUtility);\n } else if (this.gutterUtilityContainer != null) {\n this.gutterUtilityContainer.remove();\n this.gutterUtilityLine = undefined;\n this.gutterUtilityContainer = undefined;\n this.gutterUtilityButton = undefined;\n this.gutterUtilitySlot = undefined;\n if (this.pointerSession.mode === 'gutterSelecting') {\n this.clearPointerSession();\n this.detachDocumentPointerListeners();\n }\n }\n\n this.syncPointerListeners(pre);\n this.updateInteractiveLineAttributes();\n this.renderSelection();\n this.placeUtility();\n }\n\n setSelectionDirty(): void {\n this.renderedSelectionRange = undefined;\n }\n\n isSelectionDirty(): boolean {\n return this.renderedSelectionRange === null;\n }\n\n setSelection(\n range: SelectedLineRange | null,\n options?: SelectionWriteOptions\n ): void {\n const isRangeChange = !(\n range === this.selectedRange ||\n areSelectionsEqual(range ?? undefined, this.selectedRange ?? undefined)\n );\n if (!this.isSelectionDirty() && !isRangeChange) {\n return;\n }\n this.proposedSelectedRange = undefined;\n this.selectedRange = range;\n this.renderSelection();\n this.placeUtility();\n if (isRangeChange && options?.notify !== false) {\n this.notifySelectionCommitted();\n }\n }\n\n getSelection(): SelectedLineRange | null {\n return this.selectedRange;\n }\n\n getHoveredLine = (): GetHoveredLineResult<TMode> | undefined => {\n const gutterUtilityLine = this.gutterUtilityLine ?? this.hoveredLine;\n if (gutterUtilityLine != null) {\n if (this.mode === 'diff' && gutterUtilityLine.type === 'diff-line') {\n return {\n lineNumber: gutterUtilityLine.lineNumber,\n side: gutterUtilityLine.annotationSide,\n } as GetHoveredLineResult<TMode>;\n }\n if (this.mode === 'file' && gutterUtilityLine.type === 'line') {\n return {\n lineNumber: gutterUtilityLine.lineNumber,\n } as GetHoveredLineResult<TMode>;\n }\n }\n return undefined;\n };\n\n handlePointerClick = (event: MouseEvent): void => {\n const {\n onHunkExpand,\n onLineClick,\n onLineNumberClick,\n onTokenClick,\n onMergeConflictActionClick,\n } = this.options;\n if (\n onHunkExpand == null &&\n onLineClick == null &&\n onLineNumberClick == null &&\n onMergeConflictActionClick == null &&\n onTokenClick == null\n ) {\n return;\n }\n if (\n this.options.onGutterUtilityClick != null &&\n isGutterUtilityPath(event.composedPath())\n ) {\n return;\n }\n debugLogIfEnabled(\n this.options.__debugPointerEvents,\n 'click',\n 'FileDiff.DEBUG.handlePointerClick:',\n event\n );\n this.handlePointerEvent({ eventType: 'click', event });\n };\n\n handlePointerMove = (event: PointerEvent): void => {\n // Touch and pen moves are active drag/scroll gestures, not hover. Keeping\n // hover mouse-only prevents content scrolls from leaving stale utilities.\n if (event.pointerType !== 'mouse') {\n return;\n }\n\n const {\n lineHoverHighlight = 'disabled',\n onLineEnter,\n onLineLeave,\n onTokenEnter,\n onTokenLeave,\n enableGutterUtility = false,\n } = this.options;\n if (\n lineHoverHighlight === 'disabled' &&\n !enableGutterUtility &&\n onLineEnter == null &&\n onLineLeave == null &&\n onTokenEnter == null &&\n onTokenLeave == null\n ) {\n return;\n }\n debugLogIfEnabled(\n this.options.__debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.handlePointerMove:',\n event\n );\n // should we perhaps throttle this a bit because move can be fast as fuk\n // boiiii\n this.handlePointerEvent({ eventType: 'move', event });\n };\n\n handlePointerLeave = (event: PointerEvent): void => {\n const { __debugPointerEvents } = this.options;\n debugLogIfEnabled(\n __debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.handlePointerLeave: no event'\n );\n if (this.hoveredLine == null && this.hoveredToken == null) {\n debugLogIfEnabled(\n __debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.handlePointerLeave: returned early, no hovered line or token'\n );\n return;\n }\n if (this.hoveredToken != null) {\n this.options.onTokenLeave?.(this.hoveredToken, event);\n this.clearHoveredToken();\n }\n\n if (this.hoveredLine != null) {\n this.options.onLineLeave?.({\n ...this.hoveredLine,\n event,\n } as PointerEventEnterLeaveProps<TMode>);\n this.clearHoveredLine();\n }\n this.placeUtility();\n };\n\n private handlePointerEvent({ eventType, event }: HandlePointerEventProps) {\n const { __debugPointerEvents } = this.options;\n const composedPath = event.composedPath();\n debugLogIfEnabled(\n __debugPointerEvents,\n eventType,\n 'FileDiff.DEBUG.handlePointerEvent:',\n { eventType, composedPath }\n );\n const target = this.resolvePointerTarget(composedPath);\n debugLogIfEnabled(\n __debugPointerEvents,\n eventType,\n 'FileDiff.DEBUG.handlePointerEvent: resolvePointerTarget result:',\n target\n );\n\n const {\n onLineClick,\n onLineNumberClick,\n onLineEnter,\n onLineLeave,\n onTokenClick,\n onTokenEnter,\n onTokenLeave,\n onHunkExpand,\n onMergeConflictActionClick,\n } = this.options;\n\n switch (eventType) {\n case 'move': {\n const sameLine =\n isHoverableLinePointerTarget(target) &&\n this.hoveredLine?.lineElement === target.lineElement;\n const sameToken =\n isTokenPointerTarget(target) &&\n this.hoveredToken?.tokenElement === target.tokenElement;\n\n // Handle token transitions\n if (!sameToken) {\n if (this.hoveredToken != null) {\n onTokenLeave?.(this.hoveredToken, event as PointerEvent);\n this.clearHoveredToken();\n }\n if (isTokenPointerTarget(target)) {\n this.setHoveredToken(this.toTokenEventBaseProps(target));\n onTokenEnter?.(\n this.hoveredToken as OnTokenEventProps<TMode>,\n event as PointerEvent\n );\n }\n }\n\n // Handle line transitions\n if (!sameLine) {\n if (this.hoveredLine != null) {\n onLineLeave?.({\n ...this.hoveredLine,\n event: event as PointerEvent,\n } as PointerEventEnterLeaveProps<TMode>);\n this.clearHoveredLine();\n }\n if (isHoverableLinePointerTarget(target)) {\n this.setHoveredLine(this.toEventBaseProps(target));\n this.placeUtility();\n onLineEnter?.({\n ...this.hoveredLine,\n event: event as PointerEvent,\n } as PointerEventEnterLeaveProps<TMode>);\n } else {\n this.placeUtility();\n }\n }\n break;\n }\n case 'click': {\n if (target == null) {\n break;\n }\n if (\n isMergeConflictActionPointerTarget(target) &&\n onMergeConflictActionClick != null\n ) {\n onMergeConflictActionClick(target);\n break;\n }\n if (isExpandoPointerTarget(target) && onHunkExpand != null) {\n onHunkExpand(\n target.hunkIndex,\n target.all || event.shiftKey ? 'both' : target.direction,\n target.all || event.shiftKey ? Number.POSITIVE_INFINITY : undefined\n );\n break;\n }\n\n if (!isHoverableLinePointerTarget(target)) {\n break;\n }\n\n if (isTokenPointerTarget(target) && onTokenClick != null) {\n onTokenClick(this.toTokenEventBaseProps(target), event as MouseEvent);\n }\n\n const eventBase = this.toEventBaseProps(target);\n if (onLineNumberClick != null && target.numberColumn) {\n onLineNumberClick({\n ...eventBase,\n event: event as PointerEvent,\n } as EventClickProps<TMode>);\n } else if (onLineClick != null) {\n onLineClick({\n ...eventBase,\n event: event as PointerEvent,\n } as EventClickProps<TMode>);\n }\n break;\n }\n }\n }\n\n private syncPointerListeners(pre: HTMLPreElement): void {\n const {\n __debugPointerEvents,\n lineHoverHighlight = 'disabled',\n onLineClick,\n onLineNumberClick,\n onLineEnter,\n onLineLeave,\n onTokenClick,\n onTokenEnter,\n onTokenLeave,\n onHunkExpand,\n onMergeConflictActionClick,\n enableGutterUtility = false,\n enableLineSelection = false,\n onGutterUtilityClick,\n } = this.options;\n const enableGutterSelection = onGutterUtilityClick != null;\n const shouldAttachPointerListeners =\n lineHoverHighlight !== 'disabled' ||\n onLineClick != null ||\n onLineNumberClick != null ||\n onLineEnter != null ||\n onLineLeave != null ||\n onTokenClick != null ||\n onTokenEnter != null ||\n onTokenLeave != null ||\n onHunkExpand != null ||\n onMergeConflictActionClick != null ||\n enableGutterUtility ||\n enableLineSelection ||\n enableGutterSelection;\n\n if (shouldAttachPointerListeners && !this.hasPointerListeners) {\n pre.addEventListener('click', this.handlePointerClick);\n pre.addEventListener('pointerdown', this.handlePointerDown);\n pre.addEventListener('pointermove', this.handlePointerMove);\n pre.addEventListener('pointerleave', this.handlePointerLeave);\n this.hasPointerListeners = true;\n\n debugLogIfEnabled(\n __debugPointerEvents,\n 'click',\n 'FileDiff.DEBUG.attachEventListeners: Attaching click events for:',\n (() => {\n const reasons: string[] = [];\n if (\n __debugPointerEvents === 'both' ||\n __debugPointerEvents === 'click'\n ) {\n if (onLineClick != null) {\n reasons.push('onLineClick');\n }\n if (onLineNumberClick != null) {\n reasons.push('onLineNumberClick');\n }\n if (onHunkExpand != null) {\n reasons.push('expandable hunk separators');\n }\n if (onMergeConflictActionClick != null) {\n reasons.push('merge conflict actions');\n }\n }\n return reasons;\n })()\n );\n debugLogIfEnabled(\n __debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.attachEventListeners: Attaching pointer move event'\n );\n debugLogIfEnabled(\n __debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.attachEventListeners: Attaching pointer leave event'\n );\n } else if (!shouldAttachPointerListeners && this.hasPointerListeners) {\n pre.removeEventListener('click', this.handlePointerClick);\n pre.removeEventListener('pointerdown', this.handlePointerDown);\n pre.removeEventListener('pointermove', this.handlePointerMove);\n pre.removeEventListener('pointerleave', this.handlePointerLeave);\n this.hasPointerListeners = false;\n }\n\n const hasActiveLineSelectionSession =\n this.pointerSession.mode === 'selecting' ||\n this.pointerSession.mode === 'pendingSingleLineUnselect';\n const hasActiveGutterSelectionSession =\n this.pointerSession.mode === 'gutterSelecting';\n if (\n (!enableLineSelection && hasActiveLineSelectionSession) ||\n (!enableGutterSelection && hasActiveGutterSelectionSession)\n ) {\n this.clearPointerSession();\n this.detachDocumentPointerListeners();\n this.selectionAnchor = undefined;\n this.clearPendingSingleLineState();\n }\n }\n\n private updateInteractiveLineAttributes(): void {\n if (this.pre == null) {\n return;\n }\n\n const {\n onLineClick,\n onLineNumberClick,\n enableLineSelection = false,\n } = this.options;\n\n const shouldHaveInteractiveLines = onLineClick != null;\n const shouldHaveInteractiveLineNumbers =\n onLineNumberClick != null || enableLineSelection;\n\n if (shouldHaveInteractiveLines && !this.interactiveLinesAttr) {\n this.pre.setAttribute('data-interactive-lines', '');\n this.interactiveLinesAttr = true;\n } else if (!shouldHaveInteractiveLines && this.interactiveLinesAttr) {\n this.pre.removeAttribute('data-interactive-lines');\n this.interactiveLinesAttr = false;\n }\n\n if (shouldHaveInteractiveLineNumbers && !this.interactiveLineNumbersAttr) {\n this.pre.setAttribute('data-interactive-line-numbers', '');\n this.interactiveLineNumbersAttr = true;\n } else if (\n !shouldHaveInteractiveLineNumbers &&\n this.interactiveLineNumbersAttr\n ) {\n this.pre.removeAttribute('data-interactive-line-numbers');\n this.interactiveLineNumbersAttr = false;\n }\n }\n\n private handlePointerDown = (event: PointerEvent): void => {\n if (\n (event.pointerType === 'mouse' && event.button !== 0) ||\n this.pre == null ||\n this.pointerSession.mode !== 'idle'\n ) {\n return;\n }\n\n const path = event.composedPath();\n if (\n isGutterUtilityPath(path) &&\n this.options.onGutterUtilityClick != null\n ) {\n this.startGutterSelectionFromPointerDown(event);\n } else {\n if (event.pointerType !== 'mouse') {\n this.revealUtilityFromGutterPath(path);\n }\n this.startLineSelectionFromPointerDown(event);\n }\n };\n\n private startLineSelectionFromPointerDown(event: PointerEvent): void {\n const { enableLineSelection = false } = this.options;\n if (!enableLineSelection) {\n return;\n }\n\n const pointerInfo = this.resolveSelectionInfo(event, {\n source: 'event-path',\n requireNumberColumn: true,\n });\n if (pointerInfo == null) {\n return;\n }\n\n const { pre } = this;\n if (pre == null) {\n return;\n }\n\n // Intentionally no preventDefault here. The line-number gutter uses\n // `user-select: none`, so a drag that starts on it never begins a native\n // text selection. Calling preventDefault would also cancel the browser's\n // native focus change, which stops a focusable host wrapper from receiving\n // focus (and the keyboard events it needs) when a line number is clicked.\n const { lineNumber, eventSide, lineIndex } = pointerInfo;\n\n if (event.shiftKey && this.selectedRange != null) {\n const rowRange = this.getIndexesFromSelection(\n this.selectedRange,\n pre.getAttribute('data-diff-type') === 'split'\n );\n if (rowRange == null) {\n return;\n }\n const useStart =\n rowRange.start <= rowRange.end\n ? lineIndex >= rowRange.start\n : lineIndex <= rowRange.end;\n this.selectionAnchor = {\n lineNumber: useStart\n ? this.selectedRange.start\n : this.selectedRange.end,\n side: useStart\n ? this.selectedRange.side\n : (this.selectedRange.endSide ?? this.selectedRange.side),\n };\n this.updateSelection(lineNumber, eventSide, false);\n this.notifySelectionStart(this.getCurrentSelectionRange());\n this.pointerSession = { mode: 'selecting', pointerId: event.pointerId };\n this.attachDocumentPointerListeners();\n return;\n }\n\n if (\n this.selectedRange?.start === lineNumber &&\n this.selectedRange?.end === lineNumber\n ) {\n const point = { lineNumber, side: eventSide };\n this.selectionAnchor = point;\n this.pointerSession = {\n mode: 'pendingSingleLineUnselect',\n pointerId: event.pointerId,\n anchor: point,\n pending: point,\n };\n this.attachDocumentPointerListeners();\n return;\n }\n\n if (this.options.controlledSelection === true) {\n this.proposedSelectedRange = null;\n } else {\n this.selectedRange = null;\n }\n this.placeUtility();\n this.selectionAnchor = { lineNumber, side: eventSide };\n this.updateSelection(lineNumber, eventSide, false);\n this.notifySelectionStart(this.getCurrentSelectionRange());\n this.pointerSession = { mode: 'selecting', pointerId: event.pointerId };\n this.attachDocumentPointerListeners();\n }\n\n private startGutterSelectionFromPointerDown(event: PointerEvent): void {\n const { enableLineSelection = false, onGutterUtilityClick } = this.options;\n if (onGutterUtilityClick == null) {\n return;\n }\n // If a selection already exists, the utility represents that whole range.\n // Dragging should start from the visual top and extend from the visual\n // bottom, regardless of the direction the range was originally created.\n const selectedEndpoints = this.currentSelectionEnds();\n const point =\n selectedEndpoints?.bottom ??\n this.resolveSelectionPoint(event, {\n source: 'event-path',\n excludeUtility: false,\n });\n const anchor = selectedEndpoints?.top ?? point;\n if (point == null || anchor == null) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.pointerSession = {\n mode: 'gutterSelecting',\n pointerId: event.pointerId,\n anchor,\n current: point,\n };\n if (enableLineSelection) {\n this.selectionAnchor = {\n lineNumber: anchor.lineNumber,\n side: anchor.side,\n };\n this.updateSelection(point.lineNumber, point.side, false);\n this.notifySelectionStart(this.getCurrentSelectionRange());\n }\n this.attachDocumentPointerListeners();\n }\n\n private handleDocumentPointerMove = (event: PointerEvent): void => {\n const { enableLineSelection = false } = this.options;\n switch (this.pointerSession.mode) {\n case 'idle':\n return;\n case 'gutterSelecting': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n const point = this.resolveSelectionPoint(event, {\n source: 'coordinates-first',\n });\n if (point == null) {\n return;\n }\n this.pointerSession.current = point;\n if (enableLineSelection === true) {\n this.updateSelection(point.lineNumber, point.side);\n }\n return;\n }\n case 'selecting': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n const pointerInfo = this.resolveSelectionInfo(event, {\n source: 'coordinates-first',\n requireNumberColumn: false,\n });\n if (pointerInfo == null || this.selectionAnchor == null) {\n return;\n }\n this.updateSelection(pointerInfo.lineNumber, pointerInfo.eventSide);\n return;\n }\n case 'pendingSingleLineUnselect': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n const pointerInfo = this.resolveSelectionInfo(event, {\n source: 'coordinates-first',\n requireNumberColumn: false,\n });\n if (pointerInfo == null || this.selectionAnchor == null) {\n return;\n }\n const point = {\n lineNumber: pointerInfo.lineNumber,\n side: pointerInfo.eventSide,\n };\n if (areSelectionPointsEqual(this.pointerSession.pending, point)) {\n return;\n }\n this.updateSelection(\n pointerInfo.lineNumber,\n pointerInfo.eventSide,\n false\n );\n this.notifySelectionStart(this.getCurrentSelectionRange());\n this.notifySelectionChangeDelta();\n this.pointerSession = {\n mode: 'selecting',\n pointerId: event.pointerId,\n };\n return;\n }\n }\n };\n\n private handleDocumentPointerUp = (event: PointerEvent): void => {\n const { enableLineSelection = false, onGutterUtilityClick } = this.options;\n switch (this.pointerSession.mode) {\n case 'idle':\n return;\n case 'gutterSelecting': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n const point = this.resolveSelectionPoint(event, {\n source: 'coordinates-first',\n });\n if (point != null) {\n this.pointerSession.current = point;\n if (enableLineSelection) {\n this.updateSelection(point.lineNumber, point.side);\n }\n }\n onGutterUtilityClick?.(\n this.buildSelectedLineRange(\n this.pointerSession.anchor,\n this.pointerSession.current\n )\n );\n this.selectionAnchor = undefined;\n if (enableLineSelection) {\n this.notifySelectionEnd(this.getCurrentSelectionRange());\n this.notifySelectionCommitted();\n this.clearProposedSelection();\n }\n this.clearPointerSession();\n this.detachDocumentPointerListeners();\n return;\n }\n case 'pendingSingleLineUnselect': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n this.updateSelection(null, undefined, false);\n this.selectionAnchor = undefined;\n this.clearPendingSingleLineState();\n this.detachDocumentPointerListeners();\n this.notifySelectionEnd(this.getCurrentSelectionRange());\n this.notifySelectionCommitted();\n this.clearProposedSelection();\n return;\n }\n case 'selecting': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n this.selectionAnchor = undefined;\n this.detachDocumentPointerListeners();\n this.clearPointerSession();\n this.notifySelectionEnd(this.getCurrentSelectionRange());\n this.notifySelectionCommitted();\n this.clearProposedSelection();\n }\n }\n };\n\n private handleDocumentPointerCancel = (event: PointerEvent): void => {\n switch (this.pointerSession.mode) {\n case 'idle':\n return;\n case 'gutterSelecting':\n case 'selecting':\n case 'pendingSingleLineUnselect': {\n if ('pointerId' in this.pointerSession) {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n }\n this.selectionAnchor = undefined;\n this.clearProposedSelection();\n this.clearPendingSingleLineState();\n this.clearPointerSession();\n this.detachDocumentPointerListeners();\n }\n }\n };\n\n private clearHoveredLine() {\n if (this.hoveredLine == null) {\n return;\n }\n this.hoveredLine.lineElement.removeAttribute('data-hovered');\n this.hoveredLine.numberElement.removeAttribute('data-hovered');\n this.hoveredLine = undefined;\n }\n\n private setHoveredLine(hoveredLine: EventBaseProps<TMode>) {\n const { lineHoverHighlight = 'disabled' } = this.options;\n if (this.hoveredLine != null) {\n this.clearHoveredLine();\n }\n this.hoveredLine = hoveredLine;\n if (lineHoverHighlight !== 'disabled') {\n if (lineHoverHighlight === 'both' || lineHoverHighlight === 'line') {\n this.hoveredLine.lineElement.setAttribute('data-hovered', '');\n }\n if (lineHoverHighlight === 'both' || lineHoverHighlight === 'number') {\n this.hoveredLine.numberElement.setAttribute('data-hovered', '');\n }\n }\n }\n\n private clearHoveredToken() {\n if (this.hoveredToken == null) {\n return;\n }\n this.hoveredToken = undefined;\n }\n\n private setHoveredToken(hoveredToken: OnTokenEventProps<TMode>) {\n if (this.hoveredToken != null) {\n this.clearHoveredToken();\n }\n this.hoveredToken = hoveredToken;\n }\n\n private ensureGutterUtilityNode(useCustomGutterUtility: boolean): void {\n if (this.gutterUtilityContainer == null) {\n this.gutterUtilityContainer = document.createElement('div');\n this.gutterUtilityContainer.setAttribute('data-gutter-utility-slot', '');\n }\n if (useCustomGutterUtility) {\n if (this.gutterUtilityButton != null) {\n this.gutterUtilityButton.remove();\n this.gutterUtilityButton = undefined;\n }\n if (this.gutterUtilitySlot == null) {\n this.gutterUtilitySlot = document.createElement('slot');\n this.gutterUtilitySlot.name = 'gutter-utility-slot';\n }\n if (this.gutterUtilitySlot.parentNode !== this.gutterUtilityContainer) {\n this.gutterUtilityContainer.replaceChildren(this.gutterUtilitySlot);\n }\n } else {\n this.gutterUtilitySlot?.remove();\n this.gutterUtilitySlot = undefined;\n if (this.gutterUtilityButton == null) {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = toHtml(createGutterUtilityElement());\n const utilityButton = tempDiv.firstElementChild;\n if (!(utilityButton instanceof HTMLButtonElement)) {\n throw new Error(\n 'InteractionManager.ensureGutterUtilityNode: Node element should be a button'\n );\n }\n utilityButton.remove();\n this.gutterUtilityButton = utilityButton;\n }\n if (this.gutterUtilityButton.parentNode !== this.gutterUtilityContainer) {\n this.gutterUtilityContainer.replaceChildren(this.gutterUtilityButton);\n }\n }\n }\n\n private revealUtilityFromGutterPath(path: (EventTarget | undefined)[]): void {\n if (this.placeUtilityFromSelection()) {\n return;\n }\n const target = this.resolvePointerTarget(path);\n if (isLinePointerTarget(target) && target.numberColumn) {\n this.showUtilityOnLine(this.toEventBaseProps(target));\n }\n }\n\n // The gutter utility follows the active selection first because a selected\n // range is more stable than transient hover/touch state. Without a\n // selection, desktop hover and mobile tap reveal can still place it on a\n // single row.\n private placeUtility(): void {\n if (this.placeUtilityFromSelection()) {\n return;\n }\n if (this.hoveredLine != null) {\n this.showUtilityOnLine(this.hoveredLine);\n return;\n }\n this.hideUtility();\n }\n\n private placeUtilityFromSelection(): boolean {\n const endpoints = this.currentSelectionEnds();\n if (endpoints == null) {\n return false;\n }\n const target = this.targetForSelectionPoint(endpoints.bottom);\n if (target == null) {\n this.hideUtility();\n } else {\n this.showUtilityOnLine(this.toEventBaseProps(target));\n }\n return true;\n }\n\n private showUtilityOnLine(line: EventBaseProps<TMode>): void {\n if (this.gutterUtilityContainer == null) {\n return;\n }\n this.gutterUtilityLine = line;\n line.numberElement.appendChild(this.gutterUtilityContainer);\n }\n\n private hideUtility(): void {\n this.gutterUtilityContainer?.remove();\n this.gutterUtilityLine = undefined;\n }\n\n // Selection ranges preserve drag direction, so compare rendered row indexes to\n // find the visually top-most and bottom-most endpoints.\n private currentSelectionEnds(): SelectionEnds | undefined {\n const range = this.getCurrentSelectionRange();\n return range == null ? undefined : this.selectionEnds(range);\n }\n\n private selectionEnds(range: SelectedLineRange): SelectionEnds | undefined {\n const start: SelectionPoint = {\n lineNumber: range.start,\n side: range.side,\n };\n const end: SelectionPoint = {\n lineNumber: range.end,\n side: range.endSide ?? range.side,\n };\n const startIndex = this.selectionPointRowIndex(start);\n const endIndex = this.selectionPointRowIndex(end);\n if (startIndex == null || endIndex == null) {\n return undefined;\n }\n return startIndex > endIndex\n ? { top: end, bottom: start }\n : { top: start, bottom: end };\n }\n\n private selectionPointRowIndex(point: SelectionPoint): number | undefined {\n const indexes = this.getLineIndex(point.lineNumber, point.side);\n if (indexes == null) {\n return undefined;\n }\n return this.isSplitDiff() ? indexes[1] : indexes[0];\n }\n\n private targetForSelectionPoint(\n point: SelectionPoint\n ): LinePointerTarget<TMode> | undefined {\n if (this.pre == null) {\n return undefined;\n }\n const indexes = this.getLineIndex(point.lineNumber, point.side);\n if (indexes == null) {\n return undefined;\n }\n const lineIndex =\n this.mode === 'diff' ? `${indexes[0]},${indexes[1]}` : `${indexes[0]}`;\n // Rebuild the real gutter-row target from the selection point so the\n // utility can anchor to the visible row even when the point came from\n // controlled state rather than a pointer event.\n const candidates = this.pre.querySelectorAll(\n `[data-column-number=\"${point.lineNumber}\"][data-line-index=\"${lineIndex}\"]`\n );\n for (const element of candidates) {\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n const target = this.resolvePointerTarget(getElementPath(element));\n if (!isLinePointerTarget(target)) {\n continue;\n }\n if (\n this.mode === 'diff' &&\n point.side != null &&\n target.side !== point.side\n ) {\n continue;\n }\n return target;\n }\n return undefined;\n }\n\n private attachDocumentPointerListeners(): void {\n if (this.hasDocumentPointerListeners) {\n return;\n }\n document.addEventListener('pointermove', this.handleDocumentPointerMove);\n document.addEventListener('pointerup', this.handleDocumentPointerUp);\n document.addEventListener(\n 'pointercancel',\n this.handleDocumentPointerCancel\n );\n this.hasDocumentPointerListeners = true;\n }\n\n private detachDocumentPointerListeners(): void {\n if (!this.hasDocumentPointerListeners) {\n return;\n }\n document.removeEventListener('pointermove', this.handleDocumentPointerMove);\n document.removeEventListener('pointerup', this.handleDocumentPointerUp);\n document.removeEventListener(\n 'pointercancel',\n this.handleDocumentPointerCancel\n );\n this.hasDocumentPointerListeners = false;\n }\n\n private clearPointerSession(): void {\n this.pointerSession = { mode: 'idle' };\n }\n\n private clearPendingSingleLineState(): void {\n if (this.pointerSession.mode === 'pendingSingleLineUnselect') {\n this.pointerSession = { mode: 'idle' };\n }\n }\n\n private selectionInfoFromPath(\n path: (EventTarget | undefined)[],\n requireNumberColumn: boolean\n ): SelectionInfo | undefined {\n const target = this.resolvePointerTarget(path);\n if (!isLinePointerTarget(target)) {\n return undefined;\n }\n if (requireNumberColumn && !target.numberColumn) {\n return undefined;\n }\n if (target.splitLineIndex == null) {\n return undefined;\n }\n\n return {\n lineIndex: target.splitLineIndex,\n lineNumber: target.lineNumber,\n eventSide: this.mode === 'diff' ? target.side : undefined,\n };\n }\n\n private resolveSelectionInfo(\n event: PointerEvent,\n options: SelectionInfoOptions\n ): SelectionInfo | undefined {\n const path = this.resolveSelectionPath(event, options);\n return path != null\n ? this.selectionInfoFromPath(path, options.requireNumberColumn)\n : undefined;\n }\n\n private selectionPointFromPath(\n path: (EventTarget | undefined)[]\n ): SelectionPoint | undefined {\n const target = this.resolvePointerTarget(path);\n if (!isLinePointerTarget(target)) {\n return undefined;\n }\n return {\n lineNumber: target.lineNumber,\n side: this.mode === 'diff' ? target.side : undefined,\n };\n }\n\n private resolveSelectionPoint(\n event: PointerEvent,\n options: SelectionHitOptions\n ): SelectionPoint | undefined {\n const path = this.resolveSelectionPath(event, options);\n return path != null ? this.selectionPointFromPath(path) : undefined;\n }\n\n private resolveSelectionPath(\n event: PointerEvent,\n options: SelectionHitOptions\n ): (EventTarget | undefined)[] | undefined {\n const excludeUtility = options.excludeUtility !== false;\n switch (options.source) {\n case 'event-path':\n return this.pathFromEventPath(event.composedPath(), excludeUtility);\n case 'coordinates-first': {\n // Touch pointers can keep dispatching move/up events to the element\n // where the drag began. Prefer the row currently under the finger,\n // then fall back only when coordinate hit-testing is unavailable.\n const coordinatePath = this.pathFromCoordinates(event, excludeUtility);\n if (coordinatePath !== undefined) {\n return coordinatePath ?? undefined;\n }\n return this.pathFromEventPath(event.composedPath(), excludeUtility);\n }\n }\n }\n\n private pathFromCoordinates(\n event: PointerEvent,\n excludeUtility: boolean\n ): (EventTarget | undefined)[] | null | undefined {\n const coordinateTarget = this.hitTest(event);\n if (coordinateTarget === undefined) {\n return undefined;\n }\n if (coordinateTarget === null) {\n return null;\n }\n // A coordinate hit can be a token span, line-number span, utility overlay,\n // or separator. Normalize valid descendants back to their row; invalid\n // hits intentionally return null so the last selected row stays sticky.\n return this.pathFromElement(coordinateTarget, excludeUtility) ?? null;\n }\n\n private pathFromEventPath(\n path: (EventTarget | undefined)[],\n excludeUtility: boolean\n ): (EventTarget | undefined)[] | undefined {\n if (excludeUtility && isGutterUtilityPath(path)) {\n return undefined;\n }\n for (const element of path) {\n if (element instanceof Element) {\n return this.pathFromElement(element, excludeUtility);\n }\n }\n return undefined;\n }\n\n private pathFromElement(\n element: Element,\n excludeUtility: boolean\n ): (EventTarget | undefined)[] | undefined {\n const path = getElementPath(element);\n if (excludeUtility && isGutterUtilityPath(path)) {\n return undefined;\n }\n // Selection is row-based, not child-element-based. Lateral movement over\n // tokens, annotations, or line-number text should still update to the\n // nearest content or gutter row; anything else is ignored by returning\n // undefined.\n const row = closestSelectableRow(element);\n if (row != null) {\n return getElementPath(row);\n }\n return this.pathFromAnnotationSlot(element);\n }\n\n private pathFromAnnotationSlot(\n element: Element\n ): (EventTarget | undefined)[] | undefined {\n const point = selectionPointFromAnnotationSlotName(\n getAnnotationSlotName(element)\n );\n if (point == null) {\n return undefined;\n }\n const target = this.targetForSelectionPoint(point);\n return target != null ? getElementPath(target.lineElement) : undefined;\n }\n\n private hitTest(event: PointerEvent): Element | null | undefined {\n // Return undefined when coordinate hit-testing cannot run at all, which\n // allows callers to fall back to the event path for tests and older DOMs.\n // Return null when hit-testing ran but found no element, so active drags\n // keep their previous endpoint instead of using a stale captured target.\n if (!Number.isFinite(event.clientX) || !Number.isFinite(event.clientY)) {\n return undefined;\n }\n const root = this.pre?.getRootNode();\n const elementFromPointRoot = hasElementFromPoint(root)\n ? root\n : hasElementFromPoint(document)\n ? document\n : undefined;\n if (elementFromPointRoot == null) {\n return undefined;\n }\n const element = elementFromPointRoot.elementFromPoint(\n event.clientX,\n event.clientY\n );\n return element;\n }\n\n private getLineIndex(\n lineNumber: number,\n side?: SelectionSide\n ): [number, number] | undefined {\n const { getLineIndex } = this.options;\n return getLineIndex != null\n ? getLineIndex(lineNumber, side)\n : [lineNumber - 1, lineNumber - 1];\n }\n\n private getCurrentSelectionRange(): SelectedLineRange | null {\n return this.proposedSelectedRange !== undefined\n ? this.proposedSelectedRange\n : this.selectedRange;\n }\n\n private clearProposedSelection(): void {\n this.proposedSelectedRange = undefined;\n }\n\n private updateSelection(\n currentLine: number | null,\n side?: SelectionSide,\n emitChange = true\n ): void {\n const previousRange = this.getCurrentSelectionRange();\n let nextRange: SelectedLineRange | null;\n if (currentLine == null) {\n nextRange = null;\n } else {\n const anchorSide = this.selectionAnchor?.side ?? side;\n const anchorLine = this.selectionAnchor?.lineNumber ?? currentLine;\n nextRange = this.buildSelectionRange(\n anchorLine,\n currentLine,\n anchorSide,\n side\n );\n }\n if (\n areSelectionsEqual(previousRange ?? undefined, nextRange ?? undefined)\n ) {\n return;\n }\n if (this.options.controlledSelection === true) {\n this.proposedSelectedRange = nextRange;\n } else {\n this.selectedRange = nextRange;\n this.queuedSelectionRender ??= requestAnimationFrame(\n this.renderSelection\n );\n }\n this.placeUtility();\n if (emitChange) {\n this.notifySelectionChangeDelta();\n }\n }\n\n private getIndexesFromSelection(\n selectedRange: SelectedLineRange,\n split: boolean\n ): { start: number; end: number } | undefined {\n if (this.pre == null) {\n return undefined;\n }\n const startIndexes = this.getLineIndex(\n selectedRange.start,\n selectedRange.side\n );\n const finalIndexes = this.getLineIndex(\n selectedRange.end,\n selectedRange.endSide ?? selectedRange.side\n );\n\n return startIndexes != null && finalIndexes != null\n ? {\n start: split ? startIndexes[1] : startIndexes[0],\n end: split ? finalIndexes[1] : finalIndexes[0],\n }\n : undefined;\n }\n\n private renderSelection = (): void => {\n if (this.queuedSelectionRender != null) {\n cancelAnimationFrame(this.queuedSelectionRender);\n this.queuedSelectionRender = undefined;\n }\n if (\n this.pre == null ||\n this.renderedSelectionRange === this.selectedRange\n ) {\n return;\n }\n\n const allSelected = this.pre.querySelectorAll('[data-selected-line]');\n for (const element of allSelected) {\n element.removeAttribute('data-selected-line');\n }\n\n this.renderedSelectionRange = this.selectedRange;\n if (this.selectedRange == null) {\n return;\n }\n\n const { children: codeElements } = this.pre;\n if (codeElements.length === 0) {\n return;\n }\n if (codeElements.length > 2) {\n console.error(codeElements);\n throw new Error(\n 'InteractionManager.renderSelection: Somehow there are more than 2 code elements...'\n );\n }\n const split = this.pre.getAttribute('data-diff-type') === 'split';\n const rowRange = this.getIndexesFromSelection(this.selectedRange, split);\n if (rowRange == null) {\n console.error({ rowRange, selectedRange: this.selectedRange });\n throw new Error('InteractionManager.renderSelection: No valid rowRange');\n }\n const isSingle = rowRange.start === rowRange.end;\n const first = Math.min(rowRange.start, rowRange.end);\n const last = Math.max(rowRange.start, rowRange.end);\n for (const code of codeElements) {\n const [gutter, content] = code.children;\n const len = content.children.length;\n if (len !== gutter.children.length) {\n throw new Error(\n 'InteractionManager.renderSelection: gutter and content children dont match, something is wrong'\n );\n }\n for (let i = 0; i < len; i++) {\n const contentElement = content.children[i];\n const gutterElement = gutter.children[i];\n if (\n !(contentElement instanceof HTMLElement) ||\n !(gutterElement instanceof HTMLElement)\n ) {\n continue;\n }\n\n const lineIndex = this.parseLineIndex(contentElement, split);\n if ((lineIndex ?? 0) > last) {\n break;\n }\n if (lineIndex == null || lineIndex < first) {\n continue;\n }\n let attributeValue = isSingle\n ? 'single'\n : lineIndex === first\n ? 'first'\n : lineIndex === last\n ? 'last'\n : '';\n contentElement.setAttribute('data-selected-line', attributeValue);\n gutterElement.setAttribute('data-selected-line', attributeValue);\n if (\n gutterElement.nextSibling instanceof HTMLElement &&\n contentElement.nextSibling instanceof HTMLElement &&\n (contentElement.nextSibling.hasAttribute('data-line-annotation') ||\n contentElement.nextSibling.hasAttribute(\n 'data-merge-conflict-actions'\n ))\n ) {\n if (isSingle) {\n attributeValue = 'last';\n contentElement.setAttribute('data-selected-line', 'first');\n } else if (lineIndex === first) {\n attributeValue = '';\n } else if (lineIndex === last) {\n contentElement.setAttribute('data-selected-line', '');\n }\n contentElement.nextSibling.setAttribute(\n 'data-selected-line',\n attributeValue\n );\n gutterElement.nextSibling.setAttribute(\n 'data-selected-line',\n attributeValue\n );\n }\n }\n }\n };\n\n private notifySelectionCommitted(): void {\n this.options.onLineSelected?.(this.getCurrentSelectionRange() ?? null);\n }\n\n private notifySelectionChangeDelta(): void {\n this.options.onLineSelectionChange?.(\n this.getCurrentSelectionRange() ?? null\n );\n }\n\n private notifySelectionStart(range: SelectedLineRange | null): void {\n this.options.onLineSelectionStart?.(range);\n }\n\n private notifySelectionEnd(range: SelectedLineRange | null): void {\n this.options.onLineSelectionEnd?.(range);\n }\n\n private toEventBaseProps(\n target: HoverableLinePointerTarget<TMode>\n ): EventBaseProps<TMode> {\n if (this.mode === 'file') {\n return {\n type: 'line',\n lineElement: target.lineElement,\n lineNumber: target.lineNumber,\n numberColumn: target.numberColumn,\n numberElement: target.numberElement,\n } as EventBaseProps<TMode>;\n }\n\n return {\n type: 'diff-line',\n annotationSide: target.side as AnnotationSide,\n lineType: target.lineType,\n lineElement: target.lineElement,\n numberElement: target.numberElement,\n lineNumber: target.lineNumber,\n numberColumn: target.numberColumn,\n } as EventBaseProps<TMode>;\n }\n\n private toTokenEventBaseProps({\n lineCharEnd,\n lineCharStart,\n lineNumber,\n side,\n tokenElement,\n tokenText,\n }: TokenPointerTarget<TMode>): OnTokenEventProps<TMode> {\n if (this.mode === 'file') {\n return {\n type: 'token',\n lineCharEnd,\n lineCharStart,\n lineNumber,\n tokenElement,\n tokenText,\n } as OnTokenEventProps<TMode>;\n }\n\n return {\n type: 'token',\n lineCharEnd,\n lineCharStart,\n lineNumber,\n side,\n tokenElement,\n tokenText,\n } as OnTokenEventProps<TMode>;\n }\n\n private buildSelectedLineRange(\n anchor: SelectionPoint,\n current: SelectionPoint\n ): SelectedLineRange {\n return this.buildSelectionRange(\n anchor.lineNumber,\n current.lineNumber,\n anchor.side,\n current.side\n );\n }\n\n private buildSelectionRange(\n start: number,\n end: number,\n side?: SelectionSide,\n endSide?: SelectionSide\n ): SelectedLineRange {\n return {\n start,\n end,\n ...(side != null ? { side } : {}),\n ...(side !== endSide && endSide != null ? { endSide } : {}),\n };\n }\n\n private resolvePointerTarget(\n path: (EventTarget | undefined)[]\n ): ResolvedPointerTarget<TMode> | undefined {\n let numberColumn = false;\n let lineType: LineTypes | undefined;\n let codeElement: HTMLElement | undefined;\n let lineElement: HTMLElement | undefined;\n let lineIndexValue: string | undefined;\n let numberElement: HTMLElement | undefined;\n let tokenElement: HTMLElement | undefined;\n let tokenInfo: TokenCache | undefined;\n let expandInfo: ExpandCache | undefined;\n let lineNumber: number | undefined;\n let mergeConflictActionTarget: MergeConflictActionTarget | undefined;\n\n for (const element of path) {\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n\n if (\n mergeConflictActionTarget == null &&\n element.hasAttribute('data-merge-conflict-action')\n ) {\n const resolutionValue =\n element.getAttribute('data-merge-conflict-action') ?? undefined;\n const conflictIndexValue =\n element.getAttribute('data-merge-conflict-conflict-index') ??\n undefined;\n const conflictIndex =\n conflictIndexValue != null\n ? Number.parseInt(conflictIndexValue, 10)\n : Number.NaN;\n if (\n isMergeConflictResolution(resolutionValue) &&\n Number.isFinite(conflictIndex)\n ) {\n mergeConflictActionTarget = {\n kind: 'merge-conflict-action',\n resolution: resolutionValue,\n conflictIndex,\n };\n }\n }\n\n if (tokenElement == null && element.hasAttribute('data-char')) {\n tokenElement = element;\n const startAttr = element.getAttribute('data-char');\n\n if (startAttr != null) {\n const lineCharStart = Number.parseInt(startAttr, 10);\n if (!Number.isNaN(lineCharStart)) {\n const tokenText = element.textContent ?? '';\n const lineCharEnd = lineCharStart + tokenText.length;\n if (\n tokenText.trim() !== '' ||\n this.options.enableTokenInteractionsOnWhitespace === true\n ) {\n tokenInfo = {\n tokenElement,\n lineCharStart,\n lineCharEnd,\n tokenText,\n };\n }\n continue;\n }\n }\n }\n\n const columnNumber =\n numberElement == null\n ? (element.getAttribute('data-column-number') ?? undefined)\n : undefined;\n if (columnNumber != null) {\n numberElement = element;\n lineNumber = Number.parseInt(columnNumber, 10);\n numberColumn = true;\n lineType = getLineTypeFromElement(element);\n lineIndexValue = element.getAttribute('data-line-index') ?? undefined;\n continue;\n }\n\n const lineAttr =\n lineElement == null\n ? (element.getAttribute('data-line') ?? undefined)\n : undefined;\n if (lineAttr != null) {\n lineElement = element;\n lineNumber = Number.parseInt(lineAttr, 10);\n lineType = getLineTypeFromElement(element);\n lineIndexValue = element.getAttribute('data-line-index') ?? undefined;\n continue;\n }\n\n if (\n expandInfo == null &&\n (element.hasAttribute('data-expand-button') ||\n element.hasAttribute('data-unmodified-lines'))\n ) {\n expandInfo = {\n hunkIndex: undefined,\n direction: (() => {\n if (element.hasAttribute('data-expand-up')) {\n return 'up';\n }\n if (element.hasAttribute('data-expand-down')) {\n return 'down';\n }\n return 'both';\n })(),\n all: element.hasAttribute('data-expand-all-button'),\n };\n continue;\n }\n\n const expandIndexValue =\n expandInfo != null\n ? (element.getAttribute('data-expand-index') ?? undefined)\n : undefined;\n if (expandInfo != null && expandIndexValue != null) {\n const expandIndex = Number.parseInt(expandIndexValue, 10);\n if (!Number.isNaN(expandIndex)) {\n expandInfo.hunkIndex = expandIndex;\n }\n continue;\n }\n\n if (codeElement == null && element.hasAttribute('data-code')) {\n codeElement = element;\n break;\n }\n }\n\n if (mergeConflictActionTarget != null) {\n return mergeConflictActionTarget as ResolvedPointerTarget<TMode>;\n }\n\n if (expandInfo?.hunkIndex != null) {\n return {\n type: 'line-info',\n hunkIndex: expandInfo.hunkIndex,\n direction: expandInfo.direction,\n all: expandInfo.all,\n } as ResolvedPointerTarget<TMode>;\n }\n\n lineElement ??=\n lineIndexValue != null\n ? queryHTMLElement(\n codeElement,\n `[data-line][data-line-index=\"${lineIndexValue}\"]`\n )\n : undefined;\n numberElement ??=\n lineIndexValue != null\n ? queryHTMLElement(\n codeElement,\n `[data-column-number][data-line-index=\"${lineIndexValue}\"]`\n )\n : undefined;\n\n if (\n codeElement == null ||\n lineElement == null ||\n numberElement == null ||\n lineType == null ||\n lineNumber == null ||\n Number.isNaN(lineNumber)\n ) {\n return undefined;\n }\n\n const splitLineIndex = this.parseLineIndex(lineElement, this.isSplitDiff());\n\n if (tokenInfo != null) {\n if (this.mode === 'file') {\n return {\n kind: 'token',\n lineType,\n lineElement,\n lineNumber,\n numberColumn,\n numberElement,\n side: undefined,\n splitLineIndex,\n ...tokenInfo,\n } as ResolvedPointerTarget<TMode>;\n }\n\n return {\n kind: 'token',\n lineType,\n lineElement,\n lineNumber,\n numberColumn,\n numberElement,\n side: getAnnotationSide(lineType, codeElement),\n splitLineIndex,\n ...tokenInfo,\n } as ResolvedPointerTarget<TMode>;\n }\n\n // Otherwise return line target\n if (this.mode === 'file') {\n return {\n kind: 'line',\n lineType,\n lineElement,\n lineNumber,\n numberColumn,\n numberElement,\n side: undefined,\n splitLineIndex,\n } as ResolvedPointerTarget<TMode>;\n }\n\n return {\n kind: 'line',\n lineType,\n lineElement,\n lineNumber,\n numberColumn,\n numberElement,\n side: getAnnotationSide(lineType, codeElement),\n splitLineIndex,\n } as ResolvedPointerTarget<TMode>;\n }\n\n private isSplitDiff(): boolean {\n return this.pre?.getAttribute('data-diff-type') === 'split';\n }\n\n private parseLineIndex(\n element: HTMLElement,\n split: boolean\n ): number | undefined {\n const lineIndexes = (element.getAttribute('data-line-index') ?? '')\n .split(',')\n .map((value) => Number.parseInt(value, 10))\n .filter((value) => !Number.isNaN(value));\n\n if (split && lineIndexes.length === 2) {\n return lineIndexes[1];\n }\n if (!split) {\n return lineIndexes[0];\n }\n return undefined;\n }\n}\n\ntype InteractionPluckOptions<TMode extends InteractionManagerMode> =\n InteractionManagerBaseOptions<TMode> & {\n renderGutterUtility?(\n getHoveredRow: () => GetHoveredLineResult<TMode> | undefined\n ): HTMLElement | null | undefined;\n };\n\nexport function pluckInteractionOptions<TMode extends InteractionManagerMode>(\n {\n enableTokenInteractionsOnWhitespace,\n enableGutterUtility,\n lineHoverHighlight,\n onGutterUtilityClick,\n onLineClick,\n onLineEnter,\n onLineLeave,\n onLineNumberClick,\n onTokenClick,\n onTokenEnter,\n onTokenLeave,\n renderGutterUtility,\n __debugPointerEvents,\n enableLineSelection,\n controlledSelection,\n onLineSelected,\n onLineSelectionStart,\n onLineSelectionChange,\n onLineSelectionEnd,\n }: InteractionPluckOptions<TMode>,\n onHunkExpand?: (\n hunkIndex: number,\n direction: ExpansionDirections,\n expansionLineCountOverride?: number\n ) => unknown,\n getLineIndex?: GetLineIndexUtility,\n onMergeConflictActionClick?: (target: MergeConflictActionTarget) => void\n): InteractionManagerOptions<TMode> {\n return {\n enableTokenInteractionsOnWhitespace,\n enableGutterUtility: resolveEnableGutterUtilityOption({\n enableGutterUtility,\n renderGutterUtility,\n onGutterUtilityClick,\n }),\n usesCustomGutterUtility: renderGutterUtility != null,\n lineHoverHighlight,\n\n onGutterUtilityClick,\n onHunkExpand,\n onMergeConflictActionClick,\n onLineClick,\n onLineEnter,\n onLineLeave,\n onLineNumberClick,\n onTokenClick,\n onTokenEnter,\n onTokenLeave,\n __debugPointerEvents,\n\n enableLineSelection,\n controlledSelection,\n onLineSelected,\n onLineSelectionStart,\n onLineSelectionChange,\n onLineSelectionEnd,\n\n getLineIndex,\n };\n}\n\nfunction resolveEnableGutterUtilityOption<\n TMode extends InteractionManagerMode,\n>({\n enableGutterUtility,\n renderGutterUtility,\n onGutterUtilityClick,\n}: Pick<\n InteractionPluckOptions<TMode>,\n 'enableGutterUtility' | 'renderGutterUtility' | 'onGutterUtilityClick'\n>): boolean {\n if (onGutterUtilityClick != null && renderGutterUtility != null) {\n throw new Error(\n \"Cannot use both 'onGutterUtilityClick' and 'renderGutterUtility'. Use only one gutter utility API.\"\n );\n }\n return enableGutterUtility ?? false;\n}\n\nfunction isLinePointerTarget<TMode extends InteractionManagerMode>(\n target: ResolvedPointerTarget<TMode> | undefined\n): target is LinePointerTarget<TMode> {\n return target != null && 'kind' in target && target.kind === 'line';\n}\n\nfunction isTokenPointerTarget<TMode extends InteractionManagerMode>(\n target: ResolvedPointerTarget<TMode> | undefined\n): target is TokenPointerTarget<TMode> {\n return target != null && 'kind' in target && target.kind === 'token';\n}\n\nfunction isHoverableLinePointerTarget<TMode extends InteractionManagerMode>(\n target: ResolvedPointerTarget<TMode> | undefined\n): target is HoverableLinePointerTarget<TMode> {\n return isLinePointerTarget(target) || isTokenPointerTarget(target);\n}\n\nfunction isExpandoPointerTarget<TMode extends InteractionManagerMode>(\n target: ResolvedPointerTarget<TMode>\n): target is ExpandoEventProps {\n return 'type' in target && target.type === 'line-info';\n}\n\nfunction isMergeConflictActionPointerTarget<\n TMode extends InteractionManagerMode,\n>(target: ResolvedPointerTarget<TMode>): target is MergeConflictActionTarget {\n return 'kind' in target && target.kind === 'merge-conflict-action';\n}\n\nfunction isMergeConflictResolution(\n value: string | undefined\n): value is MergeConflictResolution {\n return value === 'current' || value === 'incoming' || value === 'both';\n}\n\nfunction queryHTMLElement(\n parent: HTMLElement | undefined,\n query: string\n): HTMLElement | undefined {\n const element = parent?.querySelector(query);\n return element instanceof HTMLElement ? element : undefined;\n}\n\nfunction getElementPath(element: Node): EventTarget[] {\n const path: EventTarget[] = [];\n let current: Node | null = element;\n while (current != null) {\n path.push(current);\n current = current.parentNode;\n }\n return path;\n}\n\n// Pointer hits often land on text/token descendants. This normalizes those\n// hits back to the row elements InteractionManager knows how to resolve.\nfunction closestSelectableRow(element: Element): HTMLElement | undefined {\n const row = element.closest('[data-line], [data-column-number]');\n if (row instanceof HTMLElement) {\n return row;\n }\n\n const annotationRow = element.closest(\n '[data-line-annotation], [data-gutter-buffer=\"annotation\"]'\n );\n if (!(annotationRow instanceof HTMLElement)) {\n return undefined;\n }\n\n const previousRow = annotationRow.previousElementSibling;\n return previousRow instanceof HTMLElement &&\n (previousRow.hasAttribute('data-line') ||\n previousRow.hasAttribute('data-column-number'))\n ? previousRow\n : undefined;\n}\n\nfunction getAnnotationSlotName(element: Element): string | undefined {\n const slottedElement = element.closest('[slot^=\"annotation-\"]');\n if (slottedElement instanceof HTMLElement) {\n return slottedElement.getAttribute('slot') ?? undefined;\n }\n\n if (element instanceof HTMLElement) {\n const slotName = element.getAttribute('name') ?? undefined;\n return slotName != null && slotName.startsWith('annotation-')\n ? slotName\n : undefined;\n }\n\n return undefined;\n}\n\nfunction selectionPointFromAnnotationSlotName(\n slotName: string | undefined\n): SelectionPoint | undefined {\n if (slotName == null) {\n return undefined;\n }\n\n const match = /^annotation-(?:(additions|deletions)-)?(\\d+)$/.exec(slotName);\n if (match == null) {\n return undefined;\n }\n\n const lineNumber = Number.parseInt(match[2], 10);\n if (!Number.isFinite(lineNumber) || lineNumber <= 0) {\n return undefined;\n }\n\n const side = match[1] as SelectionSide | undefined;\n return { lineNumber, side };\n}\n\ninterface ElementFromPointRoot {\n elementFromPoint(x: number, y: number): Element | null;\n}\n\nfunction hasElementFromPoint(\n value: Node | undefined\n): value is Node & ElementFromPointRoot {\n return (\n value != null &&\n typeof (value as Partial<ElementFromPointRoot>).elementFromPoint ===\n 'function'\n );\n}\n\nfunction getAnnotationSide(\n lineType: LineTypes,\n codeElement: HTMLElement\n): AnnotationSide {\n switch (lineType) {\n case 'change-deletion':\n return 'deletions';\n case 'change-addition':\n return 'additions';\n default:\n return codeElement.hasAttribute('data-deletions')\n ? 'deletions'\n : 'additions';\n }\n}\n\nfunction getLineTypeFromElement(element: HTMLElement): LineTypes | undefined {\n const lineType = element.getAttribute('data-line-type');\n if (lineType == null) {\n return undefined;\n }\n switch (lineType) {\n case 'change-deletion':\n case 'change-addition':\n case 'context':\n case 'context-expanded':\n return lineType;\n default:\n return undefined;\n }\n}\n\nfunction isGutterUtilityPath(path: (EventTarget | undefined)[]): boolean {\n for (const element of path) {\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n if (\n element.hasAttribute('data-utility-button') ||\n element.hasAttribute('data-gutter-utility-slot') ||\n // Custom React/DOM utilities are slotted into the same utility surface,\n // so treat both the assigned content and the slot node itself as\n // utility hits.\n element.getAttribute('slot') === 'gutter-utility-slot' ||\n element.getAttribute('name') === 'gutter-utility-slot'\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction debugLogIfEnabled(\n debugLogType: LogTypes | undefined = 'none',\n logIfType: 'move' | 'click',\n ...args: unknown[]\n) {\n switch (debugLogType) {\n case 'none':\n return;\n case 'both':\n break;\n case 'click':\n if (logIfType !== 'click') {\n return;\n }\n break;\n case 'move':\n if (logIfType !== 'move') {\n return;\n }\n break;\n }\n console.log(...args);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"InteractionManager.js","names":[],"sources":["../../src/managers/InteractionManager.ts"],"sourcesContent":["import { toHtml } from 'hast-util-to-html';\n\nimport type {\n AnnotationSide,\n DiffLineEventBaseProps,\n DiffTokenEventBaseProps,\n ExpansionDirections,\n LineEventBaseProps,\n LineTypes,\n MergeConflictResolution,\n SelectedLineRange,\n SelectionPoint,\n SelectionSide,\n TokenEventBase,\n} from '../types';\nimport { areSelectionPointsEqual } from '../utils/areSelectionPointsEqual';\nimport { areSelectionsEqual } from '../utils/areSelectionsEqual';\nimport { createGutterUtilityElement } from '../utils/createGutterUtilityElement';\nimport { isGutterUtilityPath } from '../utils/isGutterUtilityPath';\nimport { dequeueRender, queueRender } from './UniversalRenderingManager';\n\ninterface TokenCache {\n tokenElement: HTMLElement;\n lineCharStart: number;\n lineCharEnd: number;\n tokenText: string;\n}\n\ninterface ExpandCache {\n hunkIndex: number | undefined;\n direction: ExpansionDirections;\n all: boolean;\n}\n\nexport type LogTypes = 'click' | 'move' | 'both' | 'none';\n\nexport type InteractionManagerMode = 'file' | 'diff';\n\nexport interface OnLineClickProps extends LineEventBaseProps {\n event: PointerEvent;\n}\n\nexport interface OnLineEnterLeaveProps extends LineEventBaseProps {\n event: PointerEvent;\n}\n\nexport interface OnDiffLineClickProps extends DiffLineEventBaseProps {\n event: PointerEvent;\n}\n\nexport interface OnDiffLineEnterLeaveProps extends DiffLineEventBaseProps {\n event: PointerEvent;\n}\n\nexport interface SelectionWriteOptions {\n notify?: boolean;\n // Limit the selected-line highlight to one side's column of a split diff.\n // It has no effect on unified or single-file views, whose one code column\n // carries no side attribute.\n activeLineSide?: SelectionSide;\n // Highlight only the gutter line number, not the line background.\n lineNumberOnly?: boolean;\n}\n\ninterface EditorActiveLineWriteOptions {\n lineNumberOnly?: boolean;\n side?: SelectionSide;\n}\n\nexport type GetLineIndexUtility = (\n lineNumber: number,\n side?: SelectionSide\n) => [number, number] | undefined;\n\ntype EventClickProps<TMode extends InteractionManagerMode> =\n TMode extends 'file' ? OnLineClickProps : OnDiffLineClickProps;\n\ntype PointerEventEnterLeaveProps<TMode extends InteractionManagerMode> =\n TMode extends 'file' ? OnLineEnterLeaveProps : OnDiffLineEnterLeaveProps;\n\ntype EventBaseProps<TMode extends InteractionManagerMode> = TMode extends 'file'\n ? LineEventBaseProps\n : DiffLineEventBaseProps;\n\nexport type OnTokenEventProps<TMode extends InteractionManagerMode> =\n TMode extends 'file' ? TokenEventBase : DiffTokenEventBaseProps;\n\ninterface ExpandoEventProps {\n type: 'line-info';\n hunkIndex: number;\n direction: ExpansionDirections;\n all: boolean;\n}\n\nexport type GetHoveredLineResult<TMode extends InteractionManagerMode> =\n TMode extends 'file'\n ? { lineNumber: number }\n : { lineNumber: number; side: AnnotationSide };\n\ninterface SelectionInfo {\n lineNumber: number;\n eventSide: SelectionSide | undefined;\n lineIndex: number;\n}\n\ntype SelectionHitSource = 'event-path' | 'coordinates-first';\n\ninterface SelectionHitOptions {\n source: SelectionHitSource;\n excludeUtility?: boolean;\n}\n\ninterface SelectionInfoOptions extends SelectionHitOptions {\n requireNumberColumn: boolean;\n}\n\ninterface SelectionEnds {\n top: SelectionPoint;\n bottom: SelectionPoint;\n}\n\ninterface LineRenderState {\n range: SelectedLineRange | null;\n highlightSide: SelectionSide | undefined;\n lineNumberOnly: boolean;\n}\n\ninterface SelectionRenderState {\n selectedLines: LineRenderState;\n editorActiveLine: LineRenderState;\n}\n\ninterface LineRenderColumn {\n content: HTMLElement;\n gutter: HTMLElement;\n renderEditorActiveLine: boolean;\n renderSelectedLines: boolean;\n}\n\ninterface ResolvedLineTarget<TMode extends InteractionManagerMode> {\n kind: 'line';\n lineType: LineTypes;\n lineElement: HTMLElement;\n lineNumber: number;\n numberColumn: boolean;\n numberElement: HTMLElement;\n side: TMode extends 'diff' ? AnnotationSide : undefined;\n splitLineIndex: number | undefined;\n}\n\ninterface ResolvedTokenTarget<TMode extends InteractionManagerMode> {\n kind: 'token';\n lineType: LineTypes;\n lineElement: HTMLElement;\n lineNumber: number;\n numberColumn: boolean;\n numberElement: HTMLElement;\n side: TMode extends 'diff' ? AnnotationSide : undefined;\n splitLineIndex: number | undefined;\n tokenElement: HTMLElement;\n tokenText: string;\n lineCharStart: number;\n lineCharEnd: number;\n}\n\nexport interface MergeConflictActionTarget {\n kind: 'merge-conflict-action';\n resolution: MergeConflictResolution;\n conflictIndex: number;\n}\n\ntype ResolvedPointerTarget<TMode extends InteractionManagerMode> =\n | ResolvedLineTarget<TMode>\n | ResolvedTokenTarget<TMode>\n | ExpandoEventProps\n | MergeConflictActionTarget;\n\ntype LinePointerTarget<TMode extends InteractionManagerMode> =\n ResolvedLineTarget<TMode>;\n\ntype TokenPointerTarget<TMode extends InteractionManagerMode> =\n ResolvedTokenTarget<TMode>;\n\ntype HoverableLinePointerTarget<TMode extends InteractionManagerMode> =\n | LinePointerTarget<TMode>\n | TokenPointerTarget<TMode>;\n\ninterface SessionIdle {\n mode: 'idle';\n}\n\ninterface SessionSelecting {\n mode: 'selecting';\n pointerId: number;\n}\n\ninterface SessionPendingSingleLineUnselect {\n mode: 'pendingSingleLineUnselect';\n pointerId: number;\n anchor: SelectionPoint;\n pending: SelectionPoint;\n}\n\ninterface SessionGutterSelecting {\n mode: 'gutterSelecting';\n pointerId: number;\n anchor: SelectionPoint;\n current: SelectionPoint;\n}\n\ntype PointerSession =\n | SessionIdle\n | SessionSelecting\n | SessionPendingSingleLineUnselect\n | SessionGutterSelecting;\n\nexport interface InteractionManagerBaseOptions<\n TMode extends InteractionManagerMode,\n> {\n lineHoverHighlight?: 'disabled' | 'both' | 'number' | 'line';\n enableTokenInteractionsOnWhitespace?: boolean;\n enableGutterUtility?: boolean;\n onGutterUtilityClick?(range: SelectedLineRange): unknown;\n onLineClick?(props: EventClickProps<TMode>): unknown;\n onLineNumberClick?(props: EventClickProps<TMode>): unknown;\n onLineEnter?(props: PointerEventEnterLeaveProps<TMode>): unknown;\n onLineLeave?(props: PointerEventEnterLeaveProps<TMode>): unknown;\n onTokenClick?(props: OnTokenEventProps<TMode>, event: MouseEvent): unknown;\n onTokenEnter?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;\n onTokenLeave?(props: OnTokenEventProps<TMode>, event: PointerEvent): unknown;\n __debugPointerEvents?: LogTypes;\n enableLineSelection?: boolean;\n controlledSelection?: boolean;\n onLineSelected?: (range: SelectedLineRange | null) => void;\n onLineSelectionStart?: (range: SelectedLineRange | null) => void;\n onLineSelectionChange?: (range: SelectedLineRange | null) => void;\n onLineSelectionEnd?: (range: SelectedLineRange | null) => void;\n getLineIndex?: GetLineIndexUtility;\n}\n\nexport interface InteractionManagerOptions<\n TMode extends InteractionManagerMode,\n> extends InteractionManagerBaseOptions<TMode> {\n usesCustomGutterUtility?: boolean;\n onHunkExpand?(\n hunkIndex: number,\n direction: ExpansionDirections,\n expansionLineCountOverride?: number\n ): unknown;\n onMergeConflictActionClick?(target: MergeConflictActionTarget): void;\n}\n\ninterface HandlePointerEventProps {\n eventType: 'click' | 'move';\n event: PointerEvent | MouseEvent;\n}\n\nexport class InteractionManager<TMode extends InteractionManagerMode> {\n private hoveredLine: EventBaseProps<TMode> | undefined;\n private hoveredToken: OnTokenEventProps<TMode> | undefined;\n private pre: HTMLPreElement | undefined;\n\n private gutterUtilityLine: EventBaseProps<TMode> | undefined;\n private gutterUtilityContainer: HTMLDivElement | undefined;\n private gutterUtilityButton: HTMLButtonElement | undefined;\n private gutterUtilitySlot: HTMLSlotElement | undefined;\n\n private interactiveLinesAttr = false;\n private interactiveLineNumbersAttr = false;\n\n private hasPointerListeners = false;\n private hasDocumentPointerListeners = false;\n\n private selectedRange: SelectedLineRange | null = null;\n private selectedRangeHighlightSide: SelectionSide | undefined;\n private selectedRangeLineNumberOnly = false;\n // Editor caret highlights are retained separately so selected lines and the\n // cursor line can render without overwriting each other.\n private editorActiveLine: number | null = null;\n private editorActiveLineSide: SelectionSide | undefined;\n private editorLineNumberOnly = false;\n private proposedSelectedRange: SelectedLineRange | null | undefined;\n private renderedSelectedLinesState: LineRenderState | undefined;\n private renderedEditorActiveLineState: LineRenderState | undefined;\n private selectionAnchor: SelectionPoint | undefined;\n private pointerSession: PointerSession = { mode: 'idle' };\n\n constructor(\n private mode: TMode,\n private options: InteractionManagerOptions<TMode>\n ) {}\n\n setOptions(options: InteractionManagerOptions<TMode>): void {\n this.options = options;\n }\n\n cleanUp(): void {\n this.pre?.removeEventListener('click', this.handlePointerClick);\n this.pre?.removeEventListener('pointerdown', this.handlePointerDown);\n this.pre?.removeEventListener('pointermove', this.handlePointerMove);\n this.pre?.removeEventListener('pointerleave', this.handlePointerLeave);\n this.pre?.removeAttribute('data-interactive-lines');\n this.pre?.removeAttribute('data-interactive-line-numbers');\n this.pre = undefined;\n this.gutterUtilityContainer?.remove();\n this.gutterUtilityLine = undefined;\n this.gutterUtilityContainer = undefined;\n this.gutterUtilityButton = undefined;\n this.gutterUtilitySlot = undefined;\n this.clearHoveredLine();\n this.clearHoveredToken();\n this.detachDocumentPointerListeners();\n this.clearPointerSession();\n dequeueRender(this.renderSelection);\n this.interactiveLinesAttr = false;\n this.interactiveLineNumbersAttr = false;\n this.hasPointerListeners = false;\n this.setSelectionDirty();\n }\n\n setup(pre: HTMLPreElement): void {\n this.setSelectionDirty();\n const { usesCustomGutterUtility = false, enableGutterUtility = false } =\n this.options;\n\n const newContainer = this.pre !== pre;\n if (newContainer) {\n this.cleanUp();\n this.pre = pre;\n }\n\n if (enableGutterUtility) {\n this.ensureGutterUtilityNode(usesCustomGutterUtility);\n } else if (this.gutterUtilityContainer != null) {\n this.gutterUtilityContainer.remove();\n this.gutterUtilityLine = undefined;\n this.gutterUtilityContainer = undefined;\n this.gutterUtilityButton = undefined;\n this.gutterUtilitySlot = undefined;\n if (this.pointerSession.mode === 'gutterSelecting') {\n this.clearPointerSession();\n this.detachDocumentPointerListeners();\n }\n }\n\n this.syncPointerListeners(pre);\n this.updateInteractiveLineAttributes();\n this.renderSelection();\n this.placeUtility();\n }\n\n setSelectionDirty(): void {\n this.renderedSelectedLinesState = undefined;\n this.renderedEditorActiveLineState = undefined;\n }\n\n isSelectionDirty(): boolean {\n return (\n this.renderedSelectedLinesState === undefined ||\n this.renderedEditorActiveLineState === undefined\n );\n }\n\n setSelection(\n range: SelectedLineRange | null,\n options?: SelectionWriteOptions\n ): void {\n const isRangeChange = !(\n range === this.selectedRange ||\n areSelectionsEqual(range ?? undefined, this.selectedRange ?? undefined)\n );\n const lineNumberOnly = options?.lineNumberOnly ?? false;\n const isStyleChange =\n options?.activeLineSide !== this.selectedRangeHighlightSide ||\n lineNumberOnly !== this.selectedRangeLineNumberOnly;\n if (!this.isSelectionDirty() && !isRangeChange && !isStyleChange) {\n return;\n }\n this.proposedSelectedRange = undefined;\n this.selectedRange = range;\n this.selectedRangeHighlightSide = options?.activeLineSide;\n this.selectedRangeLineNumberOnly = lineNumberOnly;\n this.renderSelection();\n this.placeUtility();\n if (isRangeChange && options?.notify !== false) {\n this.notifySelectionCommitted(range);\n }\n }\n\n // Update the editor caret decoration without changing selected lines,\n // callbacks, or gutter utility placement.\n setEditorActiveLine(\n lineNumber: number | null,\n { lineNumberOnly = false, side }: EditorActiveLineWriteOptions = {}\n ): void {\n const isLineChange = lineNumber !== this.editorActiveLine;\n const isStyleChange =\n side !== this.editorActiveLineSide ||\n lineNumberOnly !== this.editorLineNumberOnly;\n if (!this.isSelectionDirty() && !isLineChange && !isStyleChange) {\n return;\n }\n this.editorActiveLine = lineNumber;\n this.editorActiveLineSide = side;\n this.editorLineNumberOnly = lineNumberOnly;\n this.renderSelection();\n }\n\n getSelection(): SelectedLineRange | null {\n return this.selectedRange;\n }\n\n getHoveredLine = (): GetHoveredLineResult<TMode> | undefined => {\n const gutterUtilityLine = this.gutterUtilityLine ?? this.hoveredLine;\n if (gutterUtilityLine != null) {\n if (this.mode === 'diff' && gutterUtilityLine.type === 'diff-line') {\n return {\n lineNumber: gutterUtilityLine.lineNumber,\n side: gutterUtilityLine.annotationSide,\n } as GetHoveredLineResult<TMode>;\n }\n if (this.mode === 'file' && gutterUtilityLine.type === 'line') {\n return {\n lineNumber: gutterUtilityLine.lineNumber,\n } as GetHoveredLineResult<TMode>;\n }\n }\n return undefined;\n };\n\n handlePointerClick = (event: MouseEvent): void => {\n const {\n onHunkExpand,\n onLineClick,\n onLineNumberClick,\n onTokenClick,\n onMergeConflictActionClick,\n } = this.options;\n if (\n onHunkExpand == null &&\n onLineClick == null &&\n onLineNumberClick == null &&\n onMergeConflictActionClick == null &&\n onTokenClick == null\n ) {\n return;\n }\n if (\n this.options.onGutterUtilityClick != null &&\n isGutterUtilityPath(event.composedPath())\n ) {\n return;\n }\n debugLogIfEnabled(\n this.options.__debugPointerEvents,\n 'click',\n 'FileDiff.DEBUG.handlePointerClick:',\n event\n );\n this.handlePointerEvent({ eventType: 'click', event });\n };\n\n handlePointerMove = (event: PointerEvent): void => {\n // Touch and pen moves are active drag/scroll gestures, not hover. Keeping\n // hover mouse-only prevents content scrolls from leaving stale utilities.\n if (event.pointerType !== 'mouse') {\n return;\n }\n\n const {\n lineHoverHighlight = 'disabled',\n onLineEnter,\n onLineLeave,\n onTokenEnter,\n onTokenLeave,\n enableGutterUtility = false,\n } = this.options;\n if (\n lineHoverHighlight === 'disabled' &&\n !enableGutterUtility &&\n onLineEnter == null &&\n onLineLeave == null &&\n onTokenEnter == null &&\n onTokenLeave == null\n ) {\n return;\n }\n debugLogIfEnabled(\n this.options.__debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.handlePointerMove:',\n event\n );\n // should we perhaps throttle this a bit because move can be fast as fuk\n // boiiii\n this.handlePointerEvent({ eventType: 'move', event });\n };\n\n handlePointerLeave = (event: PointerEvent): void => {\n const { __debugPointerEvents } = this.options;\n debugLogIfEnabled(\n __debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.handlePointerLeave: no event'\n );\n if (this.hoveredLine == null && this.hoveredToken == null) {\n debugLogIfEnabled(\n __debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.handlePointerLeave: returned early, no hovered line or token'\n );\n return;\n }\n if (this.hoveredToken != null) {\n this.options.onTokenLeave?.(this.hoveredToken, event);\n this.clearHoveredToken();\n }\n\n if (this.hoveredLine != null) {\n this.options.onLineLeave?.({\n ...this.hoveredLine,\n event,\n } as PointerEventEnterLeaveProps<TMode>);\n this.clearHoveredLine();\n }\n this.placeUtility();\n };\n\n private handlePointerEvent({ eventType, event }: HandlePointerEventProps) {\n const { __debugPointerEvents } = this.options;\n const composedPath = event.composedPath();\n debugLogIfEnabled(\n __debugPointerEvents,\n eventType,\n 'FileDiff.DEBUG.handlePointerEvent:',\n { eventType, composedPath }\n );\n const target = this.resolvePointerTarget(composedPath);\n debugLogIfEnabled(\n __debugPointerEvents,\n eventType,\n 'FileDiff.DEBUG.handlePointerEvent: resolvePointerTarget result:',\n target\n );\n\n const {\n onLineClick,\n onLineNumberClick,\n onLineEnter,\n onLineLeave,\n onTokenClick,\n onTokenEnter,\n onTokenLeave,\n onHunkExpand,\n onMergeConflictActionClick,\n } = this.options;\n\n switch (eventType) {\n case 'move': {\n const sameLine =\n isHoverableLinePointerTarget(target) &&\n this.hoveredLine?.lineElement === target.lineElement;\n const sameToken =\n isTokenPointerTarget(target) &&\n this.hoveredToken?.tokenElement === target.tokenElement;\n\n // Handle token transitions\n if (!sameToken) {\n if (this.hoveredToken != null) {\n onTokenLeave?.(this.hoveredToken, event as PointerEvent);\n this.clearHoveredToken();\n }\n if (isTokenPointerTarget(target)) {\n this.setHoveredToken(this.toTokenEventBaseProps(target));\n onTokenEnter?.(\n this.hoveredToken as OnTokenEventProps<TMode>,\n event as PointerEvent\n );\n }\n }\n\n // Handle line transitions\n if (!sameLine) {\n if (this.hoveredLine != null) {\n onLineLeave?.({\n ...this.hoveredLine,\n event: event as PointerEvent,\n } as PointerEventEnterLeaveProps<TMode>);\n this.clearHoveredLine();\n }\n if (isHoverableLinePointerTarget(target)) {\n this.setHoveredLine(this.toEventBaseProps(target));\n this.placeUtility();\n onLineEnter?.({\n ...this.hoveredLine,\n event: event as PointerEvent,\n } as PointerEventEnterLeaveProps<TMode>);\n } else {\n this.placeUtility();\n }\n }\n break;\n }\n case 'click': {\n if (target == null) {\n break;\n }\n if (\n isMergeConflictActionPointerTarget(target) &&\n onMergeConflictActionClick != null\n ) {\n onMergeConflictActionClick(target);\n break;\n }\n if (isExpandoPointerTarget(target) && onHunkExpand != null) {\n onHunkExpand(\n target.hunkIndex,\n target.all || event.shiftKey ? 'both' : target.direction,\n target.all || event.shiftKey ? Number.POSITIVE_INFINITY : undefined\n );\n break;\n }\n\n if (!isHoverableLinePointerTarget(target)) {\n break;\n }\n\n if (isTokenPointerTarget(target) && onTokenClick != null) {\n onTokenClick(this.toTokenEventBaseProps(target), event as MouseEvent);\n }\n\n const eventBase = this.toEventBaseProps(target);\n if (onLineNumberClick != null && target.numberColumn) {\n onLineNumberClick({\n ...eventBase,\n event: event as PointerEvent,\n } as EventClickProps<TMode>);\n } else if (onLineClick != null) {\n onLineClick({\n ...eventBase,\n event: event as PointerEvent,\n } as EventClickProps<TMode>);\n }\n break;\n }\n }\n }\n\n private syncPointerListeners(pre: HTMLPreElement): void {\n const {\n __debugPointerEvents,\n lineHoverHighlight = 'disabled',\n onLineClick,\n onLineNumberClick,\n onLineEnter,\n onLineLeave,\n onTokenClick,\n onTokenEnter,\n onTokenLeave,\n onHunkExpand,\n onMergeConflictActionClick,\n enableGutterUtility = false,\n enableLineSelection = false,\n onGutterUtilityClick,\n } = this.options;\n const enableGutterSelection = onGutterUtilityClick != null;\n const shouldAttachPointerListeners =\n lineHoverHighlight !== 'disabled' ||\n onLineClick != null ||\n onLineNumberClick != null ||\n onLineEnter != null ||\n onLineLeave != null ||\n onTokenClick != null ||\n onTokenEnter != null ||\n onTokenLeave != null ||\n onHunkExpand != null ||\n onMergeConflictActionClick != null ||\n enableGutterUtility ||\n enableLineSelection ||\n enableGutterSelection;\n\n if (shouldAttachPointerListeners && !this.hasPointerListeners) {\n pre.addEventListener('click', this.handlePointerClick);\n pre.addEventListener('pointerdown', this.handlePointerDown);\n pre.addEventListener('pointermove', this.handlePointerMove);\n pre.addEventListener('pointerleave', this.handlePointerLeave);\n this.hasPointerListeners = true;\n\n debugLogIfEnabled(\n __debugPointerEvents,\n 'click',\n 'FileDiff.DEBUG.attachEventListeners: Attaching click events for:',\n (() => {\n const reasons: string[] = [];\n if (\n __debugPointerEvents === 'both' ||\n __debugPointerEvents === 'click'\n ) {\n if (onLineClick != null) {\n reasons.push('onLineClick');\n }\n if (onLineNumberClick != null) {\n reasons.push('onLineNumberClick');\n }\n if (onHunkExpand != null) {\n reasons.push('expandable hunk separators');\n }\n if (onMergeConflictActionClick != null) {\n reasons.push('merge conflict actions');\n }\n }\n return reasons;\n })()\n );\n debugLogIfEnabled(\n __debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.attachEventListeners: Attaching pointer move event'\n );\n debugLogIfEnabled(\n __debugPointerEvents,\n 'move',\n 'FileDiff.DEBUG.attachEventListeners: Attaching pointer leave event'\n );\n } else if (!shouldAttachPointerListeners && this.hasPointerListeners) {\n pre.removeEventListener('click', this.handlePointerClick);\n pre.removeEventListener('pointerdown', this.handlePointerDown);\n pre.removeEventListener('pointermove', this.handlePointerMove);\n pre.removeEventListener('pointerleave', this.handlePointerLeave);\n this.hasPointerListeners = false;\n }\n\n const hasActiveLineSelectionSession =\n this.pointerSession.mode === 'selecting' ||\n this.pointerSession.mode === 'pendingSingleLineUnselect';\n const hasActiveGutterSelectionSession =\n this.pointerSession.mode === 'gutterSelecting';\n if (\n (!enableLineSelection && hasActiveLineSelectionSession) ||\n (!enableGutterSelection && hasActiveGutterSelectionSession)\n ) {\n this.clearPointerSession();\n this.detachDocumentPointerListeners();\n this.selectionAnchor = undefined;\n this.clearPendingSingleLineState();\n }\n }\n\n private updateInteractiveLineAttributes(): void {\n if (this.pre == null) {\n return;\n }\n\n const {\n onLineClick,\n onLineNumberClick,\n enableLineSelection = false,\n } = this.options;\n\n const shouldHaveInteractiveLines = onLineClick != null;\n const shouldHaveInteractiveLineNumbers =\n onLineNumberClick != null || enableLineSelection;\n\n if (shouldHaveInteractiveLines && !this.interactiveLinesAttr) {\n this.pre.setAttribute('data-interactive-lines', '');\n this.interactiveLinesAttr = true;\n } else if (!shouldHaveInteractiveLines && this.interactiveLinesAttr) {\n this.pre.removeAttribute('data-interactive-lines');\n this.interactiveLinesAttr = false;\n }\n\n if (shouldHaveInteractiveLineNumbers && !this.interactiveLineNumbersAttr) {\n this.pre.setAttribute('data-interactive-line-numbers', '');\n this.interactiveLineNumbersAttr = true;\n } else if (\n !shouldHaveInteractiveLineNumbers &&\n this.interactiveLineNumbersAttr\n ) {\n this.pre.removeAttribute('data-interactive-line-numbers');\n this.interactiveLineNumbersAttr = false;\n }\n }\n\n private handlePointerDown = (event: PointerEvent): void => {\n if (\n (event.pointerType === 'mouse' && event.button !== 0) ||\n this.pre == null ||\n this.pointerSession.mode !== 'idle'\n ) {\n return;\n }\n\n const path = event.composedPath();\n if (\n isGutterUtilityPath(path) &&\n this.options.onGutterUtilityClick != null\n ) {\n this.startGutterSelectionFromPointerDown(event);\n } else {\n if (event.pointerType !== 'mouse') {\n this.revealUtilityFromGutterPath(path);\n }\n this.startLineSelectionFromPointerDown(event);\n }\n };\n\n private startLineSelectionFromPointerDown(event: PointerEvent): void {\n const { enableLineSelection = false } = this.options;\n if (!enableLineSelection) {\n return;\n }\n\n const pointerInfo = this.resolveSelectionInfo(event, {\n source: 'event-path',\n requireNumberColumn: true,\n });\n if (pointerInfo == null) {\n return;\n }\n\n const { pre } = this;\n if (pre == null) {\n return;\n }\n\n // Intentionally no preventDefault here. The line-number gutter uses\n // `user-select: none`, so a drag that starts on it never begins a native\n // text selection. Calling preventDefault would also cancel the browser's\n // native focus change, which stops a focusable host wrapper from receiving\n // focus (and the keyboard events it needs) when a line number is clicked.\n const { lineNumber, eventSide, lineIndex } = pointerInfo;\n\n if (event.shiftKey && this.selectedRange != null) {\n const rowRange = this.getIndexesFromSelection(\n this.selectedRange,\n pre.getAttribute('data-diff-type') === 'split'\n );\n if (rowRange == null) {\n return;\n }\n const useStart =\n rowRange.start <= rowRange.end\n ? lineIndex >= rowRange.start\n : lineIndex <= rowRange.end;\n this.selectionAnchor = {\n lineNumber: useStart\n ? this.selectedRange.start\n : this.selectedRange.end,\n side: useStart\n ? this.selectedRange.side\n : (this.selectedRange.endSide ?? this.selectedRange.side),\n };\n this.updateSelection(lineNumber, eventSide, false);\n this.notifySelectionStart(this.getCurrentSelectionRange());\n this.pointerSession = { mode: 'selecting', pointerId: event.pointerId };\n this.attachDocumentPointerListeners();\n return;\n }\n\n if (\n this.selectedRange?.start === lineNumber &&\n this.selectedRange?.end === lineNumber\n ) {\n const point = { lineNumber, side: eventSide };\n this.selectionAnchor = point;\n this.pointerSession = {\n mode: 'pendingSingleLineUnselect',\n pointerId: event.pointerId,\n anchor: point,\n pending: point,\n };\n this.attachDocumentPointerListeners();\n return;\n }\n\n if (this.options.controlledSelection === true) {\n this.proposedSelectedRange = null;\n } else {\n this.selectedRange = null;\n }\n this.placeUtility();\n this.selectionAnchor = { lineNumber, side: eventSide };\n this.updateSelection(lineNumber, eventSide, false);\n this.notifySelectionStart(this.getCurrentSelectionRange());\n this.pointerSession = { mode: 'selecting', pointerId: event.pointerId };\n this.attachDocumentPointerListeners();\n }\n\n private startGutterSelectionFromPointerDown(event: PointerEvent): void {\n const { onGutterUtilityClick } = this.options;\n if (onGutterUtilityClick == null) {\n return;\n }\n // If a selection already exists, the utility represents that whole range.\n // Dragging should start from the visual top and extend from the visual\n // bottom, regardless of the direction the range was originally created.\n const selectedEndpoints = this.currentSelectionEnds();\n const point =\n selectedEndpoints?.bottom ??\n this.resolveSelectionPoint(event, {\n source: 'event-path',\n excludeUtility: false,\n });\n const anchor = selectedEndpoints?.top ?? point;\n if (point == null || anchor == null) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.pointerSession = {\n mode: 'gutterSelecting',\n pointerId: event.pointerId,\n anchor,\n current: point,\n };\n this.selectionAnchor = {\n lineNumber: anchor.lineNumber,\n side: anchor.side,\n };\n this.updateSelection(point.lineNumber, point.side, false);\n this.notifySelectionStart(this.getCurrentSelectionRange());\n this.attachDocumentPointerListeners();\n }\n\n private handleDocumentPointerMove = (event: PointerEvent): void => {\n switch (this.pointerSession.mode) {\n case 'idle':\n return;\n case 'gutterSelecting': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n const point = this.resolveSelectionPoint(event, {\n source: 'coordinates-first',\n });\n if (point == null) {\n return;\n }\n this.pointerSession.current = point;\n this.updateSelection(point.lineNumber, point.side);\n return;\n }\n case 'selecting': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n const pointerInfo = this.resolveSelectionInfo(event, {\n source: 'coordinates-first',\n requireNumberColumn: false,\n });\n if (pointerInfo == null || this.selectionAnchor == null) {\n return;\n }\n this.updateSelection(pointerInfo.lineNumber, pointerInfo.eventSide);\n return;\n }\n case 'pendingSingleLineUnselect': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n const pointerInfo = this.resolveSelectionInfo(event, {\n source: 'coordinates-first',\n requireNumberColumn: false,\n });\n if (pointerInfo == null || this.selectionAnchor == null) {\n return;\n }\n const point = {\n lineNumber: pointerInfo.lineNumber,\n side: pointerInfo.eventSide,\n };\n if (areSelectionPointsEqual(this.pointerSession.pending, point)) {\n return;\n }\n this.updateSelection(\n pointerInfo.lineNumber,\n pointerInfo.eventSide,\n false\n );\n this.notifySelectionStart(this.getCurrentSelectionRange());\n this.notifySelectionChangeDelta();\n this.pointerSession = {\n mode: 'selecting',\n pointerId: event.pointerId,\n };\n return;\n }\n }\n };\n\n private handleDocumentPointerUp = (event: PointerEvent): void => {\n const { onGutterUtilityClick } = this.options;\n switch (this.pointerSession.mode) {\n case 'idle':\n return;\n case 'gutterSelecting': {\n const { pointerSession: session } = this;\n if (event.pointerId !== session.pointerId) {\n return;\n }\n event.preventDefault();\n const point = this.resolveSelectionPoint(event, {\n source: 'coordinates-first',\n });\n if (point != null) {\n session.current = point;\n this.updateSelection(point.lineNumber, point.side);\n }\n // Keep the completed gesture stable when callbacks synchronously\n // replace the manager's controlled or uncontrolled selection.\n const completedRange = this.buildSelectedLineRange(\n session.anchor,\n session.current\n );\n onGutterUtilityClick?.({ ...completedRange });\n this.selectionAnchor = undefined;\n this.notifySelectionEnd(completedRange);\n this.notifySelectionCommitted(completedRange);\n this.clearProposedSelection();\n this.clearPointerSession();\n this.detachDocumentPointerListeners();\n return;\n }\n case 'pendingSingleLineUnselect': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n this.updateSelection(null, undefined, false);\n this.selectionAnchor = undefined;\n this.clearPendingSingleLineState();\n this.detachDocumentPointerListeners();\n this.notifySelectionEnd(this.getCurrentSelectionRange());\n this.notifySelectionCommitted(this.getCurrentSelectionRange());\n this.clearProposedSelection();\n return;\n }\n case 'selecting': {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n event.preventDefault();\n this.selectionAnchor = undefined;\n this.detachDocumentPointerListeners();\n this.clearPointerSession();\n this.notifySelectionEnd(this.getCurrentSelectionRange());\n this.notifySelectionCommitted(this.getCurrentSelectionRange());\n this.clearProposedSelection();\n }\n }\n };\n\n private handleDocumentPointerCancel = (event: PointerEvent): void => {\n switch (this.pointerSession.mode) {\n case 'idle':\n return;\n case 'gutterSelecting':\n case 'selecting':\n case 'pendingSingleLineUnselect': {\n if ('pointerId' in this.pointerSession) {\n if (event.pointerId !== this.pointerSession.pointerId) {\n return;\n }\n }\n this.selectionAnchor = undefined;\n this.clearProposedSelection();\n this.clearPendingSingleLineState();\n this.clearPointerSession();\n this.detachDocumentPointerListeners();\n }\n }\n };\n\n private clearHoveredLine() {\n if (this.hoveredLine == null) {\n return;\n }\n this.hoveredLine.lineElement.removeAttribute('data-hovered');\n this.hoveredLine.numberElement.removeAttribute('data-hovered');\n this.hoveredLine = undefined;\n }\n\n private setHoveredLine(hoveredLine: EventBaseProps<TMode>) {\n const { lineHoverHighlight = 'disabled' } = this.options;\n if (this.hoveredLine != null) {\n this.clearHoveredLine();\n }\n this.hoveredLine = hoveredLine;\n if (lineHoverHighlight !== 'disabled') {\n if (lineHoverHighlight === 'both' || lineHoverHighlight === 'line') {\n this.hoveredLine.lineElement.setAttribute('data-hovered', '');\n }\n if (lineHoverHighlight === 'both' || lineHoverHighlight === 'number') {\n this.hoveredLine.numberElement.setAttribute('data-hovered', '');\n }\n }\n }\n\n private clearHoveredToken() {\n if (this.hoveredToken == null) {\n return;\n }\n this.hoveredToken = undefined;\n }\n\n private setHoveredToken(hoveredToken: OnTokenEventProps<TMode>) {\n if (this.hoveredToken != null) {\n this.clearHoveredToken();\n }\n this.hoveredToken = hoveredToken;\n }\n\n private ensureGutterUtilityNode(useCustomGutterUtility: boolean): void {\n if (this.gutterUtilityContainer == null) {\n this.gutterUtilityContainer = document.createElement('div');\n this.gutterUtilityContainer.setAttribute('data-gutter-utility-slot', '');\n }\n if (useCustomGutterUtility) {\n if (this.gutterUtilityButton != null) {\n this.gutterUtilityButton.remove();\n this.gutterUtilityButton = undefined;\n }\n if (this.gutterUtilitySlot == null) {\n this.gutterUtilitySlot = document.createElement('slot');\n this.gutterUtilitySlot.name = 'gutter-utility-slot';\n }\n if (this.gutterUtilitySlot.parentNode !== this.gutterUtilityContainer) {\n this.gutterUtilityContainer.replaceChildren(this.gutterUtilitySlot);\n }\n } else {\n this.gutterUtilitySlot?.remove();\n this.gutterUtilitySlot = undefined;\n if (this.gutterUtilityButton == null) {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = toHtml(createGutterUtilityElement());\n const utilityButton = tempDiv.firstElementChild;\n if (!(utilityButton instanceof HTMLButtonElement)) {\n throw new Error(\n 'InteractionManager.ensureGutterUtilityNode: Node element should be a button'\n );\n }\n utilityButton.remove();\n this.gutterUtilityButton = utilityButton;\n }\n if (this.gutterUtilityButton.parentNode !== this.gutterUtilityContainer) {\n this.gutterUtilityContainer.replaceChildren(this.gutterUtilityButton);\n }\n }\n }\n\n private revealUtilityFromGutterPath(path: (EventTarget | undefined)[]): void {\n if (this.placeUtilityFromSelection()) {\n return;\n }\n const target = this.resolvePointerTarget(path);\n if (isLinePointerTarget(target) && target.numberColumn) {\n this.showUtilityOnLine(this.toEventBaseProps(target));\n }\n }\n\n // The gutter utility follows the active selection first because a selected\n // range is more stable than transient hover/touch state. Without a\n // selection, desktop hover and mobile tap reveal can still place it on a\n // single row.\n private placeUtility(): void {\n if (this.placeUtilityFromSelection()) {\n return;\n }\n if (this.hoveredLine != null) {\n this.showUtilityOnLine(this.hoveredLine);\n return;\n }\n this.hideUtility();\n }\n\n private placeUtilityFromSelection(): boolean {\n const endpoints = this.currentSelectionEnds();\n if (endpoints == null) {\n return false;\n }\n const target = this.targetForSelectionPoint(endpoints.bottom);\n if (target == null) {\n this.hideUtility();\n } else {\n this.showUtilityOnLine(this.toEventBaseProps(target));\n }\n return true;\n }\n\n private showUtilityOnLine(line: EventBaseProps<TMode>): void {\n if (this.gutterUtilityContainer == null) {\n return;\n }\n this.gutterUtilityLine = line;\n line.numberElement.appendChild(this.gutterUtilityContainer);\n }\n\n private hideUtility(): void {\n this.gutterUtilityContainer?.remove();\n this.gutterUtilityLine = undefined;\n }\n\n // Selection ranges preserve drag direction, so compare rendered row indexes to\n // find the visually top-most and bottom-most endpoints.\n private currentSelectionEnds(): SelectionEnds | undefined {\n const range = this.getCurrentSelectionRange();\n return range == null ? undefined : this.selectionEnds(range);\n }\n\n private selectionEnds(range: SelectedLineRange): SelectionEnds | undefined {\n const start: SelectionPoint = {\n lineNumber: range.start,\n side: range.side,\n };\n const end: SelectionPoint = {\n lineNumber: range.end,\n side: range.endSide ?? range.side,\n };\n const startIndex = this.selectionPointRowIndex(start);\n const endIndex = this.selectionPointRowIndex(end);\n if (startIndex == null || endIndex == null) {\n return undefined;\n }\n return startIndex > endIndex\n ? { top: end, bottom: start }\n : { top: start, bottom: end };\n }\n\n private selectionPointRowIndex(point: SelectionPoint): number | undefined {\n const indexes = this.getLineIndex(point.lineNumber, point.side);\n if (indexes == null) {\n return undefined;\n }\n return this.isSplitDiff() ? indexes[1] : indexes[0];\n }\n\n private targetForSelectionPoint(\n point: SelectionPoint\n ): LinePointerTarget<TMode> | undefined {\n if (this.pre == null) {\n return undefined;\n }\n const indexes = this.getLineIndex(point.lineNumber, point.side);\n if (indexes == null) {\n return undefined;\n }\n const lineIndex =\n this.mode === 'diff' ? `${indexes[0]},${indexes[1]}` : `${indexes[0]}`;\n // Rebuild the real gutter-row target from the selection point so the\n // utility can anchor to the visible row even when the point came from\n // controlled state rather than a pointer event.\n const candidates = this.pre.querySelectorAll(\n `[data-column-number=\"${point.lineNumber}\"][data-line-index=\"${lineIndex}\"]`\n );\n for (const element of candidates) {\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n const target = this.resolvePointerTarget(getElementPath(element));\n if (!isLinePointerTarget(target)) {\n continue;\n }\n if (\n this.mode === 'diff' &&\n point.side != null &&\n target.side !== point.side\n ) {\n continue;\n }\n return target;\n }\n return undefined;\n }\n\n private attachDocumentPointerListeners(): void {\n if (this.hasDocumentPointerListeners) {\n return;\n }\n document.addEventListener('pointermove', this.handleDocumentPointerMove);\n document.addEventListener('pointerup', this.handleDocumentPointerUp);\n document.addEventListener(\n 'pointercancel',\n this.handleDocumentPointerCancel\n );\n this.hasDocumentPointerListeners = true;\n }\n\n private detachDocumentPointerListeners(): void {\n if (!this.hasDocumentPointerListeners) {\n return;\n }\n document.removeEventListener('pointermove', this.handleDocumentPointerMove);\n document.removeEventListener('pointerup', this.handleDocumentPointerUp);\n document.removeEventListener(\n 'pointercancel',\n this.handleDocumentPointerCancel\n );\n this.hasDocumentPointerListeners = false;\n }\n\n private clearPointerSession(): void {\n this.pointerSession = { mode: 'idle' };\n }\n\n private clearPendingSingleLineState(): void {\n if (this.pointerSession.mode === 'pendingSingleLineUnselect') {\n this.pointerSession = { mode: 'idle' };\n }\n }\n\n private selectionInfoFromPath(\n path: (EventTarget | undefined)[],\n requireNumberColumn: boolean\n ): SelectionInfo | undefined {\n const target = this.resolvePointerTarget(path);\n if (!isLinePointerTarget(target)) {\n return undefined;\n }\n if (requireNumberColumn && !target.numberColumn) {\n return undefined;\n }\n if (target.splitLineIndex == null) {\n return undefined;\n }\n\n return {\n lineIndex: target.splitLineIndex,\n lineNumber: target.lineNumber,\n eventSide: this.mode === 'diff' ? target.side : undefined,\n };\n }\n\n private resolveSelectionInfo(\n event: PointerEvent,\n options: SelectionInfoOptions\n ): SelectionInfo | undefined {\n const path = this.resolveSelectionPath(event, options);\n return path != null\n ? this.selectionInfoFromPath(path, options.requireNumberColumn)\n : undefined;\n }\n\n private selectionPointFromPath(\n path: (EventTarget | undefined)[]\n ): SelectionPoint | undefined {\n const target = this.resolvePointerTarget(path);\n if (!isLinePointerTarget(target)) {\n return undefined;\n }\n return {\n lineNumber: target.lineNumber,\n side: this.mode === 'diff' ? target.side : undefined,\n };\n }\n\n private resolveSelectionPoint(\n event: PointerEvent,\n options: SelectionHitOptions\n ): SelectionPoint | undefined {\n const path = this.resolveSelectionPath(event, options);\n return path != null ? this.selectionPointFromPath(path) : undefined;\n }\n\n private resolveSelectionPath(\n event: PointerEvent,\n options: SelectionHitOptions\n ): (EventTarget | undefined)[] | undefined {\n const excludeUtility = options.excludeUtility !== false;\n switch (options.source) {\n case 'event-path':\n return this.pathFromEventPath(event.composedPath(), excludeUtility);\n case 'coordinates-first': {\n // Touch pointers can keep dispatching move/up events to the element\n // where the drag began. Prefer the row currently under the finger,\n // then fall back only when coordinate hit-testing is unavailable.\n const coordinatePath = this.pathFromCoordinates(event, excludeUtility);\n if (coordinatePath !== undefined) {\n return coordinatePath ?? undefined;\n }\n return this.pathFromEventPath(event.composedPath(), excludeUtility);\n }\n }\n }\n\n private pathFromCoordinates(\n event: PointerEvent,\n excludeUtility: boolean\n ): (EventTarget | undefined)[] | null | undefined {\n const coordinateTarget = this.hitTest(event);\n if (coordinateTarget === undefined) {\n return undefined;\n }\n if (coordinateTarget === null) {\n return null;\n }\n // A coordinate hit can be a token span, line-number span, utility overlay,\n // or separator. Normalize valid descendants back to their row; invalid\n // hits intentionally return null so the last selected row stays sticky.\n return this.pathFromElement(coordinateTarget, excludeUtility) ?? null;\n }\n\n private pathFromEventPath(\n path: (EventTarget | undefined)[],\n excludeUtility: boolean\n ): (EventTarget | undefined)[] | undefined {\n if (excludeUtility && isGutterUtilityPath(path)) {\n return undefined;\n }\n for (const element of path) {\n if (element instanceof Element) {\n return this.pathFromElement(element, excludeUtility);\n }\n }\n return undefined;\n }\n\n private pathFromElement(\n element: Element,\n excludeUtility: boolean\n ): (EventTarget | undefined)[] | undefined {\n const path = getElementPath(element);\n if (excludeUtility && isGutterUtilityPath(path)) {\n return undefined;\n }\n // Selection is row-based, not child-element-based. Lateral movement over\n // tokens, annotations, or line-number text should still update to the\n // nearest content or gutter row; anything else is ignored by returning\n // undefined.\n const row = closestSelectableRow(element);\n if (row != null) {\n return getElementPath(row);\n }\n return this.pathFromAnnotationSlot(element);\n }\n\n private pathFromAnnotationSlot(\n element: Element\n ): (EventTarget | undefined)[] | undefined {\n const point = selectionPointFromAnnotationSlotName(\n getAnnotationSlotName(element)\n );\n if (point == null) {\n return undefined;\n }\n const target = this.targetForSelectionPoint(point);\n return target != null ? getElementPath(target.lineElement) : undefined;\n }\n\n private hitTest(event: PointerEvent): Element | null | undefined {\n // Return undefined when coordinate hit-testing cannot run at all, which\n // allows callers to fall back to the event path for tests and older DOMs.\n // Return null when hit-testing ran but found no element, so active drags\n // keep their previous endpoint instead of using a stale captured target.\n if (!Number.isFinite(event.clientX) || !Number.isFinite(event.clientY)) {\n return undefined;\n }\n const root = this.pre?.getRootNode();\n const elementFromPointRoot = hasElementFromPoint(root)\n ? root\n : hasElementFromPoint(document)\n ? document\n : undefined;\n if (elementFromPointRoot == null) {\n return undefined;\n }\n const element = elementFromPointRoot.elementFromPoint(\n event.clientX,\n event.clientY\n );\n return element;\n }\n\n private getLineIndex(\n lineNumber: number,\n side?: SelectionSide\n ): [number, number] | undefined {\n const { getLineIndex } = this.options;\n return getLineIndex != null\n ? getLineIndex(lineNumber, side)\n : [lineNumber - 1, lineNumber - 1];\n }\n\n private getCurrentSelectionRange(): SelectedLineRange | null {\n return this.proposedSelectedRange !== undefined\n ? this.proposedSelectedRange\n : this.selectedRange;\n }\n\n private clearProposedSelection(): void {\n this.proposedSelectedRange = undefined;\n }\n\n private updateSelection(\n currentLine: number | null,\n side?: SelectionSide,\n emitChange = true\n ): void {\n const previousRange = this.getCurrentSelectionRange();\n let nextRange: SelectedLineRange | null;\n if (currentLine == null) {\n nextRange = null;\n } else {\n const anchorSide = this.selectionAnchor?.side ?? side;\n const anchorLine = this.selectionAnchor?.lineNumber ?? currentLine;\n nextRange = this.buildSelectionRange(\n anchorLine,\n currentLine,\n anchorSide,\n side\n );\n }\n if (\n areSelectionsEqual(previousRange ?? undefined, nextRange ?? undefined)\n ) {\n return;\n }\n this.selectedRangeHighlightSide = undefined;\n this.selectedRangeLineNumberOnly = false;\n if (this.options.controlledSelection === true) {\n this.proposedSelectedRange = nextRange;\n } else {\n this.selectedRange = nextRange;\n queueRender(this.renderSelection);\n }\n this.placeUtility();\n if (emitChange) {\n this.notifySelectionChangeDelta();\n }\n }\n\n private getIndexesFromSelection(\n selectedRange: SelectedLineRange,\n split: boolean\n ): { start: number; end: number } | undefined {\n if (this.pre == null) {\n return undefined;\n }\n const startIndexes = this.getLineIndex(\n selectedRange.start,\n selectedRange.side\n );\n const finalIndexes = this.getLineIndex(\n selectedRange.end,\n selectedRange.endSide ?? selectedRange.side\n );\n\n return startIndexes != null && finalIndexes != null\n ? {\n start: split ? startIndexes[1] : startIndexes[0],\n end: split ? finalIndexes[1] : finalIndexes[0],\n }\n : undefined;\n }\n\n // Resolve selected lines and the editor active line together while their DOM\n // attributes retain independent rendered snapshots.\n private getSelectionRenderState(): SelectionRenderState {\n return {\n selectedLines: {\n range: this.selectedRange,\n highlightSide: this.selectedRangeHighlightSide,\n lineNumberOnly: this.selectedRangeLineNumberOnly,\n },\n editorActiveLine: {\n range:\n this.editorActiveLine == null\n ? null\n : {\n start: this.editorActiveLine,\n end: this.editorActiveLine,\n side: this.editorActiveLineSide,\n },\n highlightSide: this.editorActiveLineSide,\n lineNumberOnly: this.editorLineNumberOnly,\n },\n };\n }\n\n // Resolve a desired line range before touching the last successful DOM\n // state, so a transient line-index mismatch leaves that rendering intact and\n // dirty.\n private resolveLineRenderRange(\n state: LineRenderState,\n split: boolean,\n source: 'selected-lines' | 'editor-active-line'\n ): { start: number; end: number } | undefined {\n if (state.range == null) {\n return undefined;\n }\n const rowRange = this.getIndexesFromSelection(state.range, split);\n if (rowRange == null) {\n console.error({ rowRange, range: state.range });\n throw new Error(\n `InteractionManager.renderSelection: No valid ${source} rowRange`\n );\n }\n return rowRange;\n }\n\n // Validate every code column that will receive changed attributes before\n // clearing either channel's previous rendering.\n private getLineRenderColumns(\n selectedLines: LineRenderState | undefined,\n selectedRowRange: { start: number; end: number } | undefined,\n editorActiveLine: LineRenderState | undefined,\n editorRowRange: { start: number; end: number } | undefined\n ): LineRenderColumn[] {\n if (\n this.pre == null ||\n (selectedRowRange == null && editorRowRange == null)\n ) {\n return [];\n }\n\n const { children: codeElements } = this.pre;\n if (codeElements.length > 2) {\n console.error(codeElements);\n throw new Error(\n 'InteractionManager.renderSelection: Somehow there are more than 2 code elements...'\n );\n }\n\n const columns: LineRenderColumn[] = [];\n for (const code of codeElements) {\n const side: SelectionSide | undefined = code.hasAttribute(\n 'data-deletions'\n )\n ? 'deletions'\n : code.hasAttribute('data-additions')\n ? 'additions'\n : undefined;\n const renderSelectedLines =\n selectedLines != null &&\n selectedRowRange != null &&\n (selectedLines.highlightSide == null ||\n side == null ||\n selectedLines.highlightSide === side);\n const renderEditorActiveLine =\n editorActiveLine != null &&\n editorRowRange != null &&\n (editorActiveLine.highlightSide == null ||\n side == null ||\n editorActiveLine.highlightSide === side);\n if (!renderSelectedLines && !renderEditorActiveLine) {\n continue;\n }\n\n const [gutter, content] = code.children;\n if (\n !(gutter instanceof HTMLElement) ||\n !(content instanceof HTMLElement)\n ) {\n throw new Error(\n 'InteractionManager.renderSelection: missing gutter or content element'\n );\n }\n if (content.children.length !== gutter.children.length) {\n throw new Error(\n 'InteractionManager.renderSelection: gutter and content children dont match, something is wrong'\n );\n }\n columns.push({\n content,\n gutter,\n renderEditorActiveLine,\n renderSelectedLines,\n });\n }\n return columns;\n }\n\n private renderSelection = (): void => {\n dequeueRender(this.renderSelection);\n const renderState = this.getSelectionRenderState();\n if (this.pre == null) {\n return;\n }\n const { editorActiveLine, selectedLines } = renderState;\n const selectedLinesChanged = !areLineRenderStatesEqual(\n this.renderedSelectedLinesState,\n selectedLines\n );\n const editorActiveLineChanged = !areLineRenderStatesEqual(\n this.renderedEditorActiveLineState,\n editorActiveLine\n );\n if (!selectedLinesChanged && !editorActiveLineChanged) {\n return;\n }\n\n // A changed channel remains explicitly dirty until its DOM update finishes,\n // which lets an identical write retry after a transient render failure.\n if (selectedLinesChanged) {\n this.renderedSelectedLinesState = undefined;\n }\n if (editorActiveLineChanged) {\n this.renderedEditorActiveLineState = undefined;\n }\n\n const split = this.pre.getAttribute('data-diff-type') === 'split';\n const selectedRowRange = !selectedLinesChanged\n ? undefined\n : this.resolveLineRenderRange(selectedLines, split, 'selected-lines');\n const editorRowRange = !editorActiveLineChanged\n ? undefined\n : this.resolveLineRenderRange(\n editorActiveLine,\n split,\n 'editor-active-line'\n );\n const columns = this.getLineRenderColumns(\n selectedLinesChanged ? selectedLines : undefined,\n selectedRowRange,\n editorActiveLineChanged ? editorActiveLine : undefined,\n editorRowRange\n );\n const selectedLinesComplete =\n selectedLines.range == null ||\n columns.some((column) => column.renderSelectedLines);\n const editorActiveLineComplete =\n editorActiveLine.range == null ||\n columns.some((column) => column.renderEditorActiveLine);\n\n if (selectedLinesChanged) {\n for (const element of this.pre.querySelectorAll('[data-selected-line]')) {\n element.removeAttribute('data-selected-line');\n }\n }\n if (editorActiveLineChanged) {\n for (const element of this.pre.querySelectorAll(\n '[data-editor-active-line]'\n )) {\n element.removeAttribute('data-editor-active-line');\n }\n }\n\n const selectedFirst =\n selectedRowRange == null\n ? undefined\n : Math.min(selectedRowRange.start, selectedRowRange.end);\n const selectedLast =\n selectedRowRange == null\n ? undefined\n : Math.max(selectedRowRange.start, selectedRowRange.end);\n const selectedIsSingle = selectedFirst === selectedLast;\n const editorLineIndex = editorRowRange?.start;\n for (const column of columns) {\n const { content, gutter, renderEditorActiveLine, renderSelectedLines } =\n column;\n const finalLineIndex = Math.max(\n renderSelectedLines ? (selectedLast ?? -Infinity) : -Infinity,\n renderEditorActiveLine ? (editorLineIndex ?? -Infinity) : -Infinity\n );\n const len = content.children.length;\n for (let i = 0; i < len; i++) {\n const contentElement = content.children[i];\n const gutterElement = gutter.children[i];\n if (\n !(contentElement instanceof HTMLElement) ||\n !(gutterElement instanceof HTMLElement)\n ) {\n continue;\n }\n\n const lineIndex = this.parseLineIndex(contentElement, split);\n if ((lineIndex ?? 0) > finalLineIndex) {\n break;\n }\n if (lineIndex == null) {\n continue;\n }\n if (\n renderSelectedLines &&\n selectedFirst != null &&\n selectedLast != null &&\n lineIndex >= selectedFirst &&\n lineIndex <= selectedLast\n ) {\n let attributeValue = selectedIsSingle\n ? 'single'\n : lineIndex === selectedFirst\n ? 'first'\n : lineIndex === selectedLast\n ? 'last'\n : '';\n gutterElement.setAttribute('data-selected-line', attributeValue);\n // A number-only highlight marks just the gutter number, leaving the\n // line background and any annotation rows untouched.\n if (!selectedLines.lineNumberOnly) {\n contentElement.setAttribute('data-selected-line', attributeValue);\n if (\n gutterElement.nextSibling instanceof HTMLElement &&\n contentElement.nextSibling instanceof HTMLElement &&\n (contentElement.nextSibling.hasAttribute(\n 'data-line-annotation'\n ) ||\n contentElement.nextSibling.hasAttribute(\n 'data-merge-conflict-actions'\n ))\n ) {\n if (selectedIsSingle) {\n attributeValue = 'last';\n contentElement.setAttribute('data-selected-line', 'first');\n } else if (lineIndex === selectedFirst) {\n attributeValue = '';\n } else if (lineIndex === selectedLast) {\n contentElement.setAttribute('data-selected-line', '');\n }\n contentElement.nextSibling.setAttribute(\n 'data-selected-line',\n attributeValue\n );\n gutterElement.nextSibling.setAttribute(\n 'data-selected-line',\n attributeValue\n );\n }\n }\n }\n if (renderEditorActiveLine && lineIndex === editorLineIndex) {\n gutterElement.setAttribute('data-editor-active-line', '');\n if (!editorActiveLine.lineNumberOnly) {\n contentElement.setAttribute('data-editor-active-line', '');\n }\n }\n }\n }\n\n if (selectedLinesChanged && selectedLinesComplete) {\n this.renderedSelectedLinesState = selectedLines;\n }\n if (editorActiveLineChanged && editorActiveLineComplete) {\n this.renderedEditorActiveLineState = editorActiveLine;\n }\n };\n\n private notifySelectionCommitted(range: SelectedLineRange | null): void {\n this.options.onLineSelected?.(range);\n }\n\n private notifySelectionChangeDelta(): void {\n this.options.onLineSelectionChange?.(\n this.getCurrentSelectionRange() ?? null\n );\n }\n\n private notifySelectionStart(range: SelectedLineRange | null): void {\n this.options.onLineSelectionStart?.(range);\n }\n\n private notifySelectionEnd(range: SelectedLineRange | null): void {\n this.options.onLineSelectionEnd?.(range);\n }\n\n private toEventBaseProps(\n target: HoverableLinePointerTarget<TMode>\n ): EventBaseProps<TMode> {\n if (this.mode === 'file') {\n return {\n type: 'line',\n lineElement: target.lineElement,\n lineNumber: target.lineNumber,\n numberColumn: target.numberColumn,\n numberElement: target.numberElement,\n } as EventBaseProps<TMode>;\n }\n\n return {\n type: 'diff-line',\n annotationSide: target.side as AnnotationSide,\n lineType: target.lineType,\n lineElement: target.lineElement,\n numberElement: target.numberElement,\n lineNumber: target.lineNumber,\n numberColumn: target.numberColumn,\n } as EventBaseProps<TMode>;\n }\n\n private toTokenEventBaseProps({\n lineCharEnd,\n lineCharStart,\n lineNumber,\n side,\n tokenElement,\n tokenText,\n }: TokenPointerTarget<TMode>): OnTokenEventProps<TMode> {\n if (this.mode === 'file') {\n return {\n type: 'token',\n lineCharEnd,\n lineCharStart,\n lineNumber,\n tokenElement,\n tokenText,\n } as OnTokenEventProps<TMode>;\n }\n\n return {\n type: 'token',\n lineCharEnd,\n lineCharStart,\n lineNumber,\n side,\n tokenElement,\n tokenText,\n } as OnTokenEventProps<TMode>;\n }\n\n private buildSelectedLineRange(\n anchor: SelectionPoint,\n current: SelectionPoint\n ): SelectedLineRange {\n return this.buildSelectionRange(\n anchor.lineNumber,\n current.lineNumber,\n anchor.side,\n current.side\n );\n }\n\n private buildSelectionRange(\n start: number,\n end: number,\n side?: SelectionSide,\n endSide?: SelectionSide\n ): SelectedLineRange {\n return {\n start,\n end,\n ...(side != null ? { side } : {}),\n ...(side !== endSide && endSide != null ? { endSide } : {}),\n };\n }\n\n private resolvePointerTarget(\n path: (EventTarget | undefined)[]\n ): ResolvedPointerTarget<TMode> | undefined {\n let numberColumn = false;\n let lineType: LineTypes | undefined;\n let codeElement: HTMLElement | undefined;\n let lineElement: HTMLElement | undefined;\n let lineIndexValue: string | undefined;\n let numberElement: HTMLElement | undefined;\n let tokenElement: HTMLElement | undefined;\n let tokenInfo: TokenCache | undefined;\n let expandInfo: ExpandCache | undefined;\n let lineNumber: number | undefined;\n let mergeConflictActionTarget: MergeConflictActionTarget | undefined;\n\n for (const element of path) {\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n\n if (\n mergeConflictActionTarget == null &&\n element.hasAttribute('data-merge-conflict-action')\n ) {\n const resolutionValue =\n element.getAttribute('data-merge-conflict-action') ?? undefined;\n const conflictIndexValue =\n element.getAttribute('data-merge-conflict-conflict-index') ??\n undefined;\n const conflictIndex =\n conflictIndexValue != null\n ? Number.parseInt(conflictIndexValue, 10)\n : Number.NaN;\n if (\n isMergeConflictResolution(resolutionValue) &&\n Number.isFinite(conflictIndex)\n ) {\n mergeConflictActionTarget = {\n kind: 'merge-conflict-action',\n resolution: resolutionValue,\n conflictIndex,\n };\n }\n }\n\n if (tokenElement == null && element.hasAttribute('data-char')) {\n tokenElement = element;\n const startAttr = element.getAttribute('data-char');\n\n if (startAttr != null) {\n const lineCharStart = Number.parseInt(startAttr, 10);\n if (!Number.isNaN(lineCharStart)) {\n const tokenText = element.textContent ?? '';\n const lineCharEnd = lineCharStart + tokenText.length;\n if (\n tokenText.trim() !== '' ||\n this.options.enableTokenInteractionsOnWhitespace === true\n ) {\n tokenInfo = {\n tokenElement,\n lineCharStart,\n lineCharEnd,\n tokenText,\n };\n }\n continue;\n }\n }\n }\n\n const columnNumber =\n numberElement == null\n ? (element.getAttribute('data-column-number') ?? undefined)\n : undefined;\n if (columnNumber != null) {\n numberElement = element;\n lineNumber = Number.parseInt(columnNumber, 10);\n numberColumn = true;\n lineType = getLineTypeFromElement(element);\n lineIndexValue = element.getAttribute('data-line-index') ?? undefined;\n continue;\n }\n\n const lineAttr =\n lineElement == null\n ? (element.getAttribute('data-line') ?? undefined)\n : undefined;\n if (lineAttr != null) {\n lineElement = element;\n lineNumber = Number.parseInt(lineAttr, 10);\n lineType = getLineTypeFromElement(element);\n lineIndexValue = element.getAttribute('data-line-index') ?? undefined;\n continue;\n }\n\n if (\n expandInfo == null &&\n (element.hasAttribute('data-expand-button') ||\n element.hasAttribute('data-unmodified-lines'))\n ) {\n expandInfo = {\n hunkIndex: undefined,\n direction: (() => {\n if (element.hasAttribute('data-expand-up')) {\n return 'up';\n }\n if (element.hasAttribute('data-expand-down')) {\n return 'down';\n }\n return 'both';\n })(),\n all: element.hasAttribute('data-expand-all-button'),\n };\n continue;\n }\n\n const expandIndexValue =\n expandInfo != null\n ? (element.getAttribute('data-expand-index') ?? undefined)\n : undefined;\n if (expandInfo != null && expandIndexValue != null) {\n const expandIndex = Number.parseInt(expandIndexValue, 10);\n if (!Number.isNaN(expandIndex)) {\n expandInfo.hunkIndex = expandIndex;\n }\n continue;\n }\n\n if (codeElement == null && element.hasAttribute('data-code')) {\n codeElement = element;\n break;\n }\n }\n\n if (mergeConflictActionTarget != null) {\n return mergeConflictActionTarget as ResolvedPointerTarget<TMode>;\n }\n\n if (expandInfo?.hunkIndex != null) {\n return {\n type: 'line-info',\n hunkIndex: expandInfo.hunkIndex,\n direction: expandInfo.direction,\n all: expandInfo.all,\n } as ResolvedPointerTarget<TMode>;\n }\n\n lineElement ??=\n lineIndexValue != null\n ? queryHTMLElement(\n codeElement,\n `[data-line][data-line-index=\"${lineIndexValue}\"]`\n )\n : undefined;\n numberElement ??=\n lineIndexValue != null\n ? queryHTMLElement(\n codeElement,\n `[data-column-number][data-line-index=\"${lineIndexValue}\"]`\n )\n : undefined;\n\n if (\n codeElement == null ||\n lineElement == null ||\n numberElement == null ||\n lineType == null ||\n lineNumber == null ||\n Number.isNaN(lineNumber)\n ) {\n return undefined;\n }\n\n const splitLineIndex = this.parseLineIndex(lineElement, this.isSplitDiff());\n\n if (tokenInfo != null) {\n if (this.mode === 'file') {\n return {\n kind: 'token',\n lineType,\n lineElement,\n lineNumber,\n numberColumn,\n numberElement,\n side: undefined,\n splitLineIndex,\n ...tokenInfo,\n } as ResolvedPointerTarget<TMode>;\n }\n\n return {\n kind: 'token',\n lineType,\n lineElement,\n lineNumber,\n numberColumn,\n numberElement,\n side: getAnnotationSide(lineType, codeElement),\n splitLineIndex,\n ...tokenInfo,\n } as ResolvedPointerTarget<TMode>;\n }\n\n // Otherwise return line target\n if (this.mode === 'file') {\n return {\n kind: 'line',\n lineType,\n lineElement,\n lineNumber,\n numberColumn,\n numberElement,\n side: undefined,\n splitLineIndex,\n } as ResolvedPointerTarget<TMode>;\n }\n\n return {\n kind: 'line',\n lineType,\n lineElement,\n lineNumber,\n numberColumn,\n numberElement,\n side: getAnnotationSide(lineType, codeElement),\n splitLineIndex,\n } as ResolvedPointerTarget<TMode>;\n }\n\n private isSplitDiff(): boolean {\n return this.pre?.getAttribute('data-diff-type') === 'split';\n }\n\n private parseLineIndex(\n element: HTMLElement,\n split: boolean\n ): number | undefined {\n const lineIndexes = (element.getAttribute('data-line-index') ?? '')\n .split(',')\n .map((value) => Number.parseInt(value, 10))\n .filter((value) => !Number.isNaN(value));\n\n if (split && lineIndexes.length === 2) {\n return lineIndexes[1];\n }\n if (!split) {\n return lineIndexes[0];\n }\n return undefined;\n }\n}\n\ntype InteractionPluckOptions<TMode extends InteractionManagerMode> =\n InteractionManagerBaseOptions<TMode> & {\n renderGutterUtility?(\n getHoveredRow: () => GetHoveredLineResult<TMode> | undefined\n ): HTMLElement | null | undefined;\n };\n\nexport function pluckInteractionOptions<TMode extends InteractionManagerMode>(\n {\n enableTokenInteractionsOnWhitespace,\n enableGutterUtility,\n lineHoverHighlight,\n onGutterUtilityClick,\n onLineClick,\n onLineEnter,\n onLineLeave,\n onLineNumberClick,\n onTokenClick,\n onTokenEnter,\n onTokenLeave,\n renderGutterUtility,\n __debugPointerEvents,\n enableLineSelection,\n controlledSelection,\n onLineSelected,\n onLineSelectionStart,\n onLineSelectionChange,\n onLineSelectionEnd,\n }: InteractionPluckOptions<TMode>,\n onHunkExpand?: (\n hunkIndex: number,\n direction: ExpansionDirections,\n expansionLineCountOverride?: number\n ) => unknown,\n getLineIndex?: GetLineIndexUtility,\n onMergeConflictActionClick?: (target: MergeConflictActionTarget) => void\n): InteractionManagerOptions<TMode> {\n return {\n enableTokenInteractionsOnWhitespace,\n enableGutterUtility: resolveEnableGutterUtilityOption({\n enableGutterUtility,\n renderGutterUtility,\n onGutterUtilityClick,\n }),\n usesCustomGutterUtility: renderGutterUtility != null,\n lineHoverHighlight,\n\n onGutterUtilityClick,\n onHunkExpand,\n onMergeConflictActionClick,\n onLineClick,\n onLineEnter,\n onLineLeave,\n onLineNumberClick,\n onTokenClick,\n onTokenEnter,\n onTokenLeave,\n __debugPointerEvents,\n\n enableLineSelection,\n controlledSelection,\n onLineSelected,\n onLineSelectionStart,\n onLineSelectionChange,\n onLineSelectionEnd,\n\n getLineIndex,\n };\n}\n\nfunction resolveEnableGutterUtilityOption<\n TMode extends InteractionManagerMode,\n>({\n enableGutterUtility,\n renderGutterUtility,\n onGutterUtilityClick,\n}: Pick<\n InteractionPluckOptions<TMode>,\n 'enableGutterUtility' | 'renderGutterUtility' | 'onGutterUtilityClick'\n>): boolean {\n if (onGutterUtilityClick != null && renderGutterUtility != null) {\n throw new Error(\n \"Cannot use both 'onGutterUtilityClick' and 'renderGutterUtility'. Use only one gutter utility API.\"\n );\n }\n return enableGutterUtility ?? false;\n}\n\nfunction isLinePointerTarget<TMode extends InteractionManagerMode>(\n target: ResolvedPointerTarget<TMode> | undefined\n): target is LinePointerTarget<TMode> {\n return target != null && 'kind' in target && target.kind === 'line';\n}\n\nfunction isTokenPointerTarget<TMode extends InteractionManagerMode>(\n target: ResolvedPointerTarget<TMode> | undefined\n): target is TokenPointerTarget<TMode> {\n return target != null && 'kind' in target && target.kind === 'token';\n}\n\nfunction isHoverableLinePointerTarget<TMode extends InteractionManagerMode>(\n target: ResolvedPointerTarget<TMode> | undefined\n): target is HoverableLinePointerTarget<TMode> {\n return isLinePointerTarget(target) || isTokenPointerTarget(target);\n}\n\nfunction isExpandoPointerTarget<TMode extends InteractionManagerMode>(\n target: ResolvedPointerTarget<TMode>\n): target is ExpandoEventProps {\n return 'type' in target && target.type === 'line-info';\n}\n\nfunction isMergeConflictActionPointerTarget<\n TMode extends InteractionManagerMode,\n>(target: ResolvedPointerTarget<TMode>): target is MergeConflictActionTarget {\n return 'kind' in target && target.kind === 'merge-conflict-action';\n}\n\nfunction isMergeConflictResolution(\n value: string | undefined\n): value is MergeConflictResolution {\n return value === 'current' || value === 'incoming' || value === 'both';\n}\n\nfunction queryHTMLElement(\n parent: HTMLElement | undefined,\n query: string\n): HTMLElement | undefined {\n const element = parent?.querySelector(query);\n return element instanceof HTMLElement ? element : undefined;\n}\n\nfunction getElementPath(element: Node): EventTarget[] {\n const path: EventTarget[] = [];\n let current: Node | null = element;\n while (current != null) {\n path.push(current);\n current = current.parentNode;\n }\n return path;\n}\n\n// Pointer hits often land on text/token descendants. This normalizes those\n// hits back to the row elements InteractionManager knows how to resolve.\nfunction closestSelectableRow(element: Element): HTMLElement | undefined {\n const row = element.closest('[data-line], [data-column-number]');\n if (row instanceof HTMLElement) {\n return row;\n }\n\n const annotationRow = element.closest(\n '[data-line-annotation], [data-gutter-buffer=\"annotation\"]'\n );\n if (!(annotationRow instanceof HTMLElement)) {\n return undefined;\n }\n\n const previousRow = annotationRow.previousElementSibling;\n return previousRow instanceof HTMLElement &&\n (previousRow.hasAttribute('data-line') ||\n previousRow.hasAttribute('data-column-number'))\n ? previousRow\n : undefined;\n}\n\nfunction getAnnotationSlotName(element: Element): string | undefined {\n const slottedElement = element.closest('[slot^=\"annotation-\"]');\n if (slottedElement instanceof HTMLElement) {\n return slottedElement.getAttribute('slot') ?? undefined;\n }\n\n if (element instanceof HTMLElement) {\n const slotName = element.getAttribute('name') ?? undefined;\n return slotName != null && slotName.startsWith('annotation-')\n ? slotName\n : undefined;\n }\n\n return undefined;\n}\n\nfunction selectionPointFromAnnotationSlotName(\n slotName: string | undefined\n): SelectionPoint | undefined {\n if (slotName == null) {\n return undefined;\n }\n\n const match = /^annotation-(?:(additions|deletions)-)?(\\d+)$/.exec(slotName);\n if (match == null) {\n return undefined;\n }\n\n const lineNumber = Number.parseInt(match[2], 10);\n if (!Number.isFinite(lineNumber) || lineNumber <= 0) {\n return undefined;\n }\n\n const side = match[1] as SelectionSide | undefined;\n return { lineNumber, side };\n}\n\ninterface ElementFromPointRoot {\n elementFromPoint(x: number, y: number): Element | null;\n}\n\nfunction hasElementFromPoint(\n value: Node | undefined\n): value is Node & ElementFromPointRoot {\n return (\n value != null &&\n typeof (value as Partial<ElementFromPointRoot>).elementFromPoint ===\n 'function'\n );\n}\n\nfunction areSelectionRangesEqual(\n first: SelectedLineRange | null,\n second: SelectedLineRange | null\n): boolean {\n return (\n first === second ||\n areSelectionsEqual(first ?? undefined, second ?? undefined)\n );\n}\n\nfunction areLineRenderStatesEqual(\n first: LineRenderState | undefined,\n second: LineRenderState\n): boolean {\n return (\n first?.highlightSide === second.highlightSide &&\n first?.lineNumberOnly === second.lineNumberOnly &&\n areSelectionRangesEqual(first?.range ?? null, second.range)\n );\n}\n\nfunction getAnnotationSide(\n lineType: LineTypes,\n codeElement: HTMLElement\n): AnnotationSide {\n switch (lineType) {\n case 'change-deletion':\n return 'deletions';\n case 'change-addition':\n return 'additions';\n default:\n return codeElement.hasAttribute('data-deletions')\n ? 'deletions'\n : 'additions';\n }\n}\n\nfunction getLineTypeFromElement(element: HTMLElement): LineTypes | undefined {\n const lineType = element.getAttribute('data-line-type');\n if (lineType == null) {\n return undefined;\n }\n switch (lineType) {\n case 'change-deletion':\n case 'change-addition':\n case 'context':\n case 'context-expanded':\n return lineType;\n default:\n return undefined;\n }\n}\n\nfunction debugLogIfEnabled(\n debugLogType: LogTypes | undefined = 'none',\n logIfType: 'move' | 'click',\n ...args: unknown[]\n) {\n switch (debugLogType) {\n case 'none':\n return;\n case 'both':\n break;\n case 'click':\n if (logIfType !== 'click') {\n return;\n }\n break;\n case 'move':\n if (logIfType !== 'move') {\n return;\n }\n break;\n }\n console.log(...args);\n}\n"],"mappings":"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"}
@@ -1,11 +1,19 @@
1
1
  //#region src/managers/ResizeManager.d.ts
2
+ type ResizeManagerColumnVariableMode = 'apply' | 'measure';
3
+ interface ResizeManagerSetupOptions {
4
+ disableAnnotations: boolean;
5
+ columnVariables?: ResizeManagerColumnVariableMode;
6
+ }
2
7
  declare class ResizeManager {
3
8
  private static resizeObserver;
4
9
  private static managersByElement;
5
10
  private static getResizeObserver;
6
11
  private static handleSharedResizeEntries;
7
12
  private observedNodes;
8
- setup(pre: HTMLPreElement, disableAnnotations: boolean): void;
13
+ setup(pre: HTMLPreElement, {
14
+ disableAnnotations,
15
+ columnVariables
16
+ }: ResizeManagerSetupOptions): void;
9
17
  cleanUp(): void;
10
18
  private observe;
11
19
  private unobserve;
@@ -15,5 +23,5 @@ declare class ResizeManager {
15
23
  private applyNewHeight;
16
24
  }
17
25
  //#endregion
18
- export { ResizeManager };
26
+ export { ResizeManager, ResizeManagerColumnVariableMode, ResizeManagerSetupOptions };
19
27
  //# sourceMappingURL=ResizeManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResizeManager.d.ts","names":[],"sources":["../../src/managers/ResizeManager.ts"],"mappings":";cAiBa,aAAA;EAAA,eAEI,cAAA;EAAA,eACA,iBAAA;EAAA,eAEA,iBAAA;EAAA,eAQA,yBAAA;EAAA,QAsBP,aAAA;EAKR,KAAA,CAAM,GAAA,EAAK,cAAc,EAAE,kBAAA;EAoL3B,OAAA;EAAA,QAOQ,OAAA;EAAA,QAkBA,SAAA;EAAA,QAmBA,mBAAA;EAAA,QA0DA,sBAAA;EAAA,QAWA,kBAAA;EAAA,QAkDA,cAAA;AAAA"}
1
+ {"version":3,"file":"ResizeManager.d.ts","names":[],"sources":["../../src/managers/ResizeManager.ts"],"mappings":";KAeY,+BAAA;AAAA,UAEK,yBAAA;EACf,kBAAA;EACA,eAAA,GAAkB,+BAA+B;AAAA;AAAA,cAUtC,aAAA;EAAA,eAEI,cAAA;EAAA,eACA,iBAAA;EAAA,eAEA,iBAAA;EAAA,eAQA,yBAAA;EAAA,QAsBP,aAAA;EAKR,KAAA,CACE,GAAA,EAAK,cAAA;IACH,kBAAA;IAAoB;EAAA,GAA6B,yBAAA;EAwLrD,OAAA;EAAA,QAOQ,OAAA;EAAA,QAkBA,SAAA;EAAA,QAmBA,mBAAA;EAAA,QA0DA,sBAAA;EAAA,QAWA,kBAAA;EAAA,QA6BA,cAAA;AAAA"}
@@ -19,8 +19,9 @@ var ResizeManager = class ResizeManager {
19
19
  for (const [manager, managerEntries] of entriesByManager) manager.handleResizeEntries(managerEntries);
20
20
  }
21
21
  observedNodes = /* @__PURE__ */ new Map();
22
- setup(pre, disableAnnotations) {
22
+ setup(pre, { disableAnnotations, columnVariables = "apply" }) {
23
23
  const annotationUpdates = /* @__PURE__ */ new Set();
24
+ const applyColumnVariables = columnVariables === "apply";
24
25
  let columnCount = 0;
25
26
  const observedNodes = new Map(this.observedNodes);
26
27
  this.observedNodes.clear();
@@ -54,13 +55,15 @@ var ResizeManager = class ResizeManager {
54
55
  observedNodes.delete(item.numberElement);
55
56
  this.observedNodes.set(item.numberElement, item);
56
57
  } else item.numberWidth = 0;
58
+ syncColumnVariableMode(item, applyColumnVariables);
57
59
  } else {
58
60
  item = {
59
61
  type: "code",
60
62
  codeElement,
61
63
  numberElement,
62
64
  codeWidth: "auto",
63
- numberWidth: 0
65
+ numberWidth: 0,
66
+ applyColumnVariables
64
67
  };
65
68
  this.observedNodes.set(codeElement, item);
66
69
  this.observe(codeElement);
@@ -223,12 +226,10 @@ var ResizeManager = class ResizeManager {
223
226
  if (!codeWidthChanged && !numberWidthChanged) continue;
224
227
  item.codeWidth = nextCodeWidth;
225
228
  item.numberWidth = nextNumberWidth;
226
- if (codeWidthChanged) item.codeElement.style.setProperty("--diffs-column-width", `${typeof nextCodeWidth === "number" ? `${nextCodeWidth}px` : "auto"}`);
227
- if (numberWidthChanged) item.codeElement.style.setProperty("--diffs-column-number-width", `${nextNumberWidth === 0 ? "auto" : `${nextNumberWidth}px`}`);
228
- if (codeWidthChanged || numberWidthChanged && nextCodeWidth !== "auto") {
229
- const targetWidth = typeof nextCodeWidth === "number" ? Math.max(nextCodeWidth - nextNumberWidth, 0) : 0;
230
- item.codeElement.style.setProperty("--diffs-column-content-width", `${targetWidth > 0 ? `${targetWidth}px` : "auto"}`);
231
- }
229
+ if (item.applyColumnVariables) applyCodeColumnVariables(item, {
230
+ codeWidthChanged,
231
+ numberWidthChanged
232
+ });
232
233
  }
233
234
  };
234
235
  applyNewHeight(item, newHeight) {
@@ -246,13 +247,32 @@ function resolveCodeWidth(inlineSize) {
246
247
  function resolveNumberWidth(inlineSize) {
247
248
  return Math.max(Math.ceil(inlineSize), 0);
248
249
  }
249
- function cleanupStaleCodeItem(item) {
250
- if (item.codeElement.isConnected) {
251
- item.codeElement.style.removeProperty("--diffs-column-content-width");
252
- item.codeElement.style.removeProperty("--diffs-column-number-width");
253
- item.codeElement.style.removeProperty("--diffs-column-width");
250
+ function syncColumnVariableMode(item, applyColumnVariables) {
251
+ if (item.applyColumnVariables === applyColumnVariables) return;
252
+ item.applyColumnVariables = applyColumnVariables;
253
+ if (applyColumnVariables) applyCodeColumnVariables(item, {
254
+ codeWidthChanged: true,
255
+ numberWidthChanged: true
256
+ });
257
+ else removeCodeColumnVariables(item);
258
+ }
259
+ function applyCodeColumnVariables(item, { codeWidthChanged, numberWidthChanged }) {
260
+ const { codeElement, codeWidth, numberWidth } = item;
261
+ if (codeWidthChanged) codeElement.style.setProperty("--diffs-column-width", `${typeof codeWidth === "number" ? `${codeWidth}px` : "auto"}`);
262
+ if (numberWidthChanged) codeElement.style.setProperty("--diffs-column-number-width", `${numberWidth === 0 ? "auto" : `${numberWidth}px`}`);
263
+ if (codeWidthChanged || numberWidthChanged && codeWidth !== "auto") {
264
+ const targetWidth = typeof codeWidth === "number" ? Math.max(codeWidth - numberWidth, 0) : 0;
265
+ codeElement.style.setProperty("--diffs-column-content-width", `${targetWidth > 0 ? `${targetWidth}px` : "auto"}`);
254
266
  }
255
267
  }
268
+ function removeCodeColumnVariables(item) {
269
+ item.codeElement.style.removeProperty("--diffs-column-content-width");
270
+ item.codeElement.style.removeProperty("--diffs-column-number-width");
271
+ item.codeElement.style.removeProperty("--diffs-column-width");
272
+ }
273
+ function cleanupStaleCodeItem(item) {
274
+ if (item.codeElement.isConnected) removeCodeColumnVariables(item);
275
+ }
256
276
  function cleanupStaleAnnotationItem(item) {
257
277
  if (item.column1.container.isConnected) item.column1.container.style.removeProperty("--diffs-annotation-min-height");
258
278
  if (item.column2.container.isConnected) item.column2.container.style.removeProperty("--diffs-annotation-min-height");