@pierre/diffs 1.5.1 → 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 (304) hide show
  1. package/README.md +4 -3
  2. package/dist/components/CodeView.d.ts +2 -1
  3. package/dist/components/CodeView.d.ts.map +1 -1
  4. package/dist/components/CodeView.js +27 -16
  5. package/dist/components/CodeView.js.map +1 -1
  6. package/dist/components/File.d.ts.map +1 -1
  7. package/dist/components/File.js +14 -7
  8. package/dist/components/File.js.map +1 -1
  9. package/dist/components/FileDiff.d.ts +7 -4
  10. package/dist/components/FileDiff.d.ts.map +1 -1
  11. package/dist/components/FileDiff.js +16 -9
  12. package/dist/components/FileDiff.js.map +1 -1
  13. package/dist/components/FileStream.d.ts +6 -4
  14. package/dist/components/FileStream.d.ts.map +1 -1
  15. package/dist/components/FileStream.js +49 -36
  16. package/dist/components/FileStream.js.map +1 -1
  17. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  18. package/dist/components/VirtualizedFile.js +10 -5
  19. package/dist/components/VirtualizedFile.js.map +1 -1
  20. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  21. package/dist/components/VirtualizedFileDiff.js +3 -4
  22. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  23. package/dist/constants.d.ts +3 -2
  24. package/dist/constants.d.ts.map +1 -1
  25. package/dist/constants.js +2 -1
  26. package/dist/constants.js.map +1 -1
  27. package/dist/editor/editor.d.ts +2 -1
  28. package/dist/editor/editor.d.ts.map +1 -1
  29. package/dist/editor/editor.js +10 -3
  30. package/dist/editor/editor.js.map +1 -1
  31. package/dist/editor/getChangedDocumentLines.d.ts +6 -0
  32. package/dist/editor/getChangedDocumentLines.d.ts.map +1 -0
  33. package/dist/editor/getChangedDocumentLines.js +35 -0
  34. package/dist/editor/getChangedDocumentLines.js.map +1 -0
  35. package/dist/editor/tokenizer.d.ts +6 -4
  36. package/dist/editor/tokenizer.d.ts.map +1 -1
  37. package/dist/editor/tokenizer.js +25 -470
  38. package/dist/editor/tokenizer.js.map +1 -1
  39. package/dist/highlighter/DiffsEditorTokenizer.d.ts +16 -0
  40. package/dist/highlighter/DiffsEditorTokenizer.d.ts.map +1 -0
  41. package/dist/highlighter/DiffsEditorTokenizer.js +0 -0
  42. package/dist/highlighter/DiffsHighlighter.d.ts +41 -0
  43. package/dist/highlighter/DiffsHighlighter.d.ts.map +1 -0
  44. package/dist/highlighter/DiffsHighlighter.js +39 -0
  45. package/dist/highlighter/DiffsHighlighter.js.map +1 -0
  46. package/dist/highlighter/backends/highlights.d.ts +26 -0
  47. package/dist/highlighter/backends/highlights.d.ts.map +1 -0
  48. package/dist/highlighter/backends/highlights.js +71 -0
  49. package/dist/highlighter/backends/highlights.js.map +1 -0
  50. package/dist/highlighter/backends/shiki.d.ts +27 -0
  51. package/dist/highlighter/backends/shiki.d.ts.map +1 -0
  52. package/dist/highlighter/backends/shiki.js +107 -0
  53. package/dist/highlighter/backends/shiki.js.map +1 -0
  54. package/dist/highlighter/highlighterType.d.ts +13 -0
  55. package/dist/highlighter/highlighterType.d.ts.map +1 -0
  56. package/dist/highlighter/highlighterType.js +32 -0
  57. package/dist/highlighter/highlighterType.js.map +1 -0
  58. package/dist/highlighter/highlights-editor.d.ts +24 -0
  59. package/dist/highlighter/highlights-editor.d.ts.map +1 -0
  60. package/dist/highlighter/highlights-editor.js +166 -0
  61. package/dist/highlighter/highlights-editor.js.map +1 -0
  62. package/dist/highlighter/highlights-stream.d.ts +20 -0
  63. package/dist/highlighter/highlights-stream.d.ts.map +1 -0
  64. package/dist/highlighter/highlights-stream.js +93 -0
  65. package/dist/highlighter/highlights-stream.js.map +1 -0
  66. package/dist/highlighter/languages/areLanguagesAttached.d.ts +2 -1
  67. package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
  68. package/dist/highlighter/languages/areLanguagesAttached.js +4 -6
  69. package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -1
  70. package/dist/highlighter/languages/attachResolvedLanguages.d.ts +6 -1
  71. package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
  72. package/dist/highlighter/languages/attachResolvedLanguages.js +6 -11
  73. package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
  74. package/dist/highlighter/languages/constants.d.ts +1 -1
  75. package/dist/highlighter/languages/getResolvedLanguages.d.ts +1 -1
  76. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
  77. package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
  78. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  79. package/dist/highlighter/languages/resolveLanguage.js +19 -16
  80. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  81. package/dist/highlighter/languages/resolveLanguages.d.ts +1 -1
  82. package/dist/highlighter/shared_highlighter.d.ts +23 -9
  83. package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  84. package/dist/highlighter/shared_highlighter.js +59 -47
  85. package/dist/highlighter/shared_highlighter.js.map +1 -1
  86. package/dist/highlighter/shiki-editor.d.ts +25 -0
  87. package/dist/highlighter/shiki-editor.d.ts.map +1 -0
  88. package/dist/highlighter/shiki-editor.js +483 -0
  89. package/dist/highlighter/shiki-editor.js.map +1 -0
  90. package/dist/highlighter/shiki-stream.d.ts +20 -0
  91. package/dist/highlighter/shiki-stream.d.ts.map +1 -0
  92. package/dist/highlighter/shiki-stream.js +60 -0
  93. package/dist/highlighter/shiki-stream.js.map +1 -0
  94. package/dist/highlighter/stream-tokenizer.d.ts +40 -0
  95. package/dist/highlighter/stream-tokenizer.d.ts.map +1 -0
  96. package/dist/highlighter/stream-tokenizer.js +70 -0
  97. package/dist/highlighter/stream-tokenizer.js.map +1 -0
  98. package/dist/highlighter/themes/areThemesAttached.d.ts +3 -2
  99. package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
  100. package/dist/highlighter/themes/areThemesAttached.js +5 -4
  101. package/dist/highlighter/themes/areThemesAttached.js.map +1 -1
  102. package/dist/highlighter/themes/attachResolvedThemes.d.ts +5 -2
  103. package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
  104. package/dist/highlighter/themes/attachResolvedThemes.js +4 -16
  105. package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
  106. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts +3 -1
  107. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
  108. package/dist/highlighter/themes/cleanUpResolvedThemes.js +8 -5
  109. package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
  110. package/dist/highlighter/themes/createCSSVariablesTheme.d.ts +7 -0
  111. package/dist/highlighter/themes/createCSSVariablesTheme.d.ts.map +1 -0
  112. package/dist/highlighter/themes/createCSSVariablesTheme.js +89 -0
  113. package/dist/highlighter/themes/createCSSVariablesTheme.js.map +1 -0
  114. package/dist/highlighter/themes/createCachedLoader.d.ts +5 -0
  115. package/dist/highlighter/themes/createCachedLoader.d.ts.map +1 -0
  116. package/dist/highlighter/themes/createCachedLoader.js +15 -0
  117. package/dist/highlighter/themes/createCachedLoader.js.map +1 -0
  118. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts +3 -2
  119. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
  120. package/dist/highlighter/themes/getResolvedOrResolveTheme.js +4 -4
  121. package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
  122. package/dist/highlighter/themes/getResolvedThemes.d.ts +3 -2
  123. package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
  124. package/dist/highlighter/themes/getResolvedThemes.js +4 -3
  125. package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
  126. package/dist/highlighter/themes/hasResolvedThemes.d.ts +2 -2
  127. package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
  128. package/dist/highlighter/themes/hasResolvedThemes.js +4 -3
  129. package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
  130. package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
  131. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +3 -3
  132. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
  133. package/dist/highlighter/themes/registerCustomTheme.d.ts +9 -4
  134. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  135. package/dist/highlighter/themes/registerCustomTheme.js +8 -16
  136. package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
  137. package/dist/highlighter/themes/resolveTheme.d.ts +3 -2
  138. package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
  139. package/dist/highlighter/themes/resolveTheme.js +4 -7
  140. package/dist/highlighter/themes/resolveTheme.js.map +1 -1
  141. package/dist/highlighter/themes/resolveThemes.d.ts +3 -2
  142. package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
  143. package/dist/highlighter/themes/resolveThemes.js +4 -7
  144. package/dist/highlighter/themes/resolveThemes.js.map +1 -1
  145. package/dist/highlighter/themes/themeResolver.d.ts +10 -4
  146. package/dist/highlighter/themes/themeResolver.d.ts.map +1 -1
  147. package/dist/highlighter/themes/themeResolver.js +141 -2
  148. package/dist/highlighter/themes/themeResolver.js.map +1 -1
  149. package/dist/highlighter/themes/types.d.ts +23 -0
  150. package/dist/highlighter/themes/types.d.ts.map +1 -0
  151. package/dist/highlighter/themes/types.js +0 -0
  152. package/dist/highlighter/tokenizer-types.d.ts +35 -0
  153. package/dist/highlighter/tokenizer-types.d.ts.map +1 -0
  154. package/dist/highlighter/tokenizer-types.js +0 -0
  155. package/dist/highlighter/types.d.ts +55 -0
  156. package/dist/highlighter/types.d.ts.map +1 -0
  157. package/dist/highlighter/types.js +0 -0
  158. package/dist/index.d.ts +14 -10
  159. package/dist/index.js +16 -18
  160. package/dist/managers/InteractionManager.d.ts.map +1 -1
  161. package/dist/managers/InteractionManager.js +2 -2
  162. package/dist/managers/InteractionManager.js.map +1 -1
  163. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +9 -1
  164. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -1
  165. package/dist/react/CodeView.js +1 -1
  166. package/dist/react/index.d.ts +8 -3
  167. package/dist/renderers/DiffHunksRenderer.d.ts +3 -2
  168. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  169. package/dist/renderers/DiffHunksRenderer.js +50 -24
  170. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  171. package/dist/renderers/FileRenderer.d.ts +2 -1
  172. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  173. package/dist/renderers/FileRenderer.js +33 -24
  174. package/dist/renderers/FileRenderer.js.map +1 -1
  175. package/dist/shiki-stream/index.d.ts +3 -3
  176. package/dist/shiki-stream/index.js +1 -2
  177. package/dist/shiki-stream/stream.d.ts +4 -4
  178. package/dist/shiki-stream/stream.d.ts.map +1 -1
  179. package/dist/shiki-stream/stream.js +20 -9
  180. package/dist/shiki-stream/stream.js.map +1 -1
  181. package/dist/shiki-stream/types.d.ts +7 -38
  182. package/dist/shiki-stream/types.d.ts.map +1 -1
  183. package/dist/ssr/FileDiffReact.js +1 -1
  184. package/dist/ssr/index.d.ts +7 -2
  185. package/dist/ssr/renderHTML.js +2 -2
  186. package/dist/ssr/renderHTML.js.map +1 -1
  187. package/dist/style.js +1 -1
  188. package/dist/style.js.map +1 -1
  189. package/dist/types.d.ts +13 -13
  190. package/dist/types.d.ts.map +1 -1
  191. package/dist/utils/computeVirtualFileMetrics.d.ts +2 -1
  192. package/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -1
  193. package/dist/utils/computeVirtualFileMetrics.js +5 -3
  194. package/dist/utils/computeVirtualFileMetrics.js.map +1 -1
  195. package/dist/utils/createSpanNodeFromToken.d.ts +3 -2
  196. package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
  197. package/dist/utils/createSpanNodeFromToken.js +4 -5
  198. package/dist/utils/createSpanNodeFromToken.js.map +1 -1
  199. package/dist/utils/cssWrappers.d.ts.map +1 -1
  200. package/dist/utils/cssWrappers.js +12 -0
  201. package/dist/utils/cssWrappers.js.map +1 -1
  202. package/dist/utils/getDiffHunksRendererOptions.js +1 -0
  203. package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
  204. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  205. package/dist/utils/getFiletypeFromFileName.js +21 -3
  206. package/dist/utils/getFiletypeFromFileName.js.map +1 -1
  207. package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  208. package/dist/utils/getHighlighterOptions.js +3 -2
  209. package/dist/utils/getHighlighterOptions.js.map +1 -1
  210. package/dist/utils/getHighlighterThemeStyles.d.ts +2 -1
  211. package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
  212. package/dist/utils/getHighlighterThemeStyles.js +13 -3
  213. package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
  214. package/dist/utils/getTokenOptions.d.ts +7 -0
  215. package/dist/utils/getTokenOptions.d.ts.map +1 -0
  216. package/dist/utils/getTokenOptions.js +16 -0
  217. package/dist/utils/getTokenOptions.js.map +1 -0
  218. package/dist/utils/hastToHtml.d.ts +10 -0
  219. package/dist/utils/hastToHtml.d.ts.map +1 -0
  220. package/dist/utils/hastToHtml.js +125 -0
  221. package/dist/utils/hastToHtml.js.map +1 -0
  222. package/dist/utils/parseDiffDecorations.d.ts +2 -1
  223. package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  224. package/dist/utils/platform.d.ts +2 -1
  225. package/dist/utils/platform.d.ts.map +1 -1
  226. package/dist/utils/platform.js +6 -1
  227. package/dist/utils/platform.js.map +1 -1
  228. package/dist/utils/renderDiffWithHighlighter.d.ts +3 -2
  229. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  230. package/dist/utils/renderDiffWithHighlighter.js +33 -48
  231. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  232. package/dist/utils/renderFileWithHighlighter.d.ts +3 -2
  233. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  234. package/dist/utils/renderFileWithHighlighter.js +10 -26
  235. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  236. package/dist/utils/renderTokenLines.d.ts +17 -0
  237. package/dist/utils/renderTokenLines.d.ts.map +1 -0
  238. package/dist/utils/renderTokenLines.js +246 -0
  239. package/dist/utils/renderTokenLines.js.map +1 -0
  240. package/dist/utils/resolvePreferredHighlighter.d.ts +13 -0
  241. package/dist/utils/resolvePreferredHighlighter.d.ts.map +1 -0
  242. package/dist/utils/resolvePreferredHighlighter.js +11 -0
  243. package/dist/utils/resolvePreferredHighlighter.js.map +1 -0
  244. package/dist/utils/setDeferredArrayItem.d.ts +5 -0
  245. package/dist/utils/setDeferredArrayItem.d.ts.map +1 -0
  246. package/dist/utils/setDeferredArrayItem.js +39 -0
  247. package/dist/utils/setDeferredArrayItem.js.map +1 -0
  248. package/dist/utils/tokenStyle.d.ts +7 -0
  249. package/dist/utils/tokenStyle.d.ts.map +1 -0
  250. package/dist/utils/tokenStyle.js +28 -0
  251. package/dist/utils/tokenStyle.js.map +1 -0
  252. package/dist/utils/tokensToHtml.d.ts +8 -0
  253. package/dist/utils/tokensToHtml.d.ts.map +1 -0
  254. package/dist/utils/tokensToHtml.js +45 -0
  255. package/dist/utils/tokensToHtml.js.map +1 -0
  256. package/dist/utils/wrapTokenFragments.js.map +1 -1
  257. package/dist/worker/WorkerPoolManager.d.ts +10 -2
  258. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  259. package/dist/worker/WorkerPoolManager.js +85 -60
  260. package/dist/worker/WorkerPoolManager.js.map +1 -1
  261. package/dist/worker/errors.d.ts +35 -0
  262. package/dist/worker/errors.d.ts.map +1 -0
  263. package/dist/worker/errors.js +52 -0
  264. package/dist/worker/errors.js.map +1 -0
  265. package/dist/worker/hastLinesTransport.d.ts +14 -0
  266. package/dist/worker/hastLinesTransport.d.ts.map +1 -0
  267. package/dist/worker/hastLinesTransport.js +156 -0
  268. package/dist/worker/hastLinesTransport.js.map +1 -0
  269. package/dist/worker/highlights-sAHlxqlf.js +317 -0
  270. package/dist/worker/highlights-sAHlxqlf.js.map +1 -0
  271. package/dist/worker/index.d.ts +2 -1
  272. package/dist/worker/index.js +2 -1
  273. package/dist/worker/shiki-Bx2JpdqZ.js +697 -0
  274. package/dist/worker/shiki-Bx2JpdqZ.js.map +1 -0
  275. package/dist/worker/stream-tokenizer-YZ6M1qSx.js +424 -0
  276. package/dist/worker/stream-tokenizer-YZ6M1qSx.js.map +1 -0
  277. package/dist/worker/types.d.ts +18 -3
  278. package/dist/worker/types.d.ts.map +1 -1
  279. package/dist/worker/worker-portable.js +41 -13319
  280. package/dist/worker/worker-portable.js.map +1 -1
  281. package/dist/worker/worker.js +693 -352
  282. package/dist/worker/worker.js.map +1 -1
  283. package/dist/worker/workerMessage.d.ts +24 -0
  284. package/dist/worker/workerMessage.d.ts.map +1 -0
  285. package/dist/worker/workerMessage.js +0 -0
  286. package/package.json +33 -29
  287. package/dist/highlighter/themes/constants.d.ts +0 -5
  288. package/dist/highlighter/themes/constants.d.ts.map +0 -1
  289. package/dist/highlighter/themes/constants.js +0 -6
  290. package/dist/highlighter/themes/constants.js.map +0 -1
  291. package/dist/highlighter/themes/themeResolution.d.ts +0 -7
  292. package/dist/highlighter/themes/themeResolution.d.ts.map +0 -1
  293. package/dist/highlighter/themes/themeResolution.js +0 -21
  294. package/dist/highlighter/themes/themeResolution.js.map +0 -1
  295. package/dist/shiki-stream/tokenizer.d.ts +0 -23
  296. package/dist/shiki-stream/tokenizer.d.ts.map +0 -1
  297. package/dist/shiki-stream/tokenizer.js +0 -72
  298. package/dist/shiki-stream/tokenizer.js.map +0 -1
  299. package/dist/utils/createTransformerWithState.d.ts +0 -12
  300. package/dist/utils/createTransformerWithState.d.ts.map +0 -1
  301. package/dist/utils/createTransformerWithState.js +0 -89
  302. package/dist/utils/createTransformerWithState.js.map +0 -1
  303. package/dist/worker/wasm-B9ZqxnKj.js +0 -8
  304. package/dist/worker/wasm-B9ZqxnKj.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ import { DiffsStreamTokenizer, DiffsStreamTokenizerEnqueueResult } from "./tokenizer-types.js";
