@openclaw/diffs 2026.9.4 → 2026.9.6

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 (1284) hide show
  1. package/README.md +2 -1
  2. package/assets/activity.svg +3 -0
  3. package/assets/icon.png +0 -0
  4. package/dist/{browser.runtime-DTKAejqd.js → .setup/browser.runtime-VjaO3wrj.mjs} +1 -1
  5. package/dist/assets/viewer-runtime.js +50 -56
  6. package/dist/index.js +44 -18
  7. package/node_modules/@pierre/diffs/dist/components/CodeView.d.ts +117 -70
  8. package/node_modules/@pierre/diffs/dist/components/CodeView.d.ts.map +1 -1
  9. package/node_modules/@pierre/diffs/dist/components/CodeView.js +197 -65
  10. package/node_modules/@pierre/diffs/dist/components/CodeView.js.map +1 -1
  11. package/node_modules/@pierre/diffs/dist/components/File.d.ts +81 -29
  12. package/node_modules/@pierre/diffs/dist/components/File.d.ts.map +1 -1
  13. package/node_modules/@pierre/diffs/dist/components/File.js +244 -66
  14. package/node_modules/@pierre/diffs/dist/components/File.js.map +1 -1
  15. package/node_modules/@pierre/diffs/dist/components/FileDiff.d.ts +109 -57
  16. package/node_modules/@pierre/diffs/dist/components/FileDiff.d.ts.map +1 -1
  17. package/node_modules/@pierre/diffs/dist/components/FileDiff.js +445 -112
  18. package/node_modules/@pierre/diffs/dist/components/FileDiff.js.map +1 -1
  19. package/node_modules/@pierre/diffs/dist/components/FileStream.d.ts +1 -0
  20. package/node_modules/@pierre/diffs/dist/components/FileStream.d.ts.map +1 -1
  21. package/node_modules/@pierre/diffs/dist/components/FileStream.js +1 -1
  22. package/node_modules/@pierre/diffs/dist/components/UnresolvedFile.d.ts +3 -3
  23. package/node_modules/@pierre/diffs/dist/components/UnresolvedFile.d.ts.map +1 -1
  24. package/node_modules/@pierre/diffs/dist/components/UnresolvedFile.js +4 -3
  25. package/node_modules/@pierre/diffs/dist/components/UnresolvedFile.js.map +1 -1
  26. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.d.ts +18 -14
  27. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.d.ts.map +1 -1
  28. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js +153 -62
  29. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js.map +1 -1
  30. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.d.ts +17 -16
  31. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  32. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js +197 -105
  33. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js.map +1 -1
  34. package/node_modules/@pierre/diffs/dist/components/Virtualizer.d.ts +1 -5
  35. package/node_modules/@pierre/diffs/dist/components/Virtualizer.d.ts.map +1 -1
  36. package/node_modules/@pierre/diffs/dist/components/Virtualizer.js.map +1 -1
  37. package/node_modules/@pierre/diffs/dist/components/VirtulizerDevelopment.d.ts +1 -2
  38. package/node_modules/@pierre/diffs/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
  39. package/node_modules/@pierre/diffs/dist/components/web-components.d.ts.map +1 -1
  40. package/node_modules/@pierre/diffs/dist/components/web-components.js +2 -1
  41. package/node_modules/@pierre/diffs/dist/components/web-components.js.map +1 -1
  42. package/node_modules/@pierre/diffs/dist/constants.d.ts +0 -1
  43. package/node_modules/@pierre/diffs/dist/constants.d.ts.map +1 -1
  44. package/node_modules/@pierre/diffs/dist/edit/index.d.ts +7 -4
  45. package/node_modules/@pierre/diffs/dist/edit/index.js +5 -1
  46. package/node_modules/@pierre/diffs/dist/editor/EditStateManager.d.ts +55 -0
  47. package/node_modules/@pierre/diffs/dist/editor/EditStateManager.d.ts.map +1 -0
  48. package/node_modules/@pierre/diffs/dist/editor/EditStateManager.js +135 -0
  49. package/node_modules/@pierre/diffs/dist/editor/EditStateManager.js.map +1 -0
  50. package/node_modules/@pierre/diffs/dist/editor/cloneRetainedDiffSessionSnapshot.d.ts +6 -0
  51. package/node_modules/@pierre/diffs/dist/editor/cloneRetainedDiffSessionSnapshot.d.ts.map +1 -0
  52. package/node_modules/@pierre/diffs/dist/editor/cloneRetainedDiffSessionSnapshot.js +16 -0
  53. package/node_modules/@pierre/diffs/dist/editor/cloneRetainedDiffSessionSnapshot.js.map +1 -0
  54. package/node_modules/@pierre/diffs/dist/editor/command.d.ts +2 -1
  55. package/node_modules/@pierre/diffs/dist/editor/command.d.ts.map +1 -1
  56. package/node_modules/@pierre/diffs/dist/editor/editPrediction.d.ts +77 -0
  57. package/node_modules/@pierre/diffs/dist/editor/editPrediction.d.ts.map +1 -0
  58. package/node_modules/@pierre/diffs/dist/editor/editPrediction.js +365 -0
  59. package/node_modules/@pierre/diffs/dist/editor/editPrediction.js.map +1 -0
  60. package/node_modules/@pierre/diffs/dist/editor/editStack.d.ts +19 -41
  61. package/node_modules/@pierre/diffs/dist/editor/editStack.d.ts.map +1 -1
  62. package/node_modules/@pierre/diffs/dist/editor/editStack.js +67 -4
  63. package/node_modules/@pierre/diffs/dist/editor/editStack.js.map +1 -1
  64. package/node_modules/@pierre/diffs/dist/editor/editor.d.ts +117 -32
  65. package/node_modules/@pierre/diffs/dist/editor/editor.d.ts.map +1 -1
  66. package/node_modules/@pierre/diffs/dist/editor/editor.js +1125 -396
  67. package/node_modules/@pierre/diffs/dist/editor/editor.js.map +1 -1
  68. package/node_modules/@pierre/diffs/dist/editor/editor2.js +1 -1
  69. package/node_modules/@pierre/diffs/dist/editor/editor2.js.map +1 -1
  70. package/node_modules/@pierre/diffs/dist/editor/languages.d.ts +3 -4
  71. package/node_modules/@pierre/diffs/dist/editor/languages.d.ts.map +1 -1
  72. package/node_modules/@pierre/diffs/dist/editor/languages.js +1 -1
  73. package/node_modules/@pierre/diffs/dist/editor/languages.js.map +1 -1
  74. package/node_modules/@pierre/diffs/dist/editor/lineAnnotations.d.ts +3 -4
  75. package/node_modules/@pierre/diffs/dist/editor/lineAnnotations.d.ts.map +1 -1
  76. package/node_modules/@pierre/diffs/dist/editor/lineAnnotations.js +18 -8
  77. package/node_modules/@pierre/diffs/dist/editor/lineAnnotations.js.map +1 -1
  78. package/node_modules/@pierre/diffs/dist/editor/marker.d.ts +2 -3
  79. package/node_modules/@pierre/diffs/dist/editor/marker.d.ts.map +1 -1
  80. package/node_modules/@pierre/diffs/dist/editor/marker.js +5 -3
  81. package/node_modules/@pierre/diffs/dist/editor/marker.js.map +1 -1
  82. package/node_modules/@pierre/diffs/dist/editor/matchBrackets.d.ts +2 -3
  83. package/node_modules/@pierre/diffs/dist/editor/matchBrackets.d.ts.map +1 -1
  84. package/node_modules/@pierre/diffs/dist/editor/matchBrackets.js.map +1 -1
  85. package/node_modules/@pierre/diffs/dist/editor/pieceTable.d.ts +1 -2
  86. package/node_modules/@pierre/diffs/dist/editor/pieceTable.d.ts.map +1 -1
  87. package/node_modules/@pierre/diffs/dist/editor/pieceTable.js.map +1 -1
  88. package/node_modules/@pierre/diffs/dist/editor/platform.d.ts +1 -5
  89. package/node_modules/@pierre/diffs/dist/editor/platform.d.ts.map +1 -1
  90. package/node_modules/@pierre/diffs/dist/editor/platform.js.map +1 -1
  91. package/node_modules/@pierre/diffs/dist/editor/popover.d.ts +12 -12
  92. package/node_modules/@pierre/diffs/dist/editor/popover.d.ts.map +1 -1
  93. package/node_modules/@pierre/diffs/dist/editor/popover.js.map +1 -1
  94. package/node_modules/@pierre/diffs/dist/editor/searchPanel.d.ts +2 -3
  95. package/node_modules/@pierre/diffs/dist/editor/searchPanel.d.ts.map +1 -1
  96. package/node_modules/@pierre/diffs/dist/editor/searchPanel.js +17 -13
  97. package/node_modules/@pierre/diffs/dist/editor/searchPanel.js.map +1 -1
  98. package/node_modules/@pierre/diffs/dist/editor/selection.d.ts +32 -24
  99. package/node_modules/@pierre/diffs/dist/editor/selection.d.ts.map +1 -1
  100. package/node_modules/@pierre/diffs/dist/editor/selection.js +3 -3
  101. package/node_modules/@pierre/diffs/dist/editor/selection.js.map +1 -1
  102. package/node_modules/@pierre/diffs/dist/editor/selectionAction.d.ts +3 -4
  103. package/node_modules/@pierre/diffs/dist/editor/selectionAction.d.ts.map +1 -1
  104. package/node_modules/@pierre/diffs/dist/editor/selectionAction.js.map +1 -1
  105. package/node_modules/@pierre/diffs/dist/editor/sprite.d.ts.map +1 -1
  106. package/node_modules/@pierre/diffs/dist/editor/textDocument.d.ts +11 -9
  107. package/node_modules/@pierre/diffs/dist/editor/textDocument.d.ts.map +1 -1
  108. package/node_modules/@pierre/diffs/dist/editor/textDocument.js +28 -5
  109. package/node_modules/@pierre/diffs/dist/editor/textDocument.js.map +1 -1
  110. package/node_modules/@pierre/diffs/dist/editor/textDocumentChangeTransaction.d.ts +14 -0
  111. package/node_modules/@pierre/diffs/dist/editor/textDocumentChangeTransaction.d.ts.map +1 -0
  112. package/node_modules/@pierre/diffs/dist/editor/textDocumentChangeTransaction.js +12 -0
  113. package/node_modules/@pierre/diffs/dist/editor/textDocumentChangeTransaction.js.map +1 -0
  114. package/node_modules/@pierre/diffs/dist/editor/textMeasure.d.ts +5 -0
  115. package/node_modules/@pierre/diffs/dist/editor/textMeasure.d.ts.map +1 -1
  116. package/node_modules/@pierre/diffs/dist/editor/textMeasure.js +10 -0
  117. package/node_modules/@pierre/diffs/dist/editor/textMeasure.js.map +1 -1
  118. package/node_modules/@pierre/diffs/dist/editor/tokenizer.d.ts +2 -12
  119. package/node_modules/@pierre/diffs/dist/editor/tokenizer.d.ts.map +1 -1
  120. package/node_modules/@pierre/diffs/dist/editor/tokenizer.js +8 -4
  121. package/node_modules/@pierre/diffs/dist/editor/tokenizer.js.map +1 -1
  122. package/node_modules/@pierre/diffs/dist/editor/types.d.ts +266 -0
  123. package/node_modules/@pierre/diffs/dist/editor/types.d.ts.map +1 -0
  124. package/node_modules/@pierre/diffs/dist/editor/types.js +0 -0
  125. package/node_modules/@pierre/diffs/dist/editor/utils.d.ts +2 -1
  126. package/node_modules/@pierre/diffs/dist/editor/utils.d.ts.map +1 -1
  127. package/node_modules/@pierre/diffs/dist/editor/utils.js +15 -8
  128. package/node_modules/@pierre/diffs/dist/editor/utils.js.map +1 -1
  129. package/node_modules/@pierre/diffs/dist/highlighter/languages/areLanguagesAttached.d.ts +0 -1
  130. package/node_modules/@pierre/diffs/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
  131. package/node_modules/@pierre/diffs/dist/highlighter/languages/attachResolvedLanguages.d.ts +1 -0
  132. package/node_modules/@pierre/diffs/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
  133. package/node_modules/@pierre/diffs/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -1
  134. package/node_modules/@pierre/diffs/dist/highlighter/languages/constants.d.ts +1 -1
  135. package/node_modules/@pierre/diffs/dist/highlighter/languages/constants.d.ts.map +1 -1
  136. package/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedLanguages.d.ts +1 -0
  137. package/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -1
  138. package/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -0
  139. package/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
  140. package/node_modules/@pierre/diffs/dist/highlighter/languages/hasResolvedLanguages.d.ts +0 -1
  141. package/node_modules/@pierre/diffs/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -1
  142. package/node_modules/@pierre/diffs/dist/highlighter/languages/registerCustomLanguage.d.ts +0 -1
  143. package/node_modules/@pierre/diffs/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -1
  144. package/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguage.d.ts +1 -0
  145. package/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  146. package/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguages.d.ts +1 -0
  147. package/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -1
  148. package/node_modules/@pierre/diffs/dist/highlighter/shared_highlighter.d.ts +7 -8
  149. package/node_modules/@pierre/diffs/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  150. package/node_modules/@pierre/diffs/dist/highlighter/shared_highlighter.js +7 -3
  151. package/node_modules/@pierre/diffs/dist/highlighter/shared_highlighter.js.map +1 -1
  152. package/node_modules/@pierre/diffs/dist/highlighter/themes/areThemesAttached.d.ts +0 -1
  153. package/node_modules/@pierre/diffs/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
  154. package/node_modules/@pierre/diffs/dist/highlighter/themes/areThemesAttached.js +1 -1
  155. package/node_modules/@pierre/diffs/dist/highlighter/themes/attachResolvedThemes.d.ts +0 -1
  156. package/node_modules/@pierre/diffs/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
  157. package/node_modules/@pierre/diffs/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
  158. package/node_modules/@pierre/diffs/dist/highlighter/themes/constants.d.ts.map +1 -1
  159. package/node_modules/@pierre/diffs/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts +0 -1
  160. package/node_modules/@pierre/diffs/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
  161. package/node_modules/@pierre/diffs/dist/highlighter/themes/getResolvedThemes.d.ts +0 -1
  162. package/node_modules/@pierre/diffs/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
  163. package/node_modules/@pierre/diffs/dist/highlighter/themes/hasResolvedThemes.d.ts +0 -1
  164. package/node_modules/@pierre/diffs/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
  165. package/node_modules/@pierre/diffs/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
  166. package/node_modules/@pierre/diffs/dist/highlighter/themes/registerCustomTheme.d.ts +0 -1
  167. package/node_modules/@pierre/diffs/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  168. package/node_modules/@pierre/diffs/dist/highlighter/themes/resolveTheme.d.ts +0 -1
  169. package/node_modules/@pierre/diffs/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
  170. package/node_modules/@pierre/diffs/dist/highlighter/themes/resolveThemes.d.ts +0 -1
  171. package/node_modules/@pierre/diffs/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
  172. package/node_modules/@pierre/diffs/dist/highlighter/themes/themeResolution.d.ts +0 -1
  173. package/node_modules/@pierre/diffs/dist/highlighter/themes/themeResolution.d.ts.map +1 -1
  174. package/node_modules/@pierre/diffs/dist/highlighter/themes/themeResolver.d.ts +0 -1
  175. package/node_modules/@pierre/diffs/dist/highlighter/themes/themeResolver.d.ts.map +1 -1
  176. package/node_modules/@pierre/diffs/dist/index.d.ts +9 -6
  177. package/node_modules/@pierre/diffs/dist/index.js +22 -21
  178. package/node_modules/@pierre/diffs/dist/managers/InteractionManager.d.ts +2 -26
  179. package/node_modules/@pierre/diffs/dist/managers/InteractionManager.d.ts.map +1 -1
  180. package/node_modules/@pierre/diffs/dist/managers/InteractionManager.js +8 -3
  181. package/node_modules/@pierre/diffs/dist/managers/InteractionManager.js.map +1 -1
  182. package/node_modules/@pierre/diffs/dist/managers/ResizeManager.d.ts +1 -4
  183. package/node_modules/@pierre/diffs/dist/managers/ResizeManager.d.ts.map +1 -1
  184. package/node_modules/@pierre/diffs/dist/managers/ScrollSyncManager.d.ts.map +1 -1
  185. package/node_modules/@pierre/diffs/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  186. package/node_modules/@pierre/diffs/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +0 -1
  187. package/node_modules/@pierre/diffs/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -1
  188. package/node_modules/@pierre/diffs/dist/node_modules/.pnpm/@types_unist@3.0.3/node_modules/@types/unist/index.d.ts.map +1 -1
  189. package/node_modules/@pierre/diffs/dist/react/CodeView.d.ts +45 -26
  190. package/node_modules/@pierre/diffs/dist/react/CodeView.d.ts.map +1 -1
  191. package/node_modules/@pierre/diffs/dist/react/CodeView.js +52 -45
  192. package/node_modules/@pierre/diffs/dist/react/CodeView.js.map +1 -1
  193. package/node_modules/@pierre/diffs/dist/react/EditContext.d.ts +8 -14
  194. package/node_modules/@pierre/diffs/dist/react/EditContext.d.ts.map +1 -1
  195. package/node_modules/@pierre/diffs/dist/react/EditContext.js +2 -9
  196. package/node_modules/@pierre/diffs/dist/react/EditContext.js.map +1 -1
  197. package/node_modules/@pierre/diffs/dist/react/File.d.ts +5 -23
  198. package/node_modules/@pierre/diffs/dist/react/File.d.ts.map +1 -1
  199. package/node_modules/@pierre/diffs/dist/react/File.js +19 -14
  200. package/node_modules/@pierre/diffs/dist/react/File.js.map +1 -1
  201. package/node_modules/@pierre/diffs/dist/react/FileDiff.d.ts +5 -22
  202. package/node_modules/@pierre/diffs/dist/react/FileDiff.d.ts.map +1 -1
  203. package/node_modules/@pierre/diffs/dist/react/FileDiff.js +19 -14
  204. package/node_modules/@pierre/diffs/dist/react/FileDiff.js.map +1 -1
  205. package/node_modules/@pierre/diffs/dist/react/MultiFileDiff.d.ts +3 -23
  206. package/node_modules/@pierre/diffs/dist/react/MultiFileDiff.d.ts.map +1 -1
  207. package/node_modules/@pierre/diffs/dist/react/MultiFileDiff.js +19 -22
  208. package/node_modules/@pierre/diffs/dist/react/MultiFileDiff.js.map +1 -1
  209. package/node_modules/@pierre/diffs/dist/react/PatchDiff.d.ts +2 -21
  210. package/node_modules/@pierre/diffs/dist/react/PatchDiff.d.ts.map +1 -1
  211. package/node_modules/@pierre/diffs/dist/react/PatchDiff.js +19 -14
  212. package/node_modules/@pierre/diffs/dist/react/PatchDiff.js.map +1 -1
  213. package/node_modules/@pierre/diffs/dist/react/UnresolvedFile.d.ts +4 -21
  214. package/node_modules/@pierre/diffs/dist/react/UnresolvedFile.d.ts.map +1 -1
  215. package/node_modules/@pierre/diffs/dist/react/UnresolvedFile.js +15 -14
  216. package/node_modules/@pierre/diffs/dist/react/UnresolvedFile.js.map +1 -1
  217. package/node_modules/@pierre/diffs/dist/react/Virtualizer.d.ts +1 -9
  218. package/node_modules/@pierre/diffs/dist/react/Virtualizer.d.ts.map +1 -1
  219. package/node_modules/@pierre/diffs/dist/react/Virtualizer.js.map +1 -1
  220. package/node_modules/@pierre/diffs/dist/react/WorkerPoolContext.d.ts +2 -6
  221. package/node_modules/@pierre/diffs/dist/react/WorkerPoolContext.d.ts.map +1 -1
  222. package/node_modules/@pierre/diffs/dist/react/constants.d.ts +0 -1
  223. package/node_modules/@pierre/diffs/dist/react/constants.d.ts.map +1 -1
  224. package/node_modules/@pierre/diffs/dist/react/index.d.ts +8 -5
  225. package/node_modules/@pierre/diffs/dist/react/jsx.d.ts +1 -0
  226. package/node_modules/@pierre/diffs/dist/react/jsx.d.ts.map +1 -1
  227. package/node_modules/@pierre/diffs/dist/react/types.d.ts +47 -10
  228. package/node_modules/@pierre/diffs/dist/react/types.d.ts.map +1 -1
  229. package/node_modules/@pierre/diffs/dist/react/utils/assignRef.d.ts +6 -0
  230. package/node_modules/@pierre/diffs/dist/react/utils/assignRef.d.ts.map +1 -0
  231. package/node_modules/@pierre/diffs/dist/react/utils/assignRef.js +9 -0
  232. package/node_modules/@pierre/diffs/dist/react/utils/assignRef.js.map +1 -0
  233. package/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.d.ts +11 -24
  234. package/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  235. package/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.js +2 -2
  236. package/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.js.map +1 -1
  237. package/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.d.ts +11 -21
  238. package/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  239. package/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.js +2 -2
  240. package/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.js.map +1 -1
  241. package/node_modules/@pierre/diffs/dist/react/utils/templateRender.d.ts +0 -1
  242. package/node_modules/@pierre/diffs/dist/react/utils/templateRender.d.ts.map +1 -1
  243. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.d.ts +16 -20
  244. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  245. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.js +126 -22
  246. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.js.map +1 -1
  247. package/node_modules/@pierre/diffs/dist/react/utils/useFileInstance.d.ts +11 -19
  248. package/node_modules/@pierre/diffs/dist/react/utils/useFileInstance.d.ts.map +1 -1
  249. package/node_modules/@pierre/diffs/dist/react/utils/useFileInstance.js +88 -25
  250. package/node_modules/@pierre/diffs/dist/react/utils/useFileInstance.js.map +1 -1
  251. package/node_modules/@pierre/diffs/dist/react/utils/useStableCallback.d.ts.map +1 -1
  252. package/node_modules/@pierre/diffs/dist/react/utils/useUnresolvedFileInstance.d.ts +1 -12
  253. package/node_modules/@pierre/diffs/dist/react/utils/useUnresolvedFileInstance.d.ts.map +1 -1
  254. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.d.ts +34 -24
  255. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  256. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js +188 -118
  257. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js.map +1 -1
  258. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.d.ts +28 -11
  259. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.d.ts.map +1 -1
  260. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js +141 -67
  261. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js.map +1 -1
  262. package/node_modules/@pierre/diffs/dist/renderers/UnresolvedFileHunksRenderer.d.ts +5 -11
  263. package/node_modules/@pierre/diffs/dist/renderers/UnresolvedFileHunksRenderer.d.ts.map +1 -1
  264. package/node_modules/@pierre/diffs/dist/renderers/UnresolvedFileHunksRenderer.js +2 -2
  265. package/node_modules/@pierre/diffs/dist/renderers/UnresolvedFileHunksRenderer.js.map +1 -1
  266. package/node_modules/@pierre/diffs/dist/shiki-stream/stream.d.ts +0 -1
  267. package/node_modules/@pierre/diffs/dist/shiki-stream/stream.d.ts.map +1 -1
  268. package/node_modules/@pierre/diffs/dist/shiki-stream/stream.js.map +1 -1
  269. package/node_modules/@pierre/diffs/dist/shiki-stream/tokenizer.d.ts +0 -1
  270. package/node_modules/@pierre/diffs/dist/shiki-stream/tokenizer.d.ts.map +1 -1
  271. package/node_modules/@pierre/diffs/dist/shiki-stream/tokenizer.js +2 -1
  272. package/node_modules/@pierre/diffs/dist/shiki-stream/tokenizer.js.map +1 -1
  273. package/node_modules/@pierre/diffs/dist/shiki-stream/types.d.ts +0 -1
  274. package/node_modules/@pierre/diffs/dist/shiki-stream/types.d.ts.map +1 -1
  275. package/node_modules/@pierre/diffs/dist/sprite.d.ts.map +1 -1
  276. package/node_modules/@pierre/diffs/dist/ssr/FileDiffReact.d.ts +1 -8
  277. package/node_modules/@pierre/diffs/dist/ssr/FileDiffReact.d.ts.map +1 -1
  278. package/node_modules/@pierre/diffs/dist/ssr/FileDiffReact.js +8 -3
  279. package/node_modules/@pierre/diffs/dist/ssr/FileDiffReact.js.map +1 -1
  280. package/node_modules/@pierre/diffs/dist/ssr/index.d.ts +2 -2
  281. package/node_modules/@pierre/diffs/dist/ssr/preloadDiffs.d.ts +19 -47
  282. package/node_modules/@pierre/diffs/dist/ssr/preloadDiffs.d.ts.map +1 -1
  283. package/node_modules/@pierre/diffs/dist/ssr/preloadDiffs.js +1 -1
  284. package/node_modules/@pierre/diffs/dist/ssr/preloadDiffs.js.map +1 -1
  285. package/node_modules/@pierre/diffs/dist/ssr/preloadFile.d.ts +5 -10
  286. package/node_modules/@pierre/diffs/dist/ssr/preloadFile.d.ts.map +1 -1
  287. package/node_modules/@pierre/diffs/dist/ssr/preloadFile.js.map +1 -1
  288. package/node_modules/@pierre/diffs/dist/ssr/preloadPatchFile.d.ts +3 -7
  289. package/node_modules/@pierre/diffs/dist/ssr/preloadPatchFile.d.ts.map +1 -1
  290. package/node_modules/@pierre/diffs/dist/ssr/preloadPatchFile.js.map +1 -1
  291. package/node_modules/@pierre/diffs/dist/ssr/renderHTML.d.ts +0 -1
  292. package/node_modules/@pierre/diffs/dist/ssr/renderHTML.d.ts.map +1 -1
  293. package/node_modules/@pierre/diffs/dist/string-import.d.ts.map +1 -1
  294. package/node_modules/@pierre/diffs/dist/style.js +1 -1
  295. package/node_modules/@pierre/diffs/dist/style.js.map +1 -1
  296. package/node_modules/@pierre/diffs/dist/types.d.ts +13 -264
  297. package/node_modules/@pierre/diffs/dist/types.d.ts.map +1 -1
  298. package/node_modules/@pierre/diffs/dist/utils/annotationHelpers.d.ts +0 -1
  299. package/node_modules/@pierre/diffs/dist/utils/annotationHelpers.d.ts.map +1 -1
  300. package/node_modules/@pierre/diffs/dist/utils/appendItems.d.ts +5 -0
  301. package/node_modules/@pierre/diffs/dist/utils/appendItems.d.ts.map +1 -0
  302. package/node_modules/@pierre/diffs/dist/utils/appendItems.js +8 -0
  303. package/node_modules/@pierre/diffs/dist/utils/appendItems.js.map +1 -0
  304. package/node_modules/@pierre/diffs/dist/utils/applyLineTextWithNewline.d.ts.map +1 -1
  305. package/node_modules/@pierre/diffs/dist/utils/areDiffLineAnnotationsEqual.d.ts +0 -1
  306. package/node_modules/@pierre/diffs/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -1
  307. package/node_modules/@pierre/diffs/dist/utils/areDiffRenderOptionsEqual.d.ts +0 -1
  308. package/node_modules/@pierre/diffs/dist/utils/areDiffRenderOptionsEqual.d.ts.map +1 -1
  309. package/node_modules/@pierre/diffs/dist/utils/areDiffTargetsEqual.d.ts +0 -1
  310. package/node_modules/@pierre/diffs/dist/utils/areDiffTargetsEqual.d.ts.map +1 -1
  311. package/node_modules/@pierre/diffs/dist/utils/areDiffTargetsEqual.js +1 -1
  312. package/node_modules/@pierre/diffs/dist/utils/areDiffTargetsEqual.js.map +1 -1
  313. package/node_modules/@pierre/diffs/dist/utils/areFileRenderOptionsEqual.d.ts +0 -1
  314. package/node_modules/@pierre/diffs/dist/utils/areFileRenderOptionsEqual.d.ts.map +1 -1
  315. package/node_modules/@pierre/diffs/dist/utils/areFileTargetsEqual.d.ts +6 -0
  316. package/node_modules/@pierre/diffs/dist/utils/areFileTargetsEqual.d.ts.map +1 -0
  317. package/node_modules/@pierre/diffs/dist/utils/areFileTargetsEqual.js +8 -0
  318. package/node_modules/@pierre/diffs/dist/utils/areFileTargetsEqual.js.map +1 -0
  319. package/node_modules/@pierre/diffs/dist/utils/areFilesEqual.d.ts +0 -1
  320. package/node_modules/@pierre/diffs/dist/utils/areFilesEqual.d.ts.map +1 -1
  321. package/node_modules/@pierre/diffs/dist/utils/areHunkDataEqual.d.ts +0 -1
  322. package/node_modules/@pierre/diffs/dist/utils/areHunkDataEqual.d.ts.map +1 -1
  323. package/node_modules/@pierre/diffs/dist/utils/areLineAnnotationsEqual.d.ts +0 -1
  324. package/node_modules/@pierre/diffs/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -1
  325. package/node_modules/@pierre/diffs/dist/utils/areManagedSnapshotsEqual.d.ts +1 -2
  326. package/node_modules/@pierre/diffs/dist/utils/areManagedSnapshotsEqual.d.ts.map +1 -1
  327. package/node_modules/@pierre/diffs/dist/utils/areManagedSnapshotsEqual.js.map +1 -1
  328. package/node_modules/@pierre/diffs/dist/utils/areMergeConflictActionsEqual.d.ts +0 -1
  329. package/node_modules/@pierre/diffs/dist/utils/areMergeConflictActionsEqual.d.ts.map +1 -1
  330. package/node_modules/@pierre/diffs/dist/utils/areObjectsEqual.d.ts.map +1 -1
  331. package/node_modules/@pierre/diffs/dist/utils/areOptionsEqual.d.ts +4 -3
  332. package/node_modules/@pierre/diffs/dist/utils/areOptionsEqual.d.ts.map +1 -1
  333. package/node_modules/@pierre/diffs/dist/utils/areOptionsEqual.js.map +1 -1
  334. package/node_modules/@pierre/diffs/dist/utils/arePrePropertiesEqual.d.ts +0 -1
  335. package/node_modules/@pierre/diffs/dist/utils/arePrePropertiesEqual.d.ts.map +1 -1
  336. package/node_modules/@pierre/diffs/dist/utils/areRenderRangesEqual.d.ts +0 -1
  337. package/node_modules/@pierre/diffs/dist/utils/areRenderRangesEqual.d.ts.map +1 -1
  338. package/node_modules/@pierre/diffs/dist/utils/areSelectionPointsEqual.d.ts +0 -1
  339. package/node_modules/@pierre/diffs/dist/utils/areSelectionPointsEqual.d.ts.map +1 -1
  340. package/node_modules/@pierre/diffs/dist/utils/areSelectionsEqual.d.ts +0 -1
  341. package/node_modules/@pierre/diffs/dist/utils/areSelectionsEqual.d.ts.map +1 -1
  342. package/node_modules/@pierre/diffs/dist/utils/areThemesEqual.d.ts +0 -1
  343. package/node_modules/@pierre/diffs/dist/utils/areThemesEqual.d.ts.map +1 -1
  344. package/node_modules/@pierre/diffs/dist/utils/areVirtualWindowSpecsEqual.d.ts +0 -1
  345. package/node_modules/@pierre/diffs/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -1
  346. package/node_modules/@pierre/diffs/dist/utils/areWorkerStatsEqual.d.ts +1 -0
  347. package/node_modules/@pierre/diffs/dist/utils/areWorkerStatsEqual.d.ts.map +1 -1
  348. package/node_modules/@pierre/diffs/dist/utils/awaitWithTimeout.d.ts.map +1 -1
  349. package/node_modules/@pierre/diffs/dist/utils/cleanLastNewline.d.ts.map +1 -1
  350. package/node_modules/@pierre/diffs/dist/utils/cloneFileDiffMetadata.d.ts +3 -3
  351. package/node_modules/@pierre/diffs/dist/utils/cloneFileDiffMetadata.d.ts.map +1 -1
  352. package/node_modules/@pierre/diffs/dist/utils/cloneFileDiffMetadata.js +8 -5
  353. package/node_modules/@pierre/diffs/dist/utils/cloneFileDiffMetadata.js.map +1 -1
  354. package/node_modules/@pierre/diffs/dist/utils/composeCacheKey.d.ts +6 -0
  355. package/node_modules/@pierre/diffs/dist/utils/composeCacheKey.d.ts.map +1 -0
  356. package/node_modules/@pierre/diffs/dist/utils/composeCacheKey.js +10 -0
  357. package/node_modules/@pierre/diffs/dist/utils/composeCacheKey.js.map +1 -0
  358. package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.d.ts +1 -11
  359. package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -1
  360. package/node_modules/@pierre/diffs/dist/utils/computeFileOffsets.d.ts.map +1 -1
  361. package/node_modules/@pierre/diffs/dist/utils/computeFileOffsets.js +9 -8
  362. package/node_modules/@pierre/diffs/dist/utils/computeFileOffsets.js.map +1 -1
  363. package/node_modules/@pierre/diffs/dist/utils/computeVirtualFileMetrics.d.ts +0 -1
  364. package/node_modules/@pierre/diffs/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -1
  365. package/node_modules/@pierre/diffs/dist/utils/createAnnotationElement.d.ts +0 -1
  366. package/node_modules/@pierre/diffs/dist/utils/createAnnotationElement.d.ts.map +1 -1
  367. package/node_modules/@pierre/diffs/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -1
  368. package/node_modules/@pierre/diffs/dist/utils/createCodeViewHeaderFooterHostElement.d.ts.map +1 -1
  369. package/node_modules/@pierre/diffs/dist/utils/createContentColumn.d.ts +0 -1
  370. package/node_modules/@pierre/diffs/dist/utils/createContentColumn.d.ts.map +1 -1
  371. package/node_modules/@pierre/diffs/dist/utils/createEmptyRowBuffer.d.ts +0 -1
  372. package/node_modules/@pierre/diffs/dist/utils/createEmptyRowBuffer.d.ts.map +1 -1
  373. package/node_modules/@pierre/diffs/dist/utils/createFileHeaderElement.d.ts +1 -6
  374. package/node_modules/@pierre/diffs/dist/utils/createFileHeaderElement.d.ts.map +1 -1
  375. package/node_modules/@pierre/diffs/dist/utils/createGutterUtilityContentNode.d.ts.map +1 -1
  376. package/node_modules/@pierre/diffs/dist/utils/createGutterUtilityElement.d.ts +0 -1
  377. package/node_modules/@pierre/diffs/dist/utils/createGutterUtilityElement.d.ts.map +1 -1
  378. package/node_modules/@pierre/diffs/dist/utils/createNoNewlineElement.d.ts +0 -1
  379. package/node_modules/@pierre/diffs/dist/utils/createNoNewlineElement.d.ts.map +1 -1
  380. package/node_modules/@pierre/diffs/dist/utils/createPreElement.d.ts +1 -11
  381. package/node_modules/@pierre/diffs/dist/utils/createPreElement.d.ts.map +1 -1
  382. package/node_modules/@pierre/diffs/dist/utils/createRowNodes.d.ts.map +1 -1
  383. package/node_modules/@pierre/diffs/dist/utils/createSeparator.d.ts +1 -10
  384. package/node_modules/@pierre/diffs/dist/utils/createSeparator.d.ts.map +1 -1
  385. package/node_modules/@pierre/diffs/dist/utils/createSeparator.js +12 -10
  386. package/node_modules/@pierre/diffs/dist/utils/createSeparator.js.map +1 -1
  387. package/node_modules/@pierre/diffs/dist/utils/createSpanNodeFromToken.d.ts +0 -1
  388. package/node_modules/@pierre/diffs/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
  389. package/node_modules/@pierre/diffs/dist/utils/createSpanNodeFromToken.js +2 -1
  390. package/node_modules/@pierre/diffs/dist/utils/createSpanNodeFromToken.js.map +1 -1
  391. package/node_modules/@pierre/diffs/dist/utils/createStyleElement.d.ts +0 -1
  392. package/node_modules/@pierre/diffs/dist/utils/createStyleElement.d.ts.map +1 -1
  393. package/node_modules/@pierre/diffs/dist/utils/createTransformerWithState.d.ts +0 -1
  394. package/node_modules/@pierre/diffs/dist/utils/createTransformerWithState.d.ts.map +1 -1
  395. package/node_modules/@pierre/diffs/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -1
  396. package/node_modules/@pierre/diffs/dist/utils/createWindowFromScrollPosition.d.ts +1 -9
  397. package/node_modules/@pierre/diffs/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -1
  398. package/node_modules/@pierre/diffs/dist/utils/cssWrappers.d.ts +0 -1
  399. package/node_modules/@pierre/diffs/dist/utils/cssWrappers.d.ts.map +1 -1
  400. package/node_modules/@pierre/diffs/dist/utils/cssWrappers.js +5 -3
  401. package/node_modules/@pierre/diffs/dist/utils/cssWrappers.js.map +1 -1
  402. package/node_modules/@pierre/diffs/dist/utils/detachString.d.ts.map +1 -1
  403. package/node_modules/@pierre/diffs/dist/utils/diffAcceptRejectHunk.d.ts +0 -1
  404. package/node_modules/@pierre/diffs/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -1
  405. package/node_modules/@pierre/diffs/dist/utils/editSessionAnnotations.d.ts +68 -0
  406. package/node_modules/@pierre/diffs/dist/utils/editSessionAnnotations.d.ts.map +1 -0
  407. package/node_modules/@pierre/diffs/dist/utils/editSessionAnnotations.js +64 -0
  408. package/node_modules/@pierre/diffs/dist/utils/editSessionAnnotations.js.map +1 -0
  409. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.d.ts +5 -4
  410. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.d.ts.map +1 -1
  411. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.js +7 -5
  412. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.js.map +1 -1
  413. package/node_modules/@pierre/diffs/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -1
  414. package/node_modules/@pierre/diffs/dist/utils/getDiffFileInput.d.ts +1 -5
  415. package/node_modules/@pierre/diffs/dist/utils/getDiffFileInput.d.ts.map +1 -1
  416. package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.d.ts +1 -2
  417. package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -1
  418. package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
  419. package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.d.ts +1 -2
  420. package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.d.ts.map +1 -1
  421. package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.js.map +1 -1
  422. package/node_modules/@pierre/diffs/dist/utils/getFiletypeFromFileName.d.ts +0 -1
  423. package/node_modules/@pierre/diffs/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  424. package/node_modules/@pierre/diffs/dist/utils/getFiletypeFromFileName.js.map +1 -1
  425. package/node_modules/@pierre/diffs/dist/utils/getHighlighterOptions.d.ts +1 -5
  426. package/node_modules/@pierre/diffs/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  427. package/node_modules/@pierre/diffs/dist/utils/getHighlighterOptions.js +1 -1
  428. package/node_modules/@pierre/diffs/dist/utils/getHighlighterOptions.js.map +1 -1
  429. package/node_modules/@pierre/diffs/dist/utils/getHighlighterThemeStyles.d.ts +1 -6
  430. package/node_modules/@pierre/diffs/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
  431. package/node_modules/@pierre/diffs/dist/utils/getHunkSeparatorSlotName.d.ts +0 -1
  432. package/node_modules/@pierre/diffs/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -1
  433. package/node_modules/@pierre/diffs/dist/utils/getHunkSideBoundaries.d.ts.map +1 -1
  434. package/node_modules/@pierre/diffs/dist/utils/getIconForType.d.ts +0 -1
  435. package/node_modules/@pierre/diffs/dist/utils/getIconForType.d.ts.map +1 -1
  436. package/node_modules/@pierre/diffs/dist/utils/getLineAnnotationName.d.ts +0 -1
  437. package/node_modules/@pierre/diffs/dist/utils/getLineAnnotationName.d.ts.map +1 -1
  438. package/node_modules/@pierre/diffs/dist/utils/getLineEndingType.d.ts.map +1 -1
  439. package/node_modules/@pierre/diffs/dist/utils/getLineNodes.d.ts +0 -1
  440. package/node_modules/@pierre/diffs/dist/utils/getLineNodes.d.ts.map +1 -1
  441. package/node_modules/@pierre/diffs/dist/utils/getMergeConflictActionSlotName.d.ts +1 -5
  442. package/node_modules/@pierre/diffs/dist/utils/getMergeConflictActionSlotName.d.ts.map +1 -1
  443. package/node_modules/@pierre/diffs/dist/utils/getMergeConflictLineTypes.d.ts +0 -1
  444. package/node_modules/@pierre/diffs/dist/utils/getMergeConflictLineTypes.d.ts.map +1 -1
  445. package/node_modules/@pierre/diffs/dist/utils/getOrCreateCodeNode.d.ts +1 -7
  446. package/node_modules/@pierre/diffs/dist/utils/getOrCreateCodeNode.d.ts.map +1 -1
  447. package/node_modules/@pierre/diffs/dist/utils/getSingularPatch.d.ts +0 -1
  448. package/node_modules/@pierre/diffs/dist/utils/getSingularPatch.d.ts.map +1 -1
  449. package/node_modules/@pierre/diffs/dist/utils/getThemes.d.ts +0 -1
  450. package/node_modules/@pierre/diffs/dist/utils/getThemes.d.ts.map +1 -1
  451. package/node_modules/@pierre/diffs/dist/utils/getTotalLineCountFromHunks.d.ts +0 -1
  452. package/node_modules/@pierre/diffs/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
  453. package/node_modules/@pierre/diffs/dist/utils/guardWebKitScrollDuringRebuild.d.ts.map +1 -1
  454. package/node_modules/@pierre/diffs/dist/utils/hast_utils.d.ts +2 -12
  455. package/node_modules/@pierre/diffs/dist/utils/hast_utils.d.ts.map +1 -1
  456. package/node_modules/@pierre/diffs/dist/utils/hostTheme.d.ts +1 -5
  457. package/node_modules/@pierre/diffs/dist/utils/hostTheme.d.ts.map +1 -1
  458. package/node_modules/@pierre/diffs/dist/utils/hydratePartialDiff.d.ts +0 -1
  459. package/node_modules/@pierre/diffs/dist/utils/hydratePartialDiff.d.ts.map +1 -1
  460. package/node_modules/@pierre/diffs/dist/utils/hydratePartialDiff.js +2 -1
  461. package/node_modules/@pierre/diffs/dist/utils/hydratePartialDiff.js.map +1 -1
  462. package/node_modules/@pierre/diffs/dist/utils/includesFileAnnotations.d.ts +0 -1
  463. package/node_modules/@pierre/diffs/dist/utils/includesFileAnnotations.d.ts.map +1 -1
  464. package/node_modules/@pierre/diffs/dist/utils/isDefaultRenderRange.d.ts +0 -1
  465. package/node_modules/@pierre/diffs/dist/utils/isDefaultRenderRange.d.ts.map +1 -1
  466. package/node_modules/@pierre/diffs/dist/utils/isDiffPlainText.d.ts +0 -1
  467. package/node_modules/@pierre/diffs/dist/utils/isDiffPlainText.d.ts.map +1 -1
  468. package/node_modules/@pierre/diffs/dist/utils/isFilePlainText.d.ts +0 -1
  469. package/node_modules/@pierre/diffs/dist/utils/isFilePlainText.d.ts.map +1 -1
  470. package/node_modules/@pierre/diffs/dist/utils/isGutterUtilityPath.d.ts.map +1 -1
  471. package/node_modules/@pierre/diffs/dist/utils/isStyleNode.d.ts.map +1 -1
  472. package/node_modules/@pierre/diffs/dist/utils/isWorkerContext.d.ts.map +1 -1
  473. package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.d.ts +1 -10
  474. package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.d.ts.map +1 -1
  475. package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.js +5 -3
  476. package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.js.map +1 -1
  477. package/node_modules/@pierre/diffs/dist/utils/lineAnnotationIdentity.d.ts +15 -0
  478. package/node_modules/@pierre/diffs/dist/utils/lineAnnotationIdentity.d.ts.map +1 -0
  479. package/node_modules/@pierre/diffs/dist/utils/lineAnnotationIdentity.js +17 -0
  480. package/node_modules/@pierre/diffs/dist/utils/lineAnnotationIdentity.js.map +1 -0
  481. package/node_modules/@pierre/diffs/dist/utils/normalizeDiffResolution.d.ts +0 -1
  482. package/node_modules/@pierre/diffs/dist/utils/normalizeDiffResolution.d.ts.map +1 -1
  483. package/node_modules/@pierre/diffs/dist/utils/parseDiffDecorations.d.ts +2 -13
  484. package/node_modules/@pierre/diffs/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  485. package/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.d.ts +2 -3
  486. package/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.d.ts.map +1 -1
  487. package/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.js +8 -7
  488. package/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.js.map +1 -1
  489. package/node_modules/@pierre/diffs/dist/utils/parseLineType.d.ts +0 -1
  490. package/node_modules/@pierre/diffs/dist/utils/parseLineType.d.ts.map +1 -1
  491. package/node_modules/@pierre/diffs/dist/utils/parseMergeConflictDiffFromFile.d.ts +0 -1
  492. package/node_modules/@pierre/diffs/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
  493. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.d.ts +6 -4
  494. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.d.ts.map +1 -1
  495. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js +42 -14
  496. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js.map +1 -1
  497. package/node_modules/@pierre/diffs/dist/utils/platform.d.ts.map +1 -1
  498. package/node_modules/@pierre/diffs/dist/utils/prefersReducedMotion.d.ts.map +1 -1
  499. package/node_modules/@pierre/diffs/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
  500. package/node_modules/@pierre/diffs/dist/utils/processLine.d.ts +0 -1
  501. package/node_modules/@pierre/diffs/dist/utils/processLine.d.ts.map +1 -1
  502. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.d.ts +0 -1
  503. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.d.ts.map +1 -1
  504. package/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.d.ts +1 -8
  505. package/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  506. package/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.js +6 -5
  507. package/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  508. package/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.d.ts +1 -11
  509. package/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  510. package/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.js +7 -4
  511. package/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.js.map +1 -1
  512. package/node_modules/@pierre/diffs/dist/utils/resolveConflict.d.ts +0 -1
  513. package/node_modules/@pierre/diffs/dist/utils/resolveConflict.d.ts.map +1 -1
  514. package/node_modules/@pierre/diffs/dist/utils/resolveRegion.d.ts +0 -1
  515. package/node_modules/@pierre/diffs/dist/utils/resolveRegion.d.ts.map +1 -1
  516. package/node_modules/@pierre/diffs/dist/utils/roundToDevicePixel.d.ts.map +1 -1
  517. package/node_modules/@pierre/diffs/dist/utils/scrollbarGutter.d.ts.map +1 -1
  518. package/node_modules/@pierre/diffs/dist/utils/scrollbarGutter.js +2 -1
  519. package/node_modules/@pierre/diffs/dist/utils/scrollbarGutter.js.map +1 -1
  520. package/node_modules/@pierre/diffs/dist/utils/setLanguageOverride.d.ts +0 -1
  521. package/node_modules/@pierre/diffs/dist/utils/setLanguageOverride.d.ts.map +1 -1
  522. package/node_modules/@pierre/diffs/dist/utils/setWrapperNodeProps.d.ts +1 -11
  523. package/node_modules/@pierre/diffs/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
  524. package/node_modules/@pierre/diffs/dist/utils/setWrapperNodeProps.js +1 -3
  525. package/node_modules/@pierre/diffs/dist/utils/setWrapperNodeProps.js.map +1 -1
  526. package/node_modules/@pierre/diffs/dist/utils/shouldUseTokenTransformer.d.ts +0 -1
  527. package/node_modules/@pierre/diffs/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
  528. package/node_modules/@pierre/diffs/dist/utils/splitFileContents.d.ts.map +1 -1
  529. package/node_modules/@pierre/diffs/dist/utils/trimPatchContext.d.ts.map +1 -1
  530. package/node_modules/@pierre/diffs/dist/utils/trimPatchContext.js +3 -2
  531. package/node_modules/@pierre/diffs/dist/utils/trimPatchContext.js.map +1 -1
  532. package/node_modules/@pierre/diffs/dist/utils/updateDiffHunks.d.ts +0 -1
  533. package/node_modules/@pierre/diffs/dist/utils/updateDiffHunks.d.ts.map +1 -1
  534. package/node_modules/@pierre/diffs/dist/utils/updateDiffHunks.js +1 -1
  535. package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.d.ts +10 -55
  536. package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.d.ts.map +1 -1
  537. package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.js +1 -1
  538. package/node_modules/@pierre/diffs/dist/utils/wrapTokenFragments.d.ts +0 -1
  539. package/node_modules/@pierre/diffs/dist/utils/wrapTokenFragments.d.ts.map +1 -1
  540. package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.d.ts +6 -20
  541. package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  542. package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.js +52 -11
  543. package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.js.map +1 -1
  544. package/node_modules/@pierre/diffs/dist/worker/getOrCreateWorkerPoolSingleton.d.ts +1 -5
  545. package/node_modules/@pierre/diffs/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
  546. package/node_modules/@pierre/diffs/dist/worker/types.d.ts +5 -1
  547. package/node_modules/@pierre/diffs/dist/worker/types.d.ts.map +1 -1
  548. package/node_modules/@pierre/diffs/dist/worker/worker-portable.d.ts +1 -1
  549. package/node_modules/@pierre/diffs/dist/worker/worker-portable.js +125 -358
  550. package/node_modules/@pierre/diffs/dist/worker/worker-portable.js.map +1 -1
  551. package/node_modules/@pierre/diffs/dist/worker/worker.d.ts +1 -1
  552. package/node_modules/@pierre/diffs/dist/worker/worker.js +28 -17
  553. package/node_modules/@pierre/diffs/dist/worker/worker.js.map +1 -1
  554. package/node_modules/@pierre/diffs/node_modules/@ungap/structured-clone/cjs/deserialize.js +12 -2
  555. package/node_modules/@pierre/diffs/node_modules/@ungap/structured-clone/cjs/serialize.js +5 -1
  556. package/node_modules/@pierre/diffs/node_modules/@ungap/structured-clone/esm/deserialize.js +12 -2
  557. package/node_modules/@pierre/diffs/node_modules/@ungap/structured-clone/esm/serialize.js +5 -1
  558. package/node_modules/@pierre/diffs/node_modules/@ungap/structured-clone/package.json +1 -1
  559. package/node_modules/@pierre/diffs/node_modules/@ungap/structured-clone/structured-json.js +1 -1
  560. package/node_modules/@pierre/diffs/package.json +12 -5
  561. package/node_modules/playwright-core/browsers.json +9 -32
  562. package/node_modules/playwright-core/lib/coreBundle.js +5402 -4419
  563. package/node_modules/playwright-core/lib/server/electron/loader.js +0 -2
  564. package/node_modules/playwright-core/lib/serverRegistry.js +1674 -7082
  565. package/node_modules/playwright-core/lib/serverRegistry.js.LICENSE +8 -297
  566. package/node_modules/playwright-core/lib/tools/cli-client/help.json +19 -6
  567. package/node_modules/playwright-core/lib/tools/cli-client/minimist.js +1 -1
  568. package/node_modules/playwright-core/lib/tools/cli-client/output.js +9 -1
  569. package/node_modules/playwright-core/lib/tools/cli-client/program.js +17 -3
  570. package/node_modules/playwright-core/lib/tools/cli-client/registry.js +9 -5
  571. package/node_modules/playwright-core/lib/tools/cli-client/session.js +2 -1
  572. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +5 -0
  573. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/tracing.md +1 -1
  574. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/SKILL.md +4 -11
  575. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/migration.md +6 -2
  576. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/react.md +2 -0
  577. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/typing.md +173 -0
  578. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/vue.md +2 -0
  579. package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +6 -3
  580. package/node_modules/playwright-core/lib/tools/utils/extension.js +13 -2
  581. package/node_modules/playwright-core/lib/utilsBundle.js +1934 -7341
  582. package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +8 -297
  583. package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
  584. package/node_modules/playwright-core/lib/vite/{recorder/assets/codeMirrorModule-CwYYHbcZ.js → dashboard/assets/codeMirrorModule-CQ8RZGBm.js} +1 -1
  585. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
  586. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
  587. package/node_modules/playwright-core/lib/vite/dashboard/index.html +2 -2
  588. package/node_modules/playwright-core/lib/vite/htmlReport/report.css +1 -1
  589. package/node_modules/playwright-core/lib/vite/htmlReport/report.js +4 -4
  590. package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-CVQWJZAA.js +32 -0
  591. package/node_modules/playwright-core/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
  592. package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +129 -0
  593. package/node_modules/playwright-core/lib/vite/recorder/index.html +2 -2
  594. package/node_modules/playwright-core/lib/vite/traceViewer/assets/{codeMirrorModule-rXmQmLUY.js → codeMirrorModule-BbkfBe3n.js} +1 -1
  595. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +182 -0
  596. package/node_modules/playwright-core/lib/vite/traceViewer/assets/{xtermModule-BuZfJS5v.js → xtermModule-DywYcAf8.js} +1 -1
  597. package/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.Bqk9acqE.css +1 -0
  598. package/node_modules/playwright-core/lib/vite/traceViewer/index.B4cLoZK3.js +1 -0
  599. package/node_modules/playwright-core/lib/vite/traceViewer/index.html +3 -3
  600. package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +3 -3
  601. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CU5KtEkS.js +5 -0
  602. package/node_modules/playwright-core/lib/vite/traceViewer/{uiMode.C7UW1sC9.css → uiMode.CyMfwkXJ.css} +1 -1
  603. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +4 -4
  604. package/node_modules/playwright-core/package.json +1 -1
  605. package/node_modules/playwright-core/types/protocol.d.ts +201 -398
  606. package/node_modules/playwright-core/types/types.d.ts +771 -327
  607. package/node_modules/typebox/build/compile/validator.d.mts +1 -1
  608. package/node_modules/typebox/build/compile/validator.mjs +1 -1
  609. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
  610. package/node_modules/typebox/build/format/iri.mjs +5 -1
  611. package/node_modules/typebox/build/guard/emit.mjs +2 -4
  612. package/node_modules/typebox/build/guard/guard.mjs +6 -18
  613. package/node_modules/typebox/build/guard/string.mjs +16 -24
  614. package/node_modules/typebox/build/schema/build.mjs +2 -2
  615. package/node_modules/typebox/build/schema/check.mjs +1 -1
  616. package/node_modules/typebox/build/schema/compile.d.mts +3 -2
  617. package/node_modules/typebox/build/schema/compile.mjs +8 -8
  618. package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
  619. package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
  620. package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
  621. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
  622. package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
  623. package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
  624. package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
  625. package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
  626. package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
  627. package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
  628. package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
  629. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
  630. package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
  631. package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
  632. package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
  633. package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
  634. package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
  635. package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
  636. package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
  637. package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
  638. package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
  639. package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
  640. package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
  641. package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
  642. package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
  643. package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
  644. package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
  645. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
  646. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
  647. package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
  648. package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
  649. package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
  650. package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
  651. package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
  652. package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
  653. package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
  654. package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
  655. package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
  656. package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
  657. package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
  658. package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
  659. package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
  660. package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
  661. package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
  662. package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
  663. package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
  664. package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
  665. package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
  666. package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
  667. package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
  668. package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
  669. package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
  670. package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
  671. package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
  672. package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
  673. package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
  674. package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
  675. package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
  676. package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
  677. package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
  678. package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
  679. package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
  680. package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
  681. package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
  682. package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
  683. package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
  684. package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
  685. package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
  686. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
  687. package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
  688. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
  689. package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
  690. package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
  691. package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
  692. package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
  693. package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
  694. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
  695. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
  696. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
  697. package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
  698. package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
  699. package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
  700. package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
  701. package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
  702. package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
  703. package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
  704. package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
  705. package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
  706. package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
  707. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
  708. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
  709. package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
  710. package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
  711. package/node_modules/typebox/build/schema/errors.d.mts +2 -2
  712. package/node_modules/typebox/build/schema/errors.mjs +8 -14
  713. package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
  714. package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
  715. package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
  716. package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
  717. package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
  718. package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
  719. package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
  720. package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
  721. package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
  722. package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
  723. package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
  724. package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
  725. package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
  726. package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
  727. package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
  728. package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
  729. package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
  730. package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
  731. package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
  732. package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
  733. package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
  734. package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
  735. package/node_modules/typebox/build/schema/parse.d.mts +1 -0
  736. package/node_modules/typebox/build/schema/parse.mjs +10 -5
  737. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
  738. package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
  739. package/node_modules/typebox/build/schema/schema.d.mts +2 -0
  740. package/node_modules/typebox/build/schema/schema.mjs +2 -0
  741. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
  742. package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
  743. package/node_modules/typebox/package.json +1 -1
  744. package/node_modules/typebox/readme.md +59 -89
  745. package/node_modules/zod/README.md +29 -2
  746. package/node_modules/zod/compile.cjs +96 -0
  747. package/node_modules/zod/compile.d.cts +1 -0
  748. package/node_modules/zod/compile.d.ts +1 -0
  749. package/node_modules/zod/compile.js +52 -0
  750. package/node_modules/zod/index.cjs +21 -2
  751. package/node_modules/zod/index.d.cts +1 -2
  752. package/node_modules/zod/index.d.ts +1 -2
  753. package/node_modules/zod/index.js +5 -2
  754. package/node_modules/zod/locales/index.cjs +19 -0
  755. package/node_modules/zod/mini/index.cjs +19 -0
  756. package/node_modules/zod/package.json +20 -8
  757. package/node_modules/zod/src/compile.ts +56 -0
  758. package/node_modules/zod/src/index.ts +5 -2
  759. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  760. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  761. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  762. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  763. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  764. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  765. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  766. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  767. package/node_modules/zod/src/v3/types.ts +5 -5
  768. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  769. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  770. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  771. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  772. package/node_modules/zod/src/v4/classic/external.ts +14 -9
  773. package/node_modules/zod/src/v4/classic/from-json-schema.ts +363 -78
  774. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  775. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  776. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  777. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  778. package/node_modules/zod/src/v4/classic/schemas.ts +640 -375
  779. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  780. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  781. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +186 -0
  782. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +36 -1
  783. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  784. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  785. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  786. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +3 -3
  787. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  788. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +985 -0
  789. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  790. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  791. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  792. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  793. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  794. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  795. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +261 -13
  796. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +20 -0
  797. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  798. package/node_modules/zod/src/v4/classic/tests/error.test.ts +403 -6
  799. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +582 -10
  800. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  801. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  802. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  803. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  804. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  805. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  806. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +319 -0
  807. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +67 -0
  808. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  809. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +215 -0
  810. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  811. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  812. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  813. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  814. package/node_modules/zod/src/v4/classic/tests/number.test.ts +85 -9
  815. package/node_modules/zod/src/v4/classic/tests/object.test.ts +301 -12
  816. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -0
  817. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  818. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  819. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  820. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  821. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  822. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  823. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  824. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +79 -3
  825. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  826. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  827. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  828. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  829. package/node_modules/zod/src/v4/classic/tests/string.test.ts +222 -6
  830. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  831. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +44 -3
  832. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1812 -204
  833. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  834. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  835. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +645 -0
  836. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  837. package/node_modules/zod/src/v4/core/api.ts +87 -35
  838. package/node_modules/zod/src/v4/core/checks.ts +119 -146
  839. package/node_modules/zod/src/v4/core/compile.ts +2313 -0
  840. package/node_modules/zod/src/v4/core/core.ts +99 -22
  841. package/node_modules/zod/src/v4/core/doc.ts +17 -9
  842. package/node_modules/zod/src/v4/core/errors.ts +113 -25
  843. package/node_modules/zod/src/v4/core/index.ts +3 -0
  844. package/node_modules/zod/src/v4/core/json-schema-generator.ts +8 -3
  845. package/node_modules/zod/src/v4/core/json-schema-processors.ts +424 -156
  846. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  847. package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
  848. package/node_modules/zod/src/v4/core/parse.ts +164 -50
  849. package/node_modules/zod/src/v4/core/regexes.ts +42 -15
  850. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  851. package/node_modules/zod/src/v4/core/schemas.ts +1000 -538
  852. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  853. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
  854. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  855. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  856. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  857. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  858. package/node_modules/zod/src/v4/core/tests/compile.test.ts +2036 -0
  859. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  860. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  861. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  862. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  863. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  864. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  865. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  866. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  867. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  868. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +133 -0
  869. package/node_modules/zod/src/v4/core/to-json-schema.ts +283 -48
  870. package/node_modules/zod/src/v4/core/util.ts +454 -157
  871. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  872. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  873. package/node_modules/zod/src/v4/index.ts +3 -3
  874. package/node_modules/zod/src/v4/locales/ar.ts +5 -0
  875. package/node_modules/zod/src/v4/locales/az.ts +5 -0
  876. package/node_modules/zod/src/v4/locales/be.ts +12 -0
  877. package/node_modules/zod/src/v4/locales/bg.ts +5 -0
  878. package/node_modules/zod/src/v4/locales/bn.ts +123 -0
  879. package/node_modules/zod/src/v4/locales/ca.ts +5 -0
  880. package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
  881. package/node_modules/zod/src/v4/locales/cs.ts +5 -0
  882. package/node_modules/zod/src/v4/locales/da.ts +7 -2
  883. package/node_modules/zod/src/v4/locales/de.ts +5 -0
  884. package/node_modules/zod/src/v4/locales/el.ts +3 -0
  885. package/node_modules/zod/src/v4/locales/en.ts +17 -4
  886. package/node_modules/zod/src/v4/locales/eo.ts +5 -0
  887. package/node_modules/zod/src/v4/locales/es.ts +4 -0
  888. package/node_modules/zod/src/v4/locales/fa.ts +5 -0
  889. package/node_modules/zod/src/v4/locales/fi.ts +5 -0
  890. package/node_modules/zod/src/v4/locales/fr-CA.ts +5 -0
  891. package/node_modules/zod/src/v4/locales/fr.ts +21 -14
  892. package/node_modules/zod/src/v4/locales/gu.ts +123 -0
  893. package/node_modules/zod/src/v4/locales/he.ts +8 -1
  894. package/node_modules/zod/src/v4/locales/hi.ts +126 -0
  895. package/node_modules/zod/src/v4/locales/hr.ts +4 -0
  896. package/node_modules/zod/src/v4/locales/hu.ts +5 -0
  897. package/node_modules/zod/src/v4/locales/hy.ts +11 -0
  898. package/node_modules/zod/src/v4/locales/id.ts +5 -0
  899. package/node_modules/zod/src/v4/locales/index.ts +11 -0
  900. package/node_modules/zod/src/v4/locales/is.ts +5 -0
  901. package/node_modules/zod/src/v4/locales/it.ts +5 -0
  902. package/node_modules/zod/src/v4/locales/ja.ts +5 -0
  903. package/node_modules/zod/src/v4/locales/ka.ts +5 -0
  904. package/node_modules/zod/src/v4/locales/km.ts +5 -0
  905. package/node_modules/zod/src/v4/locales/kn.ts +126 -0
  906. package/node_modules/zod/src/v4/locales/ko.ts +5 -0
  907. package/node_modules/zod/src/v4/locales/lt.ts +4 -0
  908. package/node_modules/zod/src/v4/locales/mk.ts +5 -0
  909. package/node_modules/zod/src/v4/locales/ms.ts +5 -0
  910. package/node_modules/zod/src/v4/locales/ne.ts +128 -0
  911. package/node_modules/zod/src/v4/locales/nl.ts +5 -0
  912. package/node_modules/zod/src/v4/locales/nn.ts +121 -0
  913. package/node_modules/zod/src/v4/locales/no.ts +7 -2
  914. package/node_modules/zod/src/v4/locales/ota.ts +5 -0
  915. package/node_modules/zod/src/v4/locales/pl.ts +5 -0
  916. package/node_modules/zod/src/v4/locales/ps.ts +5 -0
  917. package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
  918. package/node_modules/zod/src/v4/locales/pt.ts +101 -58
  919. package/node_modules/zod/src/v4/locales/ro.ts +3 -0
  920. package/node_modules/zod/src/v4/locales/ru.ts +12 -0
  921. package/node_modules/zod/src/v4/locales/sk.ts +123 -0
  922. package/node_modules/zod/src/v4/locales/sl.ts +5 -0
  923. package/node_modules/zod/src/v4/locales/sv.ts +7 -2
  924. package/node_modules/zod/src/v4/locales/ta.ts +5 -0
  925. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  926. package/node_modules/zod/src/v4/locales/th.ts +5 -0
  927. package/node_modules/zod/src/v4/locales/tk.ts +113 -0
  928. package/node_modules/zod/src/v4/locales/tr.ts +5 -0
  929. package/node_modules/zod/src/v4/locales/uk.ts +5 -0
  930. package/node_modules/zod/src/v4/locales/ur.ts +5 -0
  931. package/node_modules/zod/src/v4/locales/uz.ts +3 -0
  932. package/node_modules/zod/src/v4/locales/vi.ts +5 -0
  933. package/node_modules/zod/src/v4/locales/yo.ts +5 -0
  934. package/node_modules/zod/src/v4/locales/zh-CN.ts +5 -0
  935. package/node_modules/zod/src/v4/locales/zh-TW.ts +5 -0
  936. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  937. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  938. package/node_modules/zod/src/v4/mini/external.ts +12 -1
  939. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  940. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  941. package/node_modules/zod/src/v4/mini/schemas.ts +167 -63
  942. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  943. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  944. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  945. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  946. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  947. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  948. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  949. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  950. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  951. package/node_modules/zod/src/v4/mini/tests/index.test.ts +158 -5
  952. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  953. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  954. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  955. package/node_modules/zod/src/v4/mini/tests/string.test.ts +44 -0
  956. package/node_modules/zod/v3/ZodError.cjs +41 -12
  957. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  958. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  959. package/node_modules/zod/v3/ZodError.js +22 -12
  960. package/node_modules/zod/v3/errors.cjs +19 -0
  961. package/node_modules/zod/v3/external.cjs +19 -0
  962. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  963. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  964. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  965. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  966. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  967. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  968. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  969. package/node_modules/zod/v3/index.cjs +19 -0
  970. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  971. package/node_modules/zod/v3/types.cjs +26 -5
  972. package/node_modules/zod/v3/types.js +7 -5
  973. package/node_modules/zod/v4/classic/checks.cjs +21 -1
  974. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  975. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  976. package/node_modules/zod/v4/classic/checks.js +1 -1
  977. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  978. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  979. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  980. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  981. package/node_modules/zod/v4/classic/deep-partial.cjs +58 -0
  982. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  983. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  984. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  985. package/node_modules/zod/v4/classic/errors.cjs +62 -34
  986. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  987. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  988. package/node_modules/zod/v4/classic/errors.js +43 -34
  989. package/node_modules/zod/v4/classic/external.cjs +51 -27
  990. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  991. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  992. package/node_modules/zod/v4/classic/external.js +5 -8
  993. package/node_modules/zod/v4/classic/from-json-schema.cjs +376 -75
  994. package/node_modules/zod/v4/classic/from-json-schema.js +357 -75
  995. package/node_modules/zod/v4/classic/in-out.cjs +82 -0
  996. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  997. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  998. package/node_modules/zod/v4/classic/in-out.js +36 -0
  999. package/node_modules/zod/v4/classic/index.cjs +21 -2
  1000. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  1001. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  1002. package/node_modules/zod/v4/classic/index.js +2 -2
  1003. package/node_modules/zod/v4/classic/iso.cjs +30 -22
  1004. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  1005. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  1006. package/node_modules/zod/v4/classic/iso.js +2 -17
  1007. package/node_modules/zod/v4/classic/parse.cjs +23 -1
  1008. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  1009. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  1010. package/node_modules/zod/v4/classic/parse.js +1 -0
  1011. package/node_modules/zod/v4/classic/schemas.cjs +591 -426
  1012. package/node_modules/zod/v4/classic/schemas.d.cts +68 -19
  1013. package/node_modules/zod/v4/classic/schemas.d.ts +68 -19
  1014. package/node_modules/zod/v4/classic/schemas.js +564 -424
  1015. package/node_modules/zod/v4/core/api.cjs +66 -24
  1016. package/node_modules/zod/v4/core/api.d.cts +22 -12
  1017. package/node_modules/zod/v4/core/api.d.ts +22 -12
  1018. package/node_modules/zod/v4/core/api.js +44 -24
  1019. package/node_modules/zod/v4/core/checks.cjs +88 -128
  1020. package/node_modules/zod/v4/core/checks.d.cts +29 -13
  1021. package/node_modules/zod/v4/core/checks.d.ts +29 -13
  1022. package/node_modules/zod/v4/core/checks.js +68 -127
  1023. package/node_modules/zod/v4/core/compile.cjs +1908 -0
  1024. package/node_modules/zod/v4/core/compile.d.cts +65 -0
  1025. package/node_modules/zod/v4/core/compile.d.ts +65 -0
  1026. package/node_modules/zod/v4/core/compile.js +1858 -0
  1027. package/node_modules/zod/v4/core/core.cjs +101 -19
  1028. package/node_modules/zod/v4/core/core.d.cts +16 -4
  1029. package/node_modules/zod/v4/core/core.d.ts +16 -4
  1030. package/node_modules/zod/v4/core/core.js +83 -20
  1031. package/node_modules/zod/v4/core/doc.cjs +31 -9
  1032. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  1033. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  1034. package/node_modules/zod/v4/core/doc.js +12 -9
  1035. package/node_modules/zod/v4/core/errors.cjs +126 -25
  1036. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  1037. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  1038. package/node_modules/zod/v4/core/errors.js +107 -25
  1039. package/node_modules/zod/v4/core/index.cjs +24 -1
  1040. package/node_modules/zod/v4/core/index.d.cts +3 -0
  1041. package/node_modules/zod/v4/core/index.d.ts +3 -0
  1042. package/node_modules/zod/v4/core/index.js +3 -0
  1043. package/node_modules/zod/v4/core/json-schema-generator.cjs +24 -1
  1044. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  1045. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  1046. package/node_modules/zod/v4/core/json-schema-generator.js +6 -2
  1047. package/node_modules/zod/v4/core/json-schema-processors.cjs +441 -156
  1048. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  1049. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  1050. package/node_modules/zod/v4/core/json-schema-processors.js +400 -158
  1051. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  1052. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  1053. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  1054. package/node_modules/zod/v4/core/memoizer.cjs +360 -0
  1055. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  1056. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  1057. package/node_modules/zod/v4/core/memoizer.js +311 -0
  1058. package/node_modules/zod/v4/core/parse.cjs +148 -46
  1059. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  1060. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  1061. package/node_modules/zod/v4/core/parse.js +127 -45
  1062. package/node_modules/zod/v4/core/regexes.cjs +54 -17
  1063. package/node_modules/zod/v4/core/regexes.d.cts +5 -0
  1064. package/node_modules/zod/v4/core/regexes.d.ts +5 -0
  1065. package/node_modules/zod/v4/core/regexes.js +32 -15
  1066. package/node_modules/zod/v4/core/registries.cjs +19 -0
  1067. package/node_modules/zod/v4/core/registries.js +2 -2
  1068. package/node_modules/zod/v4/core/schemas.cjs +785 -386
  1069. package/node_modules/zod/v4/core/schemas.d.cts +123 -34
  1070. package/node_modules/zod/v4/core/schemas.d.ts +123 -34
  1071. package/node_modules/zod/v4/core/schemas.js +753 -386
  1072. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  1073. package/node_modules/zod/v4/core/to-json-schema.cjs +269 -45
  1074. package/node_modules/zod/v4/core/to-json-schema.d.cts +45 -5
  1075. package/node_modules/zod/v4/core/to-json-schema.d.ts +45 -5
  1076. package/node_modules/zod/v4/core/to-json-schema.js +247 -44
  1077. package/node_modules/zod/v4/core/util.cjs +372 -157
  1078. package/node_modules/zod/v4/core/util.d.cts +79 -1
  1079. package/node_modules/zod/v4/core/util.d.ts +79 -1
  1080. package/node_modules/zod/v4/core/util.js +341 -156
  1081. package/node_modules/zod/v4/core/versions.cjs +21 -2
  1082. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  1083. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  1084. package/node_modules/zod/v4/core/versions.js +2 -2
  1085. package/node_modules/zod/v4/core/visit.cjs +214 -0
  1086. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  1087. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  1088. package/node_modules/zod/v4/core/visit.js +169 -0
  1089. package/node_modules/zod/v4/index.cjs +34 -5
  1090. package/node_modules/zod/v4/index.d.cts +2 -2
  1091. package/node_modules/zod/v4/index.d.ts +2 -2
  1092. package/node_modules/zod/v4/index.js +3 -2
  1093. package/node_modules/zod/v4/locales/ar.cjs +5 -0
  1094. package/node_modules/zod/v4/locales/ar.js +5 -0
  1095. package/node_modules/zod/v4/locales/az.cjs +5 -0
  1096. package/node_modules/zod/v4/locales/az.js +5 -0
  1097. package/node_modules/zod/v4/locales/be.cjs +12 -0
  1098. package/node_modules/zod/v4/locales/be.js +12 -0
  1099. package/node_modules/zod/v4/locales/bg.cjs +5 -0
  1100. package/node_modules/zod/v4/locales/bg.js +5 -0
  1101. package/node_modules/zod/v4/locales/bn.cjs +140 -0
  1102. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  1103. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  1104. package/node_modules/zod/v4/locales/bn.js +113 -0
  1105. package/node_modules/zod/v4/locales/ca.cjs +5 -0
  1106. package/node_modules/zod/v4/locales/ca.js +5 -0
  1107. package/node_modules/zod/v4/locales/ckb.cjs +160 -0
  1108. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  1109. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  1110. package/node_modules/zod/v4/locales/ckb.js +133 -0
  1111. package/node_modules/zod/v4/locales/cs.cjs +5 -0
  1112. package/node_modules/zod/v4/locales/cs.js +5 -0
  1113. package/node_modules/zod/v4/locales/da.cjs +7 -2
  1114. package/node_modules/zod/v4/locales/da.js +7 -2
  1115. package/node_modules/zod/v4/locales/de.cjs +5 -0
  1116. package/node_modules/zod/v4/locales/de.js +5 -0
  1117. package/node_modules/zod/v4/locales/el.cjs +3 -0
  1118. package/node_modules/zod/v4/locales/el.js +3 -0
  1119. package/node_modules/zod/v4/locales/en.cjs +16 -4
  1120. package/node_modules/zod/v4/locales/en.js +16 -4
  1121. package/node_modules/zod/v4/locales/eo.cjs +5 -0
  1122. package/node_modules/zod/v4/locales/eo.js +5 -0
  1123. package/node_modules/zod/v4/locales/es.cjs +4 -0
  1124. package/node_modules/zod/v4/locales/es.js +4 -0
  1125. package/node_modules/zod/v4/locales/fa.cjs +5 -0
  1126. package/node_modules/zod/v4/locales/fa.js +5 -0
  1127. package/node_modules/zod/v4/locales/fi.cjs +5 -0
  1128. package/node_modules/zod/v4/locales/fi.js +5 -0
  1129. package/node_modules/zod/v4/locales/fr-CA.cjs +5 -0
  1130. package/node_modules/zod/v4/locales/fr-CA.js +5 -0
  1131. package/node_modules/zod/v4/locales/fr.cjs +18 -14
  1132. package/node_modules/zod/v4/locales/fr.js +18 -14
  1133. package/node_modules/zod/v4/locales/gu.cjs +140 -0
  1134. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  1135. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  1136. package/node_modules/zod/v4/locales/gu.js +113 -0
  1137. package/node_modules/zod/v4/locales/he.cjs +7 -0
  1138. package/node_modules/zod/v4/locales/he.js +7 -0
  1139. package/node_modules/zod/v4/locales/hi.cjs +138 -0
  1140. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  1141. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  1142. package/node_modules/zod/v4/locales/hi.js +111 -0
  1143. package/node_modules/zod/v4/locales/hr.cjs +4 -0
  1144. package/node_modules/zod/v4/locales/hr.js +4 -0
  1145. package/node_modules/zod/v4/locales/hu.cjs +5 -0
  1146. package/node_modules/zod/v4/locales/hu.js +5 -0
  1147. package/node_modules/zod/v4/locales/hy.cjs +11 -0
  1148. package/node_modules/zod/v4/locales/hy.js +11 -0
  1149. package/node_modules/zod/v4/locales/id.cjs +5 -0
  1150. package/node_modules/zod/v4/locales/id.js +5 -0
  1151. package/node_modules/zod/v4/locales/index.cjs +43 -2
  1152. package/node_modules/zod/v4/locales/index.d.cts +11 -0
  1153. package/node_modules/zod/v4/locales/index.d.ts +11 -0
  1154. package/node_modules/zod/v4/locales/index.js +11 -0
  1155. package/node_modules/zod/v4/locales/is.cjs +5 -0
  1156. package/node_modules/zod/v4/locales/is.js +5 -0
  1157. package/node_modules/zod/v4/locales/it.cjs +5 -0
  1158. package/node_modules/zod/v4/locales/it.js +5 -0
  1159. package/node_modules/zod/v4/locales/ja.cjs +5 -0
  1160. package/node_modules/zod/v4/locales/ja.js +5 -0
  1161. package/node_modules/zod/v4/locales/ka.cjs +5 -0
  1162. package/node_modules/zod/v4/locales/ka.js +5 -0
  1163. package/node_modules/zod/v4/locales/km.cjs +5 -0
  1164. package/node_modules/zod/v4/locales/km.js +5 -0
  1165. package/node_modules/zod/v4/locales/kn.cjs +143 -0
  1166. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  1167. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  1168. package/node_modules/zod/v4/locales/kn.js +116 -0
  1169. package/node_modules/zod/v4/locales/ko.cjs +5 -0
  1170. package/node_modules/zod/v4/locales/ko.js +5 -0
  1171. package/node_modules/zod/v4/locales/lt.cjs +4 -0
  1172. package/node_modules/zod/v4/locales/lt.js +4 -0
  1173. package/node_modules/zod/v4/locales/mk.cjs +5 -0
  1174. package/node_modules/zod/v4/locales/mk.js +5 -0
  1175. package/node_modules/zod/v4/locales/ms.cjs +5 -0
  1176. package/node_modules/zod/v4/locales/ms.js +5 -0
  1177. package/node_modules/zod/v4/locales/ne.cjs +138 -0
  1178. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  1179. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  1180. package/node_modules/zod/v4/locales/ne.js +111 -0
  1181. package/node_modules/zod/v4/locales/nl.cjs +5 -0
  1182. package/node_modules/zod/v4/locales/nl.js +5 -0
  1183. package/node_modules/zod/v4/locales/nn.cjs +140 -0
  1184. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  1185. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  1186. package/node_modules/zod/v4/locales/nn.js +113 -0
  1187. package/node_modules/zod/v4/locales/no.cjs +7 -2
  1188. package/node_modules/zod/v4/locales/no.js +7 -2
  1189. package/node_modules/zod/v4/locales/ota.cjs +5 -0
  1190. package/node_modules/zod/v4/locales/ota.js +5 -0
  1191. package/node_modules/zod/v4/locales/pl.cjs +5 -0
  1192. package/node_modules/zod/v4/locales/pl.js +5 -0
  1193. package/node_modules/zod/v4/locales/ps.cjs +5 -0
  1194. package/node_modules/zod/v4/locales/ps.js +5 -0
  1195. package/node_modules/zod/v4/locales/pt-BR.cjs +170 -0
  1196. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  1197. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  1198. package/node_modules/zod/v4/locales/pt-BR.js +143 -0
  1199. package/node_modules/zod/v4/locales/pt.cjs +89 -55
  1200. package/node_modules/zod/v4/locales/pt.js +89 -55
  1201. package/node_modules/zod/v4/locales/ro.cjs +3 -0
  1202. package/node_modules/zod/v4/locales/ro.js +3 -0
  1203. package/node_modules/zod/v4/locales/ru.cjs +12 -0
  1204. package/node_modules/zod/v4/locales/ru.js +12 -0
  1205. package/node_modules/zod/v4/locales/sk.cjs +143 -0
  1206. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  1207. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  1208. package/node_modules/zod/v4/locales/sk.js +116 -0
  1209. package/node_modules/zod/v4/locales/sl.cjs +5 -0
  1210. package/node_modules/zod/v4/locales/sl.js +5 -0
  1211. package/node_modules/zod/v4/locales/sv.cjs +7 -2
  1212. package/node_modules/zod/v4/locales/sv.js +7 -2
  1213. package/node_modules/zod/v4/locales/ta.cjs +5 -0
  1214. package/node_modules/zod/v4/locales/ta.js +5 -0
  1215. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  1216. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  1217. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  1218. package/node_modules/zod/v4/locales/tg.js +117 -0
  1219. package/node_modules/zod/v4/locales/th.cjs +5 -0
  1220. package/node_modules/zod/v4/locales/th.js +5 -0
  1221. package/node_modules/zod/v4/locales/tk.cjs +134 -0
  1222. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  1223. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  1224. package/node_modules/zod/v4/locales/tk.js +107 -0
  1225. package/node_modules/zod/v4/locales/tr.cjs +5 -0
  1226. package/node_modules/zod/v4/locales/tr.js +5 -0
  1227. package/node_modules/zod/v4/locales/uk.cjs +5 -0
  1228. package/node_modules/zod/v4/locales/uk.js +5 -0
  1229. package/node_modules/zod/v4/locales/ur.cjs +5 -0
  1230. package/node_modules/zod/v4/locales/ur.js +5 -0
  1231. package/node_modules/zod/v4/locales/uz.cjs +3 -0
  1232. package/node_modules/zod/v4/locales/uz.js +3 -0
  1233. package/node_modules/zod/v4/locales/vi.cjs +5 -0
  1234. package/node_modules/zod/v4/locales/vi.js +5 -0
  1235. package/node_modules/zod/v4/locales/yo.cjs +5 -0
  1236. package/node_modules/zod/v4/locales/yo.js +5 -0
  1237. package/node_modules/zod/v4/locales/zh-CN.cjs +5 -0
  1238. package/node_modules/zod/v4/locales/zh-CN.js +5 -0
  1239. package/node_modules/zod/v4/locales/zh-TW.cjs +5 -0
  1240. package/node_modules/zod/v4/locales/zh-TW.js +5 -0
  1241. package/node_modules/zod/v4/mini/checks.cjs +21 -1
  1242. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  1243. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  1244. package/node_modules/zod/v4/mini/checks.js +1 -1
  1245. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  1246. package/node_modules/zod/v4/mini/deep-partial.cjs +58 -0
  1247. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  1248. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  1249. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  1250. package/node_modules/zod/v4/mini/external.cjs +33 -1
  1251. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  1252. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  1253. package/node_modules/zod/v4/mini/external.js +3 -1
  1254. package/node_modules/zod/v4/mini/in-out.cjs +82 -0
  1255. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  1256. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  1257. package/node_modules/zod/v4/mini/in-out.js +36 -0
  1258. package/node_modules/zod/v4/mini/index.cjs +19 -0
  1259. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  1260. package/node_modules/zod/v4/mini/parse.cjs +22 -1
  1261. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  1262. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  1263. package/node_modules/zod/v4/mini/parse.js +1 -1
  1264. package/node_modules/zod/v4/mini/schemas.cjs +117 -53
  1265. package/node_modules/zod/v4/mini/schemas.d.cts +49 -14
  1266. package/node_modules/zod/v4/mini/schemas.d.ts +49 -14
  1267. package/node_modules/zod/v4/mini/schemas.js +92 -51
  1268. package/node_modules/zod/v4-mini/index.cjs +19 -0
  1269. package/openclaw.plugin.json +19 -3
  1270. package/package.json +10 -8
  1271. package/node_modules/@pierre/diffs/dist/editor/stateStorage.d.ts +0 -15
  1272. package/node_modules/@pierre/diffs/dist/editor/stateStorage.d.ts.map +0 -1
  1273. package/node_modules/@pierre/diffs/dist/editor/stateStorage.js +0 -65
  1274. package/node_modules/@pierre/diffs/dist/editor/stateStorage.js.map +0 -1
  1275. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-CyWAfh-p.js +0 -11
  1276. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-DhC616m4.css +0 -1
  1277. package/node_modules/playwright-core/lib/vite/recorder/assets/index-DYjdXIbE.js +0 -129
  1278. package/node_modules/playwright-core/lib/vite/recorder/assets/index-l_lX622x.css +0 -1
  1279. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-B-dXF5JN.js +0 -181
  1280. package/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.BLFoOugd.css +0 -1
  1281. package/node_modules/playwright-core/lib/vite/traceViewer/index.KZ4wOW1K.js +0 -1
  1282. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.Dzuouizj.js +0 -5
  1283. package/node_modules/zod/src/v4/core/config.ts +0 -15
  1284. /package/dist/{viewer-assets-D3qrnaxI.js → .setup/viewer-assets-D3qrnaxI.mjs} +0 -0
