@pierre/diffs 1.5.2 → 1.6.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/README.md +4 -3
  2. package/dist/components/CodeView.d.ts.map +1 -1
  3. package/dist/components/CodeView.js +6 -5
  4. package/dist/components/CodeView.js.map +1 -1
  5. package/dist/components/File.d.ts.map +1 -1
  6. package/dist/components/File.js +11 -6
  7. package/dist/components/File.js.map +1 -1
  8. package/dist/components/FileDiff.d.ts.map +1 -1
  9. package/dist/components/FileDiff.js +12 -7
  10. package/dist/components/FileDiff.js.map +1 -1
  11. package/dist/components/FileStream.d.ts +6 -4
  12. package/dist/components/FileStream.d.ts.map +1 -1
  13. package/dist/components/FileStream.js +49 -36
  14. package/dist/components/FileStream.js.map +1 -1
  15. package/dist/constants.d.ts +3 -2
  16. package/dist/constants.d.ts.map +1 -1
  17. package/dist/constants.js +2 -1
  18. package/dist/constants.js.map +1 -1
  19. package/dist/editor/editor.d.ts +2 -1
  20. package/dist/editor/editor.d.ts.map +1 -1
  21. package/dist/editor/editor.js +5 -1
  22. package/dist/editor/editor.js.map +1 -1
  23. package/dist/editor/tokenizer.d.ts +6 -4
  24. package/dist/editor/tokenizer.d.ts.map +1 -1
  25. package/dist/editor/tokenizer.js +25 -470
  26. package/dist/editor/tokenizer.js.map +1 -1
  27. package/dist/highlighter/DiffsEditorTokenizer.d.ts +16 -0
  28. package/dist/highlighter/DiffsEditorTokenizer.d.ts.map +1 -0
  29. package/dist/highlighter/DiffsEditorTokenizer.js +0 -0
  30. package/dist/highlighter/DiffsHighlighter.d.ts +41 -0
  31. package/dist/highlighter/DiffsHighlighter.d.ts.map +1 -0
  32. package/dist/highlighter/DiffsHighlighter.js +39 -0
  33. package/dist/highlighter/DiffsHighlighter.js.map +1 -0
  34. package/dist/highlighter/backends/highlights.d.ts +26 -0
  35. package/dist/highlighter/backends/highlights.d.ts.map +1 -0
  36. package/dist/highlighter/backends/highlights.js +71 -0
  37. package/dist/highlighter/backends/highlights.js.map +1 -0
  38. package/dist/highlighter/backends/shiki.d.ts +27 -0
  39. package/dist/highlighter/backends/shiki.d.ts.map +1 -0
  40. package/dist/highlighter/backends/shiki.js +107 -0
  41. package/dist/highlighter/backends/shiki.js.map +1 -0
  42. package/dist/highlighter/highlighterType.d.ts +13 -0
  43. package/dist/highlighter/highlighterType.d.ts.map +1 -0
  44. package/dist/highlighter/highlighterType.js +32 -0
  45. package/dist/highlighter/highlighterType.js.map +1 -0
  46. package/dist/highlighter/highlights-editor.d.ts +24 -0
  47. package/dist/highlighter/highlights-editor.d.ts.map +1 -0
  48. package/dist/highlighter/highlights-editor.js +166 -0
  49. package/dist/highlighter/highlights-editor.js.map +1 -0
  50. package/dist/highlighter/highlights-stream.d.ts +20 -0
  51. package/dist/highlighter/highlights-stream.d.ts.map +1 -0
  52. package/dist/highlighter/highlights-stream.js +93 -0
  53. package/dist/highlighter/highlights-stream.js.map +1 -0
  54. package/dist/highlighter/languages/areLanguagesAttached.d.ts +2 -1
  55. package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
  56. package/dist/highlighter/languages/areLanguagesAttached.js +4 -6
  57. package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -1
  58. package/dist/highlighter/languages/attachResolvedLanguages.d.ts +6 -1
  59. package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
  60. package/dist/highlighter/languages/attachResolvedLanguages.js +6 -11
  61. package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
  62. package/dist/highlighter/languages/constants.d.ts +1 -1
  63. package/dist/highlighter/languages/getResolvedLanguages.d.ts +1 -1
  64. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
  65. package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
  66. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  67. package/dist/highlighter/languages/resolveLanguage.js +19 -16
  68. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  69. package/dist/highlighter/languages/resolveLanguages.d.ts +1 -1
  70. package/dist/highlighter/shared_highlighter.d.ts +23 -9
  71. package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  72. package/dist/highlighter/shared_highlighter.js +59 -47
  73. package/dist/highlighter/shared_highlighter.js.map +1 -1
  74. package/dist/highlighter/shiki-editor.d.ts +25 -0
  75. package/dist/highlighter/shiki-editor.d.ts.map +1 -0
  76. package/dist/highlighter/shiki-editor.js +483 -0
  77. package/dist/highlighter/shiki-editor.js.map +1 -0
  78. package/dist/highlighter/shiki-stream.d.ts +20 -0
  79. package/dist/highlighter/shiki-stream.d.ts.map +1 -0
  80. package/dist/highlighter/shiki-stream.js +60 -0
  81. package/dist/highlighter/shiki-stream.js.map +1 -0
  82. package/dist/highlighter/stream-tokenizer.d.ts +40 -0
  83. package/dist/highlighter/stream-tokenizer.d.ts.map +1 -0
  84. package/dist/highlighter/stream-tokenizer.js +70 -0
  85. package/dist/highlighter/stream-tokenizer.js.map +1 -0
  86. package/dist/highlighter/themes/areThemesAttached.d.ts +3 -2
  87. package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
  88. package/dist/highlighter/themes/areThemesAttached.js +5 -4
  89. package/dist/highlighter/themes/areThemesAttached.js.map +1 -1
  90. package/dist/highlighter/themes/attachResolvedThemes.d.ts +5 -2
  91. package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
  92. package/dist/highlighter/themes/attachResolvedThemes.js +4 -16
  93. package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
  94. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts +3 -1
  95. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
  96. package/dist/highlighter/themes/cleanUpResolvedThemes.js +8 -5
  97. package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
  98. package/dist/highlighter/themes/createCSSVariablesTheme.d.ts +7 -0
  99. package/dist/highlighter/themes/createCSSVariablesTheme.d.ts.map +1 -0
  100. package/dist/highlighter/themes/createCSSVariablesTheme.js +89 -0
  101. package/dist/highlighter/themes/createCSSVariablesTheme.js.map +1 -0
  102. package/dist/highlighter/themes/createCachedLoader.d.ts +5 -0
  103. package/dist/highlighter/themes/createCachedLoader.d.ts.map +1 -0
  104. package/dist/highlighter/themes/createCachedLoader.js +15 -0
  105. package/dist/highlighter/themes/createCachedLoader.js.map +1 -0
  106. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts +3 -2
  107. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
  108. package/dist/highlighter/themes/getResolvedOrResolveTheme.js +4 -4
  109. package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
  110. package/dist/highlighter/themes/getResolvedThemes.d.ts +3 -2
  111. package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
  112. package/dist/highlighter/themes/getResolvedThemes.js +4 -3
  113. package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
  114. package/dist/highlighter/themes/hasResolvedThemes.d.ts +2 -2
  115. package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
  116. package/dist/highlighter/themes/hasResolvedThemes.js +4 -3
  117. package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
  118. package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
  119. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +3 -3
  120. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
  121. package/dist/highlighter/themes/registerCustomTheme.d.ts +9 -4
  122. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  123. package/dist/highlighter/themes/registerCustomTheme.js +8 -16
  124. package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
  125. package/dist/highlighter/themes/resolveTheme.d.ts +3 -2
  126. package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
  127. package/dist/highlighter/themes/resolveTheme.js +4 -7
  128. package/dist/highlighter/themes/resolveTheme.js.map +1 -1
  129. package/dist/highlighter/themes/resolveThemes.d.ts +3 -2
  130. package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
  131. package/dist/highlighter/themes/resolveThemes.js +4 -7
  132. package/dist/highlighter/themes/resolveThemes.js.map +1 -1
  133. package/dist/highlighter/themes/themeResolver.d.ts +10 -4
  134. package/dist/highlighter/themes/themeResolver.d.ts.map +1 -1
  135. package/dist/highlighter/themes/themeResolver.js +141 -2
  136. package/dist/highlighter/themes/themeResolver.js.map +1 -1
  137. package/dist/highlighter/themes/types.d.ts +23 -0
  138. package/dist/highlighter/themes/types.d.ts.map +1 -0
  139. package/dist/highlighter/themes/types.js +0 -0
  140. package/dist/highlighter/tokenizer-types.d.ts +35 -0
  141. package/dist/highlighter/tokenizer-types.d.ts.map +1 -0
  142. package/dist/highlighter/tokenizer-types.js +0 -0
  143. package/dist/highlighter/types.d.ts +55 -0
  144. package/dist/highlighter/types.d.ts.map +1 -0
  145. package/dist/highlighter/types.js +0 -0
  146. package/dist/index.d.ts +14 -10
  147. package/dist/index.js +16 -18
  148. package/dist/managers/InteractionManager.d.ts.map +1 -1
  149. package/dist/managers/InteractionManager.js +2 -2
  150. package/dist/managers/InteractionManager.js.map +1 -1
  151. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +9 -1
  152. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -1
  153. package/dist/react/CodeView.js +1 -1
  154. package/dist/react/index.d.ts +8 -3
  155. package/dist/renderers/DiffHunksRenderer.d.ts +2 -1
  156. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  157. package/dist/renderers/DiffHunksRenderer.js +31 -22
  158. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  159. package/dist/renderers/FileRenderer.d.ts +2 -1
  160. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  161. package/dist/renderers/FileRenderer.js +33 -24
  162. package/dist/renderers/FileRenderer.js.map +1 -1
  163. package/dist/shiki-stream/index.d.ts +3 -3
  164. package/dist/shiki-stream/index.js +1 -2
  165. package/dist/shiki-stream/stream.d.ts +4 -4
  166. package/dist/shiki-stream/stream.d.ts.map +1 -1
  167. package/dist/shiki-stream/stream.js +20 -9
  168. package/dist/shiki-stream/stream.js.map +1 -1
  169. package/dist/shiki-stream/types.d.ts +7 -38
  170. package/dist/shiki-stream/types.d.ts.map +1 -1
  171. package/dist/ssr/FileDiffReact.js +1 -1
  172. package/dist/ssr/index.d.ts +7 -2
  173. package/dist/ssr/renderHTML.js +2 -2
  174. package/dist/ssr/renderHTML.js.map +1 -1
  175. package/dist/style.js +1 -1
  176. package/dist/style.js.map +1 -1
  177. package/dist/types.d.ts +10 -11
  178. package/dist/types.d.ts.map +1 -1
  179. package/dist/utils/createSpanNodeFromToken.d.ts +3 -2
  180. package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
  181. package/dist/utils/createSpanNodeFromToken.js +4 -5
  182. package/dist/utils/createSpanNodeFromToken.js.map +1 -1
  183. package/dist/utils/cssWrappers.d.ts.map +1 -1
  184. package/dist/utils/cssWrappers.js +12 -0
  185. package/dist/utils/cssWrappers.js.map +1 -1
  186. package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  187. package/dist/utils/getHighlighterOptions.js +3 -2
  188. package/dist/utils/getHighlighterOptions.js.map +1 -1
  189. package/dist/utils/getHighlighterThemeStyles.d.ts +2 -1
  190. package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
  191. package/dist/utils/getHighlighterThemeStyles.js +13 -3
  192. package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
  193. package/dist/utils/getTokenOptions.d.ts +7 -0
  194. package/dist/utils/getTokenOptions.d.ts.map +1 -0
  195. package/dist/utils/getTokenOptions.js +16 -0
  196. package/dist/utils/getTokenOptions.js.map +1 -0
  197. package/dist/utils/hastToHtml.d.ts +10 -0
  198. package/dist/utils/hastToHtml.d.ts.map +1 -0
  199. package/dist/utils/hastToHtml.js +125 -0
  200. package/dist/utils/hastToHtml.js.map +1 -0
  201. package/dist/utils/parseDiffDecorations.d.ts +2 -1
  202. package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  203. package/dist/utils/renderDiffWithHighlighter.d.ts +3 -2
  204. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  205. package/dist/utils/renderDiffWithHighlighter.js +33 -48
  206. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  207. package/dist/utils/renderFileWithHighlighter.d.ts +3 -2
  208. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  209. package/dist/utils/renderFileWithHighlighter.js +10 -26
  210. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  211. package/dist/utils/renderTokenLines.d.ts +17 -0
  212. package/dist/utils/renderTokenLines.d.ts.map +1 -0
  213. package/dist/utils/renderTokenLines.js +246 -0
  214. package/dist/utils/renderTokenLines.js.map +1 -0
  215. package/dist/utils/resolvePreferredHighlighter.d.ts +13 -0
  216. package/dist/utils/resolvePreferredHighlighter.d.ts.map +1 -0
  217. package/dist/utils/resolvePreferredHighlighter.js +11 -0
  218. package/dist/utils/resolvePreferredHighlighter.js.map +1 -0
  219. package/dist/utils/setDeferredArrayItem.d.ts +5 -0
  220. package/dist/utils/setDeferredArrayItem.d.ts.map +1 -0
  221. package/dist/utils/setDeferredArrayItem.js +39 -0
  222. package/dist/utils/setDeferredArrayItem.js.map +1 -0
  223. package/dist/utils/tokenStyle.d.ts +7 -0
  224. package/dist/utils/tokenStyle.d.ts.map +1 -0
  225. package/dist/utils/tokenStyle.js +28 -0
  226. package/dist/utils/tokenStyle.js.map +1 -0
  227. package/dist/utils/tokensToHtml.d.ts +8 -0
  228. package/dist/utils/tokensToHtml.d.ts.map +1 -0
  229. package/dist/utils/tokensToHtml.js +45 -0
  230. package/dist/utils/tokensToHtml.js.map +1 -0
  231. package/dist/utils/wrapTokenFragments.js.map +1 -1
  232. package/dist/worker/WorkerPoolManager.d.ts +2 -2
  233. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  234. package/dist/worker/WorkerPoolManager.js +56 -46
  235. package/dist/worker/WorkerPoolManager.js.map +1 -1
  236. package/dist/worker/hastLinesTransport.d.ts +14 -0
  237. package/dist/worker/hastLinesTransport.d.ts.map +1 -0
  238. package/dist/worker/hastLinesTransport.js +156 -0
  239. package/dist/worker/hastLinesTransport.js.map +1 -0
  240. package/dist/worker/highlights-sAHlxqlf.js +317 -0
  241. package/dist/worker/highlights-sAHlxqlf.js.map +1 -0
  242. package/dist/worker/index.d.ts +1 -1
  243. package/dist/worker/shiki-Bx2JpdqZ.js +697 -0
  244. package/dist/worker/shiki-Bx2JpdqZ.js.map +1 -0
  245. package/dist/worker/stream-tokenizer-YZ6M1qSx.js +424 -0
  246. package/dist/worker/stream-tokenizer-YZ6M1qSx.js.map +1 -0
  247. package/dist/worker/types.d.ts +5 -3
  248. package/dist/worker/types.d.ts.map +1 -1
  249. package/dist/worker/worker-portable.js +41 -13337
  250. package/dist/worker/worker-portable.js.map +1 -1
  251. package/dist/worker/worker.js +672 -349
  252. package/dist/worker/worker.js.map +1 -1
  253. package/dist/worker/workerMessage.d.ts +24 -0
  254. package/dist/worker/workerMessage.d.ts.map +1 -0
  255. package/dist/worker/workerMessage.js +0 -0
  256. package/package.json +33 -29
  257. package/dist/highlighter/themes/constants.d.ts +0 -5
  258. package/dist/highlighter/themes/constants.d.ts.map +0 -1
  259. package/dist/highlighter/themes/constants.js +0 -6
  260. package/dist/highlighter/themes/constants.js.map +0 -1
  261. package/dist/highlighter/themes/themeResolution.d.ts +0 -7
  262. package/dist/highlighter/themes/themeResolution.d.ts.map +0 -1
  263. package/dist/highlighter/themes/themeResolution.js +0 -21
  264. package/dist/highlighter/themes/themeResolution.js.map +0 -1
  265. package/dist/shiki-stream/tokenizer.d.ts +0 -23
  266. package/dist/shiki-stream/tokenizer.d.ts.map +0 -1
  267. package/dist/shiki-stream/tokenizer.js +0 -72
  268. package/dist/shiki-stream/tokenizer.js.map +0 -1
  269. package/dist/utils/createTransformerWithState.d.ts +0 -12
  270. package/dist/utils/createTransformerWithState.d.ts.map +0 -1
  271. package/dist/utils/createTransformerWithState.js +0 -89
  272. package/dist/utils/createTransformerWithState.js.map +0 -1
  273. package/dist/worker/wasm-B9ZqxnKj.js +0 -8
  274. package/dist/worker/wasm-B9ZqxnKj.js.map +0 -1