2
+ import { ThemedToken } from "./types.js";
3
+ //#region src/highlighter/stream-tokenizer.d.ts
4
+ /**
5
+ * The final line stays provisional until a line break or stream close.
6
+ * A trailing CR waits for the next chunk, which may complete a CRLF pair.
7
+ * Token offsets are absolute UTF-16 positions in the stream.
8
+ */
9
+ declare abstract class BaseStreamTokenizer implements DiffsStreamTokenizer {
10
+ protected disposed: boolean;
11
+ /** Stream offset of the provisional line's first character. */
12
+ protected stableOffset: number;
13
+ protected unstable: ThemedToken[];
14
+ protected pendingCarriageReturn: string;
15
+ enqueue(chunk: string): DiffsStreamTokenizerEnqueueResult;
16
+ /**
17
+ * Append completed lines to stable, using pushLineBreak for their endings.
18
+ * Return the unfinished line's tokens and UTF-16 length.
19
+ */
20
+ protected abstract tokenizeChunk(chunk: string, stable: ThemedToken[]): {
21
+ unstable: ThemedToken[];
22
+ tailLength: number;
23
+ };
24
+ /** Emit one token per line-break character and move past the line. */
25
+ protected pushLineBreak(stable: ThemedToken[], lineLength: number, lineBreak: string): void;
26
+ close(): {
27
+ stable: ThemedToken[];
28
+ };
29
+ clear(): void;
30
+ abstract clone(): DiffsStreamTokenizer;
31
+ dispose(): void;
32
+ protected copyStateTo(clone: BaseStreamTokenizer): void;
33
+ protected assertActive(): void;
34
+ /** Forget the provisional line and any lexer state. */
35
+ protected abstract resetSource(): void;
36
+ protected abstract releaseSource(): void;
37
+ }
38
+ //#endregion
39
+ export { BaseStreamTokenizer };
40
+ //# sourceMappingURL=stream-tokenizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-tokenizer.d.ts","names":[],"sources":["../../src/highlighter/stream-tokenizer.ts"],"mappings":";;;;;;;;uBAWsB,+BAA+B;YACzC;;YAEA;YACA,UAAU;YACV;EAEV,QAAQ,gBAAgB;;;;;qBAmBL,cACjB,eACA,QAAQ;IACL,UAAU;IAAe;;;YAGpB,cACR,QAAQ,eACR,oBACA;EAWF;IAAW,QAAQ;;EAMnB;WAQS,SAAS;EAElB;YAOU,YAAY,OAAO;YAMnB;;qBAKS;qBAEA"}
@@ -0,0 +1,70 @@
1
+ //#region src/highlighter/stream-tokenizer.ts
2
+ /**
3
+ * The final line stays provisional until a line break or stream close.
4
+ * A trailing CR waits for the next chunk, which may complete a CRLF pair.
5
+ * Token offsets are absolute UTF-16 positions in the stream.
6
+ */
7
+ var BaseStreamTokenizer = class {
8
+ disposed = false;
9
+ /** Stream offset of the provisional line's first character. */
10
+ stableOffset = 0;
11
+ unstable = [];
12
+ pendingCarriageReturn = "";
13
+ enqueue(chunk) {
14
+ this.assertActive();
15
+ chunk = this.pendingCarriageReturn + chunk;
16
+ this.pendingCarriageReturn = chunk.endsWith("\r") ? "\r" : "";
17
+ if (this.pendingCarriageReturn !== "") chunk = chunk.slice(0, -1);
18
+ const recall = this.unstable.length;
19
+ const stable = [];
20
+ const { unstable, tailLength } = this.tokenizeChunk(chunk, stable);
21
+ if (this.pendingCarriageReturn !== "") unstable.push({
22
+ content: "\r",
23
+ offset: this.stableOffset + tailLength
24
+ });
25
+ this.unstable = unstable;
26
+ return {
27
+ recall,
28
+ stable,
29
+ unstable
30
+ };
31
+ }
32
+ /** Emit one token per line-break character and move past the line. */
33
+ pushLineBreak(stable, lineLength, lineBreak) {
34
+ for (let index = 0; index < lineBreak.length; index++) stable.push({
35
+ content: lineBreak[index],
36
+ offset: this.stableOffset + lineLength + index
37
+ });
38
+ this.stableOffset += lineLength + lineBreak.length;
39
+ }
40
+ close() {
41
+ const stable = this.unstable;
42
+ this.dispose();
43
+ return { stable };
44
+ }
45
+ clear() {
46
+ this.assertActive();
47
+ this.stableOffset = 0;
48
+ this.unstable = [];
49
+ this.pendingCarriageReturn = "";
50
+ this.resetSource();
51
+ }
52
+ dispose() {
53
+ if (this.disposed) return;
54
+ this.disposed = true;
55
+ this.unstable = [];
56
+ this.releaseSource();
57
+ }
58
+ copyStateTo(clone) {
59
+ clone.stableOffset = this.stableOffset;
60
+ clone.unstable = this.unstable.slice();
61
+ clone.pendingCarriageReturn = this.pendingCarriageReturn;
62
+ }
63
+ assertActive() {
64
+ if (this.disposed) throw new Error("stream tokenizer is disposed");
65
+ }
66
+ };
67
+ //#endregion
68
+ export { BaseStreamTokenizer };
69
+
70
+ //# sourceMappingURL=stream-tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-tokenizer.js","names":[],"sources":["../../src/highlighter/stream-tokenizer.ts"],"sourcesContent":["import type {\n DiffsStreamTokenizer,\n DiffsStreamTokenizerEnqueueResult,\n} from './tokenizer-types';\nimport type { ThemedToken } from './types';\n\n/**\n * The final line stays provisional until a line break or stream close.\n * A trailing CR waits for the next chunk, which may complete a CRLF pair.\n * Token offsets are absolute UTF-16 positions in the stream.\n */\nexport abstract class BaseStreamTokenizer implements DiffsStreamTokenizer {\n protected disposed = false;\n /** Stream offset of the provisional line's first character. */\n protected stableOffset = 0;\n protected unstable: ThemedToken[] = [];\n protected pendingCarriageReturn = '';\n\n enqueue(chunk: string): DiffsStreamTokenizerEnqueueResult {\n this.assertActive();\n chunk = this.pendingCarriageReturn + chunk;\n this.pendingCarriageReturn = chunk.endsWith('\\r') ? '\\r' : '';\n if (this.pendingCarriageReturn !== '') chunk = chunk.slice(0, -1);\n const recall = this.unstable.length;\n const stable: ThemedToken[] = [];\n const { unstable, tailLength } = this.tokenizeChunk(chunk, stable);\n // Include the pending CR so token contents still reproduce the input.\n if (this.pendingCarriageReturn !== '')\n unstable.push({ content: '\\r', offset: this.stableOffset + tailLength });\n this.unstable = unstable;\n return { recall, stable, unstable };\n }\n\n /**\n * Append completed lines to stable, using pushLineBreak for their endings.\n * Return the unfinished line's tokens and UTF-16 length.\n */\n protected abstract tokenizeChunk(\n chunk: string,\n stable: ThemedToken[]\n ): { unstable: ThemedToken[]; tailLength: number };\n\n /** Emit one token per line-break character and move past the line. */\n protected pushLineBreak(\n stable: ThemedToken[],\n lineLength: number,\n lineBreak: string\n ): void {\n for (let index = 0; index < lineBreak.length; index++) {\n stable.push({\n content: lineBreak[index],\n offset: this.stableOffset + lineLength + index,\n });\n }\n this.stableOffset += lineLength + lineBreak.length;\n }\n\n close(): { stable: ThemedToken[] } {\n const stable = this.unstable;\n this.dispose();\n return { stable };\n }\n\n clear(): void {\n this.assertActive();\n this.stableOffset = 0;\n this.unstable = [];\n this.pendingCarriageReturn = '';\n this.resetSource();\n }\n\n abstract clone(): DiffsStreamTokenizer;\n\n dispose(): void {\n if (this.disposed) return;\n this.disposed = true;\n this.unstable = [];\n this.releaseSource();\n }\n\n protected copyStateTo(clone: BaseStreamTokenizer): void {\n clone.stableOffset = this.stableOffset;\n clone.unstable = this.unstable.slice();\n clone.pendingCarriageReturn = this.pendingCarriageReturn;\n }\n\n protected assertActive(): void {\n if (this.disposed) throw new Error('stream tokenizer is disposed');\n }\n\n /** Forget the provisional line and any lexer state. */\n protected abstract resetSource(): void;\n\n protected abstract releaseSource(): void;\n}\n"],"mappings":";;;;;;AAWA,IAAsB,sBAAtB,MAA0E;CACxE,WAAqB;;CAErB,eAAyB;CACzB,WAAoC,CAAC;CACrC,wBAAkC;CAElC,QAAQ,OAAkD;EACxD,KAAK,aAAa;EAClB,QAAQ,KAAK,wBAAwB;EACrC,KAAK,wBAAwB,MAAM,SAAS,IAAI,IAAI,OAAO;EAC3D,IAAI,KAAK,0BAA0B,IAAI,QAAQ,MAAM,MAAM,GAAG,EAAE;EAChE,MAAM,SAAS,KAAK,SAAS;EAC7B,MAAM,SAAwB,CAAC;EAC/B,MAAM,EAAE,UAAU,eAAe,KAAK,cAAc,OAAO,MAAM;EAEjE,IAAI,KAAK,0BAA0B,IACjC,SAAS,KAAK;GAAE,SAAS;GAAM,QAAQ,KAAK,eAAe;EAAW,CAAC;EACzE,KAAK,WAAW;EAChB,OAAO;GAAE;GAAQ;GAAQ;EAAS;CACpC;;CAYA,cACE,QACA,YACA,WACM;EACN,KAAK,IAAI,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAC5C,OAAO,KAAK;GACV,SAAS,UAAU;GACnB,QAAQ,KAAK,eAAe,aAAa;EAC3C,CAAC;EAEH,KAAK,gBAAgB,aAAa,UAAU;CAC9C;CAEA,QAAmC;EACjC,MAAM,SAAS,KAAK;EACpB,KAAK,QAAQ;EACb,OAAO,EAAE,OAAO;CAClB;CAEA,QAAc;EACZ,KAAK,aAAa;EAClB,KAAK,eAAe;EACpB,KAAK,WAAW,CAAC;EACjB,KAAK,wBAAwB;EAC7B,KAAK,YAAY;CACnB;CAIA,UAAgB;EACd,IAAI,KAAK,UAAU;EACnB,KAAK,WAAW;EAChB,KAAK,WAAW,CAAC;EACjB,KAAK,cAAc;CACrB;CAEA,YAAsB,OAAkC;EACtD,MAAM,eAAe,KAAK;EAC1B,MAAM,WAAW,KAAK,SAAS,MAAM;EACrC,MAAM,wBAAwB,KAAK;CACrC;CAEA,eAA+B;EAC7B,IAAI,KAAK,UAAU,MAAM,IAAI,MAAM,8BAA8B;CACnE;AAMF"}
@@ -1,6 +1,7 @@
1
- import { DiffsThemeNames, ThemesType } from "../../types.js";
1
+ import { DiffsHighlighter } from "../DiffsHighlighter.js";
2
+ import { DiffsThemeNames, HighlighterTypes, ThemesType } from "../../types.js";
2
3
  //#region src/highlighter/themes/areThemesAttached.d.ts
3
- declare function areThemesAttached(themes: DiffsThemeNames | ThemesType): boolean;
4
+ declare function areThemesAttached(themes: DiffsThemeNames | ThemesType, highlighter?: DiffsHighlighter | HighlighterTypes): boolean;
4
5
  //#endregion
5
6
  export { areThemesAttached };
6
7
  //# sourceMappingURL=areThemesAttached.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"areThemesAttached.d.ts","names":[],"sources":["../../../src/highlighter/themes/areThemesAttached.ts"],"mappings":";;iBAIgB,kBACd,QAAQ,kBAAkB"}
1
+ {"version":3,"file":"areThemesAttached.d.ts","names":[],"sources":["../../../src/highlighter/themes/areThemesAttached.ts"],"mappings":";;;iBAUgB,kBACd,QAAQ,kBAAkB,YAC1B,cAAa,mBAAmB"}
@@ -1,9 +1,10 @@
1
+ import { resolveHighlighterType } from "../highlighterType.js";
1
2
  import { getThemes } from "../../utils/getThemes.js";
2
- import { AttachedThemes } from "./constants.js";
3
+ import { createDiffsThemeResolver } from "./themeResolver.js";
3
4
  //#region src/highlighter/themes/areThemesAttached.ts
4
- function areThemesAttached(themes) {
5
- for (const theme of getThemes(themes)) if (!AttachedThemes.has(theme)) return false;
6
- return true;
5
+ function areThemesAttached(themes, highlighter = resolveHighlighterType()) {
6
+ if (typeof highlighter !== "string" && highlighter.isDisposed) return false;
7
+ return (typeof highlighter === "string" ? createDiffsThemeResolver(highlighter) : highlighter.themeResolver).hasResolvedThemes(getThemes(themes));
7
8
  }
8
9
  //#endregion
9
10
  export { areThemesAttached };
@@ -1 +1 @@
1
- {"version":3,"file":"areThemesAttached.js","names":[],"sources":["../../../src/highlighter/themes/areThemesAttached.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemesType } from '../../types';\nimport { getThemes } from '../../utils/getThemes';\nimport { AttachedThemes } from './constants';\n\nexport function areThemesAttached(\n themes: DiffsThemeNames | ThemesType\n): boolean {\n for (const theme of getThemes(themes)) {\n if (!AttachedThemes.has(theme)) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":";;;AAIA,SAAgB,kBACd,QACS;CACT,KAAK,MAAM,SAAS,UAAU,MAAM,GAClC,IAAI,CAAC,eAAe,IAAI,KAAK,GAC3B,OAAO;CAGX,OAAO;AACT"}
1
+ {"version":3,"file":"areThemesAttached.js","names":[],"sources":["../../../src/highlighter/themes/areThemesAttached.ts"],"sourcesContent":["import type {\n DiffsHighlighter,\n DiffsThemeNames,\n HighlighterTypes,\n ThemesType,\n} from '../../types';\nimport { getThemes } from '../../utils/getThemes';\nimport { resolveHighlighterType } from '../highlighterType';\nimport { createDiffsThemeResolver } from './themeResolver';\n\nexport function areThemesAttached(\n themes: DiffsThemeNames | ThemesType,\n highlighter: DiffsHighlighter | HighlighterTypes = resolveHighlighterType()\n): boolean {\n // Shared resolvers can retain themes after an instance is disposed.\n if (typeof highlighter !== 'string' && highlighter.isDisposed) {\n return false;\n }\n const resolver =\n typeof highlighter === 'string'\n ? createDiffsThemeResolver(highlighter)\n : highlighter.themeResolver;\n return resolver.hasResolvedThemes(getThemes(themes));\n}\n"],"mappings":";;;;AAUA,SAAgB,kBACd,QACA,cAAmD,uBAAuB,GACjE;CAET,IAAI,OAAO,gBAAgB,YAAY,YAAY,YACjD,OAAO;CAMT,QAHE,OAAO,gBAAgB,WACnB,yBAAyB,WAAW,IACpC,YAAY,cAAA,CACF,kBAAkB,UAAU,MAAM,CAAC;AACrD"}
@@ -1,6 +1,9 @@
1
- import { DiffsHighlighter, DiffsThemeNames, ThemeRegistrationResolved } from "../../types.js";
1
+ import { DiffsTheme } from "./types.js";
2
+ import { DiffsHighlighter } from "../DiffsHighlighter.js";
3
+ import { DiffsThemeNames } from "../../types.js";
2
4
  //#region src/highlighter/themes/attachResolvedThemes.d.ts
3
- declare function attachResolvedThemes(themes: DiffsThemeNames | ThemeRegistrationResolved | (DiffsThemeNames | ThemeRegistrationResolved)[], highlighter: DiffsHighlighter): void;
5
+ /** Seed themes received from the main thread into the worker's backend resolver. */
6
+ declare function attachResolvedThemes(themes: DiffsThemeNames | DiffsTheme | (DiffsThemeNames | DiffsTheme)[], highlighter: DiffsHighlighter): void;
4
7
  //#endregion
5
8
  export { attachResolvedThemes };
6
9
  //# sourceMappingURL=attachResolvedThemes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachResolvedThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/attachResolvedThemes.ts"],"mappings":";;iBAegB,qBACd,QACI,kBACA,6BACC,kBAAkB,8BACvB,aAAa"}
1
+ {"version":3,"file":"attachResolvedThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/attachResolvedThemes.ts"],"mappings":";;;;;iBAIgB,qBACd,QAAQ,kBAAkB,cAAc,kBAAkB,eAC1D,aAAa"}
@@ -1,21 +1,9 @@
1
- import { AttachedThemes } from "./constants.js";
2
- import { themeResolver } from "./themeResolver.js";
3
1
  //#region src/highlighter/themes/attachResolvedThemes.ts
2
+ /** Seed themes received from the main thread into the worker's backend resolver. */
4
3
  function attachResolvedThemes(themes, highlighter) {
5
- themes = Array.isArray(themes) ? themes : [themes];
6
- for (let themeRef of themes) {
7
- let resolvedTheme;
8
- if (typeof themeRef === "string") {
9
- resolvedTheme = themeResolver.getResolvedTheme(themeRef);
10
- if (resolvedTheme == null) throw new Error(`loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`);
11
- } else {
12
- resolvedTheme = themeRef;
13
- themeRef = themeRef.name;
14
- if (themeResolver.getResolvedTheme(themeRef) == null) themeResolver.seedResolvedTheme(themeRef, resolvedTheme);
15
- }
16
- if (AttachedThemes.has(themeRef)) continue;
17
- AttachedThemes.add(themeRef);
18
- highlighter.loadThemeSync(resolvedTheme);
4
+ for (const theme of Array.isArray(themes) ? themes : [themes]) {
5
+ const resolved = typeof theme === "string" ? highlighter.themeResolver.getResolvedThemes([theme])[0] : theme;
6
+ highlighter.themeResolver.seedResolvedTheme(resolved.name, resolved);
19
7
  }
20
8
  }
21
9
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"attachResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/attachResolvedThemes.ts"],"sourcesContent":["import type {\n DiffsHighlighter,\n DiffsThemeNames,\n ThemeRegistrationResolved,\n} from '../../types';\nimport { AttachedThemes } from './constants';\nimport { themeResolver } from './themeResolver';\n\n// Loads resolved themes into the highlighter (loadThemeSync) and records them\n// in AttachedThemes so each theme is attached at most once. Accepts either a\n// name (which must already be resolved/cached) or a fully-resolved theme\n// object. Theme objects are seeded into the resolver when not already present —\n// this is the path workers use: they receive pre-resolved themes from the main\n// thread (they cannot call resolveTheme themselves) and need them available so\n// getResolvedThemes works synchronously.\nexport function attachResolvedThemes(\n themes:\n | DiffsThemeNames\n | ThemeRegistrationResolved\n | (DiffsThemeNames | ThemeRegistrationResolved)[],\n highlighter: DiffsHighlighter\n): void {\n themes = Array.isArray(themes) ? themes : [themes];\n for (let themeRef of themes) {\n let resolvedTheme: ThemeRegistrationResolved | undefined;\n if (typeof themeRef === 'string') {\n resolvedTheme = themeResolver.getResolvedTheme(themeRef);\n if (resolvedTheme == null) {\n throw new Error(\n `loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`\n );\n }\n } else {\n resolvedTheme = themeRef;\n themeRef = themeRef.name;\n if (themeResolver.getResolvedTheme(themeRef) == null) {\n themeResolver.seedResolvedTheme(themeRef, resolvedTheme);\n }\n }\n if (AttachedThemes.has(themeRef)) continue;\n AttachedThemes.add(themeRef);\n highlighter.loadThemeSync(resolvedTheme);\n }\n}\n"],"mappings":";;;AAeA,SAAgB,qBACd,QAIA,aACM;CACN,SAAS,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;CACjD,KAAK,IAAI,YAAY,QAAQ;EAC3B,IAAI;EACJ,IAAI,OAAO,aAAa,UAAU;GAChC,gBAAgB,cAAc,iBAAiB,QAAQ;GACvD,IAAI,iBAAiB,MACnB,MAAM,IAAI,MACR,uBAAuB,SAAS,wEAClC;EAEJ,OAAO;GACL,gBAAgB;GAChB,WAAW,SAAS;GACpB,IAAI,cAAc,iBAAiB,QAAQ,KAAK,MAC9C,cAAc,kBAAkB,UAAU,aAAa;EAE3D;EACA,IAAI,eAAe,IAAI,QAAQ,GAAG;EAClC,eAAe,IAAI,QAAQ;EAC3B,YAAY,cAAc,aAAa;CACzC;AACF"}
1
+ {"version":3,"file":"attachResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/attachResolvedThemes.ts"],"sourcesContent":["import type { DiffsHighlighter, DiffsThemeNames } from '../../types';\nimport type { DiffsTheme } from './types';\n\n/** Seed themes received from the main thread into the worker's backend resolver. */\nexport function attachResolvedThemes(\n themes: DiffsThemeNames | DiffsTheme | (DiffsThemeNames | DiffsTheme)[],\n highlighter: DiffsHighlighter\n): void {\n for (const theme of Array.isArray(themes) ? themes : [themes]) {\n const resolved =\n typeof theme === 'string'\n ? highlighter.themeResolver.getResolvedThemes([theme])[0]\n : theme;\n highlighter.themeResolver.seedResolvedTheme(resolved.name, resolved);\n }\n}\n"],"mappings":";;AAIA,SAAgB,qBACd,QACA,aACM;CACN,KAAK,MAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG;EAC7D,MAAM,WACJ,OAAO,UAAU,WACb,YAAY,cAAc,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,KACrD;EACN,YAAY,cAAc,kBAAkB,SAAS,MAAM,QAAQ;CACrE;AACF"}
@@ -1,5 +1,7 @@
1
+ import { HighlighterTypes } from "../../types.js";
1
2
  //#region src/highlighter/themes/cleanUpResolvedThemes.d.ts
2
- declare function cleanUpResolvedThemes(): void;
3
+ /** Clear cached themes while preserving custom registrations for future instances. */
4
+ declare function cleanUpResolvedThemes(backend?: HighlighterTypes): void;
3
5
  //#endregion
4
6
  export { cleanUpResolvedThemes };
5
7
  //# sourceMappingURL=cleanUpResolvedThemes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cleanUpResolvedThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/cleanUpResolvedThemes.ts"],"mappings":";iBAOgB"}
1
+ {"version":3,"file":"cleanUpResolvedThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/cleanUpResolvedThemes.ts"],"mappings":";;;iBAIgB,sBAAsB,UAAU"}
@@ -1,9 +1,12 @@
1
- import { AttachedThemes } from "./constants.js";
2
- import { themeResolver } from "./themeResolver.js";
1
+ import { createDiffsThemeResolver } from "./themeResolver.js";
3
2
  //#region src/highlighter/themes/cleanUpResolvedThemes.ts
4
- function cleanUpResolvedThemes() {
5
- themeResolver.clearResolvedThemes();
6
- AttachedThemes.clear();
3
+ /** Clear cached themes while preserving custom registrations for future instances. */
4
+ function cleanUpResolvedThemes(backend) {
5
+ for (const name of backend == null ? [
6
+ "shiki-js",
7
+ "shiki-wasm",
8
+ "highlights"
9
+ ] : [backend]) createDiffsThemeResolver(name).clearResolvedThemes();
7
10
  }
8
11
  //#endregion
9
12
  export { cleanUpResolvedThemes };
@@ -1 +1 @@
1
- {"version":3,"file":"cleanUpResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/cleanUpResolvedThemes.ts"],"sourcesContent":["import { AttachedThemes } from './constants';\nimport { themeResolver } from './themeResolver';\n\n// Clears the resolved-theme cache (and any in-flight loads) plus the set of\n// themes attached to the highlighter. Registered loaders are intentionally\n// preserved, so previously registered custom/pierre/bundled themes can be\n// resolved again without re-registering.\nexport function cleanUpResolvedThemes(): void {\n themeResolver.clearResolvedThemes();\n AttachedThemes.clear();\n}\n"],"mappings":";;;AAOA,SAAgB,wBAA8B;CAC5C,cAAc,oBAAoB;CAClC,eAAe,MAAM;AACvB"}
1
+ {"version":3,"file":"cleanUpResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/cleanUpResolvedThemes.ts"],"sourcesContent":["import type { HighlighterTypes } from '../../types';\nimport { createDiffsThemeResolver } from './themeResolver';\n\n/** Clear cached themes while preserving custom registrations for future instances. */\nexport function cleanUpResolvedThemes(backend?: HighlighterTypes): void {\n for (const name of backend == null\n ? (['shiki-js', 'shiki-wasm', 'highlights'] as const)\n : [backend]) {\n createDiffsThemeResolver(name).clearResolvedThemes();\n }\n}\n"],"mappings":";;;AAIA,SAAgB,sBAAsB,SAAkC;CACtE,KAAK,MAAM,QAAQ,WAAW,OACzB;EAAC;EAAY;EAAc;CAAY,IACxC,CAAC,OAAO,GACV,yBAAyB,IAAI,CAAC,CAAC,oBAAoB;AAEvD"}
@@ -0,0 +1,7 @@
1
+ import { CSSVariablesThemeOptions, DiffsTheme } from "./types.js";
2
+ //#region src/highlighter/themes/createCSSVariablesTheme.d.ts
3
+ /** A CSS palette shared by TextMate scopes and Highlights syntax categories. */
4
+ declare function createCSSVariablesTheme({ name, variablePrefix, variableDefaults, fontStyle }?: CSSVariablesThemeOptions): DiffsTheme;
5
+ //#endregion
6
+ export { createCSSVariablesTheme };
7
+ //# sourceMappingURL=createCSSVariablesTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCSSVariablesTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/createCSSVariablesTheme.ts"],"mappings":";;;iBAKgB,0BACd,MACA,gBACA,kBACA,cACC,2BAAgC"}
@@ -0,0 +1,89 @@
1
+ //#region src/highlighter/themes/createCSSVariablesTheme.ts
2
+ /** A CSS palette shared by TextMate scopes and Highlights syntax categories. */
3
+ function createCSSVariablesTheme({ name = "css-variables", variablePrefix = "--diffs-", variableDefaults = {}, fontStyle = true } = {}) {
4
+ const variable = (key) => {
5
+ const fallback = variableDefaults[key];
6
+ return `var(${variablePrefix}${key}${fallback != null && fallback !== "" ? `, ${fallback}` : ""})`;
7
+ };
8
+ const fg = variable("foreground");
9
+ const bg = variable("background");
10
+ const colors = {
11
+ "editor.foreground": fg,
12
+ "editor.background": bg
13
+ };
14
+ for (const color of [
15
+ "black",
16
+ "red",
17
+ "green",
18
+ "yellow",
19
+ "blue",
20
+ "magenta",
21
+ "cyan",
22
+ "white"
23
+ ]) {
24
+ const title = color[0].toUpperCase() + color.slice(1);
25
+ colors[`terminal.ansi${title}`] = variable(`ansi-${color}`);
26
+ colors[`terminal.ansiBright${title}`] = variable(`ansi-bright-${color}`);
27
+ }
28
+ const syntax = {
29
+ comment: "token-comment",
30
+ string: "token-string-expression",
31
+ "string.escape": "token-constant",
32
+ "text.literal": "token-string",
33
+ keyword: "token-keyword",
34
+ operator: "token-keyword",
35
+ preproc: "token-keyword",
36
+ boolean: "token-constant",
37
+ number: "token-constant",
38
+ constant: "token-constant",
39
+ property: "token-constant",
40
+ "property.json_key": "token-keyword",
41
+ "variable.special": "token-constant",
42
+ "variable.parameter": "token-parameter",
43
+ function: "token-function",
44
+ constructor: "token-function",
45
+ type: "token-function",
46
+ attribute: "token-function",
47
+ tag: "token-string-expression",
48
+ punctuation: "token-punctuation",
49
+ link_text: "token-link",
50
+ link_uri: "token-link",
51
+ "diff.plus": "token-inserted",
52
+ "diff.minus": "token-deleted"
53
+ };
54
+ if (fontStyle) {
55
+ syntax.emphasis = { font_style: "italic" };
56
+ syntax["emphasis.strong"] = { font_weight: 700 };
57
+ syntax.title = { font_weight: 700 };
58
+ }
59
+ return {
60
+ name,
61
+ type: "dark",
62
+ fg,
63
+ bg,
64
+ colors,
65
+ cssVariables: {
66
+ name,
67
+ variablePrefix,
68
+ variableDefaults,
69
+ fontStyle
70
+ },
71
+ zed: {
72
+ name,
73
+ appearance: "dark",
74
+ cssVariables: {
75
+ prefix: variablePrefix,
76
+ defaults: variableDefaults
77
+ },
78
+ style: {
79
+ "editor.foreground": "foreground",
80
+ "editor.background": "background",
81
+ syntax
82
+ }
83
+ }
84
+ };
85
+ }
86
+ //#endregion
87
+ export { createCSSVariablesTheme };
88
+
89
+ //# sourceMappingURL=createCSSVariablesTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCSSVariablesTheme.js","names":[],"sources":["../../../src/highlighter/themes/createCSSVariablesTheme.ts"],"sourcesContent":["import type { ThemeStyle } from '@pierre/highlights';\n\nimport type { CSSVariablesThemeOptions, DiffsTheme } from './types';\n\n/** A CSS palette shared by TextMate scopes and Highlights syntax categories. */\nexport function createCSSVariablesTheme({\n name = 'css-variables',\n variablePrefix = '--diffs-',\n variableDefaults = {},\n fontStyle = true,\n}: CSSVariablesThemeOptions = {}): DiffsTheme {\n const variable = (key: string): string => {\n const fallback = variableDefaults[key];\n return `var(${variablePrefix}${key}${fallback != null && fallback !== '' ? `, ${fallback}` : ''})`;\n };\n const fg = variable('foreground');\n const bg = variable('background');\n const colors: Record<string, string> = {\n 'editor.foreground': fg,\n 'editor.background': bg,\n };\n for (const color of [\n 'black',\n 'red',\n 'green',\n 'yellow',\n 'blue',\n 'magenta',\n 'cyan',\n 'white',\n ]) {\n const title = color[0].toUpperCase() + color.slice(1);\n colors[`terminal.ansi${title}`] = variable(`ansi-${color}`);\n colors[`terminal.ansiBright${title}`] = variable(`ansi-bright-${color}`);\n }\n const syntax: NonNullable<ThemeStyle['syntax']> = {\n comment: 'token-comment',\n string: 'token-string-expression',\n 'string.escape': 'token-constant',\n 'text.literal': 'token-string',\n keyword: 'token-keyword',\n operator: 'token-keyword',\n preproc: 'token-keyword',\n boolean: 'token-constant',\n number: 'token-constant',\n constant: 'token-constant',\n property: 'token-constant',\n 'property.json_key': 'token-keyword',\n 'variable.special': 'token-constant',\n 'variable.parameter': 'token-parameter',\n function: 'token-function',\n constructor: 'token-function',\n type: 'token-function',\n attribute: 'token-function',\n tag: 'token-string-expression',\n punctuation: 'token-punctuation',\n link_text: 'token-link',\n link_uri: 'token-link',\n 'diff.plus': 'token-inserted',\n 'diff.minus': 'token-deleted',\n };\n if (fontStyle) {\n syntax.emphasis = { font_style: 'italic' };\n syntax['emphasis.strong'] = { font_weight: 700 };\n syntax.title = { font_weight: 700 };\n }\n return {\n name,\n type: 'dark',\n fg,\n bg,\n colors,\n cssVariables: { name, variablePrefix, variableDefaults, fontStyle },\n zed: {\n name,\n appearance: 'dark',\n cssVariables: { prefix: variablePrefix, defaults: variableDefaults },\n style: {\n 'editor.foreground': 'foreground',\n 'editor.background': 'background',\n syntax,\n },\n },\n };\n}\n"],"mappings":";;AAKA,SAAgB,wBAAwB,EACtC,OAAO,iBACP,iBAAiB,YACjB,mBAAmB,CAAC,GACpB,YAAY,SACgB,CAAC,GAAe;CAC5C,MAAM,YAAY,QAAwB;EACxC,MAAM,WAAW,iBAAiB;EAClC,OAAO,OAAO,iBAAiB,MAAM,YAAY,QAAQ,aAAa,KAAK,KAAK,aAAa,GAAG;CAClG;CACA,MAAM,KAAK,SAAS,YAAY;CAChC,MAAM,KAAK,SAAS,YAAY;CAChC,MAAM,SAAiC;EACrC,qBAAqB;EACrB,qBAAqB;CACvB;CACA,KAAK,MAAM,SAAS;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,GAAG;EACD,MAAM,QAAQ,MAAM,EAAE,CAAC,YAAY,IAAI,MAAM,MAAM,CAAC;EACpD,OAAO,gBAAgB,WAAW,SAAS,QAAQ,OAAO;EAC1D,OAAO,sBAAsB,WAAW,SAAS,eAAe,OAAO;CACzE;CACA,MAAM,SAA4C;EAChD,SAAS;EACT,QAAQ;EACR,iBAAiB;EACjB,gBAAgB;EAChB,SAAS;EACT,UAAU;EACV,SAAS;EACT,SAAS;EACT,QAAQ;EACR,UAAU;EACV,UAAU;EACV,qBAAqB;EACrB,oBAAoB;EACpB,sBAAsB;EACtB,UAAU;EACV,aAAa;EACb,MAAM;EACN,WAAW;EACX,KAAK;EACL,aAAa;EACb,WAAW;EACX,UAAU;EACV,aAAa;EACb,cAAc;CAChB;CACA,IAAI,WAAW;EACb,OAAO,WAAW,EAAE,YAAY,SAAS;EACzC,OAAO,qBAAqB,EAAE,aAAa,IAAI;EAC/C,OAAO,QAAQ,EAAE,aAAa,IAAI;CACpC;CACA,OAAO;EACL;EACA,MAAM;EACN;EACA;EACA;EACA,cAAc;GAAE;GAAM;GAAgB;GAAkB;EAAU;EAClE,KAAK;GACH;GACA,YAAY;GACZ,cAAc;IAAE,QAAQ;IAAgB,UAAU;GAAiB;GACnE,OAAO;IACL,qBAAqB;IACrB,qBAAqB;IACrB;GACF;EACF;CACF;AACF"}
@@ -0,0 +1,5 @@
1
+ //#region src/highlighter/themes/createCachedLoader.d.ts
2
+ declare function createCachedLoader<T extends object>(loader: () => Promise<T>): () => T | Promise<T>;
3
+ //#endregion
4
+ export { createCachedLoader };
5
+ //# sourceMappingURL=createCachedLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCachedLoader.d.ts","names":[],"sources":["../../../src/highlighter/themes/createCachedLoader.ts"],"mappings":";iBAAgB,mBAAmB,kBACjC,cAAc,QAAQ,WACf,IAAI,QAAQ"}
@@ -0,0 +1,15 @@
1
+ //#region src/highlighter/themes/createCachedLoader.ts
2
+ function createCachedLoader(loader) {
3
+ let cached;
4
+ return () => cached ??= loader().then((loaded) => {
5
+ cached = loaded;
6
+ return loaded;
7
+ }, (error) => {
8
+ cached = void 0;
9
+ throw error;
10
+ });
11
+ }
12
+ //#endregion
13
+ export { createCachedLoader };
14
+
15
+ //# sourceMappingURL=createCachedLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCachedLoader.js","names":[],"sources":["../../../src/highlighter/themes/createCachedLoader.ts"],"sourcesContent":["export function createCachedLoader<T extends object>(\n loader: () => Promise<T>\n): () => T | Promise<T> {\n let cached: T | Promise<T> | undefined;\n return () =>\n (cached ??= loader().then(\n (loaded) => {\n cached = loaded;\n return loaded;\n },\n (error: unknown) => {\n cached = undefined;\n throw error;\n }\n ));\n}\n"],"mappings":";AAAA,SAAgB,mBACd,QACsB;CACtB,IAAI;CACJ,aACG,WAAW,OAAO,CAAC,CAAC,MAClB,WAAW;EACV,SAAS;EACT,OAAO;CACT,IACC,UAAmB;EAClB,SAAS,KAAA;EACT,MAAM;CACR,CACF;AACJ"}
@@ -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/getResolvedOrResolveTheme.d.ts
3
- declare function getResolvedOrResolveTheme(themeName: DiffsThemeNames): ThemeRegistrationResolved | Promise<ThemeRegistrationResolved>;
4
+ declare function getResolvedOrResolveTheme(themeName: DiffsThemeNames, backend?: HighlighterTypes): DiffsTheme | Promise<DiffsTheme>;
4
5
  //#endregion
5
6
  export { getResolvedOrResolveTheme };
6
7
  //# sourceMappingURL=getResolvedOrResolveTheme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getResolvedOrResolveTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/getResolvedOrResolveTheme.ts"],"mappings":";;iBAQgB,0BACd,WAAW,kBACV,4BAA4B,QAAQ"}
1
+ {"version":3,"file":"getResolvedOrResolveTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/getResolvedOrResolveTheme.ts"],"mappings":";;;iBAKgB,0BACd,WAAW,iBACX,UAAS,mBACR,aAAa,QAAQ"}
@@ -1,8 +1,8 @@
1
- import { themeResolver } from "./themeResolver.js";
2
- import { resolveTheme } from "./resolveTheme.js";
1
+ import { resolveHighlighterType } from "../highlighterType.js";
2
+ import { createDiffsThemeResolver } from "./themeResolver.js";
3
3
  //#region src/highlighter/themes/getResolvedOrResolveTheme.ts
4
- function getResolvedOrResolveTheme(themeName) {
5
- return themeResolver.getResolvedTheme(themeName) ?? resolveTheme(themeName);
4
+ function getResolvedOrResolveTheme(themeName, backend = resolveHighlighterType()) {
5
+ return createDiffsThemeResolver(backend).getResolvedOrResolveTheme(themeName);
6
6
  }
7
7
  //#endregion
8
8
  export { getResolvedOrResolveTheme };
@@ -1 +1 @@
1
- {"version":3,"file":"getResolvedOrResolveTheme.js","names":[],"sources":["../../../src/highlighter/themes/getResolvedOrResolveTheme.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { resolveTheme } from './resolveTheme';\nimport { themeResolver } from './themeResolver';\n\n// Returns the resolved theme synchronously when it is already cached, otherwise\n// kicks off (and returns the Promise for) a full resolveTheme. Uses the diffs\n// resolveTheme wrapper for the cold path so the worker guard, bundled fallback,\n// and name validation still apply.\nexport function getResolvedOrResolveTheme(\n themeName: DiffsThemeNames\n): ThemeRegistrationResolved | Promise<ThemeRegistrationResolved> {\n return themeResolver.getResolvedTheme(themeName) ?? resolveTheme(themeName);\n}\n"],"mappings":";;;AAQA,SAAgB,0BACd,WACgE;CAChE,OAAO,cAAc,iBAAiB,SAAS,KAAK,aAAa,SAAS;AAC5E"}
1
+ {"version":3,"file":"getResolvedOrResolveTheme.js","names":[],"sources":["../../../src/highlighter/themes/getResolvedOrResolveTheme.ts"],"sourcesContent":["import type { DiffsThemeNames, HighlighterTypes } from '../../types';\nimport { resolveHighlighterType } from '../highlighterType';\nimport { createDiffsThemeResolver } from './themeResolver';\nimport type { DiffsTheme } from './types';\n\nexport function getResolvedOrResolveTheme(\n themeName: DiffsThemeNames,\n backend: HighlighterTypes = resolveHighlighterType()\n): DiffsTheme | Promise<DiffsTheme> {\n return createDiffsThemeResolver(backend).getResolvedOrResolveTheme(themeName);\n}\n"],"mappings":";;;AAKA,SAAgB,0BACd,WACA,UAA4B,uBAAuB,GACjB;CAClC,OAAO,yBAAyB,OAAO,CAAC,CAAC,0BAA0B,SAAS;AAC9E"}
@@ -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/getResolvedThemes.d.ts
3
- declare function getResolvedThemes(themeNames: DiffsThemeNames[]): ThemeRegistrationResolved[];
4
+ declare function getResolvedThemes(themeNames: DiffsThemeNames[], backend?: HighlighterTypes): DiffsTheme[];
4
5
  //#endregion
5
6
  export { getResolvedThemes };
6
7
  //# sourceMappingURL=getResolvedThemes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getResolvedThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/getResolvedThemes.ts"],"mappings":";;iBAMgB,kBACd,YAAY,oBACX"}
1
+ {"version":3,"file":"getResolvedThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/getResolvedThemes.ts"],"mappings":";;;iBAKgB,kBACd,YAAY,mBACZ,UAAS,mBACR"}
@@ -1,7 +1,8 @@
1
- import { themeResolver } from "./themeResolver.js";
1
+ import { resolveHighlighterType } from "../highlighterType.js";
2
+ import { createDiffsThemeResolver } from "./themeResolver.js";
2
3
  //#region src/highlighter/themes/getResolvedThemes.ts
3
- function getResolvedThemes(themeNames) {
4
- return themeResolver.getResolvedThemes(themeNames);
4
+ function getResolvedThemes(themeNames, backend = resolveHighlighterType()) {
5
+ return createDiffsThemeResolver(backend).getResolvedThemes(themeNames);
5
6
  }
6
7
  //#endregion
7
8
  export { getResolvedThemes };
@@ -1 +1 @@
1
- {"version":3,"file":"getResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/getResolvedThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { themeResolver } from './themeResolver';\n\n// This method should only be called if you know all themes are resolved,\n// otherwise it will fail. The main intention is a helper to avoid an async\n// tick if we don't actually need it\nexport function getResolvedThemes(\n themeNames: DiffsThemeNames[]\n): ThemeRegistrationResolved[] {\n return themeResolver.getResolvedThemes(themeNames);\n}\n"],"mappings":";;AAMA,SAAgB,kBACd,YAC6B;CAC7B,OAAO,cAAc,kBAAkB,UAAU;AACnD"}
1
+ {"version":3,"file":"getResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/getResolvedThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, HighlighterTypes } from '../../types';\nimport { resolveHighlighterType } from '../highlighterType';\nimport { createDiffsThemeResolver } from './themeResolver';\nimport type { DiffsTheme } from './types';\n\nexport function getResolvedThemes(\n themeNames: DiffsThemeNames[],\n backend: HighlighterTypes = resolveHighlighterType()\n): DiffsTheme[] {\n return createDiffsThemeResolver(backend).getResolvedThemes(themeNames);\n}\n"],"mappings":";;;AAKA,SAAgB,kBACd,YACA,UAA4B,uBAAuB,GACrC;CACd,OAAO,yBAAyB,OAAO,CAAC,CAAC,kBAAkB,UAAU;AACvE"}
@@ -1,6 +1,6 @@
1
- import { DiffsThemeNames } from "../../types.js";
1
+ import { DiffsThemeNames, HighlighterTypes } from "../../types.js";
2
2
  //#region src/highlighter/themes/hasResolvedThemes.d.ts
3
- declare function hasResolvedThemes(themeNames: DiffsThemeNames[]): boolean;
3
+ declare function hasResolvedThemes(themeNames: DiffsThemeNames[], backend?: HighlighterTypes): boolean;
4
4
  //#endregion
5
5
  export { hasResolvedThemes };
6
6
  //# sourceMappingURL=hasResolvedThemes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasResolvedThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/hasResolvedThemes.ts"],"mappings":";;iBAGgB,kBAAkB,YAAY"}
1
+ {"version":3,"file":"hasResolvedThemes.d.ts","names":[],"sources":["../../../src/highlighter/themes/hasResolvedThemes.ts"],"mappings":";;iBAIgB,kBACd,YAAY,mBACZ,UAAS"}
@@ -1,7 +1,8 @@
1
- import { themeResolver } from "./themeResolver.js";
1
+ import { resolveHighlighterType } from "../highlighterType.js";
2
+ import { createDiffsThemeResolver } from "./themeResolver.js";
2
3
  //#region src/highlighter/themes/hasResolvedThemes.ts
3
- function hasResolvedThemes(themeNames) {
4
- return themeResolver.hasResolvedThemes(themeNames);
4
+ function hasResolvedThemes(themeNames, backend = resolveHighlighterType()) {
5
+ return createDiffsThemeResolver(backend).hasResolvedThemes(themeNames);
5
6
  }
6
7
  //#endregion
7
8
  export { hasResolvedThemes };
@@ -1 +1 @@
1
- {"version":3,"file":"hasResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/hasResolvedThemes.ts"],"sourcesContent":["import type { DiffsThemeNames } from '../../types';\nimport { themeResolver } from './themeResolver';\n\nexport function hasResolvedThemes(themeNames: DiffsThemeNames[]): boolean {\n return themeResolver.hasResolvedThemes(themeNames);\n}\n"],"mappings":";;AAGA,SAAgB,kBAAkB,YAAwC;CACxE,OAAO,cAAc,kBAAkB,UAAU;AACnD"}
1
+ {"version":3,"file":"hasResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/hasResolvedThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, HighlighterTypes } from '../../types';\nimport { resolveHighlighterType } from '../highlighterType';\nimport { createDiffsThemeResolver } from './themeResolver';\n\nexport function hasResolvedThemes(\n themeNames: DiffsThemeNames[],\n backend: HighlighterTypes = resolveHighlighterType()\n): boolean {\n return createDiffsThemeResolver(backend).hasResolvedThemes(themeNames);\n}\n"],"mappings":";;;AAIA,SAAgB,kBACd,YACA,UAA4B,uBAAuB,GAC1C;CACT,OAAO,yBAAyB,OAAO,CAAC,CAAC,kBAAkB,UAAU;AACvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"registerCustomCSSVariableTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/registerCustomCSSVariableTheme.ts"],"mappings":";iBAKgB,+BACd,cACA,kBAAkB,wBAClB"}
1
+ {"version":3,"file":"registerCustomCSSVariableTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/registerCustomCSSVariableTheme.ts"],"mappings":";iBAIgB,+BACd,cACA,kBAAkB,wBAClB"}
@@ -1,15 +1,15 @@
1
1
  import { formatCSSVariablePrefix } from "../../utils/formatCSSVariablePrefix.js";