@@ -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';\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
+ {"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);\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 // Don't trust the slot name for the line number: during an edit session\n // an annotation keeps its original name while edits move it to other\n // lines, so a name like \"annotation-20\" can point at a line the\n // annotation left long ago. The code row directly above the annotation\n // row always reflects where it sits now, so read the line from there and\n // parse the name only as a fallback.\n const annotationRow = annotationRowFromSlot(element);\n const annotatedLine = annotationRow?.previousElementSibling;\n if (\n annotatedLine instanceof HTMLElement &&\n (annotatedLine.hasAttribute('data-line') ||\n annotatedLine.hasAttribute('data-column-number'))\n ) {\n return getElementPath(annotatedLine);\n }\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;\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 };\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\n// Resolve the shadow annotation row an event target projects into, from\n// either slotted light-DOM content or the slot element itself.\nfunction annotationRowFromSlot(element: Element): HTMLElement | undefined {\n const slotted = element.closest('[slot^=\"annotation-\"]');\n const slot =\n slotted instanceof HTMLElement && slotted.assignedSlot != null\n ? slotted.assignedSlot\n : element.tagName === 'SLOT'\n ? element\n : undefined;\n const row = slot?.closest('[data-line-annotation]');\n return row instanceof HTMLElement ? row : 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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"}
@@ -10,10 +10,7 @@ declare class ResizeManager {
10
10
  private static getResizeObserver;
11
11
  private static handleSharedResizeEntries;
12
12
  private observedNodes;
13
- setup(pre: HTMLPreElement, {
14
- disableAnnotations,
15
- columnVariables
16
- }: ResizeManagerSetupOptions): void;
13
+ setup(pre: HTMLPreElement, { disableAnnotations, columnVariables }: ResizeManagerSetupOptions): void;
17
14
  cleanUp(): void;
18
15
  private observe;
19
16
  private unobserve;
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"ResizeManager.d.ts","names":[],"sources":["../../src/managers/ResizeManager.ts"],"mappings":";KAeY;UAEK;EACf;EACA,kBAAkB;;cAUP;iBAEI;iBACA;iBAEA;iBAQA;UAsBP;EAKR,MACE,KAAK,kBACH,oBAAoB,mBAA6B;EAwLrD;UAOQ;UAkBA;UAmBA;UA0DA;UAWA;UA6BA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollSyncManager.d.ts","names":[],"sources":["../../src/managers/ScrollSyncManager.ts"],"mappings":";cAAa,iBAAA;EACX,oBAAA;EACA,oBAAA;EACA,SAAA,EAAW,MAAA,CAAO,OAAA;EAClB,aAAA,EAAe,WAAA;EACf,aAAA,EAAe,WAAA;EAAA,QACP,OAAA;EAER,OAAA;EAkBA,KAAA,CACE,GAAA,EAAK,cAAA,EACL,aAAA,GAAgB,WAAA,EAChB,aAAA,GAAgB,WAAA;EAAA,QA4CV,qBAAA;EAAA,QAcA,qBAAA;AAAA"}
1
+ {"version":3,"file":"ScrollSyncManager.d.ts","names":[],"sources":["../../src/managers/ScrollSyncManager.ts"],"mappings":";cAAa;EACX;EACA;EACA,WAAW,OAAO;EAClB,eAAe;EACf,eAAe;UACP;EAER;EAkBA,MACE,KAAK,gBACL,gBAAgB,aAChB,gBAAgB;UA4CV;UAcA"}
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalRenderingManager.d.ts","names":[],"sources":["../../src/managers/UniversalRenderingManager.ts"],"mappings":";KAAK,QAAA,IAAY,IAAY;AAAA,iBAMb,WAAA,CAAY,QAAkB,EAAR,QAAQ;AAAA,iBAK9B,aAAA,CAAc,QAAkB,EAAR,QAAQ;AAAA,iBAUhC,gBAAA"}
1
+ {"version":3,"file":"UniversalRenderingManager.d.ts","names":[],"sources":["../../src/managers/UniversalRenderingManager.ts"],"mappings":";KAAK,YAAY;iBAMD,YAAY,UAAU;iBAKtB,cAAc,UAAU;iBAUxB"}
@@ -1,5 +1,4 @@
1
1
  import { Data as Data$1, Node as Node$1 } from "../../../../@types_unist@3.0.3/node_modules/@types/unist/index.js";
