@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,24 @@
1
+ import { InitializeWorkerRequest, RenderDiffSuccessResponse, RenderFileSuccessResponse, WorkerRequest, WorkerResponse } from "./types.js";
2
+ import { EncodedHastLines } from "./hastLinesTransport.js";
3
+ //#region src/worker/workerMessage.d.ts
4
+ interface InitializeWorkerWireRequest extends InitializeWorkerRequest {
5
+ resultFormat?: 'hast-ops-v1';
6
+ }
7
+ type WorkerWireRequest = Exclude<WorkerRequest, InitializeWorkerRequest> | InitializeWorkerWireRequest;
8
+ interface EncodedFileSuccessResponse extends Omit<RenderFileSuccessResponse, 'result'> {
9
+ result: Omit<RenderFileSuccessResponse['result'], 'code'> & {
10
+ code: EncodedHastLines;
11
+ };
12
+ }
13
+ interface EncodedDiffSuccessResponse extends Omit<RenderDiffSuccessResponse, 'result'> {
14
+ result: Omit<RenderDiffSuccessResponse['result'], 'code'> & {
15
+ code: {
16
+ deletionLines: EncodedHastLines;
17
+ additionLines: EncodedHastLines;
18
+ };
19
+ };
20
+ }
21
+ type WorkerWireResponse = WorkerResponse | EncodedFileSuccessResponse | EncodedDiffSuccessResponse;
22
+ //#endregion
23
+ export { EncodedDiffSuccessResponse, EncodedFileSuccessResponse, InitializeWorkerWireRequest, WorkerWireRequest, WorkerWireResponse };
24
+ //# sourceMappingURL=workerMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerMessage.d.ts","names":[],"sources":["../../src/worker/workerMessage.ts"],"mappings":";;;UASiB,oCAAoC;EACnD;;KAGU,oBACR,QAAQ,eAAe,2BACvB;UAEa,mCAAmC,KAClD;EAGA,QAAQ,KAAK;IACX,MAAM;;;UAIO,mCAAmC,KAClD;EAGA,QAAQ,KAAK;IACX;MACE,eAAe;MACf,eAAe;;;;KAKT,qBACR,iBACA,6BACA"}
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pierre/diffs",
3
- "version": "1.5.1",
3
+ "version": "1.6.0-beta.1",
4
4
  "license": "apache-2.0",
5
5
  "files": [
6
6
  "dist",
@@ -9,7 +9,9 @@
9
9
  ],
10
10
  "type": "module",
11
11
  "sideEffects": [
12
- "dist/components/web-components.js"
12
+ "dist/components/web-components.js",
13
+ "dist/worker/worker.js",
14
+ "dist/worker/worker-portable.js"
13
15
  ],
14
16
  "typesVersions": {
15
17
  "*": {
@@ -63,33 +65,36 @@
63
65
  "publishConfig": {
64
66
  "access": "public"
65
67
  },
68
+ "scripts": {
69
+ "prepublishOnly": "moon run diffs:prepublish"
70
+ },
66
71
  "dependencies": {
67
- "@shikijs/transformers": "^3.0.0 || ^4.0.0",
68
- "diff": "9.0.0",
69
- "hast-util-to-html": "9.0.5",
70
- "lru_map": "0.4.1",
71
- "shiki": "^3.0.0 || ^4.0.0",
72
- "@pierre/theme": "2.0.0",
73
- "@pierre/theming": "1.0.1"
72
+ "@pierre/highlights": "workspace:*",
73
+ "@pierre/theme": "workspace:*",
74
+ "@pierre/theming": "workspace:*",
75
+ "diff": "catalog:",
76
+ "hast-util-to-html": "catalog:",
77
+ "lru_map": "catalog:",
78
+ "shiki": "^3.0.0 || ^4.0.0"
74
79
  },
75
80
  "devDependencies": {
76
- "@playwright/test": "1.51.1",
77
- "@tsdown/css": "0.22.14",
78
- "@types/hast": "3.0.4",
79
- "@types/jsdom": "28.0.1",
80
- "@types/react": "19.2.7",
81
- "@types/react-dom": "19.2.3",
82
- "autoprefixer": "10.4.22",
83
- "jsdom": "26.1.0",
84
- "lightningcss": "1.32.0",
85
- "postcss": "8.5.6",
86
- "postcss-calc": "10.1.1",
87
- "postcss-nesting": "14.0.0",
88
- "react": "19.2.7",
89
- "react-dom": "19.2.7",
90
- "tsdown": "0.22.14",
91
- "typescript": "7.0.2",
92
- "vite": "8.1.0"
81
+ "@playwright/test": "catalog:",
82
+ "@tsdown/css": "catalog:",
83
+ "@types/hast": "catalog:",
84
+ "@types/jsdom": "catalog:",
85
+ "@types/react": "catalog:",
86
+ "@types/react-dom": "catalog:",
87
+ "autoprefixer": "catalog:",
88
+ "jsdom": "catalog:",
89
+ "lightningcss": "catalog:",
90
+ "postcss": "catalog:",
91
+ "postcss-calc": "catalog:",
92
+ "postcss-nesting": "catalog:",
93
+ "react": "catalog:",
94
+ "react-dom": "catalog:",
95
+ "tsdown": "catalog:",
96
+ "typescript": "catalog:",
97
+ "vite": "catalog:"
93
98
  },
94
99
  "peerDependencies": {
95
100
  "react": "^18.3.1 || ^19.0.0",
@@ -102,6 +107,5 @@
102
107
  "react-dom": {
103
108
  "optional": true
104
109
  }
105
- },
106
- "scripts": {}
107
- }
110
+ }
111
+ }
@@ -1,5 +0,0 @@
1
- //#region src/highlighter/themes/constants.d.ts
2
- declare const AttachedThemes: Set<string>;
3
- //#endregion
4
- export { AttachedThemes };
5
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","names":[],"sources":["../../../src/highlighter/themes/constants.ts"],"mappings":";cAIa,gBAAgB"}
@@ -1,6 +0,0 @@
1
- //#region src/highlighter/themes/constants.ts
2
- const AttachedThemes = /* @__PURE__ */ new Set();
3
- //#endregion
4
- export { AttachedThemes };
5
-
6
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","names":[],"sources":["../../../src/highlighter/themes/constants.ts"],"sourcesContent":["// Names of themes that have been loaded into the active highlighter via\n// loadThemeSync. This is the highlighter-attachment concern, kept separate from\n// the resolved-theme cache in the diffs theme resolver. Cleared by\n// cleanUpResolvedThemes when the highlighter is disposed.\nexport const AttachedThemes: Set<string> = new Set();\n"],"mappings":";AAIA,MAAa,iCAA8B,IAAI,IAAI"}
@@ -1,7 +0,0 @@
1
- import { DiffsThemeNames, ThemeRegistrationResolved } from "../../types.js";
2
- //#region src/highlighter/themes/themeResolution.d.ts
3
- declare function prepareThemeResolution(themeName: DiffsThemeNames): void;
4
- declare function validateResolvedThemeName(themeName: DiffsThemeNames, theme: ThemeRegistrationResolved): void;
5
- //#endregion
6
- export { prepareThemeResolution, validateResolvedThemeName };
7
- //# sourceMappingURL=themeResolution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"themeResolution.d.ts","names":[],"sources":["../../../src/highlighter/themes/themeResolution.ts"],"mappings":";;iBAWgB,uBAAuB,WAAW;iBAsBlC,0BACd,WAAW,iBACX,OAAO"}
@@ -1,21 +0,0 @@
1
- import { isWorkerContext } from "../../utils/isWorkerContext.js";
2
- import { themeResolver } from "./themeResolver.js";
3
- import { shikiThemes } from "@pierre/theming/themes";
4
- //#region src/highlighter/themes/themeResolution.ts
5
- function prepareThemeResolution(themeName) {
6
- if (isWorkerContext()) throw new Error(`Theme "${themeName}" cannot be resolved from a worker context. Themes must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);
7
- if (themeResolver.hasRegisteredTheme(themeName)) return;
8
- const descriptor = shikiThemes.getTheme(themeName);
9
- if (descriptor != null) {
10
- themeResolver.registerThemeIfAbsent(descriptor.name, descriptor.load);
11
- return;
12
- }
13
- throw new Error(`No valid theme loader registered for "${themeName}"`);
14
- }
15
- function validateResolvedThemeName(themeName, theme) {
16
- if (theme.name !== themeName) throw new Error(`resolvedTheme: themeName: ${themeName} does not match theme.name: ${theme.name}`);
17
- }
18
- //#endregion
19
- export { prepareThemeResolution, validateResolvedThemeName };
20
-
21
- //# sourceMappingURL=themeResolution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"themeResolution.js","names":[],"sources":["../../../src/highlighter/themes/themeResolution.ts"],"sourcesContent":["import type { ThemeLoader } from '@pierre/theming';\nimport { shikiThemes } from '@pierre/theming/themes';\n\nimport type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { isWorkerContext } from '../../utils/isWorkerContext';\nimport { themeResolver } from './themeResolver';\n\n// Shared diffs-specific checks for resolving themes. The generic theming\n// resolver owns cache/registry mechanics; diffs still owns worker restrictions,\n// Shiki fallback registration, and validating theme.name against the requested\n// registry key.\nexport function prepareThemeResolution(themeName: DiffsThemeNames): void {\n if (isWorkerContext()) {\n throw new Error(\n `Theme \"${themeName}\" cannot be resolved from a worker context. ` +\n 'Themes must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.'\n );\n }\n\n if (themeResolver.hasRegisteredTheme(themeName)) {\n return;\n }\n const descriptor = shikiThemes.getTheme(themeName);\n if (descriptor != null) {\n themeResolver.registerThemeIfAbsent(\n descriptor.name,\n descriptor.load as ThemeLoader<ThemeRegistrationResolved>\n );\n return;\n }\n throw new Error(`No valid theme loader registered for \"${themeName}\"`);\n}\n\nexport function validateResolvedThemeName(\n themeName: DiffsThemeNames,\n theme: ThemeRegistrationResolved\n): void {\n if (theme.name !== themeName) {\n throw new Error(\n `resolvedTheme: themeName: ${themeName} does not match theme.name: ${theme.name}`\n );\n }\n}\n"],"mappings":";;;;AAWA,SAAgB,uBAAuB,WAAkC;CACvE,IAAI,gBAAgB,GAClB,MAAM,IAAI,MACR,UAAU,UAAU,yJAEtB;CAGF,IAAI,cAAc,mBAAmB,SAAS,GAC5C;CAEF,MAAM,aAAa,YAAY,SAAS,SAAS;CACjD,IAAI,cAAc,MAAM;EACtB,cAAc,sBACZ,WAAW,MACX,WAAW,IACb;EACA;CACF;CACA,MAAM,IAAI,MAAM,yCAAyC,UAAU,EAAE;AACvE;AAEA,SAAgB,0BACd,WACA,OACM;CACN,IAAI,MAAM,SAAS,WACjB,MAAM,IAAI,MACR,6BAA6B,UAAU,8BAA8B,MAAM,MAC7E;AAEJ"}
@@ -1,23 +0,0 @@
1
- import { ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions } from "./types.js";
2
- import { GrammarState, ThemedToken } from "shiki/core";
3
- //#region src/shiki-stream/tokenizer.d.ts
4
- declare class ShikiStreamTokenizer {
5
- readonly options: ShikiStreamTokenizerOptions;
6
- tokensStable: ThemedToken[];
7
- tokensUnstable: ThemedToken[];
8
- lastUnstableCodeChunk: string;
9
- lastStableGrammarState: GrammarState | undefined;
10
- constructor(options: ShikiStreamTokenizerOptions);
11
- /**
12
- * Enqueue a chunk of code to the buffer.
13
- */
14
- enqueue(chunk: string): Promise<ShikiStreamTokenizerEnqueueResult>;
15
- close(): {
16
- stable: ThemedToken[];
17
- };
18
- clear(): void;
19
- clone(): ShikiStreamTokenizer;
20
- }
21
- //#endregion
22
- export { ShikiStreamTokenizer };
23
- //# sourceMappingURL=tokenizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenizer.d.ts","names":[],"sources":["../../src/shiki-stream/tokenizer.ts"],"mappings":";;;cAQa;WACK,SAAS;EAElB,cAAc;EACd,gBAAgB;EAEhB;EACA,wBAAwB;EAE/B,YAAY,SAAS;;;;EAQf,QAAQ,gBAAgB,QAAQ;EAoCtC;IAAW,QAAQ;;EAUnB;EAOA,SAAS"}
@@ -1,72 +0,0 @@
1
- import { appendItems } from "../utils/appendItems.js";
2
- //#region src/shiki-stream/tokenizer.ts
3
- var ShikiStreamTokenizer = class ShikiStreamTokenizer {
4
- options;
5
- tokensStable = [];
6
- tokensUnstable = [];
7
- lastUnstableCodeChunk = "";
8
- lastStableGrammarState;
9
- constructor(options) {
10
- this.options = options;
11
- }
12
- /**
13
- * Enqueue a chunk of code to the buffer.
14
- */
15
- async enqueue(chunk) {
16
- const chunkLines = (this.lastUnstableCodeChunk + chunk).split("\n");
17
- const stable = [];
18
- let unstable = [];
19
- const recall = this.tokensUnstable.length;
20
- chunkLines.forEach((line, i) => {
21
- const isLastLine = i === chunkLines.length - 1;
22
- const result = this.options.highlighter.codeToTokens(line, {
23
- ...this.options,
24
- grammarState: this.lastStableGrammarState
25
- });
26
- const tokens = result.tokens[0];
27
- if (!isLastLine) tokens.push({
28
- content: "\n",
29
- offset: 0
30
- });
31
- if (!isLastLine) {
32
- this.lastStableGrammarState = result.grammarState;
33
- stable.push(...tokens);
34
- } else {
35
- unstable = tokens;
36
- this.lastUnstableCodeChunk = line;
37
- }
38
- });
39
- appendItems(this.tokensStable, stable);
40
- this.tokensUnstable = unstable;
41
- return {
42
- recall,
43
- stable,
44
- unstable
45
- };
46
- }
47
- close() {
48
- const stable = this.tokensUnstable;
49
- this.tokensUnstable = [];
50
- this.lastUnstableCodeChunk = "";
51
- this.lastStableGrammarState = void 0;
52
- return { stable };
53
- }
54
- clear() {
55
- this.tokensStable = [];
56
- this.tokensUnstable = [];
57
- this.lastUnstableCodeChunk = "";
58
- this.lastStableGrammarState = void 0;
59
- }
60
- clone() {
61
- const clone = new ShikiStreamTokenizer(this.options);
62
- clone.lastUnstableCodeChunk = this.lastUnstableCodeChunk;
63
- clone.tokensUnstable = this.tokensUnstable;
64
- clone.tokensStable = this.tokensStable;
65
- clone.lastStableGrammarState = this.lastStableGrammarState;
66
- return clone;
67
- }
68
- };
69
- //#endregion
70
- export { ShikiStreamTokenizer };
71
-
72
- //# sourceMappingURL=tokenizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenizer.js","names":[],"sources":["../../src/shiki-stream/tokenizer.ts"],"sourcesContent":["import type { GrammarState, ThemedToken } from 'shiki/core';\n\nimport { appendItems } from '../utils/appendItems';\nimport type {\n ShikiStreamTokenizerEnqueueResult,\n ShikiStreamTokenizerOptions,\n} from './types';\n\nexport class ShikiStreamTokenizer {\n public readonly options: ShikiStreamTokenizerOptions;\n\n public tokensStable: ThemedToken[] = [];\n public tokensUnstable: ThemedToken[] = [];\n\n public lastUnstableCodeChunk: string = '';\n public lastStableGrammarState: GrammarState | undefined;\n\n constructor(options: ShikiStreamTokenizerOptions) {\n this.options = options;\n }\n\n /**\n * Enqueue a chunk of code to the buffer.\n */\n // oxlint-disable-next-line typescript/require-await\n async enqueue(chunk: string): Promise<ShikiStreamTokenizerEnqueueResult> {\n const chunkLines = (this.lastUnstableCodeChunk + chunk).split('\\n');\n\n const stable: ThemedToken[] = [];\n let unstable: ThemedToken[] = [];\n const recall = this.tokensUnstable.length;\n\n chunkLines.forEach((line, i) => {\n const isLastLine = i === chunkLines.length - 1;\n\n const result = this.options.highlighter.codeToTokens(line, {\n ...this.options,\n grammarState: this.lastStableGrammarState,\n });\n const tokens = result.tokens[0]; // only one line\n if (!isLastLine) tokens.push({ content: '\\n', offset: 0 });\n\n if (!isLastLine) {\n this.lastStableGrammarState = result.grammarState;\n stable.push(...tokens);\n } else {\n unstable = tokens;\n this.lastUnstableCodeChunk = line;\n }\n });\n\n appendItems(this.tokensStable, stable);\n this.tokensUnstable = unstable;\n\n return {\n recall,\n stable,\n unstable,\n };\n }\n\n close(): { stable: ThemedToken[] } {\n const stable = this.tokensUnstable;\n this.tokensUnstable = [];\n this.lastUnstableCodeChunk = '';\n this.lastStableGrammarState = undefined;\n return {\n stable,\n };\n }\n\n clear(): void {\n this.tokensStable = [];\n this.tokensUnstable = [];\n this.lastUnstableCodeChunk = '';\n this.lastStableGrammarState = undefined;\n }\n\n clone(): ShikiStreamTokenizer {\n const clone = new ShikiStreamTokenizer(this.options);\n clone.lastUnstableCodeChunk = this.lastUnstableCodeChunk;\n clone.tokensUnstable = this.tokensUnstable;\n clone.tokensStable = this.tokensStable;\n clone.lastStableGrammarState = this.lastStableGrammarState;\n return clone;\n }\n}\n"],"mappings":";;AAQA,IAAa,uBAAb,MAAa,qBAAqB;CAChC;CAEA,eAAqC,CAAC;CACtC,iBAAuC,CAAC;CAExC,wBAAuC;CACvC;CAEA,YAAY,SAAsC;EAChD,KAAK,UAAU;CACjB;;;;CAMA,MAAM,QAAQ,OAA2D;EACvE,MAAM,cAAc,KAAK,wBAAwB,MAAA,CAAO,MAAM,IAAI;EAElE,MAAM,SAAwB,CAAC;EAC/B,IAAI,WAA0B,CAAC;EAC/B,MAAM,SAAS,KAAK,eAAe;EAEnC,WAAW,SAAS,MAAM,MAAM;GAC9B,MAAM,aAAa,MAAM,WAAW,SAAS;GAE7C,MAAM,SAAS,KAAK,QAAQ,YAAY,aAAa,MAAM;IACzD,GAAG,KAAK;IACR,cAAc,KAAK;GACrB,CAAC;GACD,MAAM,SAAS,OAAO,OAAO;GAC7B,IAAI,CAAC,YAAY,OAAO,KAAK;IAAE,SAAS;IAAM,QAAQ;GAAE,CAAC;GAEzD,IAAI,CAAC,YAAY;IACf,KAAK,yBAAyB,OAAO;IACrC,OAAO,KAAK,GAAG,MAAM;GACvB,OAAO;IACL,WAAW;IACX,KAAK,wBAAwB;GAC/B;EACF,CAAC;EAED,YAAY,KAAK,cAAc,MAAM;EACrC,KAAK,iBAAiB;EAEtB,OAAO;GACL;GACA;GACA;EACF;CACF;CAEA,QAAmC;EACjC,MAAM,SAAS,KAAK;EACpB,KAAK,iBAAiB,CAAC;EACvB,KAAK,wBAAwB;EAC7B,KAAK,yBAAyB,KAAA;EAC9B,OAAO,EACL,OACF;CACF;CAEA,QAAc;EACZ,KAAK,eAAe,CAAC;EACrB,KAAK,iBAAiB,CAAC;EACvB,KAAK,wBAAwB;EAC7B,KAAK,yBAAyB,KAAA;CAChC;CAEA,QAA8B;EAC5B,MAAM,QAAQ,IAAI,qBAAqB,KAAK,OAAO;EACnD,MAAM,wBAAwB,KAAK;EACnC,MAAM,iBAAiB,KAAK;EAC5B,MAAM,eAAe,KAAK;EAC1B,MAAM,yBAAyB,KAAK;EACpC,OAAO;CACT;AACF"}
@@ -1,12 +0,0 @@
1
- import { SharedRenderState, ShikiTransformer } from "../types.js";
2
- import { ShikiTransformerStyleToClass } from "@shikijs/transformers";
3
- //#region src/utils/createTransformerWithState.d.ts
4
- interface CreateTransformerWithStateReturn {
5
- state: SharedRenderState;
6
- transformers: ShikiTransformer[];
7
- toClass: ShikiTransformerStyleToClass;
8
- }
9
- declare function createTransformerWithState(useTokenTransformer?: boolean, useCSSClasses?: boolean): CreateTransformerWithStateReturn;
10
- //#endregion
11
- export { createTransformerWithState };
12
- //# sourceMappingURL=createTransformerWithState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTransformerWithState.d.ts","names":[],"sources":["../../src/utils/createTransformerWithState.ts"],"mappings":";;;UAYU;EACR,OAAO;EACP,cAAc;EACd,SAAS;;iBAOK,2BACd,+BACA,0BACC"}
@@ -1,89 +0,0 @@
1
- import { findCodeElement } from "./hast_utils.js";
2
- import { processLine } from "./processLine.js";
3
- import { wrapTokenFragments } from "./wrapTokenFragments.js";
4
- import { transformerStyleToClass } from "@shikijs/transformers";
5
- //#region src/utils/createTransformerWithState.ts
6
- function createTransformerWithState(useTokenTransformer = false, useCSSClasses = false) {
7
- const state = { lineInfo: [] };
8
- const transformers = [{
9
- line(node) {
10
- delete node.properties.class;
11
- return node;
12
- },
13
- pre(pre) {
14
- const code = findCodeElement(pre);
15
- const children = [];
16
- if (code != null) {
17
- let index = 1;
18
- for (const node of code.children) {
19
- if (node.type !== "element") continue;
20
- if (useTokenTransformer) wrapTokenFragments(node);
21
- children.push(processLine(node, index, state));
22
- index++;
23
- }
24
- code.children = children;
25
- }
26
- return pre;
27
- },
28
- ...useTokenTransformer ? {
29
- tokens(lines) {
30
- for (const line of lines) {
31
- let col = 0;
32
- for (const token of line) {
33
- const tokenWithOriginalRange = token;
34
- tokenWithOriginalRange.__lineChar ??= col;
35
- col += token.content.length;
36
- }
37
- }
38
- },
39
- preprocess(_code, options) {
40
- options.mergeWhitespaces = "never";
41
- },
42
- span(hast, _line, _char, _lineElement, token) {
43
- if (token?.offset != null && token.content != null) {
44
- const tokenChar = token.__lineChar;
45
- if (tokenChar != null) hast.properties["data-char"] = tokenChar;
46
- return hast;
47
- }
48
- return hast;
49
- }
50
- } : null
51
- }];
52
- if (useCSSClasses) transformers.push(tokenStyleNormalizer, toClass);
53
- if (useTokenTransformer) transformers.push({ line: (node) => {
54
- if (node.type === "element" && node.children.length === 0) node.children.push({
55
- type: "element",
56
- tagName: "br",
57
- properties: {},
58
- children: []
59
- });
60
- return node;
61
- } });
62
- return {
63
- state,
64
- transformers,
65
- toClass
66
- };
67
- }
68
- const toClass = transformerStyleToClass({ classPrefix: "hl-" });
69
- const tokenStyleNormalizer = {
70
- name: "token-style-normalizer",
71
- tokens(lines) {
72
- for (const line of lines) for (const token of line) {
73
- if (token.htmlStyle != null) continue;
74
- const style = {};
75
- if (token.color != null) style.color = token.color;
76
- if (token.bgColor != null) style["background-color"] = token.bgColor;
77
- if (token.fontStyle != null && token.fontStyle !== 0) {
78
- if ((token.fontStyle & 1) !== 0) style["font-style"] = "italic";
79
- if ((token.fontStyle & 2) !== 0) style["font-weight"] = "bold";
80
- if ((token.fontStyle & 4) !== 0) style["text-decoration"] = "underline";
81
- }
82
- if (Object.keys(style).length > 0) token.htmlStyle = style;
83
- }
84
- }
85
- };
86
- //#endregion
87
- export { createTransformerWithState };
88
-
89
- //# sourceMappingURL=createTransformerWithState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTransformerWithState.js","names":["tokenWithOriginalRange"],"sources":["../../src/utils/createTransformerWithState.ts"],"sourcesContent":["import {\n type ShikiTransformerStyleToClass,\n transformerStyleToClass,\n} from '@shikijs/transformers';\nimport type { ElementContent } from 'hast';\nimport type { ThemedToken } from 'shiki';\n\nimport type { SharedRenderState, ShikiTransformer } from '../types';\nimport { findCodeElement } from './hast_utils';\nimport { processLine } from './processLine';\nimport { wrapTokenFragments } from './wrapTokenFragments';\n\ninterface CreateTransformerWithStateReturn {\n state: SharedRenderState;\n transformers: ShikiTransformer[];\n toClass: ShikiTransformerStyleToClass;\n}\n\ntype TokenWithLineChar = ThemedToken & {\n __lineChar?: number;\n};\n\nexport function createTransformerWithState(\n useTokenTransformer = false,\n useCSSClasses = false\n): CreateTransformerWithStateReturn {\n const state: SharedRenderState = { lineInfo: [] };\n const transformers: ShikiTransformer[] = [\n {\n line(node) {\n // Remove the default class\n delete node.properties.class;\n return node;\n },\n pre(pre) {\n const code = findCodeElement(pre);\n const children: ElementContent[] = [];\n if (code != null) {\n let index = 1;\n for (const node of code.children) {\n if (node.type !== 'element') continue;\n if (useTokenTransformer) {\n wrapTokenFragments(node);\n }\n children.push(processLine(node, index, state));\n index++;\n }\n code.children = children;\n }\n return pre;\n },\n ...(useTokenTransformer\n ? {\n tokens(lines) {\n for (const line of lines) {\n let col = 0;\n for (const token of line) {\n const tokenWithOriginalRange = token as TokenWithLineChar;\n tokenWithOriginalRange.__lineChar ??= col;\n col += token.content.length;\n }\n }\n },\n preprocess(_code, options) {\n options.mergeWhitespaces = 'never';\n },\n span(hast, _line, _char, _lineElement, token) {\n if (token?.offset != null && token.content != null) {\n const tokenWithOriginalRange = token as TokenWithLineChar;\n const tokenChar = tokenWithOriginalRange.__lineChar;\n if (tokenChar != null) {\n hast.properties['data-char'] = tokenChar;\n }\n return hast;\n }\n return hast;\n },\n }\n : null),\n },\n ];\n if (useCSSClasses) {\n transformers.push(tokenStyleNormalizer, toClass);\n }\n if (useTokenTransformer) {\n // shiki renders empty lines as \" \" that breaks the editor selection.\n // We replace them with <br> tags.\n transformers.push({\n line: (node) => {\n if (node.type === 'element' && node.children.length === 0) {\n node.children.push({\n type: 'element',\n tagName: 'br',\n properties: {},\n children: [],\n });\n }\n return node;\n },\n });\n }\n return { state, transformers, toClass };\n}\n\nconst toClass = transformerStyleToClass({ classPrefix: 'hl-' });\n\n// Create a transformer that converts token color/fontStyle to htmlStyle\n// This needs to run BEFORE transformerStyleToClass\nconst tokenStyleNormalizer: ShikiTransformer = {\n name: 'token-style-normalizer',\n tokens(lines) {\n for (const line of lines) {\n for (const token of line) {\n // Skip if htmlStyle is already set\n if (token.htmlStyle != null) continue;\n\n const style: Record<string, string> = {};\n\n if (token.color != null) {\n style.color = token.color;\n }\n if (token.bgColor != null) {\n style['background-color'] = token.bgColor;\n }\n if (token.fontStyle != null && token.fontStyle !== 0) {\n // FontStyle is a bitmask: 1 = italic, 2 = bold, 4 = underline\n if ((token.fontStyle & 1) !== 0) {\n style['font-style'] = 'italic';\n }\n if ((token.fontStyle & 2) !== 0) {\n style['font-weight'] = 'bold';\n }\n if ((token.fontStyle & 4) !== 0) {\n style['text-decoration'] = 'underline';\n }\n }\n\n // Only set htmlStyle if we have any styles\n if (Object.keys(style).length > 0) {\n token.htmlStyle = style;\n }\n }\n }\n },\n};\n"],"mappings":";;;;;AAsBA,SAAgB,2BACd,sBAAsB,OACtB,gBAAgB,OACkB;CAClC,MAAM,QAA2B,EAAE,UAAU,CAAC,EAAE;CAChD,MAAM,eAAmC,CACvC;EACE,KAAK,MAAM;GAET,OAAO,KAAK,WAAW;GACvB,OAAO;EACT;EACA,IAAI,KAAK;GACP,MAAM,OAAO,gBAAgB,GAAG;GAChC,MAAM,WAA6B,CAAC;GACpC,IAAI,QAAQ,MAAM;IAChB,IAAI,QAAQ;IACZ,KAAK,MAAM,QAAQ,KAAK,UAAU;KAChC,IAAI,KAAK,SAAS,WAAW;KAC7B,IAAI,qBACF,mBAAmB,IAAI;KAEzB,SAAS,KAAK,YAAY,MAAM,OAAO,KAAK,CAAC;KAC7C;IACF;IACA,KAAK,WAAW;GAClB;GACA,OAAO;EACT;EACA,GAAI,sBACA;GACE,OAAO,OAAO;IACZ,KAAK,MAAM,QAAQ,OAAO;KACxB,IAAI,MAAM;KACV,KAAK,MAAM,SAAS,MAAM;MACxB,MAAM,yBAAyB;MAC/B,uBAAuB,eAAe;MACtC,OAAO,MAAM,QAAQ;KACvB;IACF;GACF;GACA,WAAW,OAAO,SAAS;IACzB,QAAQ,mBAAmB;GAC7B;GACA,KAAK,MAAM,OAAO,OAAO,cAAc,OAAO;IAC5C,IAAI,OAAO,UAAU,QAAQ,MAAM,WAAW,MAAM;KAElD,MAAM,YAAYA,MAAuB;KACzC,IAAI,aAAa,MACf,KAAK,WAAW,eAAe;KAEjC,OAAO;IACT;IACA,OAAO;GACT;EACF,IACA;CACN,CACF;CACA,IAAI,eACF,aAAa,KAAK,sBAAsB,OAAO;CAEjD,IAAI,qBAGF,aAAa,KAAK,EAChB,OAAO,SAAS;EACd,IAAI,KAAK,SAAS,aAAa,KAAK,SAAS,WAAW,GACtD,KAAK,SAAS,KAAK;GACjB,MAAM;GACN,SAAS;GACT,YAAY,CAAC;GACb,UAAU,CAAC;EACb,CAAC;EAEH,OAAO;CACT,EACF,CAAC;CAEH,OAAO;EAAE;EAAO;EAAc;CAAQ;AACxC;AAEA,MAAM,UAAU,wBAAwB,EAAE,aAAa,MAAM,CAAC;AAI9D,MAAM,uBAAyC;CAC7C,MAAM;CACN,OAAO,OAAO;EACZ,KAAK,MAAM,QAAQ,OACjB,KAAK,MAAM,SAAS,MAAM;GAExB,IAAI,MAAM,aAAa,MAAM;GAE7B,MAAM,QAAgC,CAAC;GAEvC,IAAI,MAAM,SAAS,MACjB,MAAM,QAAQ,MAAM;GAEtB,IAAI,MAAM,WAAW,MACnB,MAAM,sBAAsB,MAAM;GAEpC,IAAI,MAAM,aAAa,QAAQ,MAAM,cAAc,GAAG;IAEpD,KAAK,MAAM,YAAY,OAAO,GAC5B,MAAM,gBAAgB;IAExB,KAAK,MAAM,YAAY,OAAO,GAC5B,MAAM,iBAAiB;IAEzB,KAAK,MAAM,YAAY,OAAO,GAC5B,MAAM,qBAAqB;GAE/B;GAGA,IAAI,OAAO,KAAK,KAAK,CAAC,CAAC,SAAS,GAC9B,MAAM,YAAY;EAEtB;CAEJ;AACF"}