2
+ import { createCSSVariablesTheme } from "./createCSSVariablesTheme.js";
2
3
  import { registerCustomTheme } from "./registerCustomTheme.js";
3
- import { createCssVariablesTheme } from "shiki";
4
4
  //#region src/highlighter/themes/registerCustomCSSVariableTheme.ts
5
5
  function registerCustomCSSVariableTheme(name, variableDefaults, fontStyle = false) {
6
- const theme = createCssVariablesTheme({
6
+ const theme = createCSSVariablesTheme({
7
7
  name,
8
8
  variablePrefix: formatCSSVariablePrefix("global"),
9
9
  variableDefaults,
10
10
  fontStyle
11
11
  });
12
- registerCustomTheme(name, () => Promise.resolve(theme));
12
+ registerCustomTheme(name, () => Promise.resolve(theme), "diffs");
13
13
  }
14
14
  //#endregion
15
15
  export { registerCustomCSSVariableTheme };
@@ -1 +1 @@
1
- {"version":3,"file":"registerCustomCSSVariableTheme.js","names":["createCSSVariablesTheme"],"sources":["../../../src/highlighter/themes/registerCustomCSSVariableTheme.ts"],"sourcesContent":["import { createCssVariablesTheme as createCSSVariablesTheme } from 'shiki';\n\nimport { formatCSSVariablePrefix } from '../../utils/formatCSSVariablePrefix';\nimport { registerCustomTheme } from './registerCustomTheme';\n\nexport function registerCustomCSSVariableTheme(\n name: string,\n variableDefaults: Record<string, string>,\n fontStyle: boolean = false\n): void {\n const theme = createCSSVariablesTheme({\n name,\n variablePrefix: formatCSSVariablePrefix('global'),\n variableDefaults,\n fontStyle,\n });\n registerCustomTheme(name, () => Promise.resolve(theme));\n}\n"],"mappings":";;;;AAKA,SAAgB,+BACd,MACA,kBACA,YAAqB,OACf;CACN,MAAM,QAAQA,wBAAwB;EACpC;EACA,gBAAgB,wBAAwB,QAAQ;EAChD;EACA;CACF,CAAC;CACD,oBAAoB,YAAY,QAAQ,QAAQ,KAAK,CAAC;AACxD"}
1
+ {"version":3,"file":"registerCustomCSSVariableTheme.js","names":[],"sources":["../../../src/highlighter/themes/registerCustomCSSVariableTheme.ts"],"sourcesContent":["import { formatCSSVariablePrefix } from '../../utils/formatCSSVariablePrefix';\nimport { createCSSVariablesTheme } from './createCSSVariablesTheme';\nimport { registerCustomTheme } from './registerCustomTheme';\n\nexport function registerCustomCSSVariableTheme(\n name: string,\n variableDefaults: Record<string, string>,\n fontStyle: boolean = false\n): void {\n const theme = createCSSVariablesTheme({\n name,\n variablePrefix: formatCSSVariablePrefix('global'),\n variableDefaults,\n fontStyle,\n });\n registerCustomTheme(name, () => Promise.resolve(theme), 'diffs');\n}\n"],"mappings":";;;;AAIA,SAAgB,+BACd,MACA,kBACA,YAAqB,OACf;CACN,MAAM,QAAQ,wBAAwB;EACpC;EACA,gBAAgB,wBAAwB,QAAQ;EAChD;EACA;CACF,CAAC;CACD,oBAAoB,YAAY,QAAQ,QAAQ,KAAK,GAAG,OAAO;AACjE"}
@@ -1,8 +1,13 @@
1
- import { ThemeRegistration, ThemeRegistrationResolved } from "../../types.js";
1
+ import { DiffsTheme } from "./types.js";
2
+ import { CustomThemeLoader } from "./themeResolver.js";
2
3
  import { ThemeLoader } from "@pierre/theming";
4
+ import { ThemeRegistration } from "shiki";
5
+ import { Theme, ThemeFamily } from "@pierre/highlights";
3
6
  //#region src/highlighter/themes/registerCustomTheme.d.ts
4
- type CustomThemeLoader = ThemeLoader<ThemeRegistration | ThemeRegistrationResolved>;
5
- declare function registerCustomTheme(themeName: string, loader: CustomThemeLoader): void;
7
+ /** Register a lazy TextMate, Zed, or shared Diffs theme loader. */
8
+ declare function registerCustomTheme(themeName: string, loader: ThemeLoader<ThemeRegistration>, type?: 'textmate'): void;
9
+ declare function registerCustomTheme(themeName: string, loader: ThemeLoader<Theme | ThemeFamily>, type: 'zed'): void;
10
+ declare function registerCustomTheme(themeName: string, loader: ThemeLoader<DiffsTheme>, type: 'diffs'): void;
6
11
  //#endregion
7
- export { CustomThemeLoader, registerCustomTheme };
12
+ export { type CustomThemeLoader, registerCustomTheme };
8
13
  //# sourceMappingURL=registerCustomTheme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registerCustomTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/registerCustomTheme.ts"],"mappings":";;;KAMY,oBAAoB,YAC9B,oBAAoB;iBAUN,oBACd,mBACA,QAAQ"}
1
+ {"version":3,"file":"registerCustomTheme.d.ts","names":[],"sources":["../../../src/highlighter/themes/registerCustomTheme.ts"],"mappings":";;;;;;;iBAagB,oBACd,mBACA,QAAQ,YAAY,oBACpB;iBAEc,oBACd,mBACA,QAAQ,YAAY,QAAW,cAC/B;iBAEc,oBACd,mBACA,QAAQ,YAAY,aACpB"}