@pierre/diffs 1.3.0-beta.4 → 1.3.0-beta.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 (625) hide show
  1. package/README.md +15 -15
  2. package/dist/components/CodeView.d.ts +10 -11
  3. package/dist/components/CodeView.d.ts.map +1 -1
  4. package/dist/components/CodeView.js +14 -14
  5. package/dist/components/CodeView.js.map +1 -1
  6. package/dist/components/File.d.ts +4 -4
  7. package/dist/components/File.d.ts.map +1 -1
  8. package/dist/components/File.js +53 -24
  9. package/dist/components/File.js.map +1 -1
  10. package/dist/components/FileDiff.d.ts +19 -18
  11. package/dist/components/FileDiff.d.ts.map +1 -1
  12. package/dist/components/FileDiff.js +89 -58
  13. package/dist/components/FileDiff.js.map +1 -1
  14. package/dist/components/FileStream.d.ts +0 -1
  15. package/dist/components/FileStream.d.ts.map +1 -1
  16. package/dist/components/FileStream.js +8 -6
  17. package/dist/components/FileStream.js.map +1 -1
  18. package/dist/components/UnresolvedFile.d.ts +1 -2
  19. package/dist/components/UnresolvedFile.d.ts.map +1 -1
  20. package/dist/components/UnresolvedFile.js +3 -3
  21. package/dist/components/UnresolvedFile.js.map +1 -1
  22. package/dist/components/VirtualizedFile.d.ts +5 -2
  23. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  24. package/dist/components/VirtualizedFile.js +97 -35
  25. package/dist/components/VirtualizedFile.js.map +1 -1
  26. package/dist/components/VirtualizedFileDiff.d.ts +8 -4
  27. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  28. package/dist/components/VirtualizedFileDiff.js +91 -30
  29. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  30. package/dist/components/Virtualizer.d.ts +1 -1
  31. package/dist/components/Virtualizer.d.ts.map +1 -1
  32. package/dist/components/Virtualizer.js +23 -24
  33. package/dist/components/Virtualizer.js.map +1 -1
  34. package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
  35. package/dist/components/web-components.d.ts.map +1 -1
  36. package/dist/components/web-components.js +2 -3
  37. package/dist/components/web-components.js.map +1 -1
  38. package/dist/constants.d.ts +3 -2
  39. package/dist/constants.d.ts.map +1 -1
  40. package/dist/constants.js +3 -2
  41. package/dist/constants.js.map +1 -1
  42. package/dist/editor/command.d.ts +3 -2
  43. package/dist/editor/command.d.ts.map +1 -1
  44. package/dist/editor/command.js +10 -6
  45. package/dist/editor/command.js.map +1 -1
  46. package/dist/editor/editStack.d.ts +7 -1
  47. package/dist/editor/editStack.d.ts.map +1 -1
  48. package/dist/editor/editStack.js +3 -3
  49. package/dist/editor/editStack.js.map +1 -1
  50. package/dist/editor/editor.d.ts +56 -6
  51. package/dist/editor/editor.d.ts.map +1 -1
  52. package/dist/editor/editor.js +758 -397
  53. package/dist/editor/editor.js.map +1 -1
  54. package/dist/editor/editor2.js +3 -3
  55. package/dist/editor/editor2.js.map +1 -1
  56. package/dist/editor/index.d.ts +2 -2
  57. package/dist/editor/index.js +1 -2
  58. package/dist/editor/lineAnnotations.d.ts.map +1 -1
  59. package/dist/editor/lineAnnotations.js +2 -3
  60. package/dist/editor/lineAnnotations.js.map +1 -1
  61. package/dist/editor/marker.d.ts +4 -3
  62. package/dist/editor/marker.d.ts.map +1 -1
  63. package/dist/editor/marker.js +30 -13
  64. package/dist/editor/marker.js.map +1 -1
  65. package/dist/editor/pieceTable.d.ts +10 -3
  66. package/dist/editor/pieceTable.d.ts.map +1 -1
  67. package/dist/editor/pieceTable.js +170 -129
  68. package/dist/editor/pieceTable.js.map +1 -1
  69. package/dist/editor/platform.d.ts +8 -1
  70. package/dist/editor/platform.d.ts.map +1 -1
  71. package/dist/editor/platform.js +16 -5
  72. package/dist/editor/platform.js.map +1 -1
  73. package/dist/editor/searchPanel.d.ts +13 -3
  74. package/dist/editor/searchPanel.d.ts.map +1 -1
  75. package/dist/editor/searchPanel.js +194 -67
  76. package/dist/editor/searchPanel.js.map +1 -1
  77. package/dist/editor/selection.d.ts +41 -4
  78. package/dist/editor/selection.d.ts.map +1 -1
  79. package/dist/editor/selection.js +423 -83
  80. package/dist/editor/selection.js.map +1 -1
  81. package/dist/editor/selectionAction.d.ts +4 -5
  82. package/dist/editor/selectionAction.d.ts.map +1 -1
  83. package/dist/editor/selectionAction.js +14 -64
  84. package/dist/editor/selectionAction.js.map +1 -1
  85. package/dist/editor/sprite.d.ts +2 -2
  86. package/dist/editor/sprite.d.ts.map +1 -1
  87. package/dist/editor/sprite.js +8 -8
  88. package/dist/editor/sprite.js.map +1 -1
  89. package/dist/editor/textDocument.d.ts +5 -4
  90. package/dist/editor/textDocument.d.ts.map +1 -1
  91. package/dist/editor/textDocument.js +26 -15
  92. package/dist/editor/textDocument.js.map +1 -1
  93. package/dist/editor/textMeasure.d.ts +37 -3
  94. package/dist/editor/textMeasure.d.ts.map +1 -1
  95. package/dist/editor/textMeasure.js +85 -10
  96. package/dist/editor/textMeasure.js.map +1 -1
  97. package/dist/editor/tokenzier.d.ts +1 -0
  98. package/dist/editor/tokenzier.d.ts.map +1 -1
  99. package/dist/editor/tokenzier.js +25 -19
  100. package/dist/editor/tokenzier.js.map +1 -1
  101. package/dist/editor/utils.d.ts +2 -1
  102. package/dist/editor/utils.d.ts.map +1 -1
  103. package/dist/editor/utils.js +6 -3
  104. package/dist/editor/utils.js.map +1 -1
  105. package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
  106. package/dist/highlighter/languages/areLanguagesAttached.js +1 -2
  107. package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -1
  108. package/dist/highlighter/languages/attachResolvedLanguages.d.ts +0 -2
  109. package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
  110. package/dist/highlighter/languages/attachResolvedLanguages.js +1 -2
  111. package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
  112. package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -1
  113. package/dist/highlighter/languages/cleanUpResolvedLanguages.js +1 -2
  114. package/dist/highlighter/languages/cleanUpResolvedLanguages.js.map +1 -1
  115. package/dist/highlighter/languages/constants.d.ts +0 -1
  116. package/dist/highlighter/languages/constants.d.ts.map +1 -1
  117. package/dist/highlighter/languages/constants.js +1 -1
  118. package/dist/highlighter/languages/constants.js.map +1 -1
  119. package/dist/highlighter/languages/getResolvedLanguages.d.ts +0 -2
  120. package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -1
  121. package/dist/highlighter/languages/getResolvedLanguages.js +1 -2
  122. package/dist/highlighter/languages/getResolvedLanguages.js.map +1 -1
  123. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +0 -2
  124. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
  125. package/dist/highlighter/languages/getResolvedOrResolveLanguage.js +1 -2
  126. package/dist/highlighter/languages/getResolvedOrResolveLanguage.js.map +1 -1
  127. package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -1
  128. package/dist/highlighter/languages/hasResolvedLanguages.js +1 -2
  129. package/dist/highlighter/languages/hasResolvedLanguages.js.map +1 -1
  130. package/dist/highlighter/languages/registerCustomLanguage.d.ts +0 -1
  131. package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -1
  132. package/dist/highlighter/languages/registerCustomLanguage.js +1 -2
  133. package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -1
  134. package/dist/highlighter/languages/resolveLanguage.d.ts +0 -2
  135. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  136. package/dist/highlighter/languages/resolveLanguage.js +4 -5
  137. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  138. package/dist/highlighter/languages/resolveLanguages.d.ts +0 -2
  139. package/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -1
  140. package/dist/highlighter/languages/resolveLanguages.js +1 -2
  141. package/dist/highlighter/languages/resolveLanguages.js.map +1 -1
  142. package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  143. package/dist/highlighter/shared_highlighter.js +3 -4
  144. package/dist/highlighter/shared_highlighter.js.map +1 -1
  145. package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
  146. package/dist/highlighter/themes/areThemesAttached.js +1 -2
  147. package/dist/highlighter/themes/areThemesAttached.js.map +1 -1
  148. package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
  149. package/dist/highlighter/themes/attachResolvedThemes.js +1 -2
  150. package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
  151. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
  152. package/dist/highlighter/themes/cleanUpResolvedThemes.js +1 -2
  153. package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
  154. package/dist/highlighter/themes/constants.d.ts.map +1 -1
  155. package/dist/highlighter/themes/constants.js +1 -1
  156. package/dist/highlighter/themes/constants.js.map +1 -1
  157. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
  158. package/dist/highlighter/themes/getResolvedOrResolveTheme.js +1 -2
  159. package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
  160. package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
  161. package/dist/highlighter/themes/getResolvedThemes.js +1 -2
  162. package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
  163. package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
  164. package/dist/highlighter/themes/hasResolvedThemes.js +1 -2
  165. package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
  166. package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
  167. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +1 -2
  168. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
  169. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  170. package/dist/highlighter/themes/registerCustomTheme.js +1 -2
  171. package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
  172. package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
  173. package/dist/highlighter/themes/resolveTheme.js +1 -2
  174. package/dist/highlighter/themes/resolveTheme.js.map +1 -1
  175. package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
  176. package/dist/highlighter/themes/resolveThemes.js +1 -2
  177. package/dist/highlighter/themes/resolveThemes.js.map +1 -1
  178. package/dist/highlighter/themes/themeResolution.d.ts.map +1 -1
  179. package/dist/highlighter/themes/themeResolution.js +1 -2
  180. package/dist/highlighter/themes/themeResolution.js.map +1 -1
  181. package/dist/highlighter/themes/themeResolver.d.ts +2 -2
  182. package/dist/highlighter/themes/themeResolver.d.ts.map +1 -1
  183. package/dist/highlighter/themes/themeResolver.js +1 -2
  184. package/dist/highlighter/themes/themeResolver.js.map +1 -1
  185. package/dist/index.d.ts +10 -10
  186. package/dist/index.js +2 -3
  187. package/dist/managers/InteractionManager.d.ts +7 -0
  188. package/dist/managers/InteractionManager.d.ts.map +1 -1
  189. package/dist/managers/InteractionManager.js +26 -4
  190. package/dist/managers/InteractionManager.js.map +1 -1
  191. package/dist/managers/ResizeManager.d.ts.map +1 -1
  192. package/dist/managers/ResizeManager.js +2 -2
  193. package/dist/managers/ResizeManager.js.map +1 -1
  194. package/dist/managers/ScrollSyncManager.d.ts.map +1 -1
  195. package/dist/managers/ScrollSyncManager.js +1 -1
  196. package/dist/managers/ScrollSyncManager.js.map +1 -1
  197. package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  198. package/dist/managers/UniversalRenderingManager.js +2 -2
  199. package/dist/managers/UniversalRenderingManager.js.map +1 -1
  200. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +228 -0
  201. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -0
  202. package/dist/node_modules/.pnpm/@types_unist@3.0.3/node_modules/@types/unist/index.d.ts +84 -0
  203. package/dist/node_modules/.pnpm/@types_unist@3.0.3/node_modules/@types/unist/index.d.ts.map +1 -0
  204. package/dist/react/CodeView.d.ts +1 -1
  205. package/dist/react/CodeView.d.ts.map +1 -1
  206. package/dist/react/CodeView.js +16 -15
  207. package/dist/react/CodeView.js.map +1 -1
  208. package/dist/react/EditorContext.d.ts +0 -1
  209. package/dist/react/EditorContext.d.ts.map +1 -1
  210. package/dist/react/EditorContext.js +2 -5
  211. package/dist/react/EditorContext.js.map +1 -1
  212. package/dist/react/File.d.ts +1 -0
  213. package/dist/react/File.d.ts.map +1 -1
  214. package/dist/react/File.js +4 -6
  215. package/dist/react/File.js.map +1 -1
  216. package/dist/react/FileDiff.d.ts +1 -0
  217. package/dist/react/FileDiff.d.ts.map +1 -1
  218. package/dist/react/FileDiff.js +4 -6
  219. package/dist/react/FileDiff.js.map +1 -1
  220. package/dist/react/MultiFileDiff.d.ts +1 -0
  221. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  222. package/dist/react/MultiFileDiff.js +4 -6
  223. package/dist/react/MultiFileDiff.js.map +1 -1
  224. package/dist/react/PatchDiff.d.ts +1 -0
  225. package/dist/react/PatchDiff.d.ts.map +1 -1
  226. package/dist/react/PatchDiff.js +4 -6
  227. package/dist/react/PatchDiff.js.map +1 -1
  228. package/dist/react/UnresolvedFile.d.ts +2 -1
  229. package/dist/react/UnresolvedFile.d.ts.map +1 -1
  230. package/dist/react/UnresolvedFile.js +4 -6
  231. package/dist/react/UnresolvedFile.js.map +1 -1
  232. package/dist/react/Virtualizer.d.ts.map +1 -1
  233. package/dist/react/Virtualizer.js +2 -5
  234. package/dist/react/Virtualizer.js.map +1 -1
  235. package/dist/react/WorkerPoolContext.d.ts +0 -1
  236. package/dist/react/WorkerPoolContext.d.ts.map +1 -1
  237. package/dist/react/WorkerPoolContext.js +2 -5
  238. package/dist/react/WorkerPoolContext.js.map +1 -1
  239. package/dist/react/constants.d.ts.map +1 -1
  240. package/dist/react/constants.js +1 -1
  241. package/dist/react/constants.js.map +1 -1
  242. package/dist/react/index.d.ts +2 -2
  243. package/dist/react/index.js +1 -2
  244. package/dist/react/jsx.d.ts +0 -2
  245. package/dist/react/jsx.d.ts.map +1 -1
  246. package/dist/react/types.d.ts +2 -0
  247. package/dist/react/types.d.ts.map +1 -1
  248. package/dist/react/utils/renderDiffChildren.d.ts +2 -0
  249. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  250. package/dist/react/utils/renderDiffChildren.js +18 -11
  251. package/dist/react/utils/renderDiffChildren.js.map +1 -1
  252. package/dist/react/utils/renderFileChildren.d.ts +2 -0
  253. package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  254. package/dist/react/utils/renderFileChildren.js +18 -11
  255. package/dist/react/utils/renderFileChildren.js.map +1 -1
  256. package/dist/react/utils/templateRender.d.ts.map +1 -1
  257. package/dist/react/utils/templateRender.js +1 -2
  258. package/dist/react/utils/templateRender.js.map +1 -1
  259. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  260. package/dist/react/utils/useFileDiffInstance.js +1 -3
  261. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  262. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  263. package/dist/react/utils/useFileInstance.js +1 -2
  264. package/dist/react/utils/useFileInstance.js.map +1 -1
  265. package/dist/react/utils/useStableCallback.d.ts.map +1 -1
  266. package/dist/react/utils/useStableCallback.js +1 -2
  267. package/dist/react/utils/useStableCallback.js.map +1 -1
  268. package/dist/react/utils/useUnresolvedFileInstance.d.ts.map +1 -1
  269. package/dist/react/utils/useUnresolvedFileInstance.js +10 -11
  270. package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
  271. package/dist/renderers/DiffHunksRenderer.d.ts +5 -5
  272. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  273. package/dist/renderers/DiffHunksRenderer.js +73 -20
  274. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  275. package/dist/renderers/FileRenderer.d.ts +1 -3
  276. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  277. package/dist/renderers/FileRenderer.js +23 -8
  278. package/dist/renderers/FileRenderer.js.map +1 -1
  279. package/dist/renderers/UnresolvedFileHunksRenderer.d.ts +1 -2
  280. package/dist/renderers/UnresolvedFileHunksRenderer.d.ts.map +1 -1
  281. package/dist/renderers/UnresolvedFileHunksRenderer.js +1 -2
  282. package/dist/renderers/UnresolvedFileHunksRenderer.js.map +1 -1
  283. package/dist/shiki-stream/index.js +1 -2
  284. package/dist/shiki-stream/stream.d.ts +0 -1
  285. package/dist/shiki-stream/stream.d.ts.map +1 -1
  286. package/dist/shiki-stream/stream.js +1 -2
  287. package/dist/shiki-stream/stream.js.map +1 -1
  288. package/dist/shiki-stream/tokenizer.d.ts.map +1 -1
  289. package/dist/shiki-stream/tokenizer.js +1 -1
  290. package/dist/shiki-stream/tokenizer.js.map +1 -1
  291. package/dist/shiki-stream/types.d.ts +0 -1
  292. package/dist/shiki-stream/types.d.ts.map +1 -1
  293. package/dist/sprite.d.ts.map +1 -1
  294. package/dist/sprite.js +1 -1
  295. package/dist/ssr/FileDiffReact.d.ts.map +1 -1
  296. package/dist/ssr/FileDiffReact.js +4 -7
  297. package/dist/ssr/FileDiffReact.js.map +1 -1
  298. package/dist/ssr/index.d.ts +2 -2
  299. package/dist/ssr/index.js +1 -2
  300. package/dist/ssr/preloadDiffs.d.ts +1 -1
  301. package/dist/ssr/preloadDiffs.d.ts.map +1 -1
  302. package/dist/ssr/preloadDiffs.js +1 -2
  303. package/dist/ssr/preloadDiffs.js.map +1 -1
  304. package/dist/ssr/preloadFile.d.ts.map +1 -1
  305. package/dist/ssr/preloadFile.js +1 -2
  306. package/dist/ssr/preloadFile.js.map +1 -1
  307. package/dist/ssr/preloadPatchFile.d.ts.map +1 -1
  308. package/dist/ssr/preloadPatchFile.js +2 -3
  309. package/dist/ssr/preloadPatchFile.js.map +1 -1
  310. package/dist/ssr/renderHTML.d.ts +1 -1
  311. package/dist/ssr/renderHTML.d.ts.map +1 -1
  312. package/dist/ssr/renderHTML.js +1 -2
  313. package/dist/ssr/renderHTML.js.map +1 -1
  314. package/dist/string-import.d.ts +4 -0
  315. package/dist/string-import.d.ts.map +1 -1
  316. package/dist/style.js +3 -3
  317. package/dist/style.js.map +1 -1
  318. package/dist/types.d.ts +27 -6
  319. package/dist/types.d.ts.map +1 -1
  320. package/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -1
  321. package/dist/utils/areDiffLineAnnotationsEqual.js +1 -1
  322. package/dist/utils/areDiffLineAnnotationsEqual.js.map +1 -1
  323. package/dist/utils/areDiffRenderOptionsEqual.d.ts.map +1 -1
  324. package/dist/utils/areDiffRenderOptionsEqual.js +1 -2
  325. package/dist/utils/areDiffRenderOptionsEqual.js.map +1 -1
  326. package/dist/utils/areDiffTargetsEqual.d.ts.map +1 -1
  327. package/dist/utils/areDiffTargetsEqual.js +1 -1
  328. package/dist/utils/areDiffTargetsEqual.js.map +1 -1
  329. package/dist/utils/areFileRenderOptionsEqual.d.ts.map +1 -1
  330. package/dist/utils/areFileRenderOptionsEqual.js +1 -2
  331. package/dist/utils/areFileRenderOptionsEqual.js.map +1 -1
  332. package/dist/utils/areFilesEqual.d.ts.map +1 -1
  333. package/dist/utils/areFilesEqual.js +1 -1
  334. package/dist/utils/areFilesEqual.js.map +1 -1
  335. package/dist/utils/areHunkDataEqual.d.ts.map +1 -1
  336. package/dist/utils/areHunkDataEqual.js +1 -1
  337. package/dist/utils/areHunkDataEqual.js.map +1 -1
  338. package/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -1
  339. package/dist/utils/areLineAnnotationsEqual.js +1 -1
  340. package/dist/utils/areLineAnnotationsEqual.js.map +1 -1
  341. package/dist/utils/areManagedSnapshotsEqual.d.ts.map +1 -1
  342. package/dist/utils/areManagedSnapshotsEqual.js +1 -1
  343. package/dist/utils/areManagedSnapshotsEqual.js.map +1 -1
  344. package/dist/utils/areMergeConflictActionsEqual.d.ts.map +1 -1
  345. package/dist/utils/areMergeConflictActionsEqual.js +1 -1
  346. package/dist/utils/areMergeConflictActionsEqual.js.map +1 -1
  347. package/dist/utils/areObjectsEqual.d.ts.map +1 -1
  348. package/dist/utils/areObjectsEqual.js +1 -1
  349. package/dist/utils/areObjectsEqual.js.map +1 -1
  350. package/dist/utils/areOptionsEqual.d.ts +0 -2
  351. package/dist/utils/areOptionsEqual.d.ts.map +1 -1
  352. package/dist/utils/areOptionsEqual.js +1 -2
  353. package/dist/utils/areOptionsEqual.js.map +1 -1
  354. package/dist/utils/arePrePropertiesEqual.d.ts.map +1 -1
  355. package/dist/utils/arePrePropertiesEqual.js +1 -1
  356. package/dist/utils/arePrePropertiesEqual.js.map +1 -1
  357. package/dist/utils/areRenderRangesEqual.d.ts.map +1 -1
  358. package/dist/utils/areRenderRangesEqual.js +1 -1
  359. package/dist/utils/areRenderRangesEqual.js.map +1 -1
  360. package/dist/utils/areSelectionPointsEqual.d.ts.map +1 -1
  361. package/dist/utils/areSelectionPointsEqual.js +1 -1
  362. package/dist/utils/areSelectionPointsEqual.js.map +1 -1
  363. package/dist/utils/areSelectionsEqual.d.ts.map +1 -1
  364. package/dist/utils/areSelectionsEqual.js +1 -1
  365. package/dist/utils/areSelectionsEqual.js.map +1 -1
  366. package/dist/utils/areThemesEqual.d.ts.map +1 -1
  367. package/dist/utils/areThemesEqual.js +1 -1
  368. package/dist/utils/areThemesEqual.js.map +1 -1
  369. package/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -1
  370. package/dist/utils/areVirtualWindowSpecsEqual.js +1 -1
  371. package/dist/utils/areVirtualWindowSpecsEqual.js.map +1 -1
  372. package/dist/utils/areWorkerStatsEqual.d.ts +0 -2
  373. package/dist/utils/areWorkerStatsEqual.d.ts.map +1 -1
  374. package/dist/utils/areWorkerStatsEqual.js +1 -1
  375. package/dist/utils/areWorkerStatsEqual.js.map +1 -1
  376. package/dist/utils/cleanLastNewline.d.ts.map +1 -1
  377. package/dist/utils/cleanLastNewline.js +1 -1
  378. package/dist/utils/cleanLastNewline.js.map +1 -1
  379. package/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -1
  380. package/dist/utils/computeEstimatedDiffHeights.js +1 -2
  381. package/dist/utils/computeEstimatedDiffHeights.js.map +1 -1
  382. package/dist/utils/computeFileOffsets.d.ts +9 -1
  383. package/dist/utils/computeFileOffsets.d.ts.map +1 -1
  384. package/dist/utils/computeFileOffsets.js +20 -2
  385. package/dist/utils/computeFileOffsets.js.map +1 -1
  386. package/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -1
  387. package/dist/utils/computeVirtualFileMetrics.js +1 -2
  388. package/dist/utils/computeVirtualFileMetrics.js.map +1 -1
  389. package/dist/utils/createAnnotationElement.d.ts +1 -1
  390. package/dist/utils/createAnnotationElement.d.ts.map +1 -1
  391. package/dist/utils/createAnnotationElement.js +1 -2
  392. package/dist/utils/createAnnotationElement.js.map +1 -1
  393. package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -1
  394. package/dist/utils/createAnnotationWrapperNode.js +1 -1
  395. package/dist/utils/createAnnotationWrapperNode.js.map +1 -1
  396. package/dist/utils/createContentColumn.d.ts +1 -1
  397. package/dist/utils/createContentColumn.d.ts.map +1 -1
  398. package/dist/utils/createContentColumn.js +1 -2
  399. package/dist/utils/createContentColumn.js.map +1 -1
  400. package/dist/utils/createEmptyRowBuffer.d.ts +1 -1
  401. package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -1
  402. package/dist/utils/createEmptyRowBuffer.js +1 -2
  403. package/dist/utils/createEmptyRowBuffer.js.map +1 -1
  404. package/dist/utils/createFileHeaderElement.d.ts +1 -1
  405. package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
  406. package/dist/utils/createFileHeaderElement.js +6 -3
  407. package/dist/utils/createFileHeaderElement.js.map +1 -1
  408. package/dist/utils/createGutterUtilityContentNode.d.ts.map +1 -1
  409. package/dist/utils/createGutterUtilityContentNode.js +1 -1
  410. package/dist/utils/createGutterUtilityContentNode.js.map +1 -1
  411. package/dist/utils/createGutterUtilityElement.d.ts +1 -1
  412. package/dist/utils/createGutterUtilityElement.d.ts.map +1 -1
  413. package/dist/utils/createGutterUtilityElement.js +1 -2
  414. package/dist/utils/createGutterUtilityElement.js.map +1 -1
  415. package/dist/utils/createNoNewlineElement.d.ts +1 -1
  416. package/dist/utils/createNoNewlineElement.d.ts.map +1 -1
  417. package/dist/utils/createNoNewlineElement.js +1 -2
  418. package/dist/utils/createNoNewlineElement.js.map +1 -1
  419. package/dist/utils/createPreElement.d.ts +1 -1
  420. package/dist/utils/createPreElement.d.ts.map +1 -1
  421. package/dist/utils/createPreElement.js +1 -2
  422. package/dist/utils/createPreElement.js.map +1 -1
  423. package/dist/utils/createRowNodes.d.ts.map +1 -1
  424. package/dist/utils/createRowNodes.js +1 -1
  425. package/dist/utils/createRowNodes.js.map +1 -1
  426. package/dist/utils/createSeparator.d.ts +1 -1
  427. package/dist/utils/createSeparator.d.ts.map +1 -1
  428. package/dist/utils/createSeparator.js +1 -2
  429. package/dist/utils/createSeparator.js.map +1 -1
  430. package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
  431. package/dist/utils/createSpanNodeFromToken.js +1 -2
  432. package/dist/utils/createSpanNodeFromToken.js.map +1 -1
  433. package/dist/utils/createStyleElement.d.ts +1 -1
  434. package/dist/utils/createStyleElement.d.ts.map +1 -1
  435. package/dist/utils/createStyleElement.js +1 -2
  436. package/dist/utils/createStyleElement.js.map +1 -1
  437. package/dist/utils/createTransformerWithState.d.ts.map +1 -1
  438. package/dist/utils/createTransformerWithState.js +1 -2
  439. package/dist/utils/createTransformerWithState.js.map +1 -1
  440. package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -1
  441. package/dist/utils/createUnsafeCSSStyleNode.js +1 -2
  442. package/dist/utils/createUnsafeCSSStyleNode.js.map +1 -1
  443. package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -1
  444. package/dist/utils/createWindowFromScrollPosition.js +5 -5
  445. package/dist/utils/createWindowFromScrollPosition.js.map +1 -1
  446. package/dist/utils/cssWrappers.d.ts.map +1 -1
  447. package/dist/utils/cssWrappers.js +2 -3
  448. package/dist/utils/cssWrappers.js.map +1 -1
  449. package/dist/utils/detachString.d.ts.map +1 -1
  450. package/dist/utils/detachString.js +1 -1
  451. package/dist/utils/detachString.js.map +1 -1
  452. package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -1
  453. package/dist/utils/diffAcceptRejectHunk.js +1 -2
  454. package/dist/utils/diffAcceptRejectHunk.js.map +1 -1
  455. package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -1
  456. package/dist/utils/formatCSSVariablePrefix.js +1 -1
  457. package/dist/utils/formatCSSVariablePrefix.js.map +1 -1
  458. package/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -1
  459. package/dist/utils/getDiffHunksRendererOptions.js +1 -1
  460. package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
  461. package/dist/utils/getFileRendererOptions.d.ts.map +1 -1
  462. package/dist/utils/getFileRendererOptions.js +1 -1
  463. package/dist/utils/getFileRendererOptions.js.map +1 -1
  464. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  465. package/dist/utils/getFiletypeFromFileName.js +1 -1
  466. package/dist/utils/getFiletypeFromFileName.js.map +1 -1
  467. package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  468. package/dist/utils/getHighlighterOptions.js +1 -2
  469. package/dist/utils/getHighlighterOptions.js.map +1 -1
  470. package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
  471. package/dist/utils/getHighlighterThemeStyles.js +1 -2
  472. package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
  473. package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -1
  474. package/dist/utils/getHunkSeparatorSlotName.js +1 -1
  475. package/dist/utils/getHunkSeparatorSlotName.js.map +1 -1
  476. package/dist/utils/getIconForType.d.ts.map +1 -1
  477. package/dist/utils/getIconForType.js +1 -1
  478. package/dist/utils/getIconForType.js.map +1 -1
  479. package/dist/utils/getLineAnnotationName.d.ts.map +1 -1
  480. package/dist/utils/getLineAnnotationName.js +1 -1
  481. package/dist/utils/getLineAnnotationName.js.map +1 -1
  482. package/dist/utils/getLineEndingType.d.ts.map +1 -1
  483. package/dist/utils/getLineEndingType.js +1 -1
  484. package/dist/utils/getLineEndingType.js.map +1 -1
  485. package/dist/utils/getLineNodes.d.ts +1 -1
  486. package/dist/utils/getLineNodes.d.ts.map +1 -1
  487. package/dist/utils/getLineNodes.js +1 -1
  488. package/dist/utils/getLineNodes.js.map +1 -1
  489. package/dist/utils/getMergeConflictActionSlotName.d.ts.map +1 -1
  490. package/dist/utils/getMergeConflictActionSlotName.js +1 -1
  491. package/dist/utils/getMergeConflictActionSlotName.js.map +1 -1
  492. package/dist/utils/getMergeConflictLineTypes.d.ts.map +1 -1
  493. package/dist/utils/getMergeConflictLineTypes.js +1 -2
  494. package/dist/utils/getMergeConflictLineTypes.js.map +1 -1
  495. package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -1
  496. package/dist/utils/getOrCreateCodeNode.js +1 -1
  497. package/dist/utils/getOrCreateCodeNode.js.map +1 -1
  498. package/dist/utils/getSingularPatch.d.ts.map +1 -1
  499. package/dist/utils/getSingularPatch.js +1 -2
  500. package/dist/utils/getSingularPatch.js.map +1 -1
  501. package/dist/utils/getThemes.d.ts.map +1 -1
  502. package/dist/utils/getThemes.js +1 -2
  503. package/dist/utils/getThemes.js.map +1 -1
  504. package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
  505. package/dist/utils/getTotalLineCountFromHunks.js +1 -1
  506. package/dist/utils/getTotalLineCountFromHunks.js.map +1 -1
  507. package/dist/utils/hast_utils.d.ts +1 -1
  508. package/dist/utils/hast_utils.d.ts.map +1 -1
  509. package/dist/utils/hast_utils.js +1 -1
  510. package/dist/utils/hast_utils.js.map +1 -1
  511. package/dist/utils/hostTheme.d.ts.map +1 -1
  512. package/dist/utils/hostTheme.js +1 -2
  513. package/dist/utils/hostTheme.js.map +1 -1
  514. package/dist/utils/includesFileAnnotations.d.ts +17 -0
  515. package/dist/utils/includesFileAnnotations.d.ts.map +1 -0
  516. package/dist/utils/includesFileAnnotations.js +19 -0
  517. package/dist/utils/includesFileAnnotations.js.map +1 -0
  518. package/dist/utils/isDefaultRenderRange.d.ts.map +1 -1
  519. package/dist/utils/isDefaultRenderRange.js +1 -1
  520. package/dist/utils/isDefaultRenderRange.js.map +1 -1
  521. package/dist/utils/isDiffPlainText.d.ts.map +1 -1
  522. package/dist/utils/isDiffPlainText.js +1 -2
  523. package/dist/utils/isDiffPlainText.js.map +1 -1
  524. package/dist/utils/isFilePlainText.d.ts.map +1 -1
  525. package/dist/utils/isFilePlainText.js +1 -2
  526. package/dist/utils/isFilePlainText.js.map +1 -1
  527. package/dist/utils/isStyleNode.d.ts.map +1 -1
  528. package/dist/utils/isStyleNode.js +1 -1
  529. package/dist/utils/isStyleNode.js.map +1 -1
  530. package/dist/utils/isWorkerContext.d.ts.map +1 -1
  531. package/dist/utils/isWorkerContext.js +1 -1
  532. package/dist/utils/isWorkerContext.js.map +1 -1
  533. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  534. package/dist/utils/iterateOverDiff.js +44 -45
  535. package/dist/utils/iterateOverDiff.js.map +1 -1
  536. package/dist/utils/normalizeDiffResolution.d.ts.map +1 -1
  537. package/dist/utils/normalizeDiffResolution.js +1 -1
  538. package/dist/utils/normalizeDiffResolution.js.map +1 -1
  539. package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  540. package/dist/utils/parseDiffDecorations.js +1 -2
  541. package/dist/utils/parseDiffDecorations.js.map +1 -1
  542. package/dist/utils/parseDiffFromFile.d.ts +0 -1
  543. package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
  544. package/dist/utils/parseDiffFromFile.js +1 -2
  545. package/dist/utils/parseDiffFromFile.js.map +1 -1
  546. package/dist/utils/parseLineType.d.ts.map +1 -1
  547. package/dist/utils/parseLineType.js +1 -1
  548. package/dist/utils/parseLineType.js.map +1 -1
  549. package/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
  550. package/dist/utils/parseMergeConflictDiffFromFile.js +5 -5
  551. package/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -1
  552. package/dist/utils/parsePatchFiles.d.ts.map +1 -1
  553. package/dist/utils/parsePatchFiles.js +6 -7
  554. package/dist/utils/parsePatchFiles.js.map +1 -1
  555. package/dist/utils/prefersReducedMotion.d.ts.map +1 -1
  556. package/dist/utils/prefersReducedMotion.js +1 -1
  557. package/dist/utils/prefersReducedMotion.js.map +1 -1
  558. package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
  559. package/dist/utils/prerenderHTMLIfNecessary.js +1 -1
  560. package/dist/utils/prerenderHTMLIfNecessary.js.map +1 -1
  561. package/dist/utils/processLine.d.ts +1 -1
  562. package/dist/utils/processLine.d.ts.map +1 -1
  563. package/dist/utils/processLine.js +1 -2
  564. package/dist/utils/processLine.js.map +1 -1
  565. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  566. package/dist/utils/renderDiffWithHighlighter.js +8 -7
  567. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  568. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  569. package/dist/utils/renderFileWithHighlighter.js +5 -4
  570. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  571. package/dist/utils/resolveConflict.d.ts.map +1 -1
  572. package/dist/utils/resolveConflict.js +1 -2
  573. package/dist/utils/resolveConflict.js.map +1 -1
  574. package/dist/utils/resolveRegion.d.ts.map +1 -1
  575. package/dist/utils/resolveRegion.js +1 -1
  576. package/dist/utils/resolveRegion.js.map +1 -1
  577. package/dist/utils/roundToDevicePixel.d.ts.map +1 -1
  578. package/dist/utils/roundToDevicePixel.js +1 -1
  579. package/dist/utils/roundToDevicePixel.js.map +1 -1
  580. package/dist/utils/scrollbarGutter.d.ts.map +1 -1
  581. package/dist/utils/scrollbarGutter.js +1 -2
  582. package/dist/utils/scrollbarGutter.js.map +1 -1
  583. package/dist/utils/setLanguageOverride.d.ts.map +1 -1
  584. package/dist/utils/setLanguageOverride.js +1 -1
  585. package/dist/utils/setLanguageOverride.js.map +1 -1
  586. package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
  587. package/dist/utils/setWrapperNodeProps.js +1 -1
  588. package/dist/utils/setWrapperNodeProps.js.map +1 -1
  589. package/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
  590. package/dist/utils/shouldUseTokenTransformer.js +1 -1
  591. package/dist/utils/shouldUseTokenTransformer.js.map +1 -1
  592. package/dist/utils/splitFileContents.d.ts.map +1 -1
  593. package/dist/utils/splitFileContents.js +1 -2
  594. package/dist/utils/splitFileContents.js.map +1 -1
  595. package/dist/utils/trimPatchContext.d.ts.map +1 -1
  596. package/dist/utils/trimPatchContext.js +1 -2
  597. package/dist/utils/trimPatchContext.js.map +1 -1
  598. package/dist/utils/updateDiffHunks.d.ts +2 -1
  599. package/dist/utils/updateDiffHunks.d.ts.map +1 -1
  600. package/dist/utils/updateDiffHunks.js +22 -3
  601. package/dist/utils/updateDiffHunks.js.map +1 -1
  602. package/dist/utils/virtualDiffLayout.d.ts.map +1 -1
  603. package/dist/utils/virtualDiffLayout.js +1 -2
  604. package/dist/utils/virtualDiffLayout.js.map +1 -1
  605. package/dist/utils/wrapTokenFragments.d.ts +1 -1
  606. package/dist/utils/wrapTokenFragments.d.ts.map +1 -1
  607. package/dist/utils/wrapTokenFragments.js +1 -2
  608. package/dist/utils/wrapTokenFragments.js.map +1 -1
  609. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  610. package/dist/worker/WorkerPoolManager.js +5 -5
  611. package/dist/worker/WorkerPoolManager.js.map +1 -1
  612. package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
  613. package/dist/worker/getOrCreateWorkerPoolSingleton.js +1 -2
  614. package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -1
  615. package/dist/worker/index.js +1 -2
  616. package/dist/worker/types.d.ts.map +1 -1
  617. package/dist/worker/wasm-B9ZqxnKj.js +8 -0
  618. package/dist/worker/wasm-B9ZqxnKj.js.map +1 -0
  619. package/dist/worker/worker-portable.js +2989 -6577
  620. package/dist/worker/worker-portable.js.map +1 -1
  621. package/dist/worker/worker.js +97 -127
  622. package/dist/worker/worker.js.map +1 -1
  623. package/package.json +14 -21
  624. package/dist/worker/wasm-BaDzIkIn.js +0 -10
  625. package/dist/worker/wasm-BaDzIkIn.js.map +0 -1