@@ -1,21 +1,13 @@
1
- import { themeResolver } from "./themeResolver.js";
2
- import { createTheme } from "@pierre/theming/themes";
3
- import { DuplicateThemeError } from "@pierre/theming";
1
+ import { customThemes } from "./themeResolver.js";
4
2
  //#region src/highlighter/themes/registerCustomTheme.ts
5
- function registerCustomTheme(themeName, loader) {
6
- try {
7
- const descriptor = createTheme({
8
- name: themeName,
9
- load: loader
10
- });
11
- themeResolver.registerTheme(descriptor.name, descriptor.load);
12
- } catch (error) {
13
- if (error instanceof DuplicateThemeError) {
14
- console.error("SharedHighlight.registerCustomTheme: theme name already registered", themeName);
15
- return;
16
- }
17
- throw error;
3
+ function registerCustomTheme(themeName, loader, type = "textmate") {
4
+ const themes = customThemes.get(themeName) ?? {};
5
+ if (themes[type] != null) {
6
+ console.error("SharedHighlight.registerCustomTheme: theme name and type already registered", themeName, type);
7
+ return;
18
8
  }
9
+ themes[type] = loader;
10
+ customThemes.set(themeName, themes);
19
11
  }
20
12
  //#endregion
21
13
  export { registerCustomTheme };
@@ -1 +1 @@
1
- {"version":3,"file":"registerCustomTheme.js","names":[],"sources":["../../../src/highlighter/themes/registerCustomTheme.ts"],"sourcesContent":["import { DuplicateThemeError, type ThemeLoader } from '@pierre/theming';\nimport { createTheme } from '@pierre/theming/themes';\n\nimport type { ThemeRegistration, ThemeRegistrationResolved } from '../../types';\nimport { themeResolver } from './themeResolver';\n\nexport type CustomThemeLoader = ThemeLoader<\n ThemeRegistration | ThemeRegistrationResolved\n>;\n\n// Registers a named custom theme loader on the diffs resolver. The loader is\n// wrapped by createTheme so its result is run through Shiki's\n// normalizeTheme before caching — this preserves the legacy behavior where\n// every resolved theme (custom, Pierre, or Shiki-provided) was normalized, so\n// its fg/bg are derived from the colors map. Re-registering an existing name is\n// a no-op that logs, matching the previous contract (the generic resolver throws\n// DuplicateThemeError, which we translate back into the log-and-return shape).\nexport function registerCustomTheme(\n themeName: string,\n loader: CustomThemeLoader\n): void {\n try {\n const descriptor = createTheme<ThemeRegistrationResolved>({\n name: themeName,\n load: loader,\n });\n themeResolver.registerTheme(descriptor.name, descriptor.load);\n } catch (error) {\n if (error instanceof DuplicateThemeError) {\n console.error(\n 'SharedHighlight.registerCustomTheme: theme name already registered',\n themeName\n );\n return;\n }\n throw error;\n }\n}\n"],"mappings":";;;;AAiBA,SAAgB,oBACd,WACA,QACM;CACN,IAAI;EACF,MAAM,aAAa,YAAuC;GACxD,MAAM;GACN,MAAM;EACR,CAAC;EACD,cAAc,cAAc,WAAW,MAAM,WAAW,IAAI;CAC9D,SAAS,OAAO;EACd,IAAI,iBAAiB,qBAAqB;GACxC,QAAQ,MACN,sEACA,SACF;GACA;EACF;EACA,MAAM;CACR;AACF"}
1
+ {"version":3,"file":"registerCustomTheme.js","names":[],"sources":["../../../src/highlighter/themes/registerCustomTheme.ts"],"sourcesContent":["import type {\n Theme as ZedTheme,\n ThemeFamily as ZedThemeFamily,\n} from '@pierre/highlights';\nimport type { ThemeLoader } from '@pierre/theming';\nimport type { ThemeRegistration } from 'shiki';\n\nimport { type CustomThemeLoader, customThemes } from './themeResolver';\nimport type { DiffsTheme } from './types';\n\nexport type { CustomThemeLoader } from './themeResolver';\n\n/** Register a lazy TextMate, Zed, or shared Diffs theme loader. */\nexport function registerCustomTheme(\n themeName: string,\n loader: ThemeLoader<ThemeRegistration>,\n type?: 'textmate'\n): void;\nexport function registerCustomTheme(\n themeName: string,\n loader: ThemeLoader<ZedTheme | ZedThemeFamily>,\n type: 'zed'\n): void;\nexport function registerCustomTheme(\n themeName: string,\n loader: ThemeLoader<DiffsTheme>,\n type: 'diffs'\n): void;\nexport function registerCustomTheme(\n themeName: string,\n loader: CustomThemeLoader,\n type: 'textmate' | 'zed' | 'diffs' = 'textmate'\n): void {\n const themes = customThemes.get(themeName) ?? {};\n if (themes[type] != null) {\n console.error(\n 'SharedHighlight.registerCustomTheme: theme name and type already registered',\n themeName,\n type\n );\n return;\n }\n themes[type] = loader;\n customThemes.set(themeName, themes);\n}\n"],"mappings":";;AA4BA,SAAgB,oBACd,WACA,QACA,OAAqC,YAC/B;CACN,MAAM,SAAS,aAAa,IAAI,SAAS,KAAK,CAAC;CAC/C,IAAI,OAAO,SAAS,MAAM;EACxB,QAAQ,MACN,+EACA,WACA,IACF;EACA;CACF;CACA,OAAO,QAAQ;CACf,aAAa,IAAI,WAAW,MAAM;AACpC"}
@@ -1,6 +1,7 @@
1
- import { DiffsThemeNames, ThemeRegistrationResolved } from "../../types.js";
1
+ import { DiffsTheme } from "./types.js";
2
+ import { DiffsThemeNames, HighlighterTypes } from "../../types.js";
2
3
  //#region src/highlighter/themes/resolveTheme.d.ts
3
- declare function resolveTheme(themeName: DiffsThemeNames): Promise<ThemeRegistrationResolved>;
4
+ declare function resolveTheme(themeName: DiffsThemeNames, backend?: HighlighterTypes): Promise<DiffsTheme>;
4
5
  //#endregion
5
6
  export { resolveTheme };
6
7
  //# sourceMappingURL=resolveTheme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/resolveTheme.ts"],"mappings":";;iBAiBsB,aACpB,WAAW,kBACV,QAAQ"}
1
+ {"version":3,"file":"resolveTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/resolveTheme.ts"],"mappings":";;;iBAKgB,aACd,WAAW,iBACX,UAAS,mBACR,QAAQ"}
@@ -1,11 +1,8 @@
1
- import { themeResolver } from "./themeResolver.js";
2
- import { prepareThemeResolution, validateResolvedThemeName } from "./themeResolution.js";
1
+ import { resolveHighlighterType } from "../highlighterType.js";
2
+ import { createDiffsThemeResolver } from "./themeResolver.js";
3
3
  //#region src/highlighter/themes/resolveTheme.ts
4
- async function resolveTheme(themeName) {
5
- prepareThemeResolution(themeName);
6
- const theme = await themeResolver.resolveTheme(themeName);
7
- validateResolvedThemeName(themeName, theme);
8
- return theme;
4
+ function resolveTheme(themeName, backend = resolveHighlighterType()) {
5
+ return createDiffsThemeResolver(backend).resolveTheme(themeName);
9
6
  }
10
7
  //#endregion
11
8
  export { resolveTheme };
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTheme.js","names":[],"sources":["../../../src/highlighter/themes/resolveTheme.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport {\n prepareThemeResolution,\n validateResolvedThemeName,\n} from './themeResolution';\nimport { themeResolver } from './themeResolver';\n\n// Resolves a theme by name to a normalized Shiki theme, delegating the cache,\n// concurrent-load dedupe, normalization, and registry to the shared\n// @pierre/theming resolver. The diffs-specific behavior layered on top:\n// 1. Worker-context guard — themes must be pre-resolved on the main thread\n// and handed to the worker, which seeds them via attachResolvedThemes.\n// 2. Bundled-theme fallback — a name with no registered loader that matches a\n// Shiki bundled theme is registered on demand (per-name dynamic import),\n// so callers never have to pre-register the full Shiki theme set.\n// 3. theme.name validation — the resolved theme's own name must match the\n// requested name, catching mismatched registrations early.\nexport async function resolveTheme(\n themeName: DiffsThemeNames\n): Promise<ThemeRegistrationResolved> {\n prepareThemeResolution(themeName);\n\n const theme = await themeResolver.resolveTheme(themeName);\n\n validateResolvedThemeName(themeName, theme);\n\n return theme;\n}\n"],"mappings":";;;AAiBA,eAAsB,aACpB,WACoC;CACpC,uBAAuB,SAAS;CAEhC,MAAM,QAAQ,MAAM,cAAc,aAAa,SAAS;CAExD,0BAA0B,WAAW,KAAK;CAE1C,OAAO;AACT"}
1
+ {"version":3,"file":"resolveTheme.js","names":[],"sources":["../../../src/highlighter/themes/resolveTheme.ts"],"sourcesContent":["import type { DiffsThemeNames, HighlighterTypes } from '../../types';\nimport { resolveHighlighterType } from '../highlighterType';\nimport { createDiffsThemeResolver } from './themeResolver';\nimport type { DiffsTheme } from './types';\n\nexport function resolveTheme(\n themeName: DiffsThemeNames,\n backend: HighlighterTypes = resolveHighlighterType()\n): Promise<DiffsTheme> {\n return createDiffsThemeResolver(backend).resolveTheme(themeName);\n}\n"],"mappings":";;;AAKA,SAAgB,aACd,WACA,UAA4B,uBAAuB,GAC9B;CACrB,OAAO,yBAAyB,OAAO,CAAC,CAAC,aAAa,SAAS;AACjE"}
@@ -1,6 +1,7 @@
1
- import { DiffsThemeNames, ThemeRegistrationResolved } from "../../types.js";
1
+ import { DiffsTheme } from "./types.js";
2
+ import { DiffsThemeNames, HighlighterTypes } from "../../types.js";
2
3
  //#region src/highlighter/themes/resolveThemes.d.ts
3
- declare function resolveThemes(themes: DiffsThemeNames[]): Promise<ThemeRegistrationResolved[]>;
4
+ declare function resolveThemes(themes: DiffsThemeNames[], backend?: HighlighterTypes): Promise<DiffsTheme[]>;
4
5
  //#endregion
5
6
  export { resolveThemes };
6
7
  //# sourceMappingURL=resolveThemes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/resolveThemes.ts"],"mappings":";;iBAOsB,cACpB,QAAQ,oBACP,QAAQ"}
1
+ {"version":3,"file":"resolveThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/resolveThemes.ts"],"mappings":";;;iBAKgB,cACd,QAAQ,mBACR,UAAS,mBACR,QAAQ"}
@@ -1,11 +1,8 @@
1
- import { themeResolver } from "./themeResolver.js";
2
- import { prepareThemeResolution, validateResolvedThemeName } from "./themeResolution.js";
1
+ import { resolveHighlighterType } from "../highlighterType.js";
2
+ import { createDiffsThemeResolver } from "./themeResolver.js";
3
3
  //#region src/highlighter/themes/resolveThemes.ts
4
- async function resolveThemes(themes) {
5
- for (const themeName of themes) prepareThemeResolution(themeName);
6
- const resolvedThemes = await themeResolver.resolveThemes(themes);
7
- for (let i = 0; i < themes.length; i++) validateResolvedThemeName(themes[i], resolvedThemes[i]);
8
- return resolvedThemes;
4
+ function resolveThemes(themes, backend = resolveHighlighterType()) {
5
+ return createDiffsThemeResolver(backend).resolveThemes(themes);
9
6
  }
10
7
  //#endregion
11
8
  export { resolveThemes };
@@ -1 +1 @@
1
- {"version":3,"file":"resolveThemes.js","names":[],"sources":["../../../src/highlighter/themes/resolveThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport {\n prepareThemeResolution,\n validateResolvedThemeName,\n} from './themeResolution';\nimport { themeResolver } from './themeResolver';\n\nexport async function resolveThemes(\n themes: DiffsThemeNames[]\n): Promise<ThemeRegistrationResolved[]> {\n for (const themeName of themes) {\n prepareThemeResolution(themeName);\n }\n\n const resolvedThemes = await themeResolver.resolveThemes(themes);\n for (let i = 0; i < themes.length; i++) {\n validateResolvedThemeName(themes[i], resolvedThemes[i]);\n }\n\n return resolvedThemes;\n}\n"],"mappings":";;;AAOA,eAAsB,cACpB,QACsC;CACtC,KAAK,MAAM,aAAa,QACtB,uBAAuB,SAAS;CAGlC,MAAM,iBAAiB,MAAM,cAAc,cAAc,MAAM;CAC/D,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KACjC,0BAA0B,OAAO,IAAI,eAAe,EAAE;CAGxD,OAAO;AACT"}
1
+ {"version":3,"file":"resolveThemes.js","names":[],"sources":["../../../src/highlighter/themes/resolveThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, HighlighterTypes } from '../../types';\nimport { resolveHighlighterType } from '../highlighterType';\nimport { createDiffsThemeResolver } from './themeResolver';\nimport type { DiffsTheme } from './types';\n\nexport function resolveThemes(\n themes: DiffsThemeNames[],\n backend: HighlighterTypes = resolveHighlighterType()\n): Promise<DiffsTheme[]> {\n return createDiffsThemeResolver(backend).resolveThemes(themes);\n}\n"],"mappings":";;;AAKA,SAAgB,cACd,QACA,UAA4B,uBAAuB,GAC5B;CACvB,OAAO,yBAAyB,OAAO,CAAC,CAAC,cAAc,MAAM;AAC/D"}
@@ -1,7 +1,13 @@
1
- import { ThemeRegistrationResolved } from "../../types.js";
2
- import { ThemeResolver } from "@pierre/theming";
1
+ import { DiffsTheme } from "./types.js";
2
+ import { HighlighterTypes } from "../../types.js";
3
+ import { ThemeLoader, ThemeResolver } from "@pierre/theming";
4
+ import { ThemeRegistration } from "shiki";
5
+ import { Theme, ThemeFamily } from "@pierre/highlights";
3
6
  //#region src/highlighter/themes/themeResolver.d.ts
4
- declare const themeResolver: ThemeResolver<ThemeRegistrationResolved>;
7
+ type CustomThemeLoader = ThemeLoader<ThemeRegistration | DiffsTheme | Theme | ThemeFamily>;
8
+ declare const customThemes: Map<string, Partial<Record<'textmate' | 'zed' | 'diffs', CustomThemeLoader>>>;
9
+ /** Keep caches separate because the same name can have TextMate and Zed palettes. */
10
+ declare function createDiffsThemeResolver(backend: HighlighterTypes): ThemeResolver<DiffsTheme>;
5
11
  //#endregion
6
- export { themeResolver };
12
+ export { CustomThemeLoader, createDiffsThemeResolver, customThemes };
7
13
  //# sourceMappingURL=themeResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"themeResolver.d.ts","names":[],"sources":["../../../src/highlighter/themes/themeResolver.ts"],"mappings":";;;cAgBa,eAAe,cAAc"}
1
+ {"version":3,"file":"themeResolver.d.ts","names":[],"sources":["../../../src/highlighter/themes/themeResolver.ts"],"mappings":";;;;;;KAkBY,oBAAoB,YAC9B,oBAAoB,aAAa,QAAW;cAEjC,cAAc,YAEzB,QAAQ,qCAAqC;;iBA6F/B,yBACd,SAAS,mBACR,cAAc"}
@@ -1,7 +1,146 @@
1
+ import { isWorkerContext } from "../../utils/isWorkerContext.js";
2
+ import { createCachedLoader } from "./createCachedLoader.js";
1
3
  import { createThemeResolver } from "@pierre/theming";
2
4
  //#region src/highlighter/themes/themeResolver.ts
3
- const themeResolver = createThemeResolver();
5
+ const customThemes = /* @__PURE__ */ new Map();
6
+ const resolvers = /* @__PURE__ */ new Map();
7
+ const loadHighlightsThemeCatalog = createCachedLoader(() => import("@pierre/highlights/themes/loader"));
8
+ const loadPierreThemeCatalog = createCachedLoader(() => import("@pierre/theming/themes"));
9
+ const loadShikiCore = createCachedLoader(() => import("shiki/core"));
10
+ const ZED_COLOR_ALIASES = [
11
+ ["editor.lineHighlightBackground", "editor.active_line.background"],
12
+ ["editor.selectionBackground", "element.selected"],
13
+ ["editor.findMatchBackground", "search.match_background"],
14
+ ["editor.findMatchHighlightBackground", "search.match_background"],
15
+ ["editorBracketMatch.background", "editor.document_highlight.bracket_background"],
16
+ ["editorError.foreground", "error"],
17
+ ["editorWarning.foreground", "warning"],
18
+ ["editorInfo.foreground", "info"],
19
+ ["editorHint.foreground", "hint"],
20
+ [
21
+ "gitDecoration.addedResourceForeground",
22
+ "created",
23
+ "terminal.ansi.green"
24
+ ],
25
+ [
26
+ "gitDecoration.deletedResourceForeground",
27
+ "deleted",
28
+ "terminal.ansi.red"
29
+ ],
30
+ [
31
+ "gitDecoration.modifiedResourceForeground",
32
+ "modified",
33
+ "terminal.ansi.blue"
34
+ ]
35
+ ];
36
+ function createHighlightsTheme(name, raw) {
37
+ const theme = "themes" in raw ? raw.themes[0] : raw;
38
+ if (theme == null) throw new Error(`Theme "${name}" is an empty Zed theme family.`);
39
+ const zed = {
40
+ ...theme,
41
+ name
42
+ };
43
+ const colors = {};
44
+ for (const [key, value] of Object.entries(zed.style)) if (typeof value === "string") colors[key] = value;
45
+ const player = zed.style.players?.[0];
46
+ if (player?.cursor != null) colors["editorCursor.foreground"] ??= player.cursor;
47
+ if (player?.selection != null) colors["editor.selectionBackground"] ??= player.selection;
48
+ for (const [target, ...sources] of ZED_COLOR_ALIASES) {
49
+ if (colors[target] != null) continue;
50
+ const source = sources.find((key) => colors[key] != null);
51
+ if (source != null) colors[target] = colors[source];
52
+ }
53
+ if (zed.cssVariables === true) {
54
+ colors["editor.foreground"] = "var(--hls-foreground)";
55
+ colors["editor.background"] = "var(--hls-background)";
56
+ } else if (typeof zed.cssVariables === "object") {
57
+ colors["editor.foreground"] ??= colors.text ?? colors.foreground ?? "foreground";
58
+ colors["editor.background"] ??= colors.background ?? "background";
59
+ const { prefix = "--hls-", defaults } = zed.cssVariables;
60
+ for (const [key, value] of Object.entries(colors)) {
61
+ const fallback = defaults?.[value];
62
+ colors[key] = `var(${prefix}${value}${fallback ? `, ${fallback}` : ""})`;
63
+ }
64
+ }
65
+ const type = zed.appearance === "light" ? "light" : "dark";
66
+ return {
67
+ name,
68
+ type,
69
+ colors,
70
+ zed,
71
+ fg: colors["editor.foreground"] ?? colors.text ?? colors.foreground ?? (type === "light" ? "#333333" : "#bbbbbb"),
72
+ bg: colors["editor.background"] ?? colors.background ?? (type === "light" ? "#ffffff" : "#1e1e1e")
73
+ };
74
+ }
75
+ /** Keep caches separate because the same name can have TextMate and Zed palettes. */
76
+ function createDiffsThemeResolver(backend) {
77
+ let resolver = resolvers.get(backend);
78
+ if (resolver != null) return resolver;
79
+ resolver = createThemeResolver({
80
+ fallbackLoader: async (name) => {
81
+ if (typeof __DIFFS_WORKER__ !== "undefined" ? __DIFFS_WORKER__ : isWorkerContext()) throw new Error(`Theme "${name}" cannot be resolved from a worker context. Themes must be pre-resolved on the main thread and passed to the worker via the resolvedThemes parameter.`);
82
+ const custom = customThemes.get(name);
83
+ if (backend === "highlights") {
84
+ const loader = custom?.zed ?? custom?.diffs;
85
+ if (loader != null) {
86
+ const loaded = await loader();
87
+ const theme = "default" in loaded ? loaded.default : loaded;
88
+ if ("zed" in theme && theme.zed != null) return theme;
89
+ if ("style" in theme || "themes" in theme) return createHighlightsTheme(name, theme);
90
+ throw new Error(`Theme "${name}" is a TextMate theme; register a Zed theme with registerCustomTheme(name, loader, 'zed') for Highlights.`);
91
+ }
92
+ const catalog = loadHighlightsThemeCatalog();
93
+ const { themes } = catalog instanceof Promise ? await catalog : catalog;
94
+ const bundledLoader = themes[name];
95
+ if (bundledLoader != null) return createHighlightsTheme(name, (await bundledLoader()).default);
96
+ if (custom?.textmate != null) throw new Error(`Theme "${name}" is only registered for TextMate; use registerCustomTheme(name, loader, 'zed') for Highlights.`);
97
+ } else {
98
+ const loader = custom?.textmate ?? custom?.diffs;
99
+ let loaded;
100
+ if (loader != null) {
101
+ const result = await loader();
102
+ loaded = "default" in result ? result.default : result;
103
+ } else {
104
+ const catalog = loadPierreThemeCatalog();
105
+ const { themes } = catalog instanceof Promise ? await catalog : catalog;
106
+ const descriptor = themes.getTheme(name);
107
+ if (descriptor == null && custom?.zed != null) throw new Error(`Theme "${name}" is only registered for Zed; use registerCustomTheme(name, loader, 'textmate') for Shiki.`);
108
+ if (descriptor == null) throw new Error(`No valid theme loader registered for "${name}"`);
109
+ const result = await descriptor.load();
110
+ loaded = "default" in result ? result.default : result;
111
+ }
112
+ if ("style" in loaded || "themes" in loaded) throw new Error(`Theme "${name}" is a Zed theme; use preferredHighlighter: 'highlights' or register a TextMate theme for Shiki.`);
113
+ const core = loadShikiCore();
114
+ const { normalizeTheme, createCssVariablesTheme } = core instanceof Promise ? await core : core;
115
+ if ("cssVariables" in loaded && loaded.cssVariables != null) return {
116
+ ...loaded,
117
+ textmate: normalizeTheme(createCssVariablesTheme(loaded.cssVariables))
118
+ };
119
+ if ("textmate" in loaded && loaded.textmate != null) return {
120
+ ...loaded,
121
+ textmate: normalizeTheme(loaded.textmate)
122
+ };
123
+ const textmate = normalizeTheme(loaded);
124
+ return {
125
+ name: textmate.name,
126
+ type: textmate.type,
127
+ fg: textmate.fg,
128
+ bg: textmate.bg,
129
+ colors: textmate.colors,
130
+ textmate
131
+ };
132
+ }
133
+ throw new Error(`No valid theme loader registered for "${name}"`);
134
+ },
135
+ normalizeTheme: (theme, name) => {
136
+ if (theme.name !== name) throw new Error(`resolvedTheme: themeName: ${name} does not match theme.name: ${theme.name}`);
137
+ return theme;
138
+ }
139
+ });
140
+ resolvers.set(backend, resolver);
141
+ return resolver;
142
+ }
4
143
  //#endregion
5
- export { themeResolver };
144
+ export { createDiffsThemeResolver, customThemes };
6
145
 
7
146
  //# sourceMappingURL=themeResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"themeResolver.js","names":[],"sources":["../../../src/highlighter/themes/themeResolver.ts"],"sourcesContent":["import { createThemeResolver, type ThemeResolver } from '@pierre/theming';\n\nimport type { ThemeRegistrationResolved } from '../../types';\n\n// The single diffs-owned theme resolver. It replaces the former hand-rolled\n// ResolvedThemes (sync cache) + ResolvingThemes (in-flight dedupe) +\n// RegisteredCustomThemes (loader registry) trio with one shared\n// @pierre/theming resolver: the resolver owns the cache, the concurrent-load\n// dedupe, and the name→loader registry internally.\n//\n// This module is intentionally NOT re-exported from the package index — the\n// resolver and the registered-name set are diffs internals. Public callers go\n// through the wrapper functions (resolveTheme, getResolvedThemes, etc.) that\n// add the diffs-specific behavior the generic resolver knows nothing about:\n// the worker-context guard, Shiki normalization, the bundled-theme fallback,\n// and the theme.name validation.\nexport const themeResolver: ThemeResolver<ThemeRegistrationResolved> =\n createThemeResolver<ThemeRegistrationResolved>();\n"],"mappings":";;AAgBA,MAAa,gBACX,oBAA+C"}
1
+ {"version":3,"file":"themeResolver.js","names":[],"sources":["../../../src/highlighter/themes/themeResolver.ts"],"sourcesContent":["import type {\n Theme as ZedTheme,\n ThemeFamily as ZedThemeFamily,\n} from '@pierre/highlights';\nimport {\n createThemeResolver,\n type ThemeLoader,\n type ThemeResolver,\n} from '@pierre/theming';\nimport type { ThemeRegistration } from 'shiki';\n\nimport type { HighlighterTypes } from '../../types';\nimport { isWorkerContext } from '../../utils/isWorkerContext';\nimport { createCachedLoader } from './createCachedLoader';\nimport type { DiffsTheme } from './types';\n\ndeclare const __DIFFS_WORKER__: boolean | undefined;\n\nexport type CustomThemeLoader = ThemeLoader<\n ThemeRegistration | DiffsTheme | ZedTheme | ZedThemeFamily\n>;\nexport const customThemes: Map<\n string,\n Partial<Record<'textmate' | 'zed' | 'diffs', CustomThemeLoader>>\n> = new Map();\nconst resolvers = new Map<HighlighterTypes, ThemeResolver<DiffsTheme>>();\n\nconst loadHighlightsThemeCatalog = createCachedLoader(\n () => import('@pierre/highlights/themes/loader')\n);\nconst loadPierreThemeCatalog = createCachedLoader(\n () => import('@pierre/theming/themes')\n);\nconst loadShikiCore = createCachedLoader(() => import('shiki/core'));\n\n// Map Zed colors to the VS Code keys used by editor and diff overlays.\nconst ZED_COLOR_ALIASES: readonly (readonly [\n target: string,\n ...sources: string[],\n])[] = [\n ['editor.lineHighlightBackground', 'editor.active_line.background'],\n ['editor.selectionBackground', 'element.selected'],\n ['editor.findMatchBackground', 'search.match_background'],\n ['editor.findMatchHighlightBackground', 'search.match_background'],\n [\n 'editorBracketMatch.background',\n 'editor.document_highlight.bracket_background',\n ],\n ['editorError.foreground', 'error'],\n ['editorWarning.foreground', 'warning'],\n ['editorInfo.foreground', 'info'],\n ['editorHint.foreground', 'hint'],\n ['gitDecoration.addedResourceForeground', 'created', 'terminal.ansi.green'],\n ['gitDecoration.deletedResourceForeground', 'deleted', 'terminal.ansi.red'],\n [\n 'gitDecoration.modifiedResourceForeground',\n 'modified',\n 'terminal.ansi.blue',\n ],\n];\n\nfunction createHighlightsTheme(\n name: string,\n raw: ZedTheme | ZedThemeFamily\n): DiffsTheme {\n const theme = 'themes' in raw ? raw.themes[0] : raw;\n if (theme == null)\n throw new Error(`Theme \"${name}\" is an empty Zed theme family.`);\n const zed = { ...theme, name };\n const colors: Record<string, string> = {};\n for (const [key, value] of Object.entries(zed.style)) {\n if (typeof value === 'string') colors[key] = value;\n }\n // Zed keeps the local user's caret and selection in the first player slot.\n const player = zed.style.players?.[0];\n if (player?.cursor != null)\n colors['editorCursor.foreground'] ??= player.cursor;\n if (player?.selection != null)\n colors['editor.selectionBackground'] ??= player.selection;\n for (const [target, ...sources] of ZED_COLOR_ALIASES) {\n if (colors[target] != null) continue;\n const source = sources.find((key) => colors[key] != null);\n if (source != null) colors[target] = colors[source];\n }\n if (zed.cssVariables === true) {\n colors['editor.foreground'] = 'var(--hls-foreground)';\n colors['editor.background'] = 'var(--hls-background)';\n } else if (typeof zed.cssVariables === 'object') {\n colors['editor.foreground'] ??=\n colors.text ?? colors.foreground ?? 'foreground';\n colors['editor.background'] ??= colors.background ?? 'background';\n const { prefix = '--hls-', defaults } = zed.cssVariables;\n for (const [key, value] of Object.entries(colors)) {\n const fallback = defaults?.[value];\n colors[key] = `var(${prefix}${value}${fallback ? `, ${fallback}` : ''})`;\n }\n }\n const type = zed.appearance === 'light' ? 'light' : 'dark';\n return {\n name,\n type,\n colors,\n zed,\n fg:\n colors['editor.foreground'] ??\n colors.text ??\n colors.foreground ??\n (type === 'light' ? '#333333' : '#bbbbbb'),\n bg:\n colors['editor.background'] ??\n colors.background ??\n (type === 'light' ? '#ffffff' : '#1e1e1e'),\n };\n}\n\n/** Keep caches separate because the same name can have TextMate and Zed palettes. */\nexport function createDiffsThemeResolver(\n backend: HighlighterTypes\n): ThemeResolver<DiffsTheme> {\n let resolver = resolvers.get(backend);\n if (resolver != null) return resolver;\n resolver = createThemeResolver<DiffsTheme>({\n fallbackLoader: async (name) => {\n if (\n typeof __DIFFS_WORKER__ !== 'undefined'\n ? __DIFFS_WORKER__\n : isWorkerContext()\n ) {\n throw new Error(\n `Theme \"${name}\" cannot be resolved from a worker context. Themes must be pre-resolved on the main thread and passed to the worker via the resolvedThemes parameter.`\n );\n }\n const custom = customThemes.get(name);\n if (backend === 'highlights') {\n const loader = custom?.zed ?? custom?.diffs;\n if (loader != null) {\n const loaded = await loader();\n const theme = 'default' in loaded ? loaded.default : loaded;\n if ('zed' in theme && theme.zed != null) return theme;\n if ('style' in theme || 'themes' in theme)\n return createHighlightsTheme(name, theme);\n throw new Error(\n `Theme \"${name}\" is a TextMate theme; register a Zed theme with registerCustomTheme(name, loader, 'zed') for Highlights.`\n );\n }\n const catalog = loadHighlightsThemeCatalog();\n const { themes } = catalog instanceof Promise ? await catalog : catalog;\n const bundledLoader = themes[name];\n if (bundledLoader != null) {\n const loaded = await bundledLoader();\n return createHighlightsTheme(name, loaded.default);\n }\n if (custom?.textmate != null) {\n throw new Error(\n `Theme \"${name}\" is only registered for TextMate; use registerCustomTheme(name, loader, 'zed') for Highlights.`\n );\n }\n } else {\n const loader = custom?.textmate ?? custom?.diffs;\n let loaded: ThemeRegistration | DiffsTheme | ZedTheme | ZedThemeFamily;\n if (loader != null) {\n const result = await loader();\n loaded = 'default' in result ? result.default : result;\n } else {\n const catalog = loadPierreThemeCatalog();\n const { themes } =\n catalog instanceof Promise ? await catalog : catalog;\n const descriptor = themes.getTheme(name);\n if (descriptor == null && custom?.zed != null) {\n throw new Error(\n `Theme \"${name}\" is only registered for Zed; use registerCustomTheme(name, loader, 'textmate') for Shiki.`\n );\n }\n if (descriptor == null)\n throw new Error(`No valid theme loader registered for \"${name}\"`);\n const result = await descriptor.load();\n loaded = 'default' in result ? result.default : result;\n }\n if ('style' in loaded || 'themes' in loaded) {\n throw new Error(\n `Theme \"${name}\" is a Zed theme; use preferredHighlighter: 'highlights' or register a TextMate theme for Shiki.`\n );\n }\n const core = loadShikiCore();\n const { normalizeTheme, createCssVariablesTheme } =\n core instanceof Promise ? await core : core;\n if ('cssVariables' in loaded && loaded.cssVariables != null) {\n return {\n ...loaded,\n textmate: normalizeTheme(\n createCssVariablesTheme(loaded.cssVariables)\n ),\n };\n }\n if ('textmate' in loaded && loaded.textmate != null) {\n return { ...loaded, textmate: normalizeTheme(loaded.textmate) };\n }\n const textmate = normalizeTheme(loaded);\n return {\n name: textmate.name,\n type: textmate.type,\n fg: textmate.fg,\n bg: textmate.bg,\n colors: textmate.colors,\n textmate,\n };\n }\n throw new Error(`No valid theme loader registered for \"${name}\"`);\n },\n normalizeTheme: (theme, name) => {\n if (theme.name !== name)\n throw new Error(\n `resolvedTheme: themeName: ${name} does not match theme.name: ${theme.name}`\n );\n return theme;\n },\n });\n resolvers.set(backend, resolver);\n return resolver;\n}\n"],"mappings":";;;;AAqBA,MAAa,+BAGT,IAAI,IAAI;AACZ,MAAM,4BAAY,IAAI,IAAiD;AAEvE,MAAM,6BAA6B,yBAC3B,OAAO,mCACf;AACA,MAAM,yBAAyB,yBACvB,OAAO,yBACf;AACA,MAAM,gBAAgB,yBAAyB,OAAO,aAAa;AAGnE,MAAM,oBAGC;CACL,CAAC,kCAAkC,+BAA+B;CAClE,CAAC,8BAA8B,kBAAkB;CACjD,CAAC,8BAA8B,yBAAyB;CACxD,CAAC,uCAAuC,yBAAyB;CACjE,CACE,iCACA,8CACF;CACA,CAAC,0BAA0B,OAAO;CAClC,CAAC,4BAA4B,SAAS;CACtC,CAAC,yBAAyB,MAAM;CAChC,CAAC,yBAAyB,MAAM;CAChC;EAAC;EAAyC;EAAW;CAAqB;CAC1E;EAAC;EAA2C;EAAW;CAAmB;CAC1E;EACE;EACA;EACA;CACF;AACF;AAEA,SAAS,sBACP,MACA,KACY;CACZ,MAAM,QAAQ,YAAY,MAAM,IAAI,OAAO,KAAK;CAChD,IAAI,SAAS,MACX,MAAM,IAAI,MAAM,UAAU,KAAK,gCAAgC;CACjE,MAAM,MAAM;EAAE,GAAG;EAAO;CAAK;CAC7B,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,KAAK,GACjD,IAAI,OAAO,UAAU,UAAU,OAAO,OAAO;CAG/C,MAAM,SAAS,IAAI,MAAM,UAAU;CACnC,IAAI,QAAQ,UAAU,MACpB,OAAO,+BAA+B,OAAO;CAC/C,IAAI,QAAQ,aAAa,MACvB,OAAO,kCAAkC,OAAO;CAClD,KAAK,MAAM,CAAC,QAAQ,GAAG,YAAY,mBAAmB;EACpD,IAAI,OAAO,WAAW,MAAM;EAC5B,MAAM,SAAS,QAAQ,MAAM,QAAQ,OAAO,QAAQ,IAAI;EACxD,IAAI,UAAU,MAAM,OAAO,UAAU,OAAO;CAC9C;CACA,IAAI,IAAI,iBAAiB,MAAM;EAC7B,OAAO,uBAAuB;EAC9B,OAAO,uBAAuB;CAChC,OAAO,IAAI,OAAO,IAAI,iBAAiB,UAAU;EAC/C,OAAO,yBACL,OAAO,QAAQ,OAAO,cAAc;EACtC,OAAO,yBAAyB,OAAO,cAAc;EACrD,MAAM,EAAE,SAAS,UAAU,aAAa,IAAI;EAC5C,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;GACjD,MAAM,WAAW,WAAW;GAC5B,OAAO,OAAO,OAAO,SAAS,QAAQ,WAAW,KAAK,aAAa,GAAG;EACxE;CACF;CACA,MAAM,OAAO,IAAI,eAAe,UAAU,UAAU;CACpD,OAAO;EACL;EACA;EACA;EACA;EACA,IACE,OAAO,wBACP,OAAO,QACP,OAAO,eACN,SAAS,UAAU,YAAY;EAClC,IACE,OAAO,wBACP,OAAO,eACN,SAAS,UAAU,YAAY;CACpC;AACF;;AAGA,SAAgB,yBACd,SAC2B;CAC3B,IAAI,WAAW,UAAU,IAAI,OAAO;CACpC,IAAI,YAAY,MAAM,OAAO;CAC7B,WAAW,oBAAgC;EACzC,gBAAgB,OAAO,SAAS;GAC9B,IACE,OAAO,qBAAqB,cACxB,mBACA,gBAAgB,GAEpB,MAAM,IAAI,MACR,UAAU,KAAK,sJACjB;GAEF,MAAM,SAAS,aAAa,IAAI,IAAI;GACpC,IAAI,YAAY,cAAc;IAC5B,MAAM,SAAS,QAAQ,OAAO,QAAQ;IACtC,IAAI,UAAU,MAAM;KAClB,MAAM,SAAS,MAAM,OAAO;KAC5B,MAAM,QAAQ,aAAa,SAAS,OAAO,UAAU;KACrD,IAAI,SAAS,SAAS,MAAM,OAAO,MAAM,OAAO;KAChD,IAAI,WAAW,SAAS,YAAY,OAClC,OAAO,sBAAsB,MAAM,KAAK;KAC1C,MAAM,IAAI,MACR,UAAU,KAAK,0GACjB;IACF;IACA,MAAM,UAAU,2BAA2B;IAC3C,MAAM,EAAE,WAAW,mBAAmB,UAAU,MAAM,UAAU;IAChE,MAAM,gBAAgB,OAAO;IAC7B,IAAI,iBAAiB,MAEnB,OAAO,sBAAsB,OAAM,MADd,cAAc,EAAA,CACO,OAAO;IAEnD,IAAI,QAAQ,YAAY,MACtB,MAAM,IAAI,MACR,UAAU,KAAK,gGACjB;GAEJ,OAAO;IACL,MAAM,SAAS,QAAQ,YAAY,QAAQ;IAC3C,IAAI;IACJ,IAAI,UAAU,MAAM;KAClB,MAAM,SAAS,MAAM,OAAO;KAC5B,SAAS,aAAa,SAAS,OAAO,UAAU;IAClD,OAAO;KACL,MAAM,UAAU,uBAAuB;KACvC,MAAM,EAAE,WACN,mBAAmB,UAAU,MAAM,UAAU;KAC/C,MAAM,aAAa,OAAO,SAAS,IAAI;KACvC,IAAI,cAAc,QAAQ,QAAQ,OAAO,MACvC,MAAM,IAAI,MACR,UAAU,KAAK,2FACjB;KAEF,IAAI,cAAc,MAChB,MAAM,IAAI,MAAM,yCAAyC,KAAK,EAAE;KAClE,MAAM,SAAS,MAAM,WAAW,KAAK;KACrC,SAAS,aAAa,SAAS,OAAO,UAAU;IAClD;IACA,IAAI,WAAW,UAAU,YAAY,QACnC,MAAM,IAAI,MACR,UAAU,KAAK,iGACjB;IAEF,MAAM,OAAO,cAAc;IAC3B,MAAM,EAAE,gBAAgB,4BACtB,gBAAgB,UAAU,MAAM,OAAO;IACzC,IAAI,kBAAkB,UAAU,OAAO,gBAAgB,MACrD,OAAO;KACL,GAAG;KACH,UAAU,eACR,wBAAwB,OAAO,YAAY,CAC7C;IACF;IAEF,IAAI,cAAc,UAAU,OAAO,YAAY,MAC7C,OAAO;KAAE,GAAG;KAAQ,UAAU,eAAe,OAAO,QAAQ;IAAE;IAEhE,MAAM,WAAW,eAAe,MAAM;IACtC,OAAO;KACL,MAAM,SAAS;KACf,MAAM,SAAS;KACf,IAAI,SAAS;KACb,IAAI,SAAS;KACb,QAAQ,SAAS;KACjB;IACF;GACF;GACA,MAAM,IAAI,MAAM,yCAAyC,KAAK,EAAE;EAClE;EACA,iBAAiB,OAAO,SAAS;GAC/B,IAAI,MAAM,SAAS,MACjB,MAAM,IAAI,MACR,6BAA6B,KAAK,8BAA8B,MAAM,MACxE;GACF,OAAO;EACT;CACF,CAAC;CACD,UAAU,IAAI,SAAS,QAAQ;CAC/B,OAAO;AACT"}
@@ -0,0 +1,23 @@
1
+ import { ThemeLike } from "@pierre/theming";
2
+ import { ThemeRegistrationResolved } from "shiki";
3
+ import { Theme } from "@pierre/highlights";
4
+ //#region src/highlighter/themes/types.d.ts
5
+ /** Shared editor colors with the syntax theme for each supported backend. */
6
+ interface DiffsTheme extends ThemeLike {
7
+ name: string;
8
+ type: 'dark' | 'light';
9
+ fg: string;
10
+ bg: string;
11
+ textmate?: ThemeRegistrationResolved;
12
+ zed?: Theme;
13
+ cssVariables?: CSSVariablesThemeOptions;
14
+ }
15
+ interface CSSVariablesThemeOptions {
16
+ name?: string;
17
+ variablePrefix?: string;
18
+ variableDefaults?: Record<string, string>;
19
+ fontStyle?: boolean;
20
+ }
21
+ //#endregion
22
+ export { CSSVariablesThemeOptions, DiffsTheme };
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/highlighter/themes/types.ts"],"mappings":";;;;;UAKiB,mBAAmB;EAClC;EACA;EACA;EACA;EACA,WAAW;EACX,MAAM;EACN,eAAe;;UAGA;EACf;EACA;EACA,mBAAmB;EACnB"}
File without changes
@@ -0,0 +1,35 @@
1
+ import { ThemedToken } from "./types.js";
2
+ import { HighlightedToken } from "../types.js";
3
+ import { TextDocument } from "../editor/textDocument.js";
4
+ //#region src/highlighter/tokenizer-types.d.ts
5
+ /** Document and callbacks owned by an editor's incremental tokenizer. */
6
+ interface DiffsEditorTokenizerOptions {
7
+ textDocument: Pick<TextDocument, 'getText' | 'getLineText' | 'lineCount' | 'languageId' | 'version'>;
8
+ theme: string;
9
+ tokenizeMaxLineLength?: number;
10
+ matchBrackets?: boolean;
11
+ onDeferTokenize: (lines: Map<number, HighlightedToken[]>) => void;
12
+ __debug?: boolean;
13
+ }
14
+ /** Previously emitted provisional tokens to remove before applying new tokens. */
15
+ interface RecallToken {
16
+ recall: number;
17
+ }
18
+ interface DiffsStreamTokenizerEnqueueResult {
19
+ recall: number;
20
+ stable: ThemedToken[];
21
+ unstable: ThemedToken[];
22
+ }
23
+ /** Incremental source chunks with a replaceable final line. */
24
+ interface DiffsStreamTokenizer {
25
+ enqueue(chunk: string): DiffsStreamTokenizerEnqueueResult | Promise<DiffsStreamTokenizerEnqueueResult>;
26
+ close(): {
27
+ stable: ThemedToken[];
28
+ };
29
+ clear(): void;
30
+ clone(): DiffsStreamTokenizer;
31
+ dispose(): void;
32
+ }
33
+ //#endregion
34
+ export { DiffsEditorTokenizerOptions, DiffsStreamTokenizer, DiffsStreamTokenizerEnqueueResult, RecallToken };
35
+ //# sourceMappingURL=tokenizer-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer-types.d.ts","names":[],"sources":["../../src/highlighter/tokenizer-types.ts"],"mappings":";;;;;UAKiB;EACf,cAAc,KACZ;EAGF;EACA;EACA;EACA,kBAAkB,OAAO,YAAY;EACrC;;;UAIe;EACf;;UAGe;EACf;EACA,QAAQ;EACR,UAAU;;;UAIK;EACf,QACE,gBAEE,oCACA,QAAQ;EACZ;IAAW,QAAQ;;EACnB;EACA,SAAS;EACT"}
File without changes
@@ -0,0 +1,55 @@
1
+ import { Properties } from "../node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.js";
2
+ import { DiffsEditorTokenizer } from "./DiffsEditorTokenizer.js";
3
+ import { DiffsEditorTokenizerOptions, DiffsStreamTokenizer } from "./tokenizer-types.js";
4
+ import { DiffsHighlighter } from "./DiffsHighlighter.js";
5
+ //#region src/highlighter/types.d.ts
6
+ /** One styled run, with its absolute UTF-16 offset in the source. */
7
+ interface ThemedToken {
8
+ content: string;
9
+ offset: number;
10
+ color?: string;
11
+ bgColor?: string;
12
+ fontStyle?: number;
13
+ htmlStyle?: Record<string, string>;
14
+ htmlAttrs?: Record<string, string>;
15
+ type?: number;
16
+ }
17
+ interface DecorationItem {
18
+ start: number | {
19
+ line: number;
20
+ character: number;
21
+ };
22
+ end: number | {
23
+ line: number;
24
+ character: number;
25
+ };
26
+ properties?: Properties;
27
+ alwaysWrap?: boolean;
28
+ }
29
+ type CodeToTokensOptions = {
30
+ lang: string;
31
+ defaultColor?: string | false;
32
+ cssVariablePrefix?: string;
33
+ tokenizeMaxLineLength?: number;
34
+ tokenizeTimeLimit?: number;
35
+ mergeWhitespaces?: 'never' | 'always';
36
+ } & ({
37
+ theme: string;
38
+ themes?: undefined;
39
+ } | {
40
+ theme?: undefined;
41
+ themes: Record<string, string>;
42
+ });
43
+ type CodeToHtmlOptions = CodeToTokensOptions & {
44
+ decorations?: DecorationItem[];
45
+ };
46
+ interface TokensResult {
47
+ tokens: ThemedToken[][];
48
+ fg?: string;
49
+ bg?: string;
50
+ themeName?: string;
51
+ rootStyle?: string | false;
52
+ }
53
+ //#endregion
54
+ export { CodeToHtmlOptions, CodeToTokensOptions, DecorationItem, type DiffsEditorTokenizer, type DiffsEditorTokenizerOptions, type DiffsHighlighter, type DiffsStreamTokenizer, ThemedToken, TokensResult };
55
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/highlighter/types.ts"],"mappings":";;;;;;UAUiB;EACf;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ,YAAY;EACZ;;UAGe;EACf;IAAkB;IAAc;;EAChC;IAAgB;IAAc;;EAC9B,aAAa;EACb;;KAGU;EACV;EACA;EACA;EACA;EACA;EACA;;EAEI;EAAe;;EACf;EAAmB,QAAQ;;KAGrB,oBAAoB;EAC9B,cAAc;;UAGC;EACf,QAAQ;EACR;EACA;EACA;EACA"}
File without changes
package/dist/index.d.ts CHANGED
@@ -1,4 +1,9 @@
1
- import { AnnotationLineMap, AnnotationSide, AnnotationSpan, AppliedThemeStyleCache, BaseCodeOptions, BaseDiffOptions, BaseDiffOptionsWithDefaults, BundledLanguage, ChangeContent, ChangeTypes, CodeColumnType, CodeToHastOptions, CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewItemScrollTarget, CodeViewLayout, CodeViewLineScrollTarget, CodeViewPositionScrollTarget, CodeViewRangeScrollTarget, CodeViewScrollBehavior, CodeViewScrollTarget, ConflictResolverTypes, ContextContent, CreatePatchOptionsNonabortable, CustomPreProperties, DecorationItem, DiffAcceptRejectHunkConfig, DiffAcceptRejectHunkType, DiffFileInput, DiffIndicators, DiffLineAnnotation, DiffLineEventBaseProps, DiffTokenEventBaseProps, DiffsHighlighter, DiffsThemeNames, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffContentsLoader, FileDiffLoadedChangedFiles, FileDiffLoadedFiles, FileDiffLoadedPureRenamedFile, FileDiffMetadata, FileHeaderRenderMode, ForceDiffPlainTextOptions, ForceFilePlainTextOptions, GapSpan, HighlightedToken, HighlighterTypes, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, MaybeDiffFileInput, MergeConflictActionPayload, MergeConflictMarkerRow, MergeConflictMarkerRowType, MergeConflictRegion, MergeConflictResolution, NumericScrollLineAnchor, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PendingCodeViewLayoutReset, PostRenderPhase, PrePropertiesConfig, ProcessFileConflictData, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderFilenameSuffixCallback, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, SelectedLineRange, SelectionPoint, SelectionSide, SharedRenderState, ShikiTransformer, SmoothScrollSettings, StickySpecs, SupportedLanguages, ThemeRegistration, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, TokenEventBase, VirtualFileMetrics, VirtualWindowSpecs } from "./types.js";
1
+ import { CSSVariablesThemeOptions, DiffsTheme } from "./highlighter/themes/types.js";
2
+ import { DiffsEditorTokenizer } from "./highlighter/DiffsEditorTokenizer.js";
3
+ import { DiffsEditorTokenizerOptions, DiffsStreamTokenizer, RecallToken } from "./highlighter/tokenizer-types.js";
4
+ import { DiffsHighlighter } from "./highlighter/DiffsHighlighter.js";
5
+ import { CodeToHtmlOptions, CodeToTokensOptions, DecorationItem, ThemedToken, TokensResult } from "./highlighter/types.js";
6
+ import { AnnotationLineMap, AnnotationSide, AnnotationSpan, AppliedThemeStyleCache, BaseCodeOptions, BaseDiffOptions, BaseDiffOptionsWithDefaults, ChangeContent, ChangeTypes, CodeColumnType, CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewItemScrollTarget, CodeViewLayout, CodeViewLineScrollTarget, CodeViewPositionScrollTarget, CodeViewRangeScrollTarget, CodeViewScrollBehavior, CodeViewScrollTarget, ConflictResolverTypes, ContextContent, CreatePatchOptionsNonabortable, CustomPreProperties, DiffAcceptRejectHunkConfig, DiffAcceptRejectHunkType, DiffFileInput, DiffIndicators, DiffLineAnnotation, DiffLineEventBaseProps, DiffTokenEventBaseProps, DiffsThemeNames, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffContentsLoader, FileDiffLoadedChangedFiles, FileDiffLoadedFiles, FileDiffLoadedPureRenamedFile, FileDiffMetadata, FileHeaderRenderMode, ForceDiffPlainTextOptions, ForceFilePlainTextOptions, GapSpan, HighlightedToken, HighlighterTypes, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, MaybeDiffFileInput, MergeConflictActionPayload, MergeConflictMarkerRow, MergeConflictMarkerRowType, MergeConflictRegion, MergeConflictResolution, NumericScrollLineAnchor, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PendingCodeViewLayoutReset, PostRenderPhase, PrePropertiesConfig, ProcessFileConflictData, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderFilenameSuffixCallback, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, SelectedLineRange, SelectionPoint, SelectionSide, SharedRenderState, SmoothScrollSettings, StickySpecs, SupportedLanguages, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemesType, TokenEventBase, VirtualFileMetrics, VirtualWindowSpecs } from "./types.js";
2
7
  import { FileDiffEditCompleteEvent, FileEditCompleteEvent } from "./editor/types.js";
3
8
  import { GetHoveredLineResult, GetLineIndexUtility, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, LogTypes, MergeConflictActionTarget, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, SelectionWriteOptions, pluckInteractionOptions } from "./managers/InteractionManager.js";
4
9
  import { ResizeManager, ResizeManagerColumnVariableMode, ResizeManagerSetupOptions } from "./managers/ResizeManager.js";
@@ -11,14 +16,14 @@ import { Virtualizer, VirtualizerConfig, VirtualizerScrollOptions } from "./comp
11
16
  import { VirtualizedFile } from "./components/VirtualizedFile.js";
12
17
  import { VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, VirtualizedFileDiff } from "./components/VirtualizedFileDiff.js";
13
18
  import { CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CodeView, CodeViewCoordinator, CodeViewCreateEditorOptions, CodeViewItemEditCompleteEventMap, CodeViewItemEditCompleteHandler, CodeViewLineSelection, CodeViewMode, CodeViewModeItemMap, CodeViewOptions, CodeViewRenderedDiffItem, CodeViewRenderedFileItem, CodeViewRenderedItem, CodeViewScrollListener, CodeViewSlotSnapshot } from "./components/CodeView.js";
14
- import { CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, FILENAME_HEADER_REGEX, FILE_CONTEXT_BLOB, GIT_DIFF_FILE_BREAK_REGEX, HEADER_FILENAME_SUFFIX_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, SPLIT_WITH_NEWLINES, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
15
- import { CodeToTokenTransformStreamOptions, RecallToken, ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions } from "./shiki-stream/types.js";
16
- import { ShikiStreamTokenizer } from "./shiki-stream/tokenizer.js";
19
+ import { CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_HIGHLIGHTER, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, FILENAME_HEADER_REGEX, FILE_CONTEXT_BLOB, GIT_DIFF_FILE_BREAK_REGEX, HEADER_FILENAME_SUFFIX_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, SPLIT_WITH_NEWLINES, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
20
+ import { CodeToTokenTransformStreamOptions } from "./shiki-stream/types.js";
17
21
  import { CodeToTokenTransformStream } from "./shiki-stream/stream.js";
18
22
  import "./shiki-stream/index.js";
19
23
  import { FileStream, FileStreamOptions } from "./components/FileStream.js";
20
24
  import { MergeConflictActionsTypeOption, RenderMergeConflictActions, UnresolvedFile, UnresolvedFileHydrationProps, UnresolvedFileOptions, UnresolvedFileRenderProps, getUnresolvedDiffHunksRendererOptions } from "./components/UnresolvedFile.js";
21
25
  import { LineAnnotationPosition, getLineAnnotationSource, recordLineAnnotationSource } from "./utils/lineAnnotationIdentity.js";
26
+ import { HighlighterDisposedError, getHighlighterType } from "./highlighter/highlighterType.js";
22
27
  import { areLanguagesAttached } from "./highlighter/languages/areLanguagesAttached.js";
23
28
  import { attachResolvedLanguages } from "./highlighter/languages/attachResolvedLanguages.js";
24
29
  import { cleanUpResolvedLanguages } from "./highlighter/languages/cleanUpResolvedLanguages.js";
@@ -29,16 +34,17 @@ import { hasResolvedLanguages } from "./highlighter/languages/hasResolvedLanguag
29
34
  import { registerCustomLanguage } from "./highlighter/languages/registerCustomLanguage.js";
30
35
  import { resolveLanguage } from "./highlighter/languages/resolveLanguage.js";
31
36
  import { resolveLanguages } from "./highlighter/languages/resolveLanguages.js";
32
- import { disposeHighlighter, getHighlighterIfLoaded, getSharedHighlighter, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, preloadHighlighter } from "./highlighter/shared_highlighter.js";
37
+ import { HighlighterOptions, createHighlighter, disposeHighlighter, getHighlighterIfLoaded, getSharedHighlighter, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, preloadHighlighter } from "./highlighter/shared_highlighter.js";
33
38
  import { areThemesAttached } from "./highlighter/themes/areThemesAttached.js";
34
39
  import { attachResolvedThemes } from "./highlighter/themes/attachResolvedThemes.js";
35
40
  import { cleanUpResolvedThemes } from "./highlighter/themes/cleanUpResolvedThemes.js";
36
- import { AttachedThemes } from "./highlighter/themes/constants.js";
41
+ import { createCSSVariablesTheme } from "./highlighter/themes/createCSSVariablesTheme.js";
37
42
  import { getResolvedOrResolveTheme } from "./highlighter/themes/getResolvedOrResolveTheme.js";
38
43
  import { getResolvedThemes } from "./highlighter/themes/getResolvedThemes.js";
39
44
  import { hasResolvedThemes } from "./highlighter/themes/hasResolvedThemes.js";
40
45
  import { registerCustomCSSVariableTheme } from "./highlighter/themes/registerCustomCSSVariableTheme.js";
41
- import { CustomThemeLoader, registerCustomTheme } from "./highlighter/themes/registerCustomTheme.js";
46
+ import { CustomThemeLoader } from "./highlighter/themes/themeResolver.js";
47
+ import { registerCustomTheme } from "./highlighter/themes/registerCustomTheme.js";
42
48
  import { resolveTheme } from "./highlighter/themes/resolveTheme.js";
43
49
  import { resolveThemes } from "./highlighter/themes/resolveThemes.js";
44
50
  import { clearRenderQueue, dequeueRender, queueRender } from "./managers/UniversalRenderingManager.js";
@@ -73,7 +79,6 @@ import { createRowNodes } from "./utils/createRowNodes.js";
73
79
  import { createSeparator } from "./utils/createSeparator.js";
74
80
  import { createSpanFromToken } from "./utils/createSpanNodeFromToken.js";
75
81
  import { createStyleElement, createThemeStyleElement } from "./utils/createStyleElement.js";
76
- import { createTransformerWithState } from "./utils/createTransformerWithState.js";
77
82
  import { createUnsafeCSSStyleNode } from "./utils/createUnsafeCSSStyleNode.js";
78
83
  import { createWindowFromScrollPosition } from "./utils/createWindowFromScrollPosition.js";
79
84
  import { patchScrollbarGutterSize, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS } from "./utils/cssWrappers.js";
@@ -110,5 +115,4 @@ import { resolveRegion } from "./utils/resolveRegion.js";
110
115
  import { setLanguageOverride } from "./utils/setLanguageOverride.js";
111
116
  import { setPreNodeProperties } from "./utils/setWrapperNodeProps.js";
112
117
  import { trimPatchContext } from "./utils/trimPatchContext.js";
113
- import { codeToHtml, createCssVariablesTheme as createCSSVariablesTheme } from "shiki";
114
- export { type AnnotationLineMap, type AnnotationSide, type AnnotationSpan, type AppliedThemeStyleCache, AttachedLanguages, AttachedThemes, type BaseCodeOptions, type BaseDiffOptions, type BaseDiffOptionsWithDefaults, type BundledLanguage, CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, type ChangeContent, type ChangeTypes, type CodeColumnType, type CodeToHastOptions, CodeToTokenTransformStream, CodeToTokenTransformStreamOptions, CodeView, CodeViewCoordinator, CodeViewCreateEditorOptions, type CodeViewDiffItem, type CodeViewFileItem, type CodeViewItem, CodeViewItemEditCompleteEventMap, CodeViewItemEditCompleteHandler, type CodeViewItemScrollTarget, type CodeViewLayout, type CodeViewLineScrollTarget, CodeViewLineSelection, CodeViewMode, CodeViewModeItemMap, CodeViewOptions, type CodeViewPositionScrollTarget, type CodeViewRangeScrollTarget, CodeViewRenderedDiffItem, CodeViewRenderedFileItem, CodeViewRenderedItem, type CodeViewScrollBehavior, CodeViewScrollListener, type CodeViewScrollTarget, CodeViewSlotSnapshot, type ConflictResolverTypes, type ContextContent, CreateFileHeaderElementProps, type CreatePatchOptionsNonabortable, type CustomPreProperties, CustomThemeLoader, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, DIFFS_TAG_NAME, type DecorationItem, type DiffAcceptRejectHunkConfig, type DiffAcceptRejectHunkType, type DiffFileInput, DiffHunksRenderer, DiffHunksRendererOptions, DiffHunksRendererOptionsWithDefaults, type DiffIndicators, type DiffLineAnnotation, type DiffLineEventBaseProps, type DiffTokenEventBaseProps, type DiffsHighlighter, type DiffsThemeNames, EMPTY_RENDER_RANGE, EXTENSION_TO_FILE_FORMAT, type ExpansionDirections, type ExtensionFormatMap, FILENAME_HEADER_REGEX, FILE_CONTEXT_BLOB, File, type FileContents, FileDiff, type FileDiffContentsLoader, FileDiffEditChangeHandler, type FileDiffEditCompleteEvent, FileDiffEditCompleteHandler, FileDiffHydrationProps, type FileDiffLoadedChangedFiles, type FileDiffLoadedFiles, type FileDiffLoadedPureRenamedFile, type FileDiffMetadata, FileDiffOptions, FileDiffRenderBaseProps, FileDiffRenderProps, FileDiffType, FileEditChangeHandler, type FileEditCompleteEvent, FileEditCompleteHandler, type FileHeaderRenderMode, FileHydrateProps, FileOptions, FileRenderProps, FileRenderResult, FileRenderer, FileRendererOptions, FileStream, FileStreamOptions, type ForceDiffPlainTextOptions, type ForceFilePlainTextOptions, GIT_DIFF_FILE_BREAK_REGEX, type GapSpan, GetHoveredLineResult, GetLineIndexUtility, HEADER_FILENAME_SUFFIX_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, type HighlightedToken, type HighlighterTypes, type Hunk, type HunkData, type HunkExpansionRegion, type HunkLineType, type HunkSeparators, HunksRenderResult, INDEX_LINE_METADATA, InjectedRow, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, type LanguageRegistration, type LineAnnotation, LineAnnotationPosition, LineDecoration, type LineDiffTypes, type LineEventBaseProps, type LineInfo, type LineSpans, type LineTypes, LogTypes, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, type MaybeDiffFileInput, type MergeConflictActionPayload, MergeConflictActionTarget, MergeConflictActionsTypeOption, type MergeConflictMarkerRow, type MergeConflictMarkerRowType, type MergeConflictRegion, type MergeConflictResolution, type NumericScrollLineAnchor, type ObservedAnnotationNodes, type ObservedGridNodes, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, ParsedLine, type ParsedPatch, type PendingCodeViewLayoutReset, type PostRenderPhase, type PrePropertiesConfig, type ProcessFileConflictData, RecallToken, RegisteredCustomLanguages, type RenderDiffFilesResult, type RenderDiffOptions, type RenderDiffResult, type RenderFileMetadata, type RenderFileOptions, type RenderFileResult, type RenderHeaderFilenameSuffixCallback, type RenderHeaderMetadataCallback, type RenderHeaderPrefixCallback, RenderMergeConflictActions, type RenderRange, type RenderWindow, type RenderedDiffASTCache, type RenderedFileASTCache, RenderedLineContext, ResizeManager, ResizeManagerColumnVariableMode, ResizeManagerSetupOptions, ResolvedLanguages, ResolvingLanguages, SPLIT_WITH_NEWLINES, SVGSpriteNames, SVGSpriteSheet, ScrollSyncManager, type SelectedLineRange, type SelectionPoint, type SelectionSide, SelectionWriteOptions, type SharedRenderState, ShikiStreamTokenizer, ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions, type ShikiTransformer, type SmoothScrollSettings, SplitInjectedRow, SplitInjectedRowPlacement, SplitLineDecorationProps, type StickySpecs, type SupportedLanguages, THEME_CSS_ATTRIBUTE, type ThemeRegistration, type ThemeRegistrationResolved, type ThemeTypes, type ThemedDiffResult, type ThemedFileResult, type ThemedToken, type ThemesType, type TokenEventBase, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnifiedInjectedRowPlacement, UnifiedLineDecorationProps, UnresolvedFile, UnresolvedFileHydrationProps, UnresolvedFileOptions, UnresolvedFileRenderProps, VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, type VirtualFileMetrics, type VirtualWindowSpecs, VirtualizedFile, VirtualizedFileDiff, Virtualizer, VirtualizerConfig, VirtualizerScrollOptions, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areDiffTargetsEqual, areFileRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, clearRenderQueue, cloneFileDiffMetadata, cloneHunks, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createGutterGap, createGutterItem, createGutterUtilityContentNode, createGutterUtilityElement, createGutterWrapper, createHastElement, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createThemeStyleElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, dequeueRender, detachString, diffAcceptRejectHunk, disposeHighlighter, findCodeElement, formatCSSVariablePrefix, getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineAnnotationSource, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, getUnresolvedDiffHunksRendererOptions, hasResolvedLanguages, hasResolvedThemes, hydratePartialDiff, isDefaultRenderRange, isDiffAnnotation, isDiffAnnotationCollection, isFileAnnotation, isFileAnnotationCollection, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, patchScrollbarGutterSize, pluckInteractionOptions, prefersReducedMotion, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, recordLineAnnotationSource, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, releaseStringDetachBuffer, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };
118
+ export { type AnnotationLineMap, type AnnotationSide, type AnnotationSpan, type AppliedThemeStyleCache, AttachedLanguages, type BaseCodeOptions, type BaseDiffOptions, type BaseDiffOptionsWithDefaults, CODE_VIEW_DIFF_OPTION_KEYS, CODE_VIEW_FILE_OPTION_KEYS, CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, type CSSVariablesThemeOptions, CUSTOM_HEADER_SLOT_ID, type ChangeContent, type ChangeTypes, type CodeColumnType, type CodeToHtmlOptions, CodeToTokenTransformStream, CodeToTokenTransformStreamOptions, type CodeToTokensOptions, CodeView, CodeViewCoordinator, CodeViewCreateEditorOptions, type CodeViewDiffItem, type CodeViewFileItem, type CodeViewItem, CodeViewItemEditCompleteEventMap, CodeViewItemEditCompleteHandler, type CodeViewItemScrollTarget, type CodeViewLayout, type CodeViewLineScrollTarget, CodeViewLineSelection, CodeViewMode, CodeViewModeItemMap, CodeViewOptions, type CodeViewPositionScrollTarget, type CodeViewRangeScrollTarget, CodeViewRenderedDiffItem, CodeViewRenderedFileItem, CodeViewRenderedItem, type CodeViewScrollBehavior, CodeViewScrollListener, type CodeViewScrollTarget, CodeViewSlotSnapshot, type ConflictResolverTypes, type ContextContent, CreateFileHeaderElementProps, type CreatePatchOptionsNonabortable, type CustomPreProperties, type CustomThemeLoader, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_HIGHLIGHTER, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, DIFFS_TAG_NAME, type DecorationItem, type DiffAcceptRejectHunkConfig, type DiffAcceptRejectHunkType, type DiffFileInput, DiffHunksRenderer, DiffHunksRendererOptions, DiffHunksRendererOptionsWithDefaults, type DiffIndicators, type DiffLineAnnotation, type DiffLineEventBaseProps, type DiffTokenEventBaseProps, type DiffsEditorTokenizer, type DiffsEditorTokenizerOptions, type DiffsHighlighter, type DiffsStreamTokenizer, type DiffsTheme, type DiffsThemeNames, EMPTY_RENDER_RANGE, EXTENSION_TO_FILE_FORMAT, type ExpansionDirections, type ExtensionFormatMap, FILENAME_HEADER_REGEX, FILE_CONTEXT_BLOB, File, type FileContents, FileDiff, type FileDiffContentsLoader, FileDiffEditChangeHandler, type FileDiffEditCompleteEvent, FileDiffEditCompleteHandler, FileDiffHydrationProps, type FileDiffLoadedChangedFiles, type FileDiffLoadedFiles, type FileDiffLoadedPureRenamedFile, type FileDiffMetadata, FileDiffOptions, FileDiffRenderBaseProps, FileDiffRenderProps, FileDiffType, FileEditChangeHandler, type FileEditCompleteEvent, FileEditCompleteHandler, type FileHeaderRenderMode, FileHydrateProps, FileOptions, FileRenderProps, FileRenderResult, FileRenderer, FileRendererOptions, FileStream, FileStreamOptions, type ForceDiffPlainTextOptions, type ForceFilePlainTextOptions, GIT_DIFF_FILE_BREAK_REGEX, type GapSpan, GetHoveredLineResult, GetLineIndexUtility, HEADER_FILENAME_SUFFIX_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, type HighlightedToken, HighlighterDisposedError, HighlighterOptions, type HighlighterTypes, type Hunk, type HunkData, type HunkExpansionRegion, type HunkLineType, type HunkSeparators, HunksRenderResult, INDEX_LINE_METADATA, InjectedRow, InteractionManager, InteractionManagerBaseOptions, InteractionManagerMode, InteractionManagerOptions, type LineAnnotation, LineAnnotationPosition, LineDecoration, type LineDiffTypes, type LineEventBaseProps, type LineInfo, type LineSpans, type LineTypes, LogTypes, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, type MaybeDiffFileInput, type MergeConflictActionPayload, MergeConflictActionTarget, MergeConflictActionsTypeOption, type MergeConflictMarkerRow, type MergeConflictMarkerRowType, type MergeConflictRegion, type MergeConflictResolution, type NumericScrollLineAnchor, type ObservedAnnotationNodes, type ObservedGridNodes, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, OnTokenEventProps, ParsedLine, type ParsedPatch, type PendingCodeViewLayoutReset, type PostRenderPhase, type PrePropertiesConfig, type ProcessFileConflictData, type RecallToken, RegisteredCustomLanguages, type RenderDiffFilesResult, type RenderDiffOptions, type RenderDiffResult, type RenderFileMetadata, type RenderFileOptions, type RenderFileResult, type RenderHeaderFilenameSuffixCallback, type RenderHeaderMetadataCallback, type RenderHeaderPrefixCallback, RenderMergeConflictActions, type RenderRange, type RenderWindow, type RenderedDiffASTCache, type RenderedFileASTCache, RenderedLineContext, ResizeManager, ResizeManagerColumnVariableMode, ResizeManagerSetupOptions, ResolvedLanguages, ResolvingLanguages, SPLIT_WITH_NEWLINES, SVGSpriteNames, SVGSpriteSheet, ScrollSyncManager, type SelectedLineRange, type SelectionPoint, type SelectionSide, SelectionWriteOptions, type SharedRenderState, type SmoothScrollSettings, SplitInjectedRow, SplitInjectedRowPlacement, SplitLineDecorationProps, type StickySpecs, type SupportedLanguages, THEME_CSS_ATTRIBUTE, type ThemeTypes, type ThemedDiffResult, type ThemedFileResult, type ThemedToken, type ThemesType, type TokenEventBase, type TokensResult, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, UnifiedInjectedRowPlacement, UnifiedLineDecorationProps, UnresolvedFile, UnresolvedFileHydrationProps, UnresolvedFileOptions, UnresolvedFileRenderProps, VIRTUALIZED_FILE_DIFF_LAYOUT_CHECKPOINT_INTERVAL, type VirtualFileMetrics, type VirtualWindowSpecs, VirtualizedFile, VirtualizedFileDiff, Virtualizer, VirtualizerConfig, VirtualizerScrollOptions, areDiffLineAnnotationsEqual, areDiffRenderOptionsEqual, areDiffTargetsEqual, areFileRenderOptionsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, clearRenderQueue, cloneFileDiffMetadata, cloneHunks, createAnnotationElement, createAnnotationWrapperNode, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createGutterGap, createGutterItem, createGutterUtilityContentNode, createGutterUtilityElement, createGutterWrapper, createHastElement, createHighlighter, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createThemeStyleElement, createUnsafeCSSStyleNode, createWindowFromScrollPosition, dequeueRender, detachString, diffAcceptRejectHunk, disposeHighlighter, findCodeElement, formatCSSVariablePrefix, getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHighlighterType, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineAnnotationSource, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, getUnresolvedDiffHunksRendererOptions, hasResolvedLanguages, hasResolvedThemes, hydratePartialDiff, isDefaultRenderRange, isDiffAnnotation, isDiffAnnotationCollection, isFileAnnotation, isFileAnnotationCollection, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, patchScrollbarGutterSize, pluckInteractionOptions, prefersReducedMotion, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, recordLineAnnotationSource, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, releaseStringDetachBuffer, renderDiffWithHighlighter, renderFileWithHighlighter, replaceCustomExtensions, resolveConflict, resolveLanguage, resolveLanguages, resolveRegion, resolveTheme, resolveThemes, setCustomExtension, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };