@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.
- package/README.md +4 -3
- package/dist/components/CodeView.d.ts +2 -1
- package/dist/components/CodeView.d.ts.map +1 -1
- package/dist/components/CodeView.js +27 -16
- package/dist/components/CodeView.js.map +1 -1
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +14 -7
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +7 -4
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +16 -9
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.d.ts +6 -4
- package/dist/components/FileStream.d.ts.map +1 -1
- package/dist/components/FileStream.js +49 -36
- package/dist/components/FileStream.js.map +1 -1
- package/dist/components/VirtualizedFile.d.ts.map +1 -1
- package/dist/components/VirtualizedFile.js +10 -5
- package/dist/components/VirtualizedFile.js.map +1 -1
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
- package/dist/components/VirtualizedFileDiff.js +3 -4
- package/dist/components/VirtualizedFileDiff.js.map +1 -1
- package/dist/constants.d.ts +3 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/editor/editor.d.ts +2 -1
- package/dist/editor/editor.d.ts.map +1 -1
- package/dist/editor/editor.js +10 -3
- package/dist/editor/editor.js.map +1 -1
- package/dist/editor/getChangedDocumentLines.d.ts +6 -0
- package/dist/editor/getChangedDocumentLines.d.ts.map +1 -0
- package/dist/editor/getChangedDocumentLines.js +35 -0
- package/dist/editor/getChangedDocumentLines.js.map +1 -0
- package/dist/editor/tokenizer.d.ts +6 -4
- package/dist/editor/tokenizer.d.ts.map +1 -1
- package/dist/editor/tokenizer.js +25 -470
- package/dist/editor/tokenizer.js.map +1 -1
- package/dist/highlighter/DiffsEditorTokenizer.d.ts +16 -0
- package/dist/highlighter/DiffsEditorTokenizer.d.ts.map +1 -0
- package/dist/highlighter/DiffsEditorTokenizer.js +0 -0
- package/dist/highlighter/DiffsHighlighter.d.ts +41 -0
- package/dist/highlighter/DiffsHighlighter.d.ts.map +1 -0
- package/dist/highlighter/DiffsHighlighter.js +39 -0
- package/dist/highlighter/DiffsHighlighter.js.map +1 -0
- package/dist/highlighter/backends/highlights.d.ts +26 -0
- package/dist/highlighter/backends/highlights.d.ts.map +1 -0
- package/dist/highlighter/backends/highlights.js +71 -0
- package/dist/highlighter/backends/highlights.js.map +1 -0
- package/dist/highlighter/backends/shiki.d.ts +27 -0
- package/dist/highlighter/backends/shiki.d.ts.map +1 -0
- package/dist/highlighter/backends/shiki.js +107 -0
- package/dist/highlighter/backends/shiki.js.map +1 -0
- package/dist/highlighter/highlighterType.d.ts +13 -0
- package/dist/highlighter/highlighterType.d.ts.map +1 -0
- package/dist/highlighter/highlighterType.js +32 -0
- package/dist/highlighter/highlighterType.js.map +1 -0
- package/dist/highlighter/highlights-editor.d.ts +24 -0
- package/dist/highlighter/highlights-editor.d.ts.map +1 -0
- package/dist/highlighter/highlights-editor.js +166 -0
- package/dist/highlighter/highlights-editor.js.map +1 -0
- package/dist/highlighter/highlights-stream.d.ts +20 -0
- package/dist/highlighter/highlights-stream.d.ts.map +1 -0
- package/dist/highlighter/highlights-stream.js +93 -0
- package/dist/highlighter/highlights-stream.js.map +1 -0
- package/dist/highlighter/languages/areLanguagesAttached.d.ts +2 -1
- package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
- package/dist/highlighter/languages/areLanguagesAttached.js +4 -6
- package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts +6 -1
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.js +6 -11
- package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
- package/dist/highlighter/languages/constants.d.ts +1 -1
- package/dist/highlighter/languages/getResolvedLanguages.d.ts +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/resolveLanguage.js +19 -16
- package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
- package/dist/highlighter/languages/resolveLanguages.d.ts +1 -1
- package/dist/highlighter/shared_highlighter.d.ts +23 -9
- package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
- package/dist/highlighter/shared_highlighter.js +59 -47
- package/dist/highlighter/shared_highlighter.js.map +1 -1
- package/dist/highlighter/shiki-editor.d.ts +25 -0
- package/dist/highlighter/shiki-editor.d.ts.map +1 -0
- package/dist/highlighter/shiki-editor.js +483 -0
- package/dist/highlighter/shiki-editor.js.map +1 -0
- package/dist/highlighter/shiki-stream.d.ts +20 -0
- package/dist/highlighter/shiki-stream.d.ts.map +1 -0
- package/dist/highlighter/shiki-stream.js +60 -0
- package/dist/highlighter/shiki-stream.js.map +1 -0
- package/dist/highlighter/stream-tokenizer.d.ts +40 -0
- package/dist/highlighter/stream-tokenizer.d.ts.map +1 -0
- package/dist/highlighter/stream-tokenizer.js +70 -0
- package/dist/highlighter/stream-tokenizer.js.map +1 -0
- package/dist/highlighter/themes/areThemesAttached.d.ts +3 -2
- package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
- package/dist/highlighter/themes/areThemesAttached.js +5 -4
- package/dist/highlighter/themes/areThemesAttached.js.map +1 -1
- package/dist/highlighter/themes/attachResolvedThemes.d.ts +5 -2
- package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/attachResolvedThemes.js +4 -16
- package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts +3 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.js +8 -5
- package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/createCSSVariablesTheme.d.ts +7 -0
- package/dist/highlighter/themes/createCSSVariablesTheme.d.ts.map +1 -0
- package/dist/highlighter/themes/createCSSVariablesTheme.js +89 -0
- package/dist/highlighter/themes/createCSSVariablesTheme.js.map +1 -0
- package/dist/highlighter/themes/createCachedLoader.d.ts +5 -0
- package/dist/highlighter/themes/createCachedLoader.d.ts.map +1 -0
- package/dist/highlighter/themes/createCachedLoader.js +15 -0
- package/dist/highlighter/themes/createCachedLoader.js.map +1 -0
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts +3 -2
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedOrResolveTheme.js +4 -4
- package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
- package/dist/highlighter/themes/getResolvedThemes.d.ts +3 -2
- package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedThemes.js +4 -3
- package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/hasResolvedThemes.d.ts +2 -2
- package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/hasResolvedThemes.js +4 -3
- package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +3 -3
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
- package/dist/highlighter/themes/registerCustomTheme.d.ts +9 -4
- package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomTheme.js +8 -16
- package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
- package/dist/highlighter/themes/resolveTheme.d.ts +3 -2
- package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveTheme.js +4 -7
- package/dist/highlighter/themes/resolveTheme.js.map +1 -1
- package/dist/highlighter/themes/resolveThemes.d.ts +3 -2
- package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveThemes.js +4 -7
- package/dist/highlighter/themes/resolveThemes.js.map +1 -1
- package/dist/highlighter/themes/themeResolver.d.ts +10 -4
- package/dist/highlighter/themes/themeResolver.d.ts.map +1 -1
- package/dist/highlighter/themes/themeResolver.js +141 -2
- package/dist/highlighter/themes/themeResolver.js.map +1 -1
- package/dist/highlighter/themes/types.d.ts +23 -0
- package/dist/highlighter/themes/types.d.ts.map +1 -0
- package/dist/highlighter/themes/types.js +0 -0
- package/dist/highlighter/tokenizer-types.d.ts +35 -0
- package/dist/highlighter/tokenizer-types.d.ts.map +1 -0
- package/dist/highlighter/tokenizer-types.js +0 -0
- package/dist/highlighter/types.d.ts +55 -0
- package/dist/highlighter/types.d.ts.map +1 -0
- package/dist/highlighter/types.js +0 -0
- package/dist/index.d.ts +14 -10
- package/dist/index.js +16 -18
- package/dist/managers/InteractionManager.d.ts.map +1 -1
- package/dist/managers/InteractionManager.js +2 -2
- package/dist/managers/InteractionManager.js.map +1 -1
- package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +9 -1
- package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -1
- package/dist/react/CodeView.js +1 -1
- package/dist/react/index.d.ts +8 -3
- package/dist/renderers/DiffHunksRenderer.d.ts +3 -2
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +50 -24
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +2 -1
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +33 -24
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/shiki-stream/index.d.ts +3 -3
- package/dist/shiki-stream/index.js +1 -2
- package/dist/shiki-stream/stream.d.ts +4 -4
- package/dist/shiki-stream/stream.d.ts.map +1 -1
- package/dist/shiki-stream/stream.js +20 -9
- package/dist/shiki-stream/stream.js.map +1 -1
- package/dist/shiki-stream/types.d.ts +7 -38
- package/dist/shiki-stream/types.d.ts.map +1 -1
- package/dist/ssr/FileDiffReact.js +1 -1
- package/dist/ssr/index.d.ts +7 -2
- package/dist/ssr/renderHTML.js +2 -2
- package/dist/ssr/renderHTML.js.map +1 -1
- package/dist/style.js +1 -1
- package/dist/style.js.map +1 -1
- package/dist/types.d.ts +13 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/computeVirtualFileMetrics.d.ts +2 -1
- package/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -1
- package/dist/utils/computeVirtualFileMetrics.js +5 -3
- package/dist/utils/computeVirtualFileMetrics.js.map +1 -1
- package/dist/utils/createSpanNodeFromToken.d.ts +3 -2
- package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
- package/dist/utils/createSpanNodeFromToken.js +4 -5
- package/dist/utils/createSpanNodeFromToken.js.map +1 -1
- package/dist/utils/cssWrappers.d.ts.map +1 -1
- package/dist/utils/cssWrappers.js +12 -0
- package/dist/utils/cssWrappers.js.map +1 -1
- package/dist/utils/getDiffHunksRendererOptions.js +1 -0
- package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
- package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
- package/dist/utils/getFiletypeFromFileName.js +21 -3
- package/dist/utils/getFiletypeFromFileName.js.map +1 -1
- package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
- package/dist/utils/getHighlighterOptions.js +3 -2
- package/dist/utils/getHighlighterOptions.js.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.d.ts +2 -1
- package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.js +13 -3
- package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
- package/dist/utils/getTokenOptions.d.ts +7 -0
- package/dist/utils/getTokenOptions.d.ts.map +1 -0
- package/dist/utils/getTokenOptions.js +16 -0
- package/dist/utils/getTokenOptions.js.map +1 -0
- package/dist/utils/hastToHtml.d.ts +10 -0
- package/dist/utils/hastToHtml.d.ts.map +1 -0
- package/dist/utils/hastToHtml.js +125 -0
- package/dist/utils/hastToHtml.js.map +1 -0
- package/dist/utils/parseDiffDecorations.d.ts +2 -1
- package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
- package/dist/utils/platform.d.ts +2 -1
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/utils/platform.js +6 -1
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.d.ts +3 -2
- package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.js +33 -48
- package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
- package/dist/utils/renderFileWithHighlighter.d.ts +3 -2
- package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderFileWithHighlighter.js +10 -26
- package/dist/utils/renderFileWithHighlighter.js.map +1 -1
- package/dist/utils/renderTokenLines.d.ts +17 -0
- package/dist/utils/renderTokenLines.d.ts.map +1 -0
- package/dist/utils/renderTokenLines.js +246 -0
- package/dist/utils/renderTokenLines.js.map +1 -0
- package/dist/utils/resolvePreferredHighlighter.d.ts +13 -0
- package/dist/utils/resolvePreferredHighlighter.d.ts.map +1 -0
- package/dist/utils/resolvePreferredHighlighter.js +11 -0
- package/dist/utils/resolvePreferredHighlighter.js.map +1 -0
- package/dist/utils/setDeferredArrayItem.d.ts +5 -0
- package/dist/utils/setDeferredArrayItem.d.ts.map +1 -0
- package/dist/utils/setDeferredArrayItem.js +39 -0
- package/dist/utils/setDeferredArrayItem.js.map +1 -0
- package/dist/utils/tokenStyle.d.ts +7 -0
- package/dist/utils/tokenStyle.d.ts.map +1 -0
- package/dist/utils/tokenStyle.js +28 -0
- package/dist/utils/tokenStyle.js.map +1 -0
- package/dist/utils/tokensToHtml.d.ts +8 -0
- package/dist/utils/tokensToHtml.d.ts.map +1 -0
- package/dist/utils/tokensToHtml.js +45 -0
- package/dist/utils/tokensToHtml.js.map +1 -0
- package/dist/utils/wrapTokenFragments.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts +10 -2
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +85 -60
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/errors.d.ts +35 -0
- package/dist/worker/errors.d.ts.map +1 -0
- package/dist/worker/errors.js +52 -0
- package/dist/worker/errors.js.map +1 -0
- package/dist/worker/hastLinesTransport.d.ts +14 -0
- package/dist/worker/hastLinesTransport.d.ts.map +1 -0
- package/dist/worker/hastLinesTransport.js +156 -0
- package/dist/worker/hastLinesTransport.js.map +1 -0
- package/dist/worker/highlights-sAHlxqlf.js +317 -0
- package/dist/worker/highlights-sAHlxqlf.js.map +1 -0
- package/dist/worker/index.d.ts +2 -1
- package/dist/worker/index.js +2 -1
- package/dist/worker/shiki-Bx2JpdqZ.js +697 -0
- package/dist/worker/shiki-Bx2JpdqZ.js.map +1 -0
- package/dist/worker/stream-tokenizer-YZ6M1qSx.js +424 -0
- package/dist/worker/stream-tokenizer-YZ6M1qSx.js.map +1 -0
- package/dist/worker/types.d.ts +18 -3
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/worker-portable.js +41 -13319
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +693 -352
- package/dist/worker/worker.js.map +1 -1
- package/dist/worker/workerMessage.d.ts +24 -0
- package/dist/worker/workerMessage.d.ts.map +1 -0
- package/dist/worker/workerMessage.js +0 -0
- package/package.json +33 -29
- package/dist/highlighter/themes/constants.d.ts +0 -5
- package/dist/highlighter/themes/constants.d.ts.map +0 -1
- package/dist/highlighter/themes/constants.js +0 -6
- package/dist/highlighter/themes/constants.js.map +0 -1
- package/dist/highlighter/themes/themeResolution.d.ts +0 -7
- package/dist/highlighter/themes/themeResolution.d.ts.map +0 -1
- package/dist/highlighter/themes/themeResolution.js +0 -21
- package/dist/highlighter/themes/themeResolution.js.map +0 -1
- package/dist/shiki-stream/tokenizer.d.ts +0 -23
- package/dist/shiki-stream/tokenizer.d.ts.map +0 -1
- package/dist/shiki-stream/tokenizer.js +0 -72
- package/dist/shiki-stream/tokenizer.js.map +0 -1
- package/dist/utils/createTransformerWithState.d.ts +0 -12
- package/dist/utils/createTransformerWithState.d.ts.map +0 -1
- package/dist/utils/createTransformerWithState.js +0 -89
- package/dist/utils/createTransformerWithState.js.map +0 -1
- package/dist/worker/wasm-B9ZqxnKj.js +0 -8
- 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.
|
|
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
|
-
"@
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
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": "
|
|
77
|
-
"@tsdown/css": "
|
|
78
|
-
"@types/hast": "
|
|
79
|
-
"@types/jsdom": "
|
|
80
|
-
"@types/react": "
|
|
81
|
-
"@types/react-dom": "
|
|
82
|
-
"autoprefixer": "
|
|
83
|
-
"jsdom": "
|
|
84
|
-
"lightningcss": "
|
|
85
|
-
"postcss": "
|
|
86
|
-
"postcss-calc": "
|
|
87
|
-
"postcss-nesting": "
|
|
88
|
-
"react": "
|
|
89
|
-
"react-dom": "
|
|
90
|
-
"tsdown": "
|
|
91
|
-
"typescript": "
|
|
92
|
-
"vite": "
|
|
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
|
-
|
|
107
|
-
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","names":[],"sources":["../../../src/highlighter/themes/constants.ts"],"mappings":";cAIa,gBAAgB"}
|
|
@@ -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"}
|