@@ -1,6 +1,4 @@
1
- 'use client';
2
-
3
-
1
+ "use client";
4
2
  import { areOptionsEqual } from "../utils/areOptionsEqual.js";
5
3
  import { CodeView as CodeView$1 } from "../components/CodeView.js";
6
4
  import { areManagedSnapshotsEqual } from "../utils/areManagedSnapshotsEqual.js";
@@ -11,7 +9,6 @@ import { WorkerPoolContext } from "./WorkerPoolContext.js";
11
9
  import { forwardRef, memo, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
12
10
  import { createPortal, flushSync } from "react-dom";
13
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
-
15
12
  //#region src/react/CodeView.tsx
16
13
  const useIsometricEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
17
14
  function createDefaultCache(controlled) {
@@ -25,14 +22,14 @@ function createDefaultCache(controlled) {
25
22
  };
26
23
  }
27
24
  function CodeViewInner(props, ref) {
28
- const { className, containerRef, disableWorkerPool = false, initialItems, items: controlledItems, onScroll, onSelectedLinesChange, options, renderAnnotation, renderCustomHeader, renderGutterUtility, renderHeaderMetadata, renderHeaderPrefix, selectedLines, style } = props;
25
+ const { className, containerRef, disableWorkerPool = false, initialItems, items: controlledItems, onScroll, onSelectedLinesChange, options, renderAnnotation, renderCustomHeader, renderGutterUtility, renderHeaderFilenameSuffix, renderHeaderMetadata, renderHeaderPrefix, selectedLines, style } = props;
29
26
  const controlled = controlledItems !== void 0;
30
27
  const poolManager = useContext(WorkerPoolContext);
31
28
  const cachedDataRef = useRef(createDefaultCache(controlled));
32
29
  const hasCustomHeader = renderCustomHeader != null;
33
30
  const hasAnnotationRenderer = renderAnnotation != null;
34
31
  const hasGutterRenderer = renderGutterUtility != null;
35
- const hasHeaderRenderers = hasCustomHeader || renderHeaderPrefix != null || renderHeaderMetadata != null;
32
+ const hasHeaderRenderers = hasCustomHeader || renderHeaderPrefix != null || renderHeaderFilenameSuffix != null || renderHeaderMetadata != null;
36
33
  const hasRenderers = hasHeaderRenderers || hasAnnotationRenderer || hasGutterRenderer;
37
34
  const emitSelectedLinesChange = useStableCallback((selection) => {
38
35
  onSelectedLinesChange?.(selection);
@@ -139,8 +136,8 @@ function CodeViewInner(props, ref) {
139
136
  });
140
137
  useImperativeHandle(ref, () => ({
141
138
  addItems(items) {
142
- const { controlled: controlled$1, instance } = cachedDataRef.current;
143
- assertUncontrolledCodeViewAction(controlled$1, "addItems");
139
+ const { controlled, instance } = cachedDataRef.current;
140
+ assertUncontrolledCodeViewAction(controlled, "addItems");
144
141
  if (instance == null) console.error("CodeView.addItems: no valid instance to append items with", items);
145
142
  else instance.addItems(items);
146
143
  },
@@ -152,8 +149,8 @@ function CodeViewInner(props, ref) {
152
149
  } else return instance.getItem(id);
153
150
  },
154
151
  updateItem(item) {
155
- const { controlled: controlled$1, instance } = cachedDataRef.current;
156
- assertUncontrolledCodeViewAction(controlled$1, "updateItem");
152
+ const { controlled, instance } = cachedDataRef.current;
153
+ assertUncontrolledCodeViewAction(controlled, "updateItem");
157
154
  if (instance == null) {
158
155
  console.error("CodeView.updateItem: no valid instance to update item with", item);
159
156
  return false;
@@ -161,8 +158,8 @@ function CodeViewInner(props, ref) {
161
158
  return instance.updateItem(item);
162
159
  },
163
160
  updateItemId(oldId, newId) {
164
- const { controlled: controlled$1, instance } = cachedDataRef.current;
165
- assertUncontrolledCodeViewAction(controlled$1, "updateItemId");
161
+ const { controlled, instance } = cachedDataRef.current;
162
+ assertUncontrolledCodeViewAction(controlled, "updateItemId");
166
163
  if (instance == null) {
167
164
  console.error("CodeView.updateItemId: no valid instance to update item id with", oldId, newId);
168
165
  return false;
@@ -209,6 +206,7 @@ function CodeViewInner(props, ref) {
209
206
  managedContentStore: slotContentStore,
210
207
  renderCustomHeader,
211
208
  renderHeaderPrefix,
209
+ renderHeaderFilenameSuffix,
212
210
  renderHeaderMetadata,
213
211
  renderAnnotation,
214
212
  renderGutterUtility
@@ -261,7 +259,7 @@ function createManagedCodeViewOptions({ options, hasCustomHeader, hasGutterRende
261
259
  if (hasGutterRenderer) options.renderGutterUtility = noopRender;
262
260
  return options;
263
261
  }
264
- const SlotPortals = memo(function SlotPortals$1({ managedContentStore, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderAnnotation, renderGutterUtility }) {
262
+ const SlotPortals = memo(function SlotPortals({ managedContentStore, renderCustomHeader, renderHeaderPrefix, renderHeaderFilenameSuffix, renderHeaderMetadata, renderAnnotation, renderGutterUtility }) {
265
263
  const subscribe = useStableCallback((listener) => managedContentStore.subscribe(listener));
266
264
  const getSnapshot = useStableCallback(() => managedContentStore.getSnapshot());
267
265
  return useSyncExternalStore(subscribe, getSnapshot, getSnapshot)?.map((renderedItem) => {
@@ -269,19 +267,21 @@ const SlotPortals = memo(function SlotPortals$1({ managedContentStore, renderCus
269
267
  renderedItem,
270
268
  renderCustomHeader,
271
269
  renderHeaderPrefix,
270
+ renderHeaderFilenameSuffix,
272
271
  renderHeaderMetadata,
273
272
  renderAnnotation,
274
273
  renderGutterUtility
275
274
  }), renderedItem.element, renderedItem.id);
276
275
  });
277
276
  });
278
- function renderCodeViewItemChildren({ renderedItem, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderAnnotation, renderGutterUtility }) {
277
+ function renderCodeViewItemChildren({ renderedItem, renderCustomHeader, renderHeaderPrefix, renderHeaderFilenameSuffix, renderHeaderMetadata, renderAnnotation, renderGutterUtility }) {
279
278
  if (renderedItem.type === "diff") {
280
279
  const { item, instance } = renderedItem;
281
280
  return renderDiffChildren({
282
281
  fileDiff: item.fileDiff,
283
282
  renderCustomHeader: renderCustomHeader != null ? () => renderCustomHeader(item) : void 0,
284
283
  renderHeaderPrefix: renderHeaderPrefix != null ? () => renderHeaderPrefix(item) : void 0,
284
+ renderHeaderFilenameSuffix: renderHeaderFilenameSuffix != null ? () => renderHeaderFilenameSuffix(item) : void 0,
285
285
  renderHeaderMetadata: renderHeaderMetadata != null ? () => renderHeaderMetadata(item) : void 0,
286
286
  renderAnnotation: renderAnnotation != null ? (annotation) => renderAnnotation(annotation, item) : void 0,
287
287
  lineAnnotations: item.annotations,
@@ -294,6 +294,7 @@ function renderCodeViewItemChildren({ renderedItem, renderCustomHeader, renderHe
294
294
  file: item.file,
295
295
  renderCustomHeader: renderCustomHeader != null ? () => renderCustomHeader(item) : void 0,
296
296
  renderHeaderPrefix: renderHeaderPrefix != null ? () => renderHeaderPrefix(item) : void 0,
297
+ renderHeaderFilenameSuffix: renderHeaderFilenameSuffix != null ? () => renderHeaderFilenameSuffix(item) : void 0,
297
298
  renderHeaderMetadata: renderHeaderMetadata != null ? () => renderHeaderMetadata(item) : void 0,
298
299
  renderAnnotation: renderAnnotation != null ? (annotation) => renderAnnotation(annotation, item) : void 0,
299
300
  lineAnnotations: item.annotations,
@@ -303,7 +304,7 @@ function renderCodeViewItemChildren({ renderedItem, renderCustomHeader, renderHe
303
304
  }
304
305
  }
305
306
  function noopRender() {}
306
-
307
307
  //#endregion
308
308
  export { CodeView };
309
+
309
310
  //# sourceMappingURL=CodeView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeView.js","names":["CodeViewClass","slotCoordinator: CodeViewCoordinator<LAnnotation> | undefined","controlled","snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined","SlotPortals"],"sources":["../../src/react/CodeView.tsx"],"sourcesContent":["'use client';\n\nimport {\n type CSSProperties,\n forwardRef,\n memo,\n type ReactNode,\n type Ref,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport { createPortal, flushSync } from 'react-dom';\n\nimport {\n areOptionsEqual,\n CodeView as CodeViewClass,\n type CodeViewCoordinator,\n type CodeViewItem,\n type CodeViewLineSelection,\n type CodeViewOptions,\n type CodeViewRenderedItem,\n type CodeViewScrollTarget,\n type DiffLineAnnotation,\n type GetHoveredLineResult,\n type LineAnnotation,\n} from '../index';\nimport { areManagedSnapshotsEqual } from '../utils/areManagedSnapshotsEqual';\nimport { renderDiffChildren } from './utils/renderDiffChildren';\nimport { renderFileChildren } from './utils/renderFileChildren';\nimport { useStableCallback } from './utils/useStableCallback';\nimport { WorkerPoolContext } from './WorkerPoolContext';\n\nconst useIsometricEffect =\n typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\ntype CodeViewGutterUtilityGetter =\n | (() => GetHoveredLineResult<'file'> | undefined)\n | (() => GetHoveredLineResult<'diff'> | undefined);\n\ninterface CodeViewBaseProps<LAnnotation> {\n options?: CodeViewOptions<LAnnotation>;\n className?: string;\n style?: CSSProperties;\n containerRef?: Ref<HTMLDivElement>;\n disableWorkerPool?: boolean;\n selectedLines?: CodeViewLineSelection | null;\n onSelectedLinesChange?(selection: CodeViewLineSelection | null): void;\n onScroll?(scrollTop: number, viewer: CodeViewClass<LAnnotation>): void;\n renderCustomHeader?(item: CodeViewItem<LAnnotation>): ReactNode;\n renderHeaderPrefix?(item: CodeViewItem<LAnnotation>): ReactNode;\n renderHeaderMetadata?(item: CodeViewItem<LAnnotation>): ReactNode;\n renderAnnotation?(\n annotation: LineAnnotation<LAnnotation> | DiffLineAnnotation<LAnnotation>,\n item: CodeViewItem<LAnnotation>\n ): ReactNode;\n renderGutterUtility?(\n getHoveredLine: CodeViewGutterUtilityGetter,\n item: CodeViewItem<LAnnotation>\n ): ReactNode;\n}\n\nexport interface ControlledCodeViewProps<\n LAnnotation,\n> extends CodeViewBaseProps<LAnnotation> {\n items: readonly CodeViewItem<LAnnotation>[];\n initialItems?: never;\n}\n\nexport interface UncontrolledCodeViewProps<\n LAnnotation,\n> extends CodeViewBaseProps<LAnnotation> {\n // Seeds the imperative CodeView instance once. Later item changes should go\n // through the ref API instead of being reconciled from React props.\n initialItems?: readonly CodeViewItem<LAnnotation>[];\n items?: never;\n}\n\nexport type CodeViewProps<LAnnotation = undefined> =\n | ControlledCodeViewProps<LAnnotation>\n | UncontrolledCodeViewProps<LAnnotation>;\n\nexport interface CodeViewHandle<LAnnotation> {\n addItems(items: readonly CodeViewItem<LAnnotation>[]): void;\n getItem(id: string): CodeViewItem<LAnnotation> | undefined;\n updateItem(item: CodeViewItem<LAnnotation>): boolean;\n updateItemId(oldId: string, newId: string): boolean;\n scrollTo(target: CodeViewScrollTarget): void;\n setSelectedLines(selection: CodeViewLineSelection | null): void;\n getSelectedLines(): CodeViewLineSelection | null;\n clearSelectedLines(): void;\n getInstance(): CodeViewClass<LAnnotation> | undefined;\n}\n\ntype CodeViewComponent = <LAnnotation = undefined>(\n props: CodeViewProps<LAnnotation> & {\n ref?: React.Ref<CodeViewHandle<LAnnotation>>;\n }\n) => React.JSX.Element;\n\ntype SlotPortalsComponent = <LAnnotation = undefined>(\n props: SlotPortalsProps<LAnnotation>\n) => React.JSX.Element;\n\ninterface ManagedContentStore<LAnnotation> {\n getSnapshot(): CodeViewRenderedItem<LAnnotation>[] | undefined;\n publish(snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined): void;\n subscribe(listener: () => void): () => void;\n}\n\ninterface CachedDataRef<LAnnotation> {\n instance: CodeViewClass<LAnnotation> | undefined;\n items: readonly CodeViewItem<LAnnotation>[] | undefined;\n controlled: boolean;\n managedOptions: CodeViewOptions<LAnnotation> | undefined;\n disableFlushSync: boolean;\n slotCoordinator: CodeViewCoordinator<LAnnotation> | undefined;\n}\n\nfunction createDefaultCache<LAnnotation>(\n controlled: boolean\n): CachedDataRef<LAnnotation> {\n return {\n instance: undefined,\n items: undefined,\n controlled,\n managedOptions: undefined,\n disableFlushSync: false,\n slotCoordinator: undefined,\n };\n}\n\nfunction CodeViewInner<LAnnotation = undefined>(\n props: CodeViewProps<LAnnotation>,\n ref: React.ForwardedRef<CodeViewHandle<LAnnotation>>\n): React.JSX.Element {\n const {\n className,\n containerRef,\n disableWorkerPool = false,\n initialItems,\n items: controlledItems,\n onScroll,\n onSelectedLinesChange,\n options,\n renderAnnotation,\n renderCustomHeader,\n renderGutterUtility,\n renderHeaderMetadata,\n renderHeaderPrefix,\n selectedLines,\n style,\n } = props;\n const controlled = controlledItems !== undefined;\n const poolManager = useContext(WorkerPoolContext);\n const cachedDataRef = useRef<CachedDataRef<LAnnotation>>(\n createDefaultCache<LAnnotation>(controlled)\n );\n const hasCustomHeader = renderCustomHeader != null;\n const hasAnnotationRenderer = renderAnnotation != null;\n const hasGutterRenderer = renderGutterUtility != null;\n const hasHeaderRenderers =\n hasCustomHeader ||\n renderHeaderPrefix != null ||\n renderHeaderMetadata != null;\n const hasRenderers =\n hasHeaderRenderers || hasAnnotationRenderer || hasGutterRenderer;\n const emitSelectedLinesChange = useStableCallback(\n (selection: CodeViewLineSelection | null) => {\n onSelectedLinesChange?.(selection);\n }\n );\n const controlledSelection = selectedLines !== undefined;\n\n const managedOptions = useMemo(\n () =>\n createManagedCodeViewOptions({\n options,\n hasCustomHeader,\n hasGutterRenderer,\n onSelectedLinesChange:\n onSelectedLinesChange != null ? emitSelectedLinesChange : undefined,\n controlledSelection,\n }),\n [\n options,\n hasCustomHeader,\n hasGutterRenderer,\n onSelectedLinesChange,\n emitSelectedLinesChange,\n controlledSelection,\n ]\n );\n\n const [slotContentStore] = useState<ManagedContentStore<LAnnotation>>(() =>\n createSlotContentStore()\n );\n const [, forceUpdate] = useState<unknown>({});\n\n const nodeRef = useStableCallback((node: HTMLDivElement | null) => {\n // If we have a pre-existing instance and there's no node or the node being\n // passed in is NOT the same as before, then we need to clean up and\n // garbage collect the old instance\n if (\n cachedDataRef.current.instance != null &&\n (node == null ||\n node !== cachedDataRef.current.instance.getContainerElement())\n ) {\n cachedDataRef.current.instance.cleanUp();\n slotContentStore.publish(undefined);\n cachedDataRef.current = createDefaultCache<LAnnotation>(controlled);\n }\n\n // If our node matches the existing node then we should not attempt to\n // setup. This is a case that should never be possible to hit, but just in\n // case, lets make sure we don't re-setup an instance that is already setup\n // properly\n if (\n node != null &&\n node !== cachedDataRef.current.instance?.getContainerElement()\n ) {\n cachedDataRef.current.instance = new CodeViewClass<LAnnotation>(\n managedOptions,\n !disableWorkerPool ? poolManager : undefined,\n true\n );\n cachedDataRef.current.instance.setup(node);\n }\n\n if (typeof containerRef === 'function') {\n containerRef(node);\n } else if (containerRef != null) {\n containerRef.current = node;\n }\n });\n\n const onSnapshotChange = useStableCallback(\n (snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined) => {\n if (cachedDataRef.current.disableFlushSync) {\n slotContentStore.publish(snapshot);\n } else {\n flushSync(() => {\n slotContentStore.publish(snapshot);\n });\n }\n }\n );\n\n const slotCoordinator: CodeViewCoordinator<LAnnotation> | undefined =\n useMemo(() => {\n if (!hasHeaderRenderers && !hasAnnotationRenderer && !hasGutterRenderer) {\n return undefined;\n } else {\n return {\n hasHeaderRenderers,\n hasAnnotationRenderer,\n hasGutterRenderer,\n onSnapshotChange,\n };\n }\n }, [\n onSnapshotChange,\n hasAnnotationRenderer,\n hasGutterRenderer,\n hasHeaderRenderers,\n ]);\n\n useIsometricEffect(() => {\n return onScroll != null\n ? cachedDataRef.current.instance?.subscribeToScroll(onScroll)\n : undefined;\n });\n\n useIsometricEffect(() => {\n const {\n instance,\n controlled: prevControlled,\n items: prevItems,\n managedOptions: prevManagedOptions,\n slotCoordinator: prevSlotCoordinator,\n } = cachedDataRef.current;\n if (instance == null) {\n return;\n }\n\n try {\n cachedDataRef.current.disableFlushSync = true;\n let shouldRender = false;\n\n if (!areOptionsEqual(managedOptions, prevManagedOptions)) {\n cachedDataRef.current.managedOptions = managedOptions;\n instance.setOptions(managedOptions);\n shouldRender = true;\n }\n\n if (prevControlled !== controlled) {\n console.error(\n 'CodeView: cannot switch between controlled and uncontrolled modes. Remount with a new key instead.'\n );\n return;\n }\n\n if (controlled) {\n if (controlledItems !== prevItems) {\n if (areItemListsEqual(prevItems, controlledItems)) {\n cachedDataRef.current.items = controlledItems;\n } else if (isAppendOnlyItemUpdate(prevItems, controlledItems)) {\n cachedDataRef.current.items = controlledItems;\n instance.addItems(controlledItems.slice(prevItems.length));\n } else {\n cachedDataRef.current.items = controlledItems;\n instance.setItems(controlledItems);\n shouldRender = true;\n }\n }\n }\n // If uncontrolled, we should only ever set items once, and just depend\n // on imperative instance changes going forward\n else if (prevItems == null) {\n const seedItems = initialItems ?? [];\n cachedDataRef.current.items = seedItems;\n if (seedItems.length > 0) {\n instance.setItems(seedItems);\n shouldRender = true;\n }\n }\n\n if (selectedLines !== undefined) {\n instance.setSelectedLines(selectedLines, { notify: false });\n }\n\n const slotPublish = instance.setSlotCoordinator(slotCoordinator);\n let forceInlinePublish = false;\n if (slotCoordinator !== prevSlotCoordinator) {\n if (slotCoordinator == null || prevSlotCoordinator == null) {\n forceInlinePublish = true;\n }\n cachedDataRef.current.slotCoordinator = slotCoordinator;\n }\n\n if (shouldRender || slotPublish) {\n instance.render(true);\n }\n\n // FIXME(amadeus): This feels kinda bad and flakey with regards to how\n // other things are working... it makes me think that we should\n // re-architect the slotCoordinator a bit, and maybe DON'T make it an\n // undefineable thing...\n if (slotPublish && slotCoordinator == null) {\n slotContentStore.publish(undefined);\n }\n\n if (forceInlinePublish) {\n forceUpdate({});\n }\n } finally {\n cachedDataRef.current.disableFlushSync = false;\n }\n });\n\n // Setup the ref handler\n useImperativeHandle(\n ref,\n (): CodeViewHandle<LAnnotation> => ({\n addItems(items) {\n const { controlled, instance } = cachedDataRef.current;\n assertUncontrolledCodeViewAction(controlled, 'addItems');\n if (instance == null) {\n console.error(\n 'CodeView.addItems: no valid instance to append items with',\n items\n );\n } else {\n instance.addItems(items);\n }\n },\n getItem(id) {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error('CodeView.getItem: no valid instance exists', id);\n return undefined;\n } else {\n return instance.getItem(id);\n }\n },\n updateItem(item) {\n const { controlled, instance } = cachedDataRef.current;\n assertUncontrolledCodeViewAction(controlled, 'updateItem');\n if (instance == null) {\n console.error(\n 'CodeView.updateItem: no valid instance to update item with',\n item\n );\n return false;\n }\n\n return instance.updateItem(item);\n },\n updateItemId(oldId, newId) {\n const { controlled, instance } = cachedDataRef.current;\n assertUncontrolledCodeViewAction(controlled, 'updateItemId');\n if (instance == null) {\n console.error(\n 'CodeView.updateItemId: no valid instance to update item id with',\n oldId,\n newId\n );\n return false;\n }\n\n return instance.updateItemId(oldId, newId);\n },\n scrollTo(target) {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error(\n 'CodeView.scrollTo: no valid instance to scroll with',\n target\n );\n } else {\n instance.scrollTo(target);\n }\n },\n setSelectedLines(selection) {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error(\n 'CodeView.setSelectedLines: no valid instance to update selection with',\n selection\n );\n } else {\n instance.setSelectedLines(selection, { notify: false });\n emitSelectedLinesChange(selection);\n }\n },\n getSelectedLines() {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error('CodeView.getSelectedLines: no valid instance exists');\n return null;\n } else {\n return instance.getSelectedLines();\n }\n },\n clearSelectedLines() {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error(\n 'CodeView.clearSelectedLines: no valid instance to update selection with'\n );\n } else {\n instance.clearSelectedLines({ notify: false });\n emitSelectedLinesChange(null);\n }\n },\n getInstance() {\n return cachedDataRef.current.instance;\n },\n }),\n [emitSelectedLinesChange]\n );\n\n return (\n <>\n <div ref={nodeRef} className={className} style={style} />\n {hasRenderers && (\n <SlotPortals<LAnnotation>\n managedContentStore={slotContentStore}\n renderCustomHeader={renderCustomHeader}\n renderHeaderPrefix={renderHeaderPrefix}\n renderHeaderMetadata={renderHeaderMetadata}\n renderAnnotation={renderAnnotation}\n renderGutterUtility={renderGutterUtility}\n />\n )}\n </>\n );\n}\n\n// React was a mistake\nexport const CodeView = forwardRef(CodeViewInner) as CodeViewComponent;\n\nfunction isAppendOnlyItemUpdate<LAnnotation>(\n previousItems: readonly CodeViewItem<LAnnotation>[] | undefined,\n nextItems: readonly CodeViewItem<LAnnotation>[]\n): previousItems is readonly CodeViewItem<LAnnotation>[] {\n if (previousItems == null || nextItems.length <= previousItems.length) {\n return false;\n }\n\n if (previousItems.length === 0) {\n return true;\n }\n\n for (let index = 0; index < previousItems.length; index++) {\n if (nextItems[index] !== previousItems[index]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areItemListsEqual<LAnnotation>(\n previousItems: readonly CodeViewItem<LAnnotation>[] | undefined,\n nextItems: readonly CodeViewItem<LAnnotation>[]\n): boolean {\n if (previousItems == null || previousItems.length !== nextItems.length) {\n return false;\n }\n\n for (let index = 0; index < previousItems.length; index++) {\n if (previousItems[index] !== nextItems[index]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction assertUncontrolledCodeViewAction(\n controlled: boolean,\n action: string\n): void {\n if (!controlled) {\n return;\n }\n\n throw new Error(\n `CodeView.${action} cannot be used when CodeView is controlled. Use initialItems for imperative item updates.`\n );\n}\n\nfunction createSlotContentStore<\n LAnnotation,\n>(): ManagedContentStore<LAnnotation> {\n let snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined;\n const listeners = new Set<() => void>();\n\n return {\n getSnapshot() {\n return snapshot;\n },\n publish(nextSnapshot) {\n if (areManagedSnapshotsEqual(snapshot, nextSnapshot)) {\n return;\n }\n\n snapshot = nextSnapshot;\n for (const listener of listeners) {\n listener();\n }\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n\ninterface CreateManagedCodeViewOptionsProps<LAnnotation> {\n options: CodeViewOptions<LAnnotation> | undefined;\n hasCustomHeader: boolean;\n hasGutterRenderer: boolean;\n onSelectedLinesChange?(selection: CodeViewLineSelection | null): void;\n controlledSelection: boolean;\n}\n\nfunction createManagedCodeViewOptions<LAnnotation>({\n options,\n hasCustomHeader,\n hasGutterRenderer,\n onSelectedLinesChange,\n controlledSelection,\n}: CreateManagedCodeViewOptionsProps<LAnnotation>):\n | CodeViewOptions<LAnnotation>\n | undefined {\n if (\n !hasCustomHeader &&\n !hasGutterRenderer &&\n onSelectedLinesChange == null &&\n !controlledSelection\n ) {\n return options;\n }\n options = { ...options, controlledSelection, onSelectedLinesChange };\n\n // The imperative CodeView adapters use this callback's presence to\n // switch file and diff headers into custom-slot mode. React portals\n // provide the actual header content, so this placeholder\n // intentionally returns nothing.\n if (hasCustomHeader) {\n options.renderCustomHeader = noopRender;\n }\n\n // The imperative CodeView adapters use this callback's presence to\n // create the custom gutter utility slot. React portals provide the\n // actual content, so this placeholder intentionally returns nothing.\n if (hasGutterRenderer) {\n options.renderGutterUtility = noopRender;\n }\n\n return options;\n}\n\ninterface RenderCodeViewItemChildrenProps<LAnnotation> {\n renderedItem: CodeViewRenderedItem<LAnnotation>;\n renderCustomHeader: CodeViewBaseProps<LAnnotation>['renderCustomHeader'];\n renderHeaderPrefix: CodeViewBaseProps<LAnnotation>['renderHeaderPrefix'];\n renderHeaderMetadata: CodeViewBaseProps<LAnnotation>['renderHeaderMetadata'];\n renderAnnotation: CodeViewBaseProps<LAnnotation>['renderAnnotation'];\n renderGutterUtility: CodeViewBaseProps<LAnnotation>['renderGutterUtility'];\n}\n\ninterface SlotPortalsProps<LAnnotation> {\n managedContentStore: ManagedContentStore<LAnnotation>;\n renderCustomHeader: CodeViewBaseProps<LAnnotation>['renderCustomHeader'];\n renderHeaderPrefix: CodeViewBaseProps<LAnnotation>['renderHeaderPrefix'];\n renderHeaderMetadata: CodeViewBaseProps<LAnnotation>['renderHeaderMetadata'];\n renderAnnotation: CodeViewBaseProps<LAnnotation>['renderAnnotation'];\n renderGutterUtility: CodeViewBaseProps<LAnnotation>['renderGutterUtility'];\n}\n\nconst SlotPortals = memo(function SlotPortals<LAnnotation>({\n managedContentStore,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderAnnotation,\n renderGutterUtility,\n}: SlotPortalsProps<LAnnotation>) {\n const subscribe = useStableCallback((listener: () => void) =>\n managedContentStore.subscribe(listener)\n );\n const getSnapshot = useStableCallback(() =>\n managedContentStore.getSnapshot()\n );\n const renderedItems = useSyncExternalStore<\n CodeViewRenderedItem<LAnnotation>[] | undefined\n >(subscribe, getSnapshot, getSnapshot);\n return renderedItems?.map((renderedItem) => {\n return createPortal(\n renderCodeViewItemChildren({\n renderedItem,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderAnnotation,\n renderGutterUtility,\n }),\n renderedItem.element,\n renderedItem.id\n );\n });\n}) as SlotPortalsComponent;\n\nfunction renderCodeViewItemChildren<LAnnotation>({\n renderedItem,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderAnnotation,\n renderGutterUtility,\n}: RenderCodeViewItemChildrenProps<LAnnotation>): ReactNode {\n if (renderedItem.type === 'diff') {\n const { item, instance } = renderedItem;\n return renderDiffChildren({\n fileDiff: item.fileDiff,\n renderCustomHeader:\n renderCustomHeader != null ? () => renderCustomHeader(item) : undefined,\n renderHeaderPrefix:\n renderHeaderPrefix != null ? () => renderHeaderPrefix(item) : undefined,\n renderHeaderMetadata:\n renderHeaderMetadata != null\n ? () => renderHeaderMetadata(item)\n : undefined,\n renderAnnotation:\n renderAnnotation != null\n ? (annotation) => renderAnnotation(annotation, item)\n : undefined,\n lineAnnotations: item.annotations,\n renderGutterUtility:\n renderGutterUtility != null\n ? (getHoveredLine) => renderGutterUtility(getHoveredLine, item)\n : undefined,\n getHoveredLine: instance.getHoveredLine,\n });\n } else {\n const { item, instance } = renderedItem;\n return renderFileChildren({\n file: item.file,\n renderCustomHeader:\n renderCustomHeader != null ? () => renderCustomHeader(item) : undefined,\n renderHeaderPrefix:\n renderHeaderPrefix != null ? () => renderHeaderPrefix(item) : undefined,\n renderHeaderMetadata:\n renderHeaderMetadata != null\n ? () => renderHeaderMetadata(item)\n : undefined,\n renderAnnotation:\n renderAnnotation != null\n ? (annotation) => renderAnnotation(annotation, item)\n : undefined,\n lineAnnotations: item.annotations,\n renderGutterUtility:\n renderGutterUtility != null\n ? (getHoveredLine) => renderGutterUtility(getHoveredLine, item)\n : undefined,\n getHoveredLine: instance.getHoveredLine,\n });\n }\n}\n\nfunction noopRender() {\n return undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAsCA,MAAM,qBACJ,OAAO,WAAW,cAAc,YAAY;AAqF9C,SAAS,mBACP,YAC4B;AAC5B,QAAO;EACL,UAAU;EACV,OAAO;EACP;EACA,gBAAgB;EAChB,kBAAkB;EAClB,iBAAiB;EAClB;;AAGH,SAAS,cACP,OACA,KACmB;CACnB,MAAM,EACJ,WACA,cACA,oBAAoB,OACpB,cACA,OAAO,iBACP,UACA,uBACA,SACA,kBACA,oBACA,qBACA,sBACA,oBACA,eACA,UACE;CACJ,MAAM,aAAa,oBAAoB;CACvC,MAAM,cAAc,WAAW,kBAAkB;CACjD,MAAM,gBAAgB,OACpB,mBAAgC,WAAW,CAC5C;CACD,MAAM,kBAAkB,sBAAsB;CAC9C,MAAM,wBAAwB,oBAAoB;CAClD,MAAM,oBAAoB,uBAAuB;CACjD,MAAM,qBACJ,mBACA,sBAAsB,QACtB,wBAAwB;CAC1B,MAAM,eACJ,sBAAsB,yBAAyB;CACjD,MAAM,0BAA0B,mBAC7B,cAA4C;AAC3C,0BAAwB,UAAU;GAErC;CACD,MAAM,sBAAsB,kBAAkB;CAE9C,MAAM,iBAAiB,cAEnB,6BAA6B;EAC3B;EACA;EACA;EACA,uBACE,yBAAyB,OAAO,0BAA0B;EAC5D;EACD,CAAC,EACJ;EACE;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,CAAC,oBAAoB,eACzB,wBAAwB,CACzB;CACD,MAAM,GAAG,eAAe,SAAkB,EAAE,CAAC;CAE7C,MAAM,UAAU,mBAAmB,SAAgC;AAIjE,MACE,cAAc,QAAQ,YAAY,SACjC,QAAQ,QACP,SAAS,cAAc,QAAQ,SAAS,qBAAqB,GAC/D;AACA,iBAAc,QAAQ,SAAS,SAAS;AACxC,oBAAiB,QAAQ,OAAU;AACnC,iBAAc,UAAU,mBAAgC,WAAW;;AAOrE,MACE,QAAQ,QACR,SAAS,cAAc,QAAQ,UAAU,qBAAqB,EAC9D;AACA,iBAAc,QAAQ,WAAW,IAAIA,WACnC,gBACA,CAAC,oBAAoB,cAAc,QACnC,KACD;AACD,iBAAc,QAAQ,SAAS,MAAM,KAAK;;AAG5C,MAAI,OAAO,iBAAiB,WAC1B,cAAa,KAAK;WACT,gBAAgB,KACzB,cAAa,UAAU;GAEzB;CAEF,MAAM,mBAAmB,mBACtB,aAA8D;AAC7D,MAAI,cAAc,QAAQ,iBACxB,kBAAiB,QAAQ,SAAS;MAElC,iBAAgB;AACd,oBAAiB,QAAQ,SAAS;IAClC;GAGP;CAED,MAAMC,kBACJ,cAAc;AACZ,MAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,kBACpD;MAEA,QAAO;GACL;GACA;GACA;GACA;GACD;IAEF;EACD;EACA;EACA;EACA;EACD,CAAC;AAEJ,0BAAyB;AACvB,SAAO,YAAY,OACf,cAAc,QAAQ,UAAU,kBAAkB,SAAS,GAC3D;GACJ;AAEF,0BAAyB;EACvB,MAAM,EACJ,UACA,YAAY,gBACZ,OAAO,WACP,gBAAgB,oBAChB,iBAAiB,wBACf,cAAc;AAClB,MAAI,YAAY,KACd;AAGF,MAAI;AACF,iBAAc,QAAQ,mBAAmB;GACzC,IAAI,eAAe;AAEnB,OAAI,CAAC,gBAAgB,gBAAgB,mBAAmB,EAAE;AACxD,kBAAc,QAAQ,iBAAiB;AACvC,aAAS,WAAW,eAAe;AACnC,mBAAe;;AAGjB,OAAI,mBAAmB,YAAY;AACjC,YAAQ,MACN,qGACD;AACD;;AAGF,OAAI,YACF;QAAI,oBAAoB,UACtB,KAAI,kBAAkB,WAAW,gBAAgB,CAC/C,eAAc,QAAQ,QAAQ;aACrB,uBAAuB,WAAW,gBAAgB,EAAE;AAC7D,mBAAc,QAAQ,QAAQ;AAC9B,cAAS,SAAS,gBAAgB,MAAM,UAAU,OAAO,CAAC;WACrD;AACL,mBAAc,QAAQ,QAAQ;AAC9B,cAAS,SAAS,gBAAgB;AAClC,oBAAe;;cAMZ,aAAa,MAAM;IAC1B,MAAM,YAAY,gBAAgB,EAAE;AACpC,kBAAc,QAAQ,QAAQ;AAC9B,QAAI,UAAU,SAAS,GAAG;AACxB,cAAS,SAAS,UAAU;AAC5B,oBAAe;;;AAInB,OAAI,kBAAkB,OACpB,UAAS,iBAAiB,eAAe,EAAE,QAAQ,OAAO,CAAC;GAG7D,MAAM,cAAc,SAAS,mBAAmB,gBAAgB;GAChE,IAAI,qBAAqB;AACzB,OAAI,oBAAoB,qBAAqB;AAC3C,QAAI,mBAAmB,QAAQ,uBAAuB,KACpD,sBAAqB;AAEvB,kBAAc,QAAQ,kBAAkB;;AAG1C,OAAI,gBAAgB,YAClB,UAAS,OAAO,KAAK;AAOvB,OAAI,eAAe,mBAAmB,KACpC,kBAAiB,QAAQ,OAAU;AAGrC,OAAI,mBACF,aAAY,EAAE,CAAC;YAET;AACR,iBAAc,QAAQ,mBAAmB;;GAE3C;AAGF,qBACE,YACoC;EAClC,SAAS,OAAO;GACd,MAAM,EAAE,0BAAY,aAAa,cAAc;AAC/C,oCAAiCC,cAAY,WAAW;AACxD,OAAI,YAAY,KACd,SAAQ,MACN,6DACA,MACD;OAED,UAAS,SAAS,MAAM;;EAG5B,QAAQ,IAAI;GACV,MAAM,EAAE,aAAa,cAAc;AACnC,OAAI,YAAY,MAAM;AACpB,YAAQ,MAAM,8CAA8C,GAAG;AAC/D;SAEA,QAAO,SAAS,QAAQ,GAAG;;EAG/B,WAAW,MAAM;GACf,MAAM,EAAE,0BAAY,aAAa,cAAc;AAC/C,oCAAiCA,cAAY,aAAa;AAC1D,OAAI,YAAY,MAAM;AACpB,YAAQ,MACN,8DACA,KACD;AACD,WAAO;;AAGT,UAAO,SAAS,WAAW,KAAK;;EAElC,aAAa,OAAO,OAAO;GACzB,MAAM,EAAE,0BAAY,aAAa,cAAc;AAC/C,oCAAiCA,cAAY,eAAe;AAC5D,OAAI,YAAY,MAAM;AACpB,YAAQ,MACN,mEACA,OACA,MACD;AACD,WAAO;;AAGT,UAAO,SAAS,aAAa,OAAO,MAAM;;EAE5C,SAAS,QAAQ;GACf,MAAM,EAAE,aAAa,cAAc;AACnC,OAAI,YAAY,KACd,SAAQ,MACN,uDACA,OACD;OAED,UAAS,SAAS,OAAO;;EAG7B,iBAAiB,WAAW;GAC1B,MAAM,EAAE,aAAa,cAAc;AACnC,OAAI,YAAY,KACd,SAAQ,MACN,yEACA,UACD;QACI;AACL,aAAS,iBAAiB,WAAW,EAAE,QAAQ,OAAO,CAAC;AACvD,4BAAwB,UAAU;;;EAGtC,mBAAmB;GACjB,MAAM,EAAE,aAAa,cAAc;AACnC,OAAI,YAAY,MAAM;AACpB,YAAQ,MAAM,sDAAsD;AACpE,WAAO;SAEP,QAAO,SAAS,kBAAkB;;EAGtC,qBAAqB;GACnB,MAAM,EAAE,aAAa,cAAc;AACnC,OAAI,YAAY,KACd,SAAQ,MACN,0EACD;QACI;AACL,aAAS,mBAAmB,EAAE,QAAQ,OAAO,CAAC;AAC9C,4BAAwB,KAAK;;;EAGjC,cAAc;AACZ,UAAO,cAAc,QAAQ;;EAEhC,GACD,CAAC,wBAAwB,CAC1B;AAED,QACE,4CACE,oBAAC;EAAI,KAAK;EAAoB;EAAkB;GAAS,EACxD,gBACC,oBAAC;EACC,qBAAqB;EACD;EACA;EACE;EACJ;EACG;GACrB,IAEH;;AAKP,MAAa,WAAW,WAAW,cAAc;AAEjD,SAAS,uBACP,eACA,WACuD;AACvD,KAAI,iBAAiB,QAAQ,UAAU,UAAU,cAAc,OAC7D,QAAO;AAGT,KAAI,cAAc,WAAW,EAC3B,QAAO;AAGT,MAAK,IAAI,QAAQ,GAAG,QAAQ,cAAc,QAAQ,QAChD,KAAI,UAAU,WAAW,cAAc,OACrC,QAAO;AAIX,QAAO;;AAGT,SAAS,kBACP,eACA,WACS;AACT,KAAI,iBAAiB,QAAQ,cAAc,WAAW,UAAU,OAC9D,QAAO;AAGT,MAAK,IAAI,QAAQ,GAAG,QAAQ,cAAc,QAAQ,QAChD,KAAI,cAAc,WAAW,UAAU,OACrC,QAAO;AAIX,QAAO;;AAGT,SAAS,iCACP,YACA,QACM;AACN,KAAI,CAAC,WACH;AAGF,OAAM,IAAI,MACR,YAAY,OAAO,4FACpB;;AAGH,SAAS,yBAE6B;CACpC,IAAIC;CACJ,MAAM,4BAAY,IAAI,KAAiB;AAEvC,QAAO;EACL,cAAc;AACZ,UAAO;;EAET,QAAQ,cAAc;AACpB,OAAI,yBAAyB,UAAU,aAAa,CAClD;AAGF,cAAW;AACX,QAAK,MAAM,YAAY,UACrB,WAAU;;EAGd,UAAU,UAAU;AAClB,aAAU,IAAI,SAAS;AACvB,gBAAa;AACX,cAAU,OAAO,SAAS;;;EAG/B;;AAWH,SAAS,6BAA0C,EACjD,SACA,iBACA,mBACA,uBACA,uBAGY;AACZ,KACE,CAAC,mBACD,CAAC,qBACD,yBAAyB,QACzB,CAAC,oBAED,QAAO;AAET,WAAU;EAAE,GAAG;EAAS;EAAqB;EAAuB;AAMpE,KAAI,gBACF,SAAQ,qBAAqB;AAM/B,KAAI,kBACF,SAAQ,sBAAsB;AAGhC,QAAO;;AAqBT,MAAM,cAAc,KAAK,SAASC,cAAyB,EACzD,qBACA,oBACA,oBACA,sBACA,kBACA,uBACgC;CAChC,MAAM,YAAY,mBAAmB,aACnC,oBAAoB,UAAU,SAAS,CACxC;CACD,MAAM,cAAc,wBAClB,oBAAoB,aAAa,CAClC;AAID,QAHsB,qBAEpB,WAAW,aAAa,YAAY,EAChB,KAAK,iBAAiB;AAC1C,SAAO,aACL,2BAA2B;GACzB;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,EACF,aAAa,SACb,aAAa,GACd;GACD;EACF;AAEF,SAAS,2BAAwC,EAC/C,cACA,oBACA,oBACA,sBACA,kBACA,uBAC0D;AAC1D,KAAI,aAAa,SAAS,QAAQ;EAChC,MAAM,EAAE,MAAM,aAAa;AAC3B,SAAO,mBAAmB;GACxB,UAAU,KAAK;GACf,oBACE,sBAAsB,aAAa,mBAAmB,KAAK,GAAG;GAChE,oBACE,sBAAsB,aAAa,mBAAmB,KAAK,GAAG;GAChE,sBACE,wBAAwB,aACd,qBAAqB,KAAK,GAChC;GACN,kBACE,oBAAoB,QACf,eAAe,iBAAiB,YAAY,KAAK,GAClD;GACN,iBAAiB,KAAK;GACtB,qBACE,uBAAuB,QAClB,mBAAmB,oBAAoB,gBAAgB,KAAK,GAC7D;GACN,gBAAgB,SAAS;GAC1B,CAAC;QACG;EACL,MAAM,EAAE,MAAM,aAAa;AAC3B,SAAO,mBAAmB;GACxB,MAAM,KAAK;GACX,oBACE,sBAAsB,aAAa,mBAAmB,KAAK,GAAG;GAChE,oBACE,sBAAsB,aAAa,mBAAmB,KAAK,GAAG;GAChE,sBACE,wBAAwB,aACd,qBAAqB,KAAK,GAChC;GACN,kBACE,oBAAoB,QACf,eAAe,iBAAiB,YAAY,KAAK,GAClD;GACN,iBAAiB,KAAK;GACtB,qBACE,uBAAuB,QAClB,mBAAmB,oBAAoB,gBAAgB,KAAK,GAC7D;GACN,gBAAgB,SAAS;GAC1B,CAAC;;;AAIN,SAAS,aAAa"}
1
+ {"version":3,"file":"CodeView.js","names":["CodeViewClass"],"sources":["../../src/react/CodeView.tsx"],"sourcesContent":["'use client';\n\nimport {\n type CSSProperties,\n forwardRef,\n memo,\n type ReactNode,\n type Ref,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport { createPortal, flushSync } from 'react-dom';\n\nimport {\n areOptionsEqual,\n CodeView as CodeViewClass,\n type CodeViewCoordinator,\n type CodeViewItem,\n type CodeViewLineSelection,\n type CodeViewOptions,\n type CodeViewRenderedItem,\n type CodeViewScrollTarget,\n type DiffLineAnnotation,\n type GetHoveredLineResult,\n type LineAnnotation,\n} from '../index';\nimport { areManagedSnapshotsEqual } from '../utils/areManagedSnapshotsEqual';\nimport { renderDiffChildren } from './utils/renderDiffChildren';\nimport { renderFileChildren } from './utils/renderFileChildren';\nimport { useStableCallback } from './utils/useStableCallback';\nimport { WorkerPoolContext } from './WorkerPoolContext';\n\nconst useIsometricEffect =\n typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\ntype CodeViewGutterUtilityGetter =\n | (() => GetHoveredLineResult<'file'> | undefined)\n | (() => GetHoveredLineResult<'diff'> | undefined);\n\ninterface CodeViewBaseProps<LAnnotation> {\n options?: CodeViewOptions<LAnnotation>;\n className?: string;\n style?: CSSProperties;\n containerRef?: Ref<HTMLDivElement>;\n disableWorkerPool?: boolean;\n selectedLines?: CodeViewLineSelection | null;\n onSelectedLinesChange?(selection: CodeViewLineSelection | null): void;\n onScroll?(scrollTop: number, viewer: CodeViewClass<LAnnotation>): void;\n renderCustomHeader?(item: CodeViewItem<LAnnotation>): ReactNode;\n renderHeaderPrefix?(item: CodeViewItem<LAnnotation>): ReactNode;\n renderHeaderFilenameSuffix?(item: CodeViewItem<LAnnotation>): ReactNode;\n renderHeaderMetadata?(item: CodeViewItem<LAnnotation>): ReactNode;\n renderAnnotation?(\n annotation: LineAnnotation<LAnnotation> | DiffLineAnnotation<LAnnotation>,\n item: CodeViewItem<LAnnotation>\n ): ReactNode;\n renderGutterUtility?(\n getHoveredLine: CodeViewGutterUtilityGetter,\n item: CodeViewItem<LAnnotation>\n ): ReactNode;\n}\n\nexport interface ControlledCodeViewProps<\n LAnnotation,\n> extends CodeViewBaseProps<LAnnotation> {\n items: readonly CodeViewItem<LAnnotation>[];\n initialItems?: never;\n}\n\nexport interface UncontrolledCodeViewProps<\n LAnnotation,\n> extends CodeViewBaseProps<LAnnotation> {\n // Seeds the imperative CodeView instance once. Later item changes should go\n // through the ref API instead of being reconciled from React props.\n initialItems?: readonly CodeViewItem<LAnnotation>[];\n items?: never;\n}\n\nexport type CodeViewProps<LAnnotation = undefined> =\n | ControlledCodeViewProps<LAnnotation>\n | UncontrolledCodeViewProps<LAnnotation>;\n\nexport interface CodeViewHandle<LAnnotation> {\n addItems(items: readonly CodeViewItem<LAnnotation>[]): void;\n getItem(id: string): CodeViewItem<LAnnotation> | undefined;\n updateItem(item: CodeViewItem<LAnnotation>): boolean;\n updateItemId(oldId: string, newId: string): boolean;\n scrollTo(target: CodeViewScrollTarget): void;\n setSelectedLines(selection: CodeViewLineSelection | null): void;\n getSelectedLines(): CodeViewLineSelection | null;\n clearSelectedLines(): void;\n getInstance(): CodeViewClass<LAnnotation> | undefined;\n}\n\ntype CodeViewComponent = <LAnnotation = undefined>(\n props: CodeViewProps<LAnnotation> & {\n ref?: React.Ref<CodeViewHandle<LAnnotation>>;\n }\n) => React.JSX.Element;\n\ntype SlotPortalsComponent = <LAnnotation = undefined>(\n props: SlotPortalsProps<LAnnotation>\n) => React.JSX.Element;\n\ninterface ManagedContentStore<LAnnotation> {\n getSnapshot(): CodeViewRenderedItem<LAnnotation>[] | undefined;\n publish(snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined): void;\n subscribe(listener: () => void): () => void;\n}\n\ninterface CachedDataRef<LAnnotation> {\n instance: CodeViewClass<LAnnotation> | undefined;\n items: readonly CodeViewItem<LAnnotation>[] | undefined;\n controlled: boolean;\n managedOptions: CodeViewOptions<LAnnotation> | undefined;\n disableFlushSync: boolean;\n slotCoordinator: CodeViewCoordinator<LAnnotation> | undefined;\n}\n\nfunction createDefaultCache<LAnnotation>(\n controlled: boolean\n): CachedDataRef<LAnnotation> {\n return {\n instance: undefined,\n items: undefined,\n controlled,\n managedOptions: undefined,\n disableFlushSync: false,\n slotCoordinator: undefined,\n };\n}\n\nfunction CodeViewInner<LAnnotation = undefined>(\n props: CodeViewProps<LAnnotation>,\n ref: React.ForwardedRef<CodeViewHandle<LAnnotation>>\n): React.JSX.Element {\n const {\n className,\n containerRef,\n disableWorkerPool = false,\n initialItems,\n items: controlledItems,\n onScroll,\n onSelectedLinesChange,\n options,\n renderAnnotation,\n renderCustomHeader,\n renderGutterUtility,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderHeaderPrefix,\n selectedLines,\n style,\n } = props;\n const controlled = controlledItems !== undefined;\n const poolManager = useContext(WorkerPoolContext);\n const cachedDataRef = useRef<CachedDataRef<LAnnotation>>(\n createDefaultCache<LAnnotation>(controlled)\n );\n const hasCustomHeader = renderCustomHeader != null;\n const hasAnnotationRenderer = renderAnnotation != null;\n const hasGutterRenderer = renderGutterUtility != null;\n const hasHeaderRenderers =\n hasCustomHeader ||\n renderHeaderPrefix != null ||\n renderHeaderFilenameSuffix != null ||\n renderHeaderMetadata != null;\n const hasRenderers =\n hasHeaderRenderers || hasAnnotationRenderer || hasGutterRenderer;\n const emitSelectedLinesChange = useStableCallback(\n (selection: CodeViewLineSelection | null) => {\n onSelectedLinesChange?.(selection);\n }\n );\n const controlledSelection = selectedLines !== undefined;\n\n const managedOptions = useMemo(\n () =>\n createManagedCodeViewOptions({\n options,\n hasCustomHeader,\n hasGutterRenderer,\n onSelectedLinesChange:\n onSelectedLinesChange != null ? emitSelectedLinesChange : undefined,\n controlledSelection,\n }),\n [\n options,\n hasCustomHeader,\n hasGutterRenderer,\n onSelectedLinesChange,\n emitSelectedLinesChange,\n controlledSelection,\n ]\n );\n\n const [slotContentStore] = useState<ManagedContentStore<LAnnotation>>(() =>\n createSlotContentStore()\n );\n const [, forceUpdate] = useState<unknown>({});\n\n const nodeRef = useStableCallback((node: HTMLDivElement | null) => {\n // If we have a pre-existing instance and there's no node or the node being\n // passed in is NOT the same as before, then we need to clean up and\n // garbage collect the old instance\n if (\n cachedDataRef.current.instance != null &&\n (node == null ||\n node !== cachedDataRef.current.instance.getContainerElement())\n ) {\n cachedDataRef.current.instance.cleanUp();\n slotContentStore.publish(undefined);\n cachedDataRef.current = createDefaultCache<LAnnotation>(controlled);\n }\n\n // If our node matches the existing node then we should not attempt to\n // setup. This is a case that should never be possible to hit, but just in\n // case, lets make sure we don't re-setup an instance that is already setup\n // properly\n if (\n node != null &&\n node !== cachedDataRef.current.instance?.getContainerElement()\n ) {\n cachedDataRef.current.instance = new CodeViewClass<LAnnotation>(\n managedOptions,\n !disableWorkerPool ? poolManager : undefined,\n true\n );\n cachedDataRef.current.instance.setup(node);\n }\n\n if (typeof containerRef === 'function') {\n containerRef(node);\n } else if (containerRef != null) {\n containerRef.current = node;\n }\n });\n\n const onSnapshotChange = useStableCallback(\n (snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined) => {\n if (cachedDataRef.current.disableFlushSync) {\n slotContentStore.publish(snapshot);\n } else {\n flushSync(() => {\n slotContentStore.publish(snapshot);\n });\n }\n }\n );\n\n const slotCoordinator: CodeViewCoordinator<LAnnotation> | undefined =\n useMemo(() => {\n if (!hasHeaderRenderers && !hasAnnotationRenderer && !hasGutterRenderer) {\n return undefined;\n } else {\n return {\n hasHeaderRenderers,\n hasAnnotationRenderer,\n hasGutterRenderer,\n onSnapshotChange,\n };\n }\n }, [\n onSnapshotChange,\n hasAnnotationRenderer,\n hasGutterRenderer,\n hasHeaderRenderers,\n ]);\n\n useIsometricEffect(() => {\n return onScroll != null\n ? cachedDataRef.current.instance?.subscribeToScroll(onScroll)\n : undefined;\n });\n\n useIsometricEffect(() => {\n const {\n instance,\n controlled: prevControlled,\n items: prevItems,\n managedOptions: prevManagedOptions,\n slotCoordinator: prevSlotCoordinator,\n } = cachedDataRef.current;\n if (instance == null) {\n return;\n }\n\n try {\n cachedDataRef.current.disableFlushSync = true;\n let shouldRender = false;\n\n if (!areOptionsEqual(managedOptions, prevManagedOptions)) {\n cachedDataRef.current.managedOptions = managedOptions;\n instance.setOptions(managedOptions);\n shouldRender = true;\n }\n\n if (prevControlled !== controlled) {\n console.error(\n 'CodeView: cannot switch between controlled and uncontrolled modes. Remount with a new key instead.'\n );\n return;\n }\n\n if (controlled) {\n if (controlledItems !== prevItems) {\n if (areItemListsEqual(prevItems, controlledItems)) {\n cachedDataRef.current.items = controlledItems;\n } else if (isAppendOnlyItemUpdate(prevItems, controlledItems)) {\n cachedDataRef.current.items = controlledItems;\n instance.addItems(controlledItems.slice(prevItems.length));\n } else {\n cachedDataRef.current.items = controlledItems;\n instance.setItems(controlledItems);\n shouldRender = true;\n }\n }\n }\n // If uncontrolled, we should only ever set items once, and just depend\n // on imperative instance changes going forward\n else if (prevItems == null) {\n const seedItems = initialItems ?? [];\n cachedDataRef.current.items = seedItems;\n if (seedItems.length > 0) {\n instance.setItems(seedItems);\n shouldRender = true;\n }\n }\n\n if (selectedLines !== undefined) {\n instance.setSelectedLines(selectedLines, { notify: false });\n }\n\n const slotPublish = instance.setSlotCoordinator(slotCoordinator);\n let forceInlinePublish = false;\n if (slotCoordinator !== prevSlotCoordinator) {\n if (slotCoordinator == null || prevSlotCoordinator == null) {\n forceInlinePublish = true;\n }\n cachedDataRef.current.slotCoordinator = slotCoordinator;\n }\n\n if (shouldRender || slotPublish) {\n instance.render(true);\n }\n\n // FIXME(amadeus): This feels kinda bad and flakey with regards to how\n // other things are working... it makes me think that we should\n // re-architect the slotCoordinator a bit, and maybe DON'T make it an\n // undefineable thing...\n if (slotPublish && slotCoordinator == null) {\n slotContentStore.publish(undefined);\n }\n\n if (forceInlinePublish) {\n forceUpdate({});\n }\n } finally {\n cachedDataRef.current.disableFlushSync = false;\n }\n });\n\n // Setup the ref handler\n useImperativeHandle(\n ref,\n (): CodeViewHandle<LAnnotation> => ({\n addItems(items) {\n const { controlled, instance } = cachedDataRef.current;\n assertUncontrolledCodeViewAction(controlled, 'addItems');\n if (instance == null) {\n console.error(\n 'CodeView.addItems: no valid instance to append items with',\n items\n );\n } else {\n instance.addItems(items);\n }\n },\n getItem(id) {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error('CodeView.getItem: no valid instance exists', id);\n return undefined;\n } else {\n return instance.getItem(id);\n }\n },\n updateItem(item) {\n const { controlled, instance } = cachedDataRef.current;\n assertUncontrolledCodeViewAction(controlled, 'updateItem');\n if (instance == null) {\n console.error(\n 'CodeView.updateItem: no valid instance to update item with',\n item\n );\n return false;\n }\n\n return instance.updateItem(item);\n },\n updateItemId(oldId, newId) {\n const { controlled, instance } = cachedDataRef.current;\n assertUncontrolledCodeViewAction(controlled, 'updateItemId');\n if (instance == null) {\n console.error(\n 'CodeView.updateItemId: no valid instance to update item id with',\n oldId,\n newId\n );\n return false;\n }\n\n return instance.updateItemId(oldId, newId);\n },\n scrollTo(target) {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error(\n 'CodeView.scrollTo: no valid instance to scroll with',\n target\n );\n } else {\n instance.scrollTo(target);\n }\n },\n setSelectedLines(selection) {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error(\n 'CodeView.setSelectedLines: no valid instance to update selection with',\n selection\n );\n } else {\n instance.setSelectedLines(selection, { notify: false });\n emitSelectedLinesChange(selection);\n }\n },\n getSelectedLines() {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error('CodeView.getSelectedLines: no valid instance exists');\n return null;\n } else {\n return instance.getSelectedLines();\n }\n },\n clearSelectedLines() {\n const { instance } = cachedDataRef.current;\n if (instance == null) {\n console.error(\n 'CodeView.clearSelectedLines: no valid instance to update selection with'\n );\n } else {\n instance.clearSelectedLines({ notify: false });\n emitSelectedLinesChange(null);\n }\n },\n getInstance() {\n return cachedDataRef.current.instance;\n },\n }),\n [emitSelectedLinesChange]\n );\n\n return (\n <>\n <div ref={nodeRef} className={className} style={style} />\n {hasRenderers && (\n <SlotPortals<LAnnotation>\n managedContentStore={slotContentStore}\n renderCustomHeader={renderCustomHeader}\n renderHeaderPrefix={renderHeaderPrefix}\n renderHeaderFilenameSuffix={renderHeaderFilenameSuffix}\n renderHeaderMetadata={renderHeaderMetadata}\n renderAnnotation={renderAnnotation}\n renderGutterUtility={renderGutterUtility}\n />\n )}\n </>\n );\n}\n\n// React was a mistake\nexport const CodeView = forwardRef(CodeViewInner) as CodeViewComponent;\n\nfunction isAppendOnlyItemUpdate<LAnnotation>(\n previousItems: readonly CodeViewItem<LAnnotation>[] | undefined,\n nextItems: readonly CodeViewItem<LAnnotation>[]\n): previousItems is readonly CodeViewItem<LAnnotation>[] {\n if (previousItems == null || nextItems.length <= previousItems.length) {\n return false;\n }\n\n if (previousItems.length === 0) {\n return true;\n }\n\n for (let index = 0; index < previousItems.length; index++) {\n if (nextItems[index] !== previousItems[index]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areItemListsEqual<LAnnotation>(\n previousItems: readonly CodeViewItem<LAnnotation>[] | undefined,\n nextItems: readonly CodeViewItem<LAnnotation>[]\n): boolean {\n if (previousItems == null || previousItems.length !== nextItems.length) {\n return false;\n }\n\n for (let index = 0; index < previousItems.length; index++) {\n if (previousItems[index] !== nextItems[index]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction assertUncontrolledCodeViewAction(\n controlled: boolean,\n action: string\n): void {\n if (!controlled) {\n return;\n }\n\n throw new Error(\n `CodeView.${action} cannot be used when CodeView is controlled. Use initialItems for imperative item updates.`\n );\n}\n\nfunction createSlotContentStore<\n LAnnotation,\n>(): ManagedContentStore<LAnnotation> {\n let snapshot: CodeViewRenderedItem<LAnnotation>[] | undefined;\n const listeners = new Set<() => void>();\n\n return {\n getSnapshot() {\n return snapshot;\n },\n publish(nextSnapshot) {\n if (areManagedSnapshotsEqual(snapshot, nextSnapshot)) {\n return;\n }\n\n snapshot = nextSnapshot;\n for (const listener of listeners) {\n listener();\n }\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n\ninterface CreateManagedCodeViewOptionsProps<LAnnotation> {\n options: CodeViewOptions<LAnnotation> | undefined;\n hasCustomHeader: boolean;\n hasGutterRenderer: boolean;\n onSelectedLinesChange?(selection: CodeViewLineSelection | null): void;\n controlledSelection: boolean;\n}\n\nfunction createManagedCodeViewOptions<LAnnotation>({\n options,\n hasCustomHeader,\n hasGutterRenderer,\n onSelectedLinesChange,\n controlledSelection,\n}: CreateManagedCodeViewOptionsProps<LAnnotation>):\n | CodeViewOptions<LAnnotation>\n | undefined {\n if (\n !hasCustomHeader &&\n !hasGutterRenderer &&\n onSelectedLinesChange == null &&\n !controlledSelection\n ) {\n return options;\n }\n options = { ...options, controlledSelection, onSelectedLinesChange };\n\n // The imperative CodeView adapters use this callback's presence to\n // switch file and diff headers into custom-slot mode. React portals\n // provide the actual header content, so this placeholder\n // intentionally returns nothing.\n if (hasCustomHeader) {\n options.renderCustomHeader = noopRender;\n }\n\n // The imperative CodeView adapters use this callback's presence to\n // create the custom gutter utility slot. React portals provide the\n // actual content, so this placeholder intentionally returns nothing.\n if (hasGutterRenderer) {\n options.renderGutterUtility = noopRender;\n }\n\n return options;\n}\n\ninterface RenderCodeViewItemChildrenProps<LAnnotation> {\n renderedItem: CodeViewRenderedItem<LAnnotation>;\n renderCustomHeader: CodeViewBaseProps<LAnnotation>['renderCustomHeader'];\n renderHeaderPrefix: CodeViewBaseProps<LAnnotation>['renderHeaderPrefix'];\n renderHeaderFilenameSuffix: CodeViewBaseProps<LAnnotation>['renderHeaderFilenameSuffix'];\n renderHeaderMetadata: CodeViewBaseProps<LAnnotation>['renderHeaderMetadata'];\n renderAnnotation: CodeViewBaseProps<LAnnotation>['renderAnnotation'];\n renderGutterUtility: CodeViewBaseProps<LAnnotation>['renderGutterUtility'];\n}\n\ninterface SlotPortalsProps<LAnnotation> {\n managedContentStore: ManagedContentStore<LAnnotation>;\n renderCustomHeader: CodeViewBaseProps<LAnnotation>['renderCustomHeader'];\n renderHeaderPrefix: CodeViewBaseProps<LAnnotation>['renderHeaderPrefix'];\n renderHeaderFilenameSuffix: CodeViewBaseProps<LAnnotation>['renderHeaderFilenameSuffix'];\n renderHeaderMetadata: CodeViewBaseProps<LAnnotation>['renderHeaderMetadata'];\n renderAnnotation: CodeViewBaseProps<LAnnotation>['renderAnnotation'];\n renderGutterUtility: CodeViewBaseProps<LAnnotation>['renderGutterUtility'];\n}\n\nconst SlotPortals = memo(function SlotPortals<LAnnotation>({\n managedContentStore,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderAnnotation,\n renderGutterUtility,\n}: SlotPortalsProps<LAnnotation>) {\n const subscribe = useStableCallback((listener: () => void) =>\n managedContentStore.subscribe(listener)\n );\n const getSnapshot = useStableCallback(() =>\n managedContentStore.getSnapshot()\n );\n const renderedItems = useSyncExternalStore<\n CodeViewRenderedItem<LAnnotation>[] | undefined\n >(subscribe, getSnapshot, getSnapshot);\n return renderedItems?.map((renderedItem) => {\n return createPortal(\n renderCodeViewItemChildren({\n renderedItem,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderAnnotation,\n renderGutterUtility,\n }),\n renderedItem.element,\n renderedItem.id\n );\n });\n}) as SlotPortalsComponent;\n\nfunction renderCodeViewItemChildren<LAnnotation>({\n renderedItem,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderAnnotation,\n renderGutterUtility,\n}: RenderCodeViewItemChildrenProps<LAnnotation>): ReactNode {\n if (renderedItem.type === 'diff') {\n const { item, instance } = renderedItem;\n return renderDiffChildren({\n fileDiff: item.fileDiff,\n renderCustomHeader:\n renderCustomHeader != null ? () => renderCustomHeader(item) : undefined,\n renderHeaderPrefix:\n renderHeaderPrefix != null ? () => renderHeaderPrefix(item) : undefined,\n renderHeaderFilenameSuffix:\n renderHeaderFilenameSuffix != null\n ? () => renderHeaderFilenameSuffix(item)\n : undefined,\n renderHeaderMetadata:\n renderHeaderMetadata != null\n ? () => renderHeaderMetadata(item)\n : undefined,\n renderAnnotation:\n renderAnnotation != null\n ? (annotation) => renderAnnotation(annotation, item)\n : undefined,\n lineAnnotations: item.annotations,\n renderGutterUtility:\n renderGutterUtility != null\n ? (getHoveredLine) => renderGutterUtility(getHoveredLine, item)\n : undefined,\n getHoveredLine: instance.getHoveredLine,\n });\n } else {\n const { item, instance } = renderedItem;\n return renderFileChildren({\n file: item.file,\n renderCustomHeader:\n renderCustomHeader != null ? () => renderCustomHeader(item) : undefined,\n renderHeaderPrefix:\n renderHeaderPrefix != null ? () => renderHeaderPrefix(item) : undefined,\n renderHeaderFilenameSuffix:\n renderHeaderFilenameSuffix != null\n ? () => renderHeaderFilenameSuffix(item)\n : undefined,\n renderHeaderMetadata:\n renderHeaderMetadata != null\n ? () => renderHeaderMetadata(item)\n : undefined,\n renderAnnotation:\n renderAnnotation != null\n ? (annotation) => renderAnnotation(annotation, item)\n : undefined,\n lineAnnotations: item.annotations,\n renderGutterUtility:\n renderGutterUtility != null\n ? (getHoveredLine) => renderGutterUtility(getHoveredLine, item)\n : undefined,\n getHoveredLine: instance.getHoveredLine,\n });\n }\n}\n\nfunction noopRender() {\n return undefined;\n}\n"],"mappings":";;;;;;;;;;;;AAsCA,MAAM,qBACJ,OAAO,WAAW,cAAc,YAAY;AAsF9C,SAAS,mBACP,YAC4B;CAC5B,OAAO;EACL,UAAU,KAAA;EACV,OAAO,KAAA;EACP;EACA,gBAAgB,KAAA;EAChB,kBAAkB;EAClB,iBAAiB,KAAA;CACnB;AACF;AAEA,SAAS,cACP,OACA,KACmB;CACnB,MAAM,EACJ,WACA,cACA,oBAAoB,OACpB,cACA,OAAO,iBACP,UACA,uBACA,SACA,kBACA,oBACA,qBACA,4BACA,sBACA,oBACA,eACA,UACE;CACJ,MAAM,aAAa,oBAAoB,KAAA;CACvC,MAAM,cAAc,WAAW,iBAAiB;CAChD,MAAM,gBAAgB,OACpB,mBAAgC,UAAU,CAC5C;CACA,MAAM,kBAAkB,sBAAsB;CAC9C,MAAM,wBAAwB,oBAAoB;CAClD,MAAM,oBAAoB,uBAAuB;CACjD,MAAM,qBACJ,mBACA,sBAAsB,QACtB,8BAA8B,QAC9B,wBAAwB;CAC1B,MAAM,eACJ,sBAAsB,yBAAyB;CACjD,MAAM,0BAA0B,mBAC7B,cAA4C;EAC3C,wBAAwB,SAAS;CACnC,CACF;CACA,MAAM,sBAAsB,kBAAkB,KAAA;CAE9C,MAAM,iBAAiB,cAEnB,6BAA6B;EAC3B;EACA;EACA;EACA,uBACE,yBAAyB,OAAO,0BAA0B,KAAA;EAC5D;CACF,CAAC,GACH;EACE;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,MAAM,CAAC,oBAAoB,eACzB,uBAAuB,CACzB;CACA,MAAM,GAAG,eAAe,SAAkB,CAAC,CAAC;CAE5C,MAAM,UAAU,mBAAmB,SAAgC;EAIjE,IACE,cAAc,QAAQ,YAAY,SACjC,QAAQ,QACP,SAAS,cAAc,QAAQ,SAAS,oBAAoB,IAC9D;GACA,cAAc,QAAQ,SAAS,QAAQ;GACvC,iBAAiB,QAAQ,KAAA,CAAS;GAClC,cAAc,UAAU,mBAAgC,UAAU;EACpE;EAMA,IACE,QAAQ,QACR,SAAS,cAAc,QAAQ,UAAU,oBAAoB,GAC7D;GACA,cAAc,QAAQ,WAAW,IAAIA,WACnC,gBACA,CAAC,oBAAoB,cAAc,KAAA,GACnC,IACF;GACA,cAAc,QAAQ,SAAS,MAAM,IAAI;EAC3C;EAEA,IAAI,OAAO,iBAAiB,YAC1B,aAAa,IAAI;OACZ,IAAI,gBAAgB,MACzB,aAAa,UAAU;CAE3B,CAAC;CAED,MAAM,mBAAmB,mBACtB,aAA8D;EAC7D,IAAI,cAAc,QAAQ,kBACxB,iBAAiB,QAAQ,QAAQ;OAEjC,gBAAgB;GACd,iBAAiB,QAAQ,QAAQ;EACnC,CAAC;CAEL,CACF;CAEA,MAAM,kBACJ,cAAc;EACZ,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,mBACpD;OAEA,OAAO;GACL;GACA;GACA;GACA;EACF;CAEJ,GAAG;EACD;EACA;EACA;EACA;CACF,CAAC;CAEH,yBAAyB;EACvB,OAAO,YAAY,OACf,cAAc,QAAQ,UAAU,kBAAkB,QAAQ,IAC1D,KAAA;CACN,CAAC;CAED,yBAAyB;EACvB,MAAM,EACJ,UACA,YAAY,gBACZ,OAAO,WACP,gBAAgB,oBAChB,iBAAiB,wBACf,cAAc;EAClB,IAAI,YAAY,MACd;EAGF,IAAI;GACF,cAAc,QAAQ,mBAAmB;GACzC,IAAI,eAAe;GAEnB,IAAI,CAAC,gBAAgB,gBAAgB,kBAAkB,GAAG;IACxD,cAAc,QAAQ,iBAAiB;IACvC,SAAS,WAAW,cAAc;IAClC,eAAe;GACjB;GAEA,IAAI,mBAAmB,YAAY;IACjC,QAAQ,MACN,oGACF;IACA;GACF;GAEA,IAAI;QACE,oBAAoB,WACtB,IAAI,kBAAkB,WAAW,eAAe,GAC9C,cAAc,QAAQ,QAAQ;SACzB,IAAI,uBAAuB,WAAW,eAAe,GAAG;KAC7D,cAAc,QAAQ,QAAQ;KAC9B,SAAS,SAAS,gBAAgB,MAAM,UAAU,MAAM,CAAC;IAC3D,OAAO;KACL,cAAc,QAAQ,QAAQ;KAC9B,SAAS,SAAS,eAAe;KACjC,eAAe;IACjB;UAKC,IAAI,aAAa,MAAM;IAC1B,MAAM,YAAY,gBAAgB,CAAC;IACnC,cAAc,QAAQ,QAAQ;IAC9B,IAAI,UAAU,SAAS,GAAG;KACxB,SAAS,SAAS,SAAS;KAC3B,eAAe;IACjB;GACF;GAEA,IAAI,kBAAkB,KAAA,GACpB,SAAS,iBAAiB,eAAe,EAAE,QAAQ,MAAM,CAAC;GAG5D,MAAM,cAAc,SAAS,mBAAmB,eAAe;GAC/D,IAAI,qBAAqB;GACzB,IAAI,oBAAoB,qBAAqB;IAC3C,IAAI,mBAAmB,QAAQ,uBAAuB,MACpD,qBAAqB;IAEvB,cAAc,QAAQ,kBAAkB;GAC1C;GAEA,IAAI,gBAAgB,aAClB,SAAS,OAAO,IAAI;GAOtB,IAAI,eAAe,mBAAmB,MACpC,iBAAiB,QAAQ,KAAA,CAAS;GAGpC,IAAI,oBACF,YAAY,CAAC,CAAC;EAElB,UAAU;GACR,cAAc,QAAQ,mBAAmB;EAC3C;CACF,CAAC;CAGD,oBACE,YACoC;EAClC,SAAS,OAAO;GACd,MAAM,EAAE,YAAY,aAAa,cAAc;GAC/C,iCAAiC,YAAY,UAAU;GACvD,IAAI,YAAY,MACd,QAAQ,MACN,6DACA,KACF;QAEA,SAAS,SAAS,KAAK;EAE3B;EACA,QAAQ,IAAI;GACV,MAAM,EAAE,aAAa,cAAc;GACnC,IAAI,YAAY,MAAM;IACpB,QAAQ,MAAM,8CAA8C,EAAE;IAC9D;GACF,OACE,OAAO,SAAS,QAAQ,EAAE;EAE9B;EACA,WAAW,MAAM;GACf,MAAM,EAAE,YAAY,aAAa,cAAc;GAC/C,iCAAiC,YAAY,YAAY;GACzD,IAAI,YAAY,MAAM;IACpB,QAAQ,MACN,8DACA,IACF;IACA,OAAO;GACT;GAEA,OAAO,SAAS,WAAW,IAAI;EACjC;EACA,aAAa,OAAO,OAAO;GACzB,MAAM,EAAE,YAAY,aAAa,cAAc;GAC/C,iCAAiC,YAAY,cAAc;GAC3D,IAAI,YAAY,MAAM;IACpB,QAAQ,MACN,mEACA,OACA,KACF;IACA,OAAO;GACT;GAEA,OAAO,SAAS,aAAa,OAAO,KAAK;EAC3C;EACA,SAAS,QAAQ;GACf,MAAM,EAAE,aAAa,cAAc;GACnC,IAAI,YAAY,MACd,QAAQ,MACN,uDACA,MACF;QAEA,SAAS,SAAS,MAAM;EAE5B;EACA,iBAAiB,WAAW;GAC1B,MAAM,EAAE,aAAa,cAAc;GACnC,IAAI,YAAY,MACd,QAAQ,MACN,yEACA,SACF;QACK;IACL,SAAS,iBAAiB,WAAW,EAAE,QAAQ,MAAM,CAAC;IACtD,wBAAwB,SAAS;GACnC;EACF;EACA,mBAAmB;GACjB,MAAM,EAAE,aAAa,cAAc;GACnC,IAAI,YAAY,MAAM;IACpB,QAAQ,MAAM,qDAAqD;IACnE,OAAO;GACT,OACE,OAAO,SAAS,iBAAiB;EAErC;EACA,qBAAqB;GACnB,MAAM,EAAE,aAAa,cAAc;GACnC,IAAI,YAAY,MACd,QAAQ,MACN,yEACF;QACK;IACL,SAAS,mBAAmB,EAAE,QAAQ,MAAM,CAAC;IAC7C,wBAAwB,IAAI;GAC9B;EACF;EACA,cAAc;GACZ,OAAO,cAAc,QAAQ;EAC/B;CACF,IACA,CAAC,uBAAuB,CAC1B;CAEA,OACE,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,OAAD;EAAK,KAAK;EAAoB;EAAkB;CAAQ,CAAA,GACvD,gBACC,oBAAC,aAAD;EACE,qBAAqB;EACD;EACA;EACQ;EACN;EACJ;EACG;CACtB,CAAA,CAEH,EAAA,CAAA;AAEN;AAGA,MAAa,WAAW,WAAW,aAAa;AAEhD,SAAS,uBACP,eACA,WACuD;CACvD,IAAI,iBAAiB,QAAQ,UAAU,UAAU,cAAc,QAC7D,OAAO;CAGT,IAAI,cAAc,WAAW,GAC3B,OAAO;CAGT,KAAK,IAAI,QAAQ,GAAG,QAAQ,cAAc,QAAQ,SAChD,IAAI,UAAU,WAAW,cAAc,QACrC,OAAO;CAIX,OAAO;AACT;AAEA,SAAS,kBACP,eACA,WACS;CACT,IAAI,iBAAiB,QAAQ,cAAc,WAAW,UAAU,QAC9D,OAAO;CAGT,KAAK,IAAI,QAAQ,GAAG,QAAQ,cAAc,QAAQ,SAChD,IAAI,cAAc,WAAW,UAAU,QACrC,OAAO;CAIX,OAAO;AACT;AAEA,SAAS,iCACP,YACA,QACM;CACN,IAAI,CAAC,YACH;CAGF,MAAM,IAAI,MACR,YAAY,OAAO,2FACrB;AACF;AAEA,SAAS,yBAE6B;CACpC,IAAI;CACJ,MAAM,4BAAY,IAAI,IAAgB;CAEtC,OAAO;EACL,cAAc;GACZ,OAAO;EACT;EACA,QAAQ,cAAc;GACpB,IAAI,yBAAyB,UAAU,YAAY,GACjD;GAGF,WAAW;GACX,KAAK,MAAM,YAAY,WACrB,SAAS;EAEb;EACA,UAAU,UAAU;GAClB,UAAU,IAAI,QAAQ;GACtB,aAAa;IACX,UAAU,OAAO,QAAQ;GAC3B;EACF;CACF;AACF;AAUA,SAAS,6BAA0C,EACjD,SACA,iBACA,mBACA,uBACA,uBAGY;CACZ,IACE,CAAC,mBACD,CAAC,qBACD,yBAAyB,QACzB,CAAC,qBAED,OAAO;CAET,UAAU;EAAE,GAAG;EAAS;EAAqB;CAAsB;CAMnE,IAAI,iBACF,QAAQ,qBAAqB;CAM/B,IAAI,mBACF,QAAQ,sBAAsB;CAGhC,OAAO;AACT;AAsBA,MAAM,cAAc,KAAK,SAAS,YAAyB,EACzD,qBACA,oBACA,oBACA,4BACA,sBACA,kBACA,uBACgC;CAChC,MAAM,YAAY,mBAAmB,aACnC,oBAAoB,UAAU,QAAQ,CACxC;CACA,MAAM,cAAc,wBAClB,oBAAoB,YAAY,CAClC;CAIA,OAHsB,qBAEpB,WAAW,aAAa,WACP,CAAC,EAAE,KAAK,iBAAiB;EAC1C,OAAO,aACL,2BAA2B;GACzB;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC,GACD,aAAa,SACb,aAAa,EACf;CACF,CAAC;AACH,CAAC;AAED,SAAS,2BAAwC,EAC/C,cACA,oBACA,oBACA,4BACA,sBACA,kBACA,uBAC0D;CAC1D,IAAI,aAAa,SAAS,QAAQ;EAChC,MAAM,EAAE,MAAM,aAAa;EAC3B,OAAO,mBAAmB;GACxB,UAAU,KAAK;GACf,oBACE,sBAAsB,aAAa,mBAAmB,IAAI,IAAI,KAAA;GAChE,oBACE,sBAAsB,aAAa,mBAAmB,IAAI,IAAI,KAAA;GAChE,4BACE,8BAA8B,aACpB,2BAA2B,IAAI,IACrC,KAAA;GACN,sBACE,wBAAwB,aACd,qBAAqB,IAAI,IAC/B,KAAA;GACN,kBACE,oBAAoB,QACf,eAAe,iBAAiB,YAAY,IAAI,IACjD,KAAA;GACN,iBAAiB,KAAK;GACtB,qBACE,uBAAuB,QAClB,mBAAmB,oBAAoB,gBAAgB,IAAI,IAC5D,KAAA;GACN,gBAAgB,SAAS;EAC3B,CAAC;CACH,OAAO;EACL,MAAM,EAAE,MAAM,aAAa;EAC3B,OAAO,mBAAmB;GACxB,MAAM,KAAK;GACX,oBACE,sBAAsB,aAAa,mBAAmB,IAAI,IAAI,KAAA;GAChE,oBACE,sBAAsB,aAAa,mBAAmB,IAAI,IAAI,KAAA;GAChE,4BACE,8BAA8B,aACpB,2BAA2B,IAAI,IACrC,KAAA;GACN,sBACE,wBAAwB,aACd,qBAAqB,IAAI,IAC/B,KAAA;GACN,kBACE,oBAAoB,QACf,eAAe,iBAAiB,YAAY,IAAI,IACjD,KAAA;GACN,iBAAiB,KAAK;GACtB,qBACE,uBAAuB,QAClB,mBAAmB,oBAAoB,gBAAgB,IAAI,IAC5D,KAAA;GACN,gBAAgB,SAAS;EAC3B,CAAC;CACH;AACF;AAEA,SAAS,aAAa,CAEtB"}
@@ -1,5 +1,4 @@
1
1
  import { Editor } from "../editor/editor.js";
2
- import "../editor/index.js";
3
2
  import { Context, PropsWithChildren } from "react";
4
3
 
5
4
  //#region src/react/EditorContext.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"EditorContext.d.ts","names":["Context","PropsWithChildren","Editor","EditorContext","EditorProvider","children","editor","React","JSX","Element","useEditor","LAnnotation"],"sources":["../../src/react/EditorContext.d.ts"],"sourcesContent":["import type { Context, PropsWithChildren } from 'react';\nimport { Editor } from '../editor';\nexport declare const EditorContext: Context<Editor<unknown> | undefined>;\nexport declare function EditorProvider({ children, editor }: PropsWithChildren<{\n editor: Editor<unknown>;\n}>): React.JSX.Element;\nexport declare function useEditor<LAnnotation>(): Editor<LAnnotation> | undefined;\n//# sourceMappingURL=EditorContext.d.ts.map"],"mappings":";;;;;cAEqBG,eAAeH,QAAQE;iBACpBE,cAAAA;;;AADxB,GAC6DH;UACjDC;AAFZ,CAAA,CAAA,CAAA,EAGKK,KAAAA,CAAMC,GAAAA,CAAIC,OAHyD;AAChDL,iBAGAM,SAHc,CAAA,WAAA,CAAA,CAAA,CAAA,EAGYR,MAHZ,CAGmBS,WAHnB,CAAA,GAAA,SAAA"}
1
+ {"version":3,"file":"EditorContext.d.ts","names":[],"sources":["../../src/react/EditorContext.tsx"],"mappings":";;;;cAOa,aAAA,EAAe,OAAO,CAAC,MAAA;AAAA,iBAGpB,cAAA;EACd,QAAA;EACA;AAAA,GACC,iBAAA;EAAoB,MAAA,EAAQ,MAAA;AAAA,KAAqB,KAAA,CAAM,GAAA,CAAI,OAAA;AAAA,iBAW9C,SAAA,iBAA0B,MAAM,CAAC,WAAA"}
@@ -1,9 +1,6 @@
1
- 'use client';
2
-
3
-
1
+ "use client";
4
2
  import { createContext, useContext, useEffect } from "react";
5
3
  import { jsx } from "react/jsx-runtime";
6
-
7
4
  //#region src/react/EditorContext.tsx
8
5
  const EditorContext = createContext(void 0);
9
6
  function EditorProvider({ children, editor }) {
@@ -20,7 +17,7 @@ function EditorProvider({ children, editor }) {
20
17
  function useEditor() {
21
18
  return useContext(EditorContext);
22
19
  }
23
-
24
20
  //#endregion
25
21
  export { EditorContext, EditorProvider, useEditor };
22
+
26
23
  //# sourceMappingURL=EditorContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorContext.js","names":["EditorContext: Context<Editor<unknown> | undefined>"],"sources":["../../src/react/EditorContext.tsx"],"sourcesContent":["'use client';\n\nimport type { Context, PropsWithChildren } from 'react';\nimport { createContext, useContext, useEffect } from 'react';\n\nimport { Editor } from '../editor';\n\nexport const EditorContext: Context<Editor<unknown> | undefined> =\n createContext<Editor<unknown> | undefined>(undefined);\n\nexport function EditorProvider({\n children,\n editor,\n}: PropsWithChildren<{ editor: Editor<unknown> }>): React.JSX.Element {\n useEffect(() => {\n return () => {\n editor.cleanUp();\n };\n }, [editor]);\n return (\n <EditorContext.Provider value={editor}>{children}</EditorContext.Provider>\n );\n}\n\nexport function useEditor<LAnnotation>(): Editor<LAnnotation> | undefined {\n return useContext(EditorContext) as Editor<LAnnotation> | undefined;\n}\n"],"mappings":";;;;;;;AAOA,MAAaA,gBACX,cAA2C,OAAU;AAEvD,SAAgB,eAAe,EAC7B,UACA,UACoE;AACpE,iBAAgB;AACd,eAAa;AACX,UAAO,SAAS;;IAEjB,CAAC,OAAO,CAAC;AACZ,QACE,oBAAC,cAAc;EAAS,OAAO;EAAS;GAAkC;;AAI9E,SAAgB,YAA0D;AACxE,QAAO,WAAW,cAAc"}
1
+ {"version":3,"file":"EditorContext.js","names":[],"sources":["../../src/react/EditorContext.tsx"],"sourcesContent":["'use client';\n\nimport type { Context, PropsWithChildren } from 'react';\nimport { createContext, useContext, useEffect } from 'react';\n\nimport { Editor } from '../editor';\n\nexport const EditorContext: Context<Editor<unknown> | undefined> =\n createContext<Editor<unknown> | undefined>(undefined);\n\nexport function EditorProvider({\n children,\n editor,\n}: PropsWithChildren<{ editor: Editor<unknown> }>): React.JSX.Element {\n useEffect(() => {\n return () => {\n editor.cleanUp();\n };\n }, [editor]);\n return (\n <EditorContext.Provider value={editor}>{children}</EditorContext.Provider>\n );\n}\n\nexport function useEditor<LAnnotation>(): Editor<LAnnotation> | undefined {\n return useContext(EditorContext) as Editor<LAnnotation> | undefined;\n}\n"],"mappings":";;;;AAOA,MAAa,gBACX,cAA2C,KAAA,CAAS;AAEtD,SAAgB,eAAe,EAC7B,UACA,UACoE;CACpE,gBAAgB;EACd,aAAa;GACX,OAAO,QAAQ;EACjB;CACF,GAAG,CAAC,MAAM,CAAC;CACX,OACE,oBAAC,cAAc,UAAf;EAAwB,OAAO;EAAS;CAAiC,CAAA;AAE7E;AAEA,SAAgB,YAA0D;CACxE,OAAO,WAAW,aAAa;AACjC"}
@@ -13,6 +13,7 @@ declare function File<LAnnotation = undefined>({
13
13
  renderAnnotation,
14
14
  renderCustomHeader,
15
15
  renderHeaderPrefix,
16
+ renderHeaderFilenameSuffix,
16
17
  renderHeaderMetadata,
17
18
  prerenderedHTML,
18
19
  renderGutterUtility,
@@ -1 +1 @@
1
- {"version":3,"file":"File.d.ts","names":["FileOptions","FileProps","File","LAnnotation","file","lineAnnotations","selectedLines","options","metrics","className","style","renderAnnotation","renderCustomHeader","renderHeaderPrefix","renderHeaderMetadata","prerenderedHTML","renderGutterUtility","disableWorkerPool","contentEditable","React","JSX","Element"],"sources":["../../src/react/File.d.ts"],"sourcesContent":["import { type FileOptions } from '../components/File';\nimport type { FileProps } from './types';\nexport type { FileOptions };\nexport declare function File<LAnnotation = undefined>({ file, lineAnnotations, selectedLines, options, metrics, className, style, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, prerenderedHTML, renderGutterUtility, disableWorkerPool, contentEditable }: FileProps<LAnnotation>): React.JSX.Element;\n//# sourceMappingURL=File.d.ts.map"],"mappings":";;;;iBAGwBE;;;;;;;;;;;;;;;;GAAsQD,UAAUE,eAAegB,KAAAA,CAAMC,GAAAA,CAAIC"}
1
+ {"version":3,"file":"File.d.ts","names":[],"sources":["../../src/react/File.tsx"],"mappings":";;;;iBAWgB,IAAA;EACd,IAAA;EACA,eAAA;EACA,aAAA;EACA,OAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,0BAAA;EACA,oBAAA;EACA,eAAA;EACA,mBAAA;EACA,iBAAA;EACA;AAAA,GACC,SAAA,CAAU,WAAA,IAAe,KAAA,CAAM,GAAA,CAAI,OAAA"}
@@ -1,14 +1,11 @@
1
- 'use client';
2
-
3
-
1
+ "use client";
4
2
  import { DIFFS_TAG_NAME } from "../constants.js";
5
3
  import { renderFileChildren } from "./utils/renderFileChildren.js";
6
4
  import { templateRender } from "./utils/templateRender.js";
7
5
  import { useFileInstance } from "./utils/useFileInstance.js";
8
6
  import { jsx } from "react/jsx-runtime";
9
-
10
7
  //#region src/react/File.tsx
11
- function File({ file, lineAnnotations, selectedLines, options, metrics, className, style, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, prerenderedHTML, renderGutterUtility, disableWorkerPool = false, contentEditable = false }) {
8
+ function File({ file, lineAnnotations, selectedLines, options, metrics, className, style, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderFilenameSuffix, renderHeaderMetadata, prerenderedHTML, renderGutterUtility, disableWorkerPool = false, contentEditable = false }) {
12
9
  const { ref, getHoveredLine } = useFileInstance({
13
10
  file,
14
11
  options,
@@ -30,6 +27,7 @@ function File({ file, lineAnnotations, selectedLines, options, metrics, classNam
30
27
  renderAnnotation,
31
28
  renderCustomHeader,
32
29
  renderHeaderPrefix,
30
+ renderHeaderFilenameSuffix,
33
31
  renderHeaderMetadata,
34
32
  renderGutterUtility,
35
33
  lineAnnotations,
@@ -37,7 +35,7 @@ function File({ file, lineAnnotations, selectedLines, options, metrics, classNam
37
35
  }), prerenderedHTML)
38
36
  });
39
37
  }
40
-
41
38
  //#endregion
42
39
  export { File };
40
+
43
41
  //# sourceMappingURL=File.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"File.js","names":[],"sources":["../../src/react/File.tsx"],"sourcesContent":["'use client';\n\nimport { type FileOptions } from '../components/File';\nimport { DIFFS_TAG_NAME } from '../constants';\nimport type { FileProps } from './types';\nimport { renderFileChildren } from './utils/renderFileChildren';\nimport { templateRender } from './utils/templateRender';\nimport { useFileInstance } from './utils/useFileInstance';\n\nexport type { FileOptions };\n\nexport function File<LAnnotation = undefined>({\n file,\n lineAnnotations,\n selectedLines,\n options,\n metrics,\n className,\n style,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n prerenderedHTML,\n renderGutterUtility,\n disableWorkerPool = false,\n contentEditable = false,\n}: FileProps<LAnnotation>): React.JSX.Element {\n const { ref, getHoveredLine } = useFileInstance({\n file,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasGutterRenderUtility: renderGutterUtility != null,\n hasCustomHeader: renderCustomHeader != null,\n disableWorkerPool,\n contentEditable,\n });\n const children = renderFileChildren({\n file,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderGutterUtility,\n lineAnnotations,\n getHoveredLine,\n });\n return (\n <DIFFS_TAG_NAME ref={ref} className={className} style={style}>\n {templateRender(children, prerenderedHTML)}\n </DIFFS_TAG_NAME>\n );\n}\n"],"mappings":";;;;;;;;;;AAWA,SAAgB,KAA8B,EAC5C,MACA,iBACA,eACA,SACA,SACA,WACA,OACA,kBACA,oBACA,oBACA,sBACA,iBACA,qBACA,oBAAoB,OACpB,kBAAkB,SAC0B;CAC5C,MAAM,EAAE,KAAK,mBAAmB,gBAAgB;EAC9C;EACA;EACA;EACA;EACA;EACA;EACA,wBAAwB,uBAAuB;EAC/C,iBAAiB,sBAAsB;EACvC;EACA;EACD,CAAC;AAWF,QACE,oBAAC;EAAoB;EAAgB;EAAkB;YACpD,eAZY,mBAAmB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,EAG4B,gBAAgB;GAC3B"}
1
+ {"version":3,"file":"File.js","names":[],"sources":["../../src/react/File.tsx"],"sourcesContent":["'use client';\n\nimport { type FileOptions } from '../components/File';\nimport { DIFFS_TAG_NAME } from '../constants';\nimport type { FileProps } from './types';\nimport { renderFileChildren } from './utils/renderFileChildren';\nimport { templateRender } from './utils/templateRender';\nimport { useFileInstance } from './utils/useFileInstance';\n\nexport type { FileOptions };\n\nexport function File<LAnnotation = undefined>({\n file,\n lineAnnotations,\n selectedLines,\n options,\n metrics,\n className,\n style,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n prerenderedHTML,\n renderGutterUtility,\n disableWorkerPool = false,\n contentEditable = false,\n}: FileProps<LAnnotation>): React.JSX.Element {\n const { ref, getHoveredLine } = useFileInstance({\n file,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasGutterRenderUtility: renderGutterUtility != null,\n hasCustomHeader: renderCustomHeader != null,\n disableWorkerPool,\n contentEditable,\n });\n const children = renderFileChildren({\n file,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderGutterUtility,\n lineAnnotations,\n getHoveredLine,\n });\n return (\n <DIFFS_TAG_NAME ref={ref} className={className} style={style}>\n {templateRender(children, prerenderedHTML)}\n </DIFFS_TAG_NAME>\n );\n}\n"],"mappings":";;;;;;;AAWA,SAAgB,KAA8B,EAC5C,MACA,iBACA,eACA,SACA,SACA,WACA,OACA,kBACA,oBACA,oBACA,4BACA,sBACA,iBACA,qBACA,oBAAoB,OACpB,kBAAkB,SAC0B;CAC5C,MAAM,EAAE,KAAK,mBAAmB,gBAAgB;EAC9C;EACA;EACA;EACA;EACA;EACA;EACA,wBAAwB,uBAAuB;EAC/C,iBAAiB,sBAAsB;EACvC;EACA;CACF,CAAC;CAYD,OACE,oBAAC,gBAAD;EAAqB;EAAgB;EAAkB;YACpD,eAbY,mBAAmB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAG2B,GAAG,eAAe;CAC3B,CAAA;AAEpB"}
@@ -19,6 +19,7 @@ declare function FileDiff<LAnnotation = undefined>({
19
19
  renderAnnotation,
20
20
  renderCustomHeader,
21
21
  renderHeaderPrefix,
22
+ renderHeaderFilenameSuffix,
22
23
  renderHeaderMetadata,
23
24
  renderGutterUtility,
24
25
  disableWorkerPool,
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiff.d.ts","names":["FileDiffMetadata","DiffBasePropsReact","FileDiffProps","LAnnotation","FileDiff","fileDiff","options","metrics","lineAnnotations","selectedLines","className","style","prerenderedHTML","renderAnnotation","renderCustomHeader","renderHeaderPrefix","renderHeaderMetadata","renderGutterUtility","disableWorkerPool","contentEditable","React","JSX","Element"],"sources":["../../src/react/FileDiff.d.ts"],"sourcesContent":["import type { FileDiffMetadata } from '../types';\nimport type { DiffBasePropsReact } from './types';\nexport type { FileDiffMetadata };\nexport interface FileDiffProps<LAnnotation> extends DiffBasePropsReact<LAnnotation> {\n fileDiff: FileDiffMetadata;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\nexport declare function FileDiff<LAnnotation = undefined>({ fileDiff, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool, contentEditable }: FileDiffProps<LAnnotation>): React.JSX.Element;\n//# sourceMappingURL=FileDiff.d.ts.map"],"mappings":";;;;UAGiBE,mCAAmCD,mBAAmBE;EAAtDD,QAAAA,EACHF,gBADgBG;EAAyCA,iBAAAA,CAAAA,EAAAA,OAAAA;EACzDH,eAAAA,CAAAA,EAAAA,OAAAA;;AADwD,iBAK9CI,QAL8C,CAAA,cAAA,SAAA,CAAA,CAAA;EAAA,QAAA;EAAA,OAAA;EAAA,OAAA;EAAA,eAAA;EAAA,aAAA;EAAA,SAAA;EAAA,KAAA;EAAA,eAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,iBAAA;EAAA;AAAA,CAAA,EAKgOF,aALhO,CAK8OC,WAL9O,CAAA,CAAA,EAK6PiB,KAAAA,CAAMC,GAAAA,CAAIC,OALvQ"}
1
+ {"version":3,"file":"FileDiff.d.ts","names":[],"sources":["../../src/react/FileDiff.tsx"],"mappings":";;;;UAWiB,aAAA,sBAEP,kBAAA,CAAmB,WAAA;EAC3B,QAAA,EAAU,gBAAA;EACV,iBAAA;EACA,eAAA;AAAA;AAAA,iBAGc,QAAA;EACd,QAAA;EACA,OAAA;EACA,OAAA;EACA,eAAA;EACA,aAAA;EACA,SAAA;EACA,KAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,0BAAA;EACA,oBAAA;EACA,mBAAA;EACA,iBAAA;EACA;AAAA,GACC,aAAA,CAAc,WAAA,IAAe,KAAA,CAAM,GAAA,CAAI,OAAA"}
@@ -1,14 +1,11 @@
1
- 'use client';
2
-
3
-
1
+ "use client";
4
2
  import { DIFFS_TAG_NAME } from "../constants.js";
5
3
  import { renderDiffChildren } from "./utils/renderDiffChildren.js";
6
4
  import { templateRender } from "./utils/templateRender.js";
7
5
  import { useFileDiffInstance } from "./utils/useFileDiffInstance.js";
8
6
  import { jsx } from "react/jsx-runtime";
9
-
10
7
  //#region src/react/FileDiff.tsx
11
- function FileDiff({ fileDiff, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool = false, contentEditable = false }) {
8
+ function FileDiff({ fileDiff, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderFilenameSuffix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool = false, contentEditable = false }) {
12
9
  const { ref, getHoveredLine } = useFileDiffInstance({
13
10
  fileDiff,
14
11
  options,
@@ -29,6 +26,7 @@ function FileDiff({ fileDiff, options, metrics, lineAnnotations, selectedLines,
29
26
  fileDiff,
30
27
  renderCustomHeader,
31
28
  renderHeaderPrefix,
29
+ renderHeaderFilenameSuffix,
32
30
  renderHeaderMetadata,
33
31
  renderAnnotation,
34
32
  renderGutterUtility,
@@ -37,7 +35,7 @@ function FileDiff({ fileDiff, options, metrics, lineAnnotations, selectedLines,
37
35
  }), prerenderedHTML)
38
36
  });
39
37
  }
40
-
41
38
  //#endregion
42
39
  export { FileDiff };
40
+
43
41
  //# sourceMappingURL=FileDiff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiff.js","names":[],"sources":["../../src/react/FileDiff.tsx"],"sourcesContent":["'use client';\n\nimport { DIFFS_TAG_NAME } from '../constants';\nimport type { FileDiffMetadata } from '../types';\nimport type { DiffBasePropsReact } from './types';\nimport { renderDiffChildren } from './utils/renderDiffChildren';\nimport { templateRender } from './utils/templateRender';\nimport { useFileDiffInstance } from './utils/useFileDiffInstance';\n\nexport type { FileDiffMetadata };\n\nexport interface FileDiffProps<\n LAnnotation,\n> extends DiffBasePropsReact<LAnnotation> {\n fileDiff: FileDiffMetadata;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\n\nexport function FileDiff<LAnnotation = undefined>({\n fileDiff,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n className,\n style,\n prerenderedHTML,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderGutterUtility,\n disableWorkerPool = false,\n contentEditable = false,\n}: FileDiffProps<LAnnotation>): React.JSX.Element {\n const { ref, getHoveredLine } = useFileDiffInstance({\n fileDiff,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasGutterRenderUtility: renderGutterUtility != null,\n hasCustomHeader: renderCustomHeader != null,\n disableWorkerPool,\n contentEditable,\n });\n const children = renderDiffChildren({\n fileDiff,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderAnnotation,\n renderGutterUtility,\n lineAnnotations,\n getHoveredLine,\n });\n return (\n <DIFFS_TAG_NAME ref={ref} className={className} style={style}>\n {templateRender(children, prerenderedHTML)}\n </DIFFS_TAG_NAME>\n );\n}\n"],"mappings":";;;;;;;;;;AAmBA,SAAgB,SAAkC,EAChD,UACA,SACA,SACA,iBACA,eACA,WACA,OACA,iBACA,kBACA,oBACA,oBACA,sBACA,qBACA,oBAAoB,OACpB,kBAAkB,SAC8B;CAChD,MAAM,EAAE,KAAK,mBAAmB,oBAAoB;EAClD;EACA;EACA;EACA;EACA;EACA;EACA,wBAAwB,uBAAuB;EAC/C,iBAAiB,sBAAsB;EACvC;EACA;EACD,CAAC;AAWF,QACE,oBAAC;EAAoB;EAAgB;EAAkB;YACpD,eAZY,mBAAmB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,EAG4B,gBAAgB;GAC3B"}
1
+ {"version":3,"file":"FileDiff.js","names":[],"sources":["../../src/react/FileDiff.tsx"],"sourcesContent":["'use client';\n\nimport { DIFFS_TAG_NAME } from '../constants';\nimport type { FileDiffMetadata } from '../types';\nimport type { DiffBasePropsReact } from './types';\nimport { renderDiffChildren } from './utils/renderDiffChildren';\nimport { templateRender } from './utils/templateRender';\nimport { useFileDiffInstance } from './utils/useFileDiffInstance';\n\nexport type { FileDiffMetadata };\n\nexport interface FileDiffProps<\n LAnnotation,\n> extends DiffBasePropsReact<LAnnotation> {\n fileDiff: FileDiffMetadata;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\n\nexport function FileDiff<LAnnotation = undefined>({\n fileDiff,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n className,\n style,\n prerenderedHTML,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderGutterUtility,\n disableWorkerPool = false,\n contentEditable = false,\n}: FileDiffProps<LAnnotation>): React.JSX.Element {\n const { ref, getHoveredLine } = useFileDiffInstance({\n fileDiff,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasGutterRenderUtility: renderGutterUtility != null,\n hasCustomHeader: renderCustomHeader != null,\n disableWorkerPool,\n contentEditable,\n });\n const children = renderDiffChildren({\n fileDiff,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderAnnotation,\n renderGutterUtility,\n lineAnnotations,\n getHoveredLine,\n });\n return (\n <DIFFS_TAG_NAME ref={ref} className={className} style={style}>\n {templateRender(children, prerenderedHTML)}\n </DIFFS_TAG_NAME>\n );\n}\n"],"mappings":";;;;;;;AAmBA,SAAgB,SAAkC,EAChD,UACA,SACA,SACA,iBACA,eACA,WACA,OACA,iBACA,kBACA,oBACA,oBACA,4BACA,sBACA,qBACA,oBAAoB,OACpB,kBAAkB,SAC8B;CAChD,MAAM,EAAE,KAAK,mBAAmB,oBAAoB;EAClD;EACA;EACA;EACA;EACA;EACA;EACA,wBAAwB,uBAAuB;EAC/C,iBAAiB,sBAAsB;EACvC;EACA;CACF,CAAC;CAYD,OACE,oBAAC,gBAAD;EAAqB;EAAgB;EAAkB;YACpD,eAbY,mBAAmB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAG2B,GAAG,eAAe;CAC3B,CAAA;AAEpB"}
@@ -21,6 +21,7 @@ declare function MultiFileDiff<LAnnotation = undefined>({
21
21
  renderAnnotation,
22
22
  renderCustomHeader,
23
23
  renderHeaderPrefix,
24
+ renderHeaderFilenameSuffix,
24
25
  renderHeaderMetadata,
25
26
  renderGutterUtility,
26
27
  disableWorkerPool,
@@ -1 +1 @@
1
- {"version":3,"file":"MultiFileDiff.d.ts","names":["FileContents","DiffBasePropsReact","MultiFileDiffProps","LAnnotation","MultiFileDiff","oldFile","newFile","options","metrics","lineAnnotations","selectedLines","className","style","prerenderedHTML","renderAnnotation","renderCustomHeader","renderHeaderPrefix","renderHeaderMetadata","renderGutterUtility","disableWorkerPool","contentEditable","React","JSX","Element"],"sources":["../../src/react/MultiFileDiff.d.ts"],"sourcesContent":["import type { FileContents } from '../types';\nimport type { DiffBasePropsReact } from './types';\nexport type { FileContents };\nexport interface MultiFileDiffProps<LAnnotation> extends DiffBasePropsReact<LAnnotation> {\n oldFile: FileContents;\n newFile: FileContents;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\nexport declare function MultiFileDiff<LAnnotation = undefined>({ oldFile, newFile, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool, contentEditable }: MultiFileDiffProps<LAnnotation>): React.JSX.Element;\n//# sourceMappingURL=MultiFileDiff.d.ts.map"],"mappings":";;;;UAGiBE,wCAAwCD,mBAAmBE;EAA3DD,OAAAA,EACJF,YADsB;EAAyCG,OAAAA,EAE/DH,YAF+DG;EAC/DH,iBAAAA,CAAAA,EAAAA,OAAAA;EACAA,eAAAA,CAAAA,EAAAA,OAAAA;;AAF8D,iBAMnDI,aANmD,CAAA,cAAA,SAAA,CAAA,CAAA;EAAA,OAAA;EAAA,OAAA;EAAA,OAAA;EAAA,OAAA;EAAA,eAAA;EAAA,aAAA;EAAA,SAAA;EAAA,KAAA;EAAA,eAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,iBAAA;EAAA;AAAA,CAAA,EAMwOF,kBANxO,CAM2PC,WAN3P,CAAA,CAAA,EAM0QkB,KAAAA,CAAMC,GAAAA,CAAIC,OANpR"}
1
+ {"version":3,"file":"MultiFileDiff.d.ts","names":[],"sources":["../../src/react/MultiFileDiff.tsx"],"mappings":";;;;UAciB,kBAAA,sBAEP,kBAAA,CAAmB,WAAA;EAC3B,OAAA,EAAS,YAAA;EACT,OAAA,EAAS,YAAA;EACT,iBAAA;EACA,eAAA;AAAA;AAAA,iBAGc,aAAA;EACd,OAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;EACA,eAAA;EACA,aAAA;EACA,SAAA;EACA,KAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,0BAAA;EACA,oBAAA;EACA,mBAAA;EACA,iBAAA;EACA;AAAA,GACC,kBAAA,CAAmB,WAAA,IAAe,KAAA,CAAM,GAAA,CAAI,OAAA"}
@@ -1,6 +1,4 @@
1
- 'use client';
2
-
3
-
1
+ "use client";
4
2
  import { DIFFS_TAG_NAME } from "../constants.js";
5
3
  import { parseDiffFromFile } from "../utils/parseDiffFromFile.js";
6
4
  import { renderDiffChildren } from "./utils/renderDiffChildren.js";
@@ -8,9 +6,8 @@ import { templateRender } from "./utils/templateRender.js";
8
6
  import { useFileDiffInstance } from "./utils/useFileDiffInstance.js";
9
7
  import { useMemo } from "react";
10
8
  import { jsx } from "react/jsx-runtime";
11
-
12
9
  //#region src/react/MultiFileDiff.tsx
13
- function MultiFileDiff({ oldFile, newFile, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool = false, contentEditable = false }) {
10
+ function MultiFileDiff({ oldFile, newFile, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderFilenameSuffix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool = false, contentEditable = false }) {
14
11
  const fileDiff = useMemo(() => {
15
12
  return parseDiffFromFile(oldFile, newFile, options?.parseDiffOptions);
16
13
  }, [
@@ -38,6 +35,7 @@ function MultiFileDiff({ oldFile, newFile, options, metrics, lineAnnotations, se
38
35
  fileDiff,
39
36
  renderCustomHeader,
40
37
  renderHeaderPrefix,
38
+ renderHeaderFilenameSuffix,
41
39
  renderHeaderMetadata,
42
40
  renderAnnotation,
43
41
  lineAnnotations,
@@ -46,7 +44,7 @@ function MultiFileDiff({ oldFile, newFile, options, metrics, lineAnnotations, se
46
44
  }), prerenderedHTML)
47
45
  });
48
46
  }
49
-
50
47
  //#endregion
51
48
  export { MultiFileDiff };
49
+
52
50
  //# sourceMappingURL=MultiFileDiff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiFileDiff.js","names":[],"sources":["../../src/react/MultiFileDiff.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { DIFFS_TAG_NAME } from '../constants';\nimport type { FileContents } from '../types';\nimport { parseDiffFromFile } from '../utils/parseDiffFromFile';\nimport type { DiffBasePropsReact } from './types';\nimport { renderDiffChildren } from './utils/renderDiffChildren';\nimport { templateRender } from './utils/templateRender';\nimport { useFileDiffInstance } from './utils/useFileDiffInstance';\n\nexport type { FileContents };\n\nexport interface MultiFileDiffProps<\n LAnnotation,\n> extends DiffBasePropsReact<LAnnotation> {\n oldFile: FileContents;\n newFile: FileContents;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\n\nexport function MultiFileDiff<LAnnotation = undefined>({\n oldFile,\n newFile,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n className,\n style,\n prerenderedHTML,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderGutterUtility,\n disableWorkerPool = false,\n contentEditable = false,\n}: MultiFileDiffProps<LAnnotation>): React.JSX.Element {\n const fileDiff = useMemo(() => {\n return parseDiffFromFile(oldFile, newFile, options?.parseDiffOptions);\n }, [oldFile, newFile, options?.parseDiffOptions]);\n const { ref, getHoveredLine } = useFileDiffInstance({\n fileDiff,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasGutterRenderUtility: renderGutterUtility != null,\n hasCustomHeader: renderCustomHeader != null,\n disableWorkerPool,\n contentEditable,\n });\n const children = renderDiffChildren({\n fileDiff,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderAnnotation,\n lineAnnotations,\n renderGutterUtility,\n getHoveredLine,\n });\n return (\n <DIFFS_TAG_NAME ref={ref} className={className} style={style}>\n {templateRender(children, prerenderedHTML)}\n </DIFFS_TAG_NAME>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAuBA,SAAgB,cAAuC,EACrD,SACA,SACA,SACA,SACA,iBACA,eACA,WACA,OACA,iBACA,kBACA,oBACA,oBACA,sBACA,qBACA,oBAAoB,OACpB,kBAAkB,SACmC;CACrD,MAAM,WAAW,cAAc;AAC7B,SAAO,kBAAkB,SAAS,SAAS,SAAS,iBAAiB;IACpE;EAAC;EAAS;EAAS,SAAS;EAAiB,CAAC;CACjD,MAAM,EAAE,KAAK,mBAAmB,oBAAoB;EAClD;EACA;EACA;EACA;EACA;EACA;EACA,wBAAwB,uBAAuB;EAC/C,iBAAiB,sBAAsB;EACvC;EACA;EACD,CAAC;AAWF,QACE,oBAAC;EAAoB;EAAgB;EAAkB;YACpD,eAZY,mBAAmB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,EAG4B,gBAAgB;GAC3B"}
1
+ {"version":3,"file":"MultiFileDiff.js","names":[],"sources":["../../src/react/MultiFileDiff.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { DIFFS_TAG_NAME } from '../constants';\nimport type { FileContents } from '../types';\nimport { parseDiffFromFile } from '../utils/parseDiffFromFile';\nimport type { DiffBasePropsReact } from './types';\nimport { renderDiffChildren } from './utils/renderDiffChildren';\nimport { templateRender } from './utils/templateRender';\nimport { useFileDiffInstance } from './utils/useFileDiffInstance';\n\nexport type { FileContents };\n\nexport interface MultiFileDiffProps<\n LAnnotation,\n> extends DiffBasePropsReact<LAnnotation> {\n oldFile: FileContents;\n newFile: FileContents;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\n\nexport function MultiFileDiff<LAnnotation = undefined>({\n oldFile,\n newFile,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n className,\n style,\n prerenderedHTML,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderGutterUtility,\n disableWorkerPool = false,\n contentEditable = false,\n}: MultiFileDiffProps<LAnnotation>): React.JSX.Element {\n const fileDiff = useMemo(() => {\n return parseDiffFromFile(oldFile, newFile, options?.parseDiffOptions);\n }, [oldFile, newFile, options?.parseDiffOptions]);\n const { ref, getHoveredLine } = useFileDiffInstance({\n fileDiff,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasGutterRenderUtility: renderGutterUtility != null,\n hasCustomHeader: renderCustomHeader != null,\n disableWorkerPool,\n contentEditable,\n });\n const children = renderDiffChildren({\n fileDiff,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderAnnotation,\n lineAnnotations,\n renderGutterUtility,\n getHoveredLine,\n });\n return (\n <DIFFS_TAG_NAME ref={ref} className={className} style={style}>\n {templateRender(children, prerenderedHTML)}\n </DIFFS_TAG_NAME>\n );\n}\n"],"mappings":";;;;;;;;;AAuBA,SAAgB,cAAuC,EACrD,SACA,SACA,SACA,SACA,iBACA,eACA,WACA,OACA,iBACA,kBACA,oBACA,oBACA,4BACA,sBACA,qBACA,oBAAoB,OACpB,kBAAkB,SACmC;CACrD,MAAM,WAAW,cAAc;EAC7B,OAAO,kBAAkB,SAAS,SAAS,SAAS,gBAAgB;CACtE,GAAG;EAAC;EAAS;EAAS,SAAS;CAAgB,CAAC;CAChD,MAAM,EAAE,KAAK,mBAAmB,oBAAoB;EAClD;EACA;EACA;EACA;EACA;EACA;EACA,wBAAwB,uBAAuB;EAC/C,iBAAiB,sBAAsB;EACvC;EACA;CACF,CAAC;CAYD,OACE,oBAAC,gBAAD;EAAqB;EAAgB;EAAkB;YACpD,eAbY,mBAAmB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAG2B,GAAG,eAAe;CAC3B,CAAA;AAEpB"}
@@ -18,6 +18,7 @@ declare function PatchDiff<LAnnotation = undefined>({
18
18
  renderAnnotation,
19
19
  renderCustomHeader,
20
20
  renderHeaderPrefix,
21
+ renderHeaderFilenameSuffix,
21
22
  renderHeaderMetadata,
22
23
  renderGutterUtility,
23
24
  disableWorkerPool,
@@ -1 +1 @@
1
- {"version":3,"file":"PatchDiff.d.ts","names":["DiffBasePropsReact","PatchDiffProps","LAnnotation","PatchDiff","patch","options","metrics","lineAnnotations","selectedLines","className","style","prerenderedHTML","renderAnnotation","renderCustomHeader","renderHeaderPrefix","renderHeaderMetadata","renderGutterUtility","disableWorkerPool","contentEditable","React","JSX","Element"],"sources":["../../src/react/PatchDiff.d.ts"],"sourcesContent":["import type { DiffBasePropsReact } from './types';\nexport interface PatchDiffProps<LAnnotation> extends DiffBasePropsReact<LAnnotation> {\n patch: string;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\nexport declare function PatchDiff<LAnnotation = undefined>({ patch, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool, contentEditable }: PatchDiffProps<LAnnotation>): React.JSX.Element;\n//# sourceMappingURL=PatchDiff.d.ts.map"],"mappings":";;;UACiBC,oCAAoCD,mBAAmBE;;EAAvDD,iBAAc,CAAA,EAAA,OAAAC;EAKPC,eAAS,CAAA,EAAA,OAAAD;;AAAmCG,iBAA5CF,SAA4CE,CAAAA,cAAAA,SAAAA,CAAAA,CAAAA;EAAAA,KAAAA;EAAAA,OAAAA;EAAAA,OAAAA;EAAAA,eAAAA;EAAAA,aAAAA;EAAAA,SAAAA;EAAAA,KAAAA;EAAAA,eAAAA;EAAAA,gBAAAA;EAAAA,kBAAAA;EAAAA,kBAAAA;EAAAA,oBAAAA;EAAAA,mBAAAA;EAAAA,iBAAAA;EAAAA;AAAAA,CAAAA,EAAgOJ,cAAhOI,CAA+OH,WAA/OG,CAAAA,CAAAA,EAA8Pc,KAAAA,CAAMC,GAAAA,CAAIC,OAAxQhB"}
1
+ {"version":3,"file":"PatchDiff.d.ts","names":[],"sources":["../../src/react/PatchDiff.tsx"],"mappings":";;;UAYiB,cAAA,sBAEP,kBAAkB,CAAC,WAAA;EAC3B,KAAA;EACA,iBAAA;EACA,eAAA;AAAA;AAAA,iBAGc,SAAA;EACd,KAAA;EACA,OAAA;EACA,OAAA;EACA,eAAA;EACA,aAAA;EACA,SAAA;EACA,KAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,0BAAA;EACA,oBAAA;EACA,mBAAA;EACA,iBAAA;EACA;AAAA,GACC,cAAA,CAAe,WAAA,IAAe,KAAA,CAAM,GAAA,CAAI,OAAA"}
@@ -1,6 +1,4 @@
1
- 'use client';
2
-
3
-
1
+ "use client";
4
2
  import { DIFFS_TAG_NAME } from "../constants.js";
5
3
  import { getSingularPatch } from "../utils/getSingularPatch.js";
6
4
  import { renderDiffChildren } from "./utils/renderDiffChildren.js";
@@ -8,9 +6,8 @@ import { templateRender } from "./utils/templateRender.js";
8
6
  import { useFileDiffInstance } from "./utils/useFileDiffInstance.js";
9
7
  import { useMemo } from "react";
10
8
  import { jsx } from "react/jsx-runtime";
11
-
12
9
  //#region src/react/PatchDiff.tsx
13
- function PatchDiff({ patch, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool = false, contentEditable = false }) {
10
+ function PatchDiff({ patch, options, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderFilenameSuffix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool = false, contentEditable = false }) {
14
11
  const fileDiff = usePatch(patch);
15
12
  const { ref, getHoveredLine } = useFileDiffInstance({
16
13
  fileDiff,
@@ -32,6 +29,7 @@ function PatchDiff({ patch, options, metrics, lineAnnotations, selectedLines, cl
32
29
  fileDiff,
33
30
  renderCustomHeader,
34
31
  renderHeaderPrefix,
32
+ renderHeaderFilenameSuffix,
35
33
  renderHeaderMetadata,
36
34
  renderAnnotation,
37
35
  lineAnnotations,
@@ -43,7 +41,7 @@ function PatchDiff({ patch, options, metrics, lineAnnotations, selectedLines, cl
43
41
  function usePatch(patch) {
44
42
  return useMemo(() => getSingularPatch(patch), [patch]);
45
43
  }
46
-
47
44
  //#endregion
48
45
  export { PatchDiff };
46
+
49
47
  //# sourceMappingURL=PatchDiff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PatchDiff.js","names":[],"sources":["../../src/react/PatchDiff.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { DIFFS_TAG_NAME } from '../constants';\nimport type { FileDiffMetadata } from '../types';\nimport { getSingularPatch } from '../utils/getSingularPatch';\nimport type { DiffBasePropsReact } from './types';\nimport { renderDiffChildren } from './utils/renderDiffChildren';\nimport { templateRender } from './utils/templateRender';\nimport { useFileDiffInstance } from './utils/useFileDiffInstance';\n\nexport interface PatchDiffProps<\n LAnnotation,\n> extends DiffBasePropsReact<LAnnotation> {\n patch: string;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\n\nexport function PatchDiff<LAnnotation = undefined>({\n patch,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n className,\n style,\n prerenderedHTML,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderGutterUtility,\n disableWorkerPool = false,\n contentEditable = false,\n}: PatchDiffProps<LAnnotation>): React.JSX.Element {\n const fileDiff = usePatch(patch);\n const { ref, getHoveredLine } = useFileDiffInstance({\n fileDiff,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasGutterRenderUtility: renderGutterUtility != null,\n hasCustomHeader: renderCustomHeader != null,\n disableWorkerPool,\n contentEditable,\n });\n const children = renderDiffChildren({\n fileDiff,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderMetadata,\n renderAnnotation,\n lineAnnotations,\n renderGutterUtility,\n getHoveredLine,\n });\n return (\n <DIFFS_TAG_NAME ref={ref} className={className} style={style}>\n {templateRender(children, prerenderedHTML)}\n </DIFFS_TAG_NAME>\n );\n}\n\nfunction usePatch(patch: string): FileDiffMetadata {\n return useMemo<FileDiffMetadata>(() => getSingularPatch(patch), [patch]);\n}\n"],"mappings":";;;;;;;;;;;;AAoBA,SAAgB,UAAmC,EACjD,OACA,SACA,SACA,iBACA,eACA,WACA,OACA,iBACA,kBACA,oBACA,oBACA,sBACA,qBACA,oBAAoB,OACpB,kBAAkB,SAC+B;CACjD,MAAM,WAAW,SAAS,MAAM;CAChC,MAAM,EAAE,KAAK,mBAAmB,oBAAoB;EAClD;EACA;EACA;EACA;EACA;EACA;EACA,wBAAwB,uBAAuB;EAC/C,iBAAiB,sBAAsB;EACvC;EACA;EACD,CAAC;AAWF,QACE,oBAAC;EAAoB;EAAgB;EAAkB;YACpD,eAZY,mBAAmB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,EAG4B,gBAAgB;GAC3B;;AAIrB,SAAS,SAAS,OAAiC;AACjD,QAAO,cAAgC,iBAAiB,MAAM,EAAE,CAAC,MAAM,CAAC"}
1
+ {"version":3,"file":"PatchDiff.js","names":[],"sources":["../../src/react/PatchDiff.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { DIFFS_TAG_NAME } from '../constants';\nimport type { FileDiffMetadata } from '../types';\nimport { getSingularPatch } from '../utils/getSingularPatch';\nimport type { DiffBasePropsReact } from './types';\nimport { renderDiffChildren } from './utils/renderDiffChildren';\nimport { templateRender } from './utils/templateRender';\nimport { useFileDiffInstance } from './utils/useFileDiffInstance';\n\nexport interface PatchDiffProps<\n LAnnotation,\n> extends DiffBasePropsReact<LAnnotation> {\n patch: string;\n disableWorkerPool?: boolean;\n contentEditable?: boolean;\n}\n\nexport function PatchDiff<LAnnotation = undefined>({\n patch,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n className,\n style,\n prerenderedHTML,\n renderAnnotation,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderGutterUtility,\n disableWorkerPool = false,\n contentEditable = false,\n}: PatchDiffProps<LAnnotation>): React.JSX.Element {\n const fileDiff = usePatch(patch);\n const { ref, getHoveredLine } = useFileDiffInstance({\n fileDiff,\n options,\n metrics,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasGutterRenderUtility: renderGutterUtility != null,\n hasCustomHeader: renderCustomHeader != null,\n disableWorkerPool,\n contentEditable,\n });\n const children = renderDiffChildren({\n fileDiff,\n renderCustomHeader,\n renderHeaderPrefix,\n renderHeaderFilenameSuffix,\n renderHeaderMetadata,\n renderAnnotation,\n lineAnnotations,\n renderGutterUtility,\n getHoveredLine,\n });\n return (\n <DIFFS_TAG_NAME ref={ref} className={className} style={style}>\n {templateRender(children, prerenderedHTML)}\n </DIFFS_TAG_NAME>\n );\n}\n\nfunction usePatch(patch: string): FileDiffMetadata {\n return useMemo<FileDiffMetadata>(() => getSingularPatch(patch), [patch]);\n}\n"],"mappings":";;;;;;;;;AAoBA,SAAgB,UAAmC,EACjD,OACA,SACA,SACA,iBACA,eACA,WACA,OACA,iBACA,kBACA,oBACA,oBACA,4BACA,sBACA,qBACA,oBAAoB,OACpB,kBAAkB,SAC+B;CACjD,MAAM,WAAW,SAAS,KAAK;CAC/B,MAAM,EAAE,KAAK,mBAAmB,oBAAoB;EAClD;EACA;EACA;EACA;EACA;EACA;EACA,wBAAwB,uBAAuB;EAC/C,iBAAiB,sBAAsB;EACvC;EACA;CACF,CAAC;CAYD,OACE,oBAAC,gBAAD;EAAqB;EAAgB;EAAkB;YACpD,eAbY,mBAAmB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAG2B,GAAG,eAAe;CAC3B,CAAA;AAEpB;AAEA,SAAS,SAAS,OAAiC;CACjD,OAAO,cAAgC,iBAAiB,KAAK,GAAG,CAAC,KAAK,CAAC;AACzE"}