2
-
3
2
  //#region ../../node_modules/.pnpm/@types+hast@3.0.4/node_modules/@types/hast/index.d.ts
4
3
  // ## Interfaces
5
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["UnistData","PropertyName","Array","ElementContentMap","comment","Comment","element","Element","text","Text","RootContentMap","doctype","Doctype","RootContent","Extract","Nodes","UnistLiteral","Root","UnistParent","UnistNode","data","Data","Node","value","children","Literal","type","CommentData","DoctypeData","Parent","tagName","properties","Properties","ElementContent","content","ElementData","RootData","TextData"],"sources":["../../../../../../../../../node_modules/.pnpm/@types+hast@3.0.4/node_modules/@types/hast/index.d.ts"],"x_google_ignoreList":[0],"mappings":";;;;;;;AAsBuC;AAKvC;;;;AACgF;AAWhF;;;;AAAsE;AAOtE;;;;UAxBiB,IAAA,SAAa,MAAS;;;;UAKtB,UAAA;EAAA,CACZC,YAAAA,0DAAsE,KAAK;AAAA;AAAA;AAqBlE;AASd;;;;AAA6D;AAT/C,KAVF,cAAA,GAAiB,iBAAA,OAAwB,iBAAiB;;;;;;UAOrD,iBAAA;EACbG,OAAAA,EAAS,OAAA;EACTE,OAAAA,EAAS,OAAA;EACTE,IAAAA,EAAM,IAAA;AAAA;;;;;;AAuBI;KAdF,WAAA,GAAc,cAAA,OAAqB,cAAc;;;;;;;AAwE9C;AAUf;UAxEiB,cAAA;EACbJ,OAAAA,EAAS,OAAA;EACTO,OAAAA,EAAS,OAAA;EACTL,OAAAA,EAAS,OAAA;EACTE,IAAAA,EAAM,IAAA;AAAA;AAAA;;;;;;;;;;;;;;UAsDO,IAAA,SAAa,MAAS;EA8FzByB;;;EA1FVb,IAAAA,GAAO,IAAA;AAAA;AAmGW;AAMtB;;;;AAAyC;AASzC;AAfsB,UAzFL,OAAA,SAAgB,IAAI;;;;EAIjCG,KAAK;AAAA;;;;;;;;UAUQ,MAAA,SAAe,IAAI;EA4GnB;;;EAxGbC,QAAAA,EAAU,WAAA;AAAA;AAAA;;;;UAQG,OAAA,SAAgB,OAAO;EA6G7Ba;;AAAQ;EAzGfX,IAAAA;EA+GqB;;;EA3GrBN,IAAAA,GAAO,WAAA;AAAA;;;;UAMM,WAAA,SAAoB,IAAI;;;;UAKxB,OAAA,SAAgB,MAAS;;;;EAItCM,IAAAA;;;;EAIAN,IAAAA,GAAO,WAAA;AAAA;;;;UAMM,WAAA,SAAoB,IAAI;;;;UAKxB,OAAA,SAAgB,MAAA;;;;EAI7BM,IAAAA;;;;EAIAI,OAAAA;;;;EAIAC,UAAAA,EAAY,UAAA;;;;EAIZP,QAAAA,EAAU,cAAA;;;;;EAKVU,OAAAA,GAAU,IAAA;;;;EAIVd,IAAAA,GAAO,WAAA;AAAA;;;;UAMM,WAAA,SAAoB,IAAI;;;;;;;;UASxB,IAAA,SAAa,MAAA;;;;EAI1BM,IAAAA;;;;EAIAF,QAAAA,EAAU,WAAA;;;;EAIVJ,IAAAA,GAAO,QAAA;AAAA;;;;UAMM,QAAA,SAAiB,IAAI;;;;UAKrB,IAAA,SAAa,OAAO;;;;EAIjCM,IAAAA;;;;EAIAN,IAAAA,GAAO,QAAA;AAAA;;;;UAMM,QAAA,SAAiB,IAAI"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/@types+hast@3.0.4/node_modules/@types/hast/index.d.ts"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;;UAsBiB,aAAa;;;;UAKb;GACZ,sEAAsE;;;;;;;;;KAW/D,iBAAiB,wBAAwB;;;;;;UAOpC;EACb,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;KASE,cAAc,qBAAqB;;;;;;;;;UAU9B;EACb,SAAS;EACT,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;;;;;;;;;UAsDO,aAAa;;;;EAI1B,OAAO;;;;;;;;;UAUM,gBAAgB;;;;EAI7B;;;;;;;;;UAUa,eAAe;;;;EAI5B,UAAU;;;;;;UAQG,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA;;;;EAIA,YAAY;;;;EAIZ,UAAU;;;;;EAKV,UAAU;;;;EAIV,OAAO;;;;;UAMM,oBAAoB;;;;;;;;UASpB,aAAa;;;;EAI1B;;;;EAIA,UAAU;;;;EAIV,OAAO;;;;;UAMM,iBAAiB;;;;UAKjB,aAAa;;;;EAI1B;;;;EAIA,OAAO;;;;;UAMM,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["line","column","offset","start","Point","end","Node","value","type","data","Data","position","Position","children"],"sources":["../../../../../../../../../node_modules/.pnpm/@types+unist@3.0.3/node_modules/@types/unist/index.d.ts"],"x_google_ignoreList":[0],"mappings":";;;;;AAqBqB;AAKrB;;;;;;;;AAaU;AAQV;;;;;;UA1BiB,IAAA;;AAmCH;AA6Bd;UA3DiB,KAAA;;;;EAIbA,IAAAA;EAwEAW;;;EAnEAV,MAAAA;;;;EAIAC,MAAAA;AAAAA;;;;;;UAQa,QAAA;;;;EAIbC,KAAAA,EAAO,KAAA;;;;EAKPE,GAAAA,EAAK,KAAK;AAAA;;;;;;;;;;;UA6BG,IAAA;;;;EAIbG,IAAAA;;;;EAKAC,IAAAA,GAAO,IAAA;;;;;;;EAQPE,QAAAA,GAAW,QAAQ;AAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/@types+unist@3.0.3/node_modules/@types/unist/index.d.ts"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;;UAqBiB;;;;UAKA;;;;EAIb;;;;EAKA;;;;EAIA;;;;;;;UAQa;;;;EAIb,OAAO;;;;EAKP,KAAK;;;;;;;;;;;;UA6BQ;;;;EAIb;;;;EAKA,OAAO;;;;;;;EAQP,WAAW"}