@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeVirtualFileMetrics.js","names":[],"sources":["../../src/utils/computeVirtualFileMetrics.ts"],"sourcesContent":["import { DEFAULT_VIRTUAL_FILE_METRICS } from '../constants';\nimport type { HunkSeparators, VirtualFileMetrics } from '../types';\n\nexport function computeVirtualFileMetrics(\n metrics?: Partial<VirtualFileMetrics>\n): VirtualFileMetrics {\n return {\n ...DEFAULT_VIRTUAL_FILE_METRICS,\n ...metrics,\n };\n}\n\nexport function getVirtualFileHeaderRegion(\n metrics: VirtualFileMetrics,\n disableFileHeader: boolean\n): number {\n
|
|
1
|
+
{"version":3,"file":"computeVirtualFileMetrics.js","names":[],"sources":["../../src/utils/computeVirtualFileMetrics.ts"],"sourcesContent":["import { DEFAULT_VIRTUAL_FILE_METRICS } from '../constants';\nimport type { HunkSeparators, VirtualFileMetrics } from '../types';\n\nexport function computeVirtualFileMetrics(\n metrics?: Partial<VirtualFileMetrics>\n): VirtualFileMetrics {\n return {\n ...DEFAULT_VIRTUAL_FILE_METRICS,\n ...metrics,\n };\n}\n\nexport function getVirtualFileHeaderRegion(\n metrics: VirtualFileMetrics,\n disableFileHeader: boolean\n): number {\n return (\n getVirtualFileHeaderHeight(metrics, disableFileHeader) +\n getVirtualFilePaddingTop(metrics, disableFileHeader)\n );\n}\n\n// Collapsed items render only the header. The top padding belongs to the\n// code content, which is removed on collapse.\nexport function getVirtualFileHeaderHeight(\n metrics: VirtualFileMetrics,\n disableFileHeader: boolean\n): number {\n return disableFileHeader ? 0 : metrics.diffHeaderHeight;\n}\n\nexport function getVirtualFilePaddingTop(\n metrics: VirtualFileMetrics,\n disableFileHeader: boolean\n): number {\n return metrics.paddingTop ?? (disableFileHeader ? metrics.spacing : 0);\n}\n\nexport function getVirtualFilePaddingBottom(\n metrics: VirtualFileMetrics\n): number {\n return metrics.paddingBottom ?? metrics.spacing;\n}\n\nexport function getDefaultHunkSeparatorHeight(type: HunkSeparators): number {\n switch (type) {\n case 'simple':\n return 4;\n case 'metadata':\n case 'line-info':\n case 'line-info-basic':\n case 'custom':\n return 32;\n }\n}\n"],"mappings":";;AAGA,SAAgB,0BACd,SACoB;CACpB,OAAO;EACL,GAAG;EACH,GAAG;CACL;AACF;AAEA,SAAgB,2BACd,SACA,mBACQ;CACR,OACE,2BAA2B,SAAS,iBAAiB,IACrD,yBAAyB,SAAS,iBAAiB;AAEvD;AAIA,SAAgB,2BACd,SACA,mBACQ;CACR,OAAO,oBAAoB,IAAI,QAAQ;AACzC;AAEA,SAAgB,yBACd,SACA,mBACQ;CACR,OAAO,QAAQ,eAAe,oBAAoB,QAAQ,UAAU;AACtE;AAEA,SAAgB,4BACd,SACQ;CACR,OAAO,QAAQ,iBAAiB,QAAQ;AAC1C;AAEA,SAAgB,8BAA8B,MAA8B;CAC1E,QAAQ,MAAR;EACE,KAAK,UACH,OAAO;EACT,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,UACH,OAAO;CACX;AACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ThemedToken } from "
|
|
1
|
+
import { ThemedToken } from "../highlighter/types.js";
|
|
2
|
+
import "../types.js";
|
|
2
3
|
//#region src/utils/createSpanNodeFromToken.d.ts
|
|
3
|
-
declare function createSpanFromToken(token: ThemedToken): HTMLSpanElement;
|
|
4
|
+
declare function createSpanFromToken(token: ThemedToken, cacheHtmlStyle: boolean): HTMLSpanElement;
|
|
4
5
|
//#endregion
|
|
5
6
|
export { createSpanFromToken };
|
|
6
7
|
//# sourceMappingURL=createSpanNodeFromToken.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSpanNodeFromToken.d.ts","names":[],"sources":["../../src/utils/createSpanNodeFromToken.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createSpanNodeFromToken.d.ts","names":[],"sources":["../../src/utils/createSpanNodeFromToken.ts"],"mappings":";;;iBAGgB,oBACd,OAAO,aACP,0BACC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { tokenStyle } from "./tokenStyle.js";
|
|
2
2
|
//#region src/utils/createSpanNodeFromToken.ts
|
|
3
|
-
function createSpanFromToken(token) {
|
|
3
|
+
function createSpanFromToken(token, cacheHtmlStyle) {
|
|
4
4
|
const element = document.createElement("span");
|
|
5
|
-
|
|
6
|
-
element.
|
|
7
|
-
element.textContent = token.content;
|
|
5
|
+
element.setAttribute("style", tokenStyle(token, cacheHtmlStyle));
|
|
6
|
+
element.textContent = token.content === "\r" ? "" : token.content;
|
|
8
7
|
return element;
|
|
9
8
|
}
|
|
10
9
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSpanNodeFromToken.js","names":[],"sources":["../../src/utils/createSpanNodeFromToken.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"createSpanNodeFromToken.js","names":[],"sources":["../../src/utils/createSpanNodeFromToken.ts"],"sourcesContent":["import type { ThemedToken } from '../types';\nimport { tokenStyle } from './tokenStyle';\n\nexport function createSpanFromToken(\n token: ThemedToken,\n cacheHtmlStyle: boolean\n): HTMLSpanElement {\n const element = document.createElement('span');\n // setAttribute lets Blink share parsed styles; style.cssText prevents reuse.\n element.setAttribute('style', tokenStyle(token, cacheHtmlStyle));\n // CR renders as a space under white-space: pre. Keep its span empty but\n // retain the node so token recalls remove the correct number of children.\n element.textContent = token.content === '\\r' ? '' : token.content;\n return element;\n}\n"],"mappings":";;AAGA,SAAgB,oBACd,OACA,gBACiB;CACjB,MAAM,UAAU,SAAS,cAAc,MAAM;CAE7C,QAAQ,aAAa,SAAS,WAAW,OAAO,cAAc,CAAC;CAG/D,QAAQ,cAAc,MAAM,YAAY,OAAO,KAAK,MAAM;CAC1D,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cssWrappers.d.ts","names":[],"sources":["../../src/utils/cssWrappers.ts"],"mappings":";;iBAUgB,YAAY;iBAQZ,cAAc;iBAOd,aACd,kBACA,YAAW,YACX;
|
|
1
|
+
{"version":3,"file":"cssWrappers.d.ts","names":[],"sources":["../../src/utils/cssWrappers.ts"],"mappings":";;iBAUgB,YAAY;iBAQZ,cAAc;iBAOd,aACd,kBACA,YAAW,YACX;iBAqCc,yBACd,kBACA"}
|
|
@@ -21,7 +21,19 @@ function wrapThemeCSS(themeCSS, themeType = "system", scrollbarGutter) {
|
|
|
21
21
|
const colorSchemeRule = themeType === "system" ? "" : `
|
|
22
22
|
color-scheme: ${themeType};`;
|
|
23
23
|
const scrollbarGutterVar = createMeasuredScrollbarGutterDeclaration(scrollbarGutter);
|
|
24
|
+
const tokenFontStyles = (themeType === "system" ? ["light", "dark"] : [themeType]).map((type) => {
|
|
25
|
+
const styles = `
|
|
26
|
+
[data-line] span, [data-edit-prediction-suffix] span {
|
|
27
|
+
font-weight: var(--diffs-token-${type}-font-weight, inherit);
|
|
28
|
+
font-style: var(--diffs-token-${type}-font-style, inherit);
|
|
29
|
+
text-decoration: var(--diffs-token-${type}-text-decoration, inherit);
|
|
30
|
+
}`;
|
|
31
|
+
return themeType === "system" && type === "dark" ? `@media (prefers-color-scheme: dark) {${styles}\n}` : styles;
|
|
32
|
+
}).join("\n");
|
|
24
33
|
return `${LAYER_ORDER}
|
|
34
|
+
@layer base {
|
|
35
|
+
${tokenFontStyles}
|
|
36
|
+
}
|
|
25
37
|
@layer rendered {
|
|
26
38
|
:host {${colorSchemeRule}
|
|
27
39
|
${scrollbarGutterVar}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cssWrappers.js","names":["rawStyles"],"sources":["../../src/utils/cssWrappers.ts"],"sourcesContent":["import { DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY } from '../constants';\nimport rawStyles from '../style.css?inline';\nimport type { ThemeTypes } from '../types';\nimport { createMeasuredScrollbarGutterDeclaration } from './scrollbarGutter';\n\nconst LAYER_ORDER = `@layer base, theme, rendered, unsafe;`;\nconst SCROLLBAR_GUTTER_DECLARATION_PATTERN = new RegExp(\n `${escapeRegExp(DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY)}\\\\s*:\\\\s*[^;]+;`\n);\n\nexport function wrapCoreCSS(mainCSS: string) {\n return `${LAYER_ORDER}\n${rawStyles}\n@layer theme {\n ${mainCSS}\n}`;\n}\n\nexport function wrapUnsafeCSS(unsafeCSS: string) {\n return `${LAYER_ORDER}\n@layer unsafe {\n ${unsafeCSS}\n}`;\n}\n\nexport function wrapThemeCSS(\n themeCSS: string,\n themeType: ThemeTypes = 'system',\n scrollbarGutter?: number\n) {\n const colorSchemeRule =\n themeType === 'system'\n ? ''\n : `\n color-scheme: ${themeType};`;\n const scrollbarGutterVar =\n createMeasuredScrollbarGutterDeclaration(scrollbarGutter);\n\n return `${LAYER_ORDER}\n@layer rendered {\n :host {${colorSchemeRule}\n ${scrollbarGutterVar}\n ${themeCSS}\n }\n}`;\n}\n\nexport function patchScrollbarGutterSize(\n themeCSS: string,\n scrollbarGutter: number | undefined\n): string {\n const scrollbarGutterRule =\n createMeasuredScrollbarGutterDeclaration(scrollbarGutter);\n return themeCSS.replace(\n SCROLLBAR_GUTTER_DECLARATION_PATTERN,\n scrollbarGutterRule\n );\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n"],"mappings":";;;;AAKA,MAAM,cAAc;AACpB,MAAM,uCAAuC,IAAI,OAC/C,GAAG,aAAa,wCAAwC,EAAE,gBAC5D;AAEA,SAAgB,YAAY,SAAiB;CAC3C,OAAO,GAAG,YAAY;EACtBA,cAAU;;IAER,QAAQ;;AAEZ;AAEA,SAAgB,cAAc,WAAmB;CAC/C,OAAO,GAAG,YAAY;;IAEpB,UAAU;;AAEd;AAEA,SAAgB,aACd,UACA,YAAwB,UACxB,iBACA;CACA,MAAM,kBACJ,cAAc,WACV,KACA;kBACU,UAAU;CAC1B,MAAM,qBACJ,yCAAyC,eAAe;
|
|
1
|
+
{"version":3,"file":"cssWrappers.js","names":["rawStyles"],"sources":["../../src/utils/cssWrappers.ts"],"sourcesContent":["import { DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY } from '../constants';\nimport rawStyles from '../style.css?inline';\nimport type { ThemeTypes } from '../types';\nimport { createMeasuredScrollbarGutterDeclaration } from './scrollbarGutter';\n\nconst LAYER_ORDER = `@layer base, theme, rendered, unsafe;`;\nconst SCROLLBAR_GUTTER_DECLARATION_PATTERN = new RegExp(\n `${escapeRegExp(DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY)}\\\\s*:\\\\s*[^;]+;`\n);\n\nexport function wrapCoreCSS(mainCSS: string) {\n return `${LAYER_ORDER}\n${rawStyles}\n@layer theme {\n ${mainCSS}\n}`;\n}\n\nexport function wrapUnsafeCSS(unsafeCSS: string) {\n return `${LAYER_ORDER}\n@layer unsafe {\n ${unsafeCSS}\n}`;\n}\n\nexport function wrapThemeCSS(\n themeCSS: string,\n themeType: ThemeTypes = 'system',\n scrollbarGutter?: number\n) {\n const colorSchemeRule =\n themeType === 'system'\n ? ''\n : `\n color-scheme: ${themeType};`;\n const scrollbarGutterVar =\n createMeasuredScrollbarGutterDeclaration(scrollbarGutter);\n const tokenFontStyles = (\n themeType === 'system' ? ['light', 'dark'] : [themeType]\n )\n .map((type) => {\n const styles = `\n [data-line] span, [data-edit-prediction-suffix] span {\n font-weight: var(--diffs-token-${type}-font-weight, inherit);\n font-style: var(--diffs-token-${type}-font-style, inherit);\n text-decoration: var(--diffs-token-${type}-text-decoration, inherit);\n }`;\n return themeType === 'system' && type === 'dark'\n ? `@media (prefers-color-scheme: dark) {${styles}\\n}`\n : styles;\n })\n .join('\\n');\n\n return `${LAYER_ORDER}\n@layer base {\n ${tokenFontStyles}\n}\n@layer rendered {\n :host {${colorSchemeRule}\n ${scrollbarGutterVar}\n ${themeCSS}\n }\n}`;\n}\n\nexport function patchScrollbarGutterSize(\n themeCSS: string,\n scrollbarGutter: number | undefined\n): string {\n const scrollbarGutterRule =\n createMeasuredScrollbarGutterDeclaration(scrollbarGutter);\n return themeCSS.replace(\n SCROLLBAR_GUTTER_DECLARATION_PATTERN,\n scrollbarGutterRule\n );\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n"],"mappings":";;;;AAKA,MAAM,cAAc;AACpB,MAAM,uCAAuC,IAAI,OAC/C,GAAG,aAAa,wCAAwC,EAAE,gBAC5D;AAEA,SAAgB,YAAY,SAAiB;CAC3C,OAAO,GAAG,YAAY;EACtBA,cAAU;;IAER,QAAQ;;AAEZ;AAEA,SAAgB,cAAc,WAAmB;CAC/C,OAAO,GAAG,YAAY;;IAEpB,UAAU;;AAEd;AAEA,SAAgB,aACd,UACA,YAAwB,UACxB,iBACA;CACA,MAAM,kBACJ,cAAc,WACV,KACA;kBACU,UAAU;CAC1B,MAAM,qBACJ,yCAAyC,eAAe;CAC1D,MAAM,mBACJ,cAAc,WAAW,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,EAAA,CAEtD,KAAK,SAAS;EACb,MAAM,SAAS;;qCAEgB,KAAK;oCACN,KAAK;yCACA,KAAK;;EAExC,OAAO,cAAc,YAAY,SAAS,SACtC,wCAAwC,OAAO,OAC/C;CACN,CAAC,CAAC,CACD,KAAK,IAAI;CAEZ,OAAO,GAAG,YAAY;;IAEpB,gBAAgB;;;WAGT,gBAAgB;IACvB,mBAAmB;IACnB,SAAS;;;AAGb;AAEA,SAAgB,yBACd,UACA,iBACQ;CACR,MAAM,sBACJ,yCAAyC,eAAe;CAC1D,OAAO,SAAS,QACd,sCACA,mBACF;AACF;AAEA,SAAS,aAAa,OAAuB;CAC3C,OAAO,MAAM,QAAQ,uBAAuB,MAAM;AACpD"}
|
|
@@ -20,6 +20,7 @@ function getDiffHunksRendererOptions(options) {
|
|
|
20
20
|
hunkSeparators: typeof options?.hunkSeparators === "function" ? "custom" : options?.hunkSeparators,
|
|
21
21
|
expandUnchanged: options?.expandUnchanged,
|
|
22
22
|
loadDiffFiles: options?.loadDiffFiles,
|
|
23
|
+
parseDiffOptions: options?.parseDiffOptions,
|
|
23
24
|
collapsedContextThreshold: options?.collapsedContextThreshold,
|
|
24
25
|
lineDiffType: options?.lineDiffType,
|
|
25
26
|
maxLineDiffLength: options?.maxLineDiffLength,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDiffHunksRendererOptions.js","names":[],"sources":["../../src/utils/getDiffHunksRendererOptions.ts"],"sourcesContent":["import type { FileDiffOptions } from '../components/FileDiff';\nimport type { DiffHunksRendererOptions } from '../renderers/DiffHunksRenderer';\nimport { shouldUseTokenTransformer } from './shouldUseTokenTransformer';\n\n// Build the renderer option snapshot with direct property reads. CodeView item\n// options may inherit prototype getters, so object spread can miss values.\nexport function getDiffHunksRendererOptions<LAnnotation, Caret>(\n options: FileDiffOptions<LAnnotation, Caret> | undefined\n): DiffHunksRendererOptions {\n return {\n theme: options?.theme,\n disableLineNumbers: options?.disableLineNumbers,\n overflow: options?.overflow,\n collapsed: options?.collapsed,\n disableFileHeader: options?.disableFileHeader,\n disableVirtualizationBuffers: options?.disableVirtualizationBuffers,\n stickyHeader: options?.stickyHeader,\n preferredHighlighter: options?.preferredHighlighter,\n useCSSClasses: options?.useCSSClasses,\n useTokenTransformer: shouldUseTokenTransformer<'diff'>(options),\n tokenizeMaxLineLength: options?.tokenizeMaxLineLength,\n tokenizeMaxLength: options?.tokenizeMaxLength,\n diffStyle: options?.diffStyle,\n diffIndicators: options?.diffIndicators,\n disableBackground: options?.disableBackground,\n hunkSeparators:\n typeof options?.hunkSeparators === 'function'\n ? 'custom'\n : options?.hunkSeparators,\n expandUnchanged: options?.expandUnchanged,\n loadDiffFiles: options?.loadDiffFiles,\n collapsedContextThreshold: options?.collapsedContextThreshold,\n lineDiffType: options?.lineDiffType,\n maxLineDiffLength: options?.maxLineDiffLength,\n expansionLineCount: options?.expansionLineCount,\n headerRenderMode:\n options?.renderCustomHeader != null ? 'custom' : 'default',\n };\n}\n"],"mappings":";;AAMA,SAAgB,4BACd,SAC0B;CAC1B,OAAO;EACL,OAAO,SAAS;EAChB,oBAAoB,SAAS;EAC7B,UAAU,SAAS;EACnB,WAAW,SAAS;EACpB,mBAAmB,SAAS;EAC5B,8BAA8B,SAAS;EACvC,cAAc,SAAS;EACvB,sBAAsB,SAAS;EAC/B,eAAe,SAAS;EACxB,qBAAqB,0BAAkC,OAAO;EAC9D,uBAAuB,SAAS;EAChC,mBAAmB,SAAS;EAC5B,WAAW,SAAS;EACpB,gBAAgB,SAAS;EACzB,mBAAmB,SAAS;EAC5B,gBACE,OAAO,SAAS,mBAAmB,aAC/B,WACA,SAAS;EACf,iBAAiB,SAAS;EAC1B,eAAe,SAAS;EACxB,2BAA2B,SAAS;EACpC,cAAc,SAAS;EACvB,mBAAmB,SAAS;EAC5B,oBAAoB,SAAS;EAC7B,kBACE,SAAS,sBAAsB,OAAO,WAAW;CACrD;AACF"}
|
|
1
|
+
{"version":3,"file":"getDiffHunksRendererOptions.js","names":[],"sources":["../../src/utils/getDiffHunksRendererOptions.ts"],"sourcesContent":["import type { FileDiffOptions } from '../components/FileDiff';\nimport type { DiffHunksRendererOptions } from '../renderers/DiffHunksRenderer';\nimport { shouldUseTokenTransformer } from './shouldUseTokenTransformer';\n\n// Build the renderer option snapshot with direct property reads. CodeView item\n// options may inherit prototype getters, so object spread can miss values.\nexport function getDiffHunksRendererOptions<LAnnotation, Caret>(\n options: FileDiffOptions<LAnnotation, Caret> | undefined\n): DiffHunksRendererOptions {\n return {\n theme: options?.theme,\n disableLineNumbers: options?.disableLineNumbers,\n overflow: options?.overflow,\n collapsed: options?.collapsed,\n disableFileHeader: options?.disableFileHeader,\n disableVirtualizationBuffers: options?.disableVirtualizationBuffers,\n stickyHeader: options?.stickyHeader,\n preferredHighlighter: options?.preferredHighlighter,\n useCSSClasses: options?.useCSSClasses,\n useTokenTransformer: shouldUseTokenTransformer<'diff'>(options),\n tokenizeMaxLineLength: options?.tokenizeMaxLineLength,\n tokenizeMaxLength: options?.tokenizeMaxLength,\n diffStyle: options?.diffStyle,\n diffIndicators: options?.diffIndicators,\n disableBackground: options?.disableBackground,\n hunkSeparators:\n typeof options?.hunkSeparators === 'function'\n ? 'custom'\n : options?.hunkSeparators,\n expandUnchanged: options?.expandUnchanged,\n loadDiffFiles: options?.loadDiffFiles,\n parseDiffOptions: options?.parseDiffOptions,\n collapsedContextThreshold: options?.collapsedContextThreshold,\n lineDiffType: options?.lineDiffType,\n maxLineDiffLength: options?.maxLineDiffLength,\n expansionLineCount: options?.expansionLineCount,\n headerRenderMode:\n options?.renderCustomHeader != null ? 'custom' : 'default',\n };\n}\n"],"mappings":";;AAMA,SAAgB,4BACd,SAC0B;CAC1B,OAAO;EACL,OAAO,SAAS;EAChB,oBAAoB,SAAS;EAC7B,UAAU,SAAS;EACnB,WAAW,SAAS;EACpB,mBAAmB,SAAS;EAC5B,8BAA8B,SAAS;EACvC,cAAc,SAAS;EACvB,sBAAsB,SAAS;EAC/B,eAAe,SAAS;EACxB,qBAAqB,0BAAkC,OAAO;EAC9D,uBAAuB,SAAS;EAChC,mBAAmB,SAAS;EAC5B,WAAW,SAAS;EACpB,gBAAgB,SAAS;EACzB,mBAAmB,SAAS;EAC5B,gBACE,OAAO,SAAS,mBAAmB,aAC/B,WACA,SAAS;EACf,iBAAiB,SAAS;EAC1B,eAAe,SAAS;EACxB,kBAAkB,SAAS;EAC3B,2BAA2B,SAAS;EACpC,cAAc,SAAS;EACvB,mBAAmB,SAAS;EAC5B,oBAAoB,SAAS;EAC7B,kBACE,SAAS,sBAAsB,OAAO,WAAW;CACrD;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFiletypeFromFileName.d.ts","names":[],"sources":["../../src/utils/getFiletypeFromFileName.ts"],"mappings":";;cAOa,0BAA0B;
|
|
1
|
+
{"version":3,"file":"getFiletypeFromFileName.d.ts","names":[],"sources":["../../src/utils/getFiletypeFromFileName.ts"],"mappings":";;cAOa,0BAA0B;iBA2WvB,wBAAwB,mBAAmB;iBA8C3C,wBACd,iBACA,KAAK;iBAgBS;iBAIA,mBACd,aACA,MAAM;iBAgBQ,0BAA0B"}
|
|
@@ -207,6 +207,7 @@ const EXTENSION_TO_FILE_FORMAT = {
|
|
|
207
207
|
mli: "ocaml",
|
|
208
208
|
mll: "ocaml",
|
|
209
209
|
mly: "ocaml",
|
|
210
|
+
odin: "odin",
|
|
210
211
|
pas: "pascal",
|
|
211
212
|
p: "pascal",
|
|
212
213
|
pl: "prolog",
|
|
@@ -239,6 +240,17 @@ const EXTENSION_TO_FILE_FORMAT = {
|
|
|
239
240
|
py: "python",
|
|
240
241
|
pyw: "python",
|
|
241
242
|
pyi: "python",
|
|
243
|
+
BUCK: "python",
|
|
244
|
+
BUILD: "python",
|
|
245
|
+
PACKAGE: "python",
|
|
246
|
+
WORKSPACE: "python",
|
|
247
|
+
Tiltfile: "python",
|
|
248
|
+
bazel: "python",
|
|
249
|
+
bxl: "python",
|
|
250
|
+
bzl: "python",
|
|
251
|
+
bzlmod: "python",
|
|
252
|
+
star: "python",
|
|
253
|
+
sky: "python",
|
|
242
254
|
qml: "qml",
|
|
243
255
|
qmldir: "qmldir",
|
|
244
256
|
qss: "qss",
|
|
@@ -349,16 +361,22 @@ const EXTENSION_TO_FILE_FORMAT = {
|
|
|
349
361
|
sty: "tex"
|
|
350
362
|
};
|
|
351
363
|
function getFiletypeFromFileName(fileName) {
|
|
364
|
+
const format = matchFiletypeFromName(fileName);
|
|
365
|
+
if (format != null) return format;
|
|
366
|
+
const baseName = fileName.split(/[/\\]/).pop() ?? fileName;
|
|
367
|
+
return baseName === fileName ? "text" : matchFiletypeFromName(baseName) ?? "text";
|
|
368
|
+
}
|
|
369
|
+
function matchFiletypeFromName(fileName) {
|
|
352
370
|
if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(fileName)) return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(fileName) ?? "text";
|
|
353
|
-
if (EXTENSION_TO_FILE_FORMAT
|
|
371
|
+
if (Object.hasOwn(EXTENSION_TO_FILE_FORMAT, fileName)) return EXTENSION_TO_FILE_FORMAT[fileName] ?? null;
|
|
354
372
|
const compoundMatch = fileName.match(/\.([^/\\]+\.[^/\\]+)$/);
|
|
355
373
|
if (compoundMatch != null) {
|
|
356
374
|
if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(compoundMatch[1])) return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(compoundMatch[1]) ?? "text";
|
|
357
|
-
if (EXTENSION_TO_FILE_FORMAT
|
|
375
|
+
if (Object.hasOwn(EXTENSION_TO_FILE_FORMAT, compoundMatch[1])) return EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] ?? "text";
|
|
358
376
|
}
|
|
359
377
|
const simpleMatch = fileName.match(/\.([^.]+)$/)?.[1] ?? "";
|
|
360
378
|
if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(simpleMatch)) return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(simpleMatch) ?? "text";
|
|
361
|
-
return EXTENSION_TO_FILE_FORMAT[simpleMatch] ?? "text";
|
|
379
|
+
return Object.hasOwn(EXTENSION_TO_FILE_FORMAT, simpleMatch) ? EXTENSION_TO_FILE_FORMAT[simpleMatch] ?? "text" : null;
|
|
362
380
|
}
|
|
363
381
|
function replaceCustomExtensions(version, map) {
|
|
364
382
|
if (version <= customExtensionsVersion) return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFiletypeFromFileName.js","names":[],"sources":["../../src/utils/getFiletypeFromFileName.ts"],"sourcesContent":["import type { ExtensionFormatMap, SupportedLanguages } from '../types';\n\nconst CUSTOM_EXTENSION_TO_FILE_FORMAT: Map<string, SupportedLanguages> =\n new Map();\n\nlet customExtensionsVersion = 0;\n\nexport const EXTENSION_TO_FILE_FORMAT: ExtensionFormatMap = {\n '1c': '1c',\n abap: 'abap',\n as: 'actionscript-3',\n ada: 'ada',\n adb: 'ada',\n ads: 'ada',\n adoc: 'asciidoc',\n asciidoc: 'asciidoc',\n 'component.html': 'angular-html',\n 'component.ts': 'angular-ts',\n conf: 'nginx',\n htaccess: 'apache',\n cls: 'tex',\n trigger: 'apex',\n apl: 'apl',\n applescript: 'applescript',\n scpt: 'applescript',\n ara: 'ara',\n asm: 'asm',\n s: 'riscv',\n astro: 'astro',\n awk: 'awk',\n bal: 'ballerina',\n sh: 'zsh',\n bash: 'zsh',\n bat: 'cmd',\n cmd: 'cmd',\n be: 'berry',\n beancount: 'beancount',\n bib: 'bibtex',\n bicep: 'bicep',\n 'blade.php': 'blade',\n bsl: 'bsl',\n c: 'c',\n h: 'objective-cpp',\n cs: 'csharp',\n cpp: 'cpp',\n hpp: 'cpp',\n cc: 'cpp',\n cxx: 'cpp',\n hh: 'cpp',\n cdc: 'cdc',\n cairo: 'cairo',\n clar: 'clarity',\n clj: 'clojure',\n cljs: 'clojure',\n cljc: 'clojure',\n soy: 'soy',\n cmake: 'cmake',\n 'CMakeLists.txt': 'cmake',\n cob: 'cobol',\n cbl: 'cobol',\n cobol: 'cobol',\n CODEOWNERS: 'codeowners',\n ql: 'ql',\n coffee: 'coffeescript',\n lisp: 'lisp',\n cl: 'lisp',\n lsp: 'lisp',\n log: 'log',\n v: 'verilog',\n cql: 'cql',\n cr: 'crystal',\n css: 'css',\n csv: 'csv',\n cue: 'cue',\n cypher: 'cypher',\n cyp: 'cypher',\n d: 'd',\n dart: 'dart',\n dax: 'dax',\n desktop: 'desktop',\n diff: 'diff',\n patch: 'diff',\n Dockerfile: 'dockerfile',\n dockerfile: 'dockerfile',\n env: 'dotenv',\n dm: 'dream-maker',\n edge: 'edge',\n el: 'emacs-lisp',\n ex: 'elixir',\n exs: 'elixir',\n elm: 'elm',\n erb: 'erb',\n erl: 'erlang',\n hrl: 'erlang',\n f: 'fortran-fixed-form',\n for: 'fortran-fixed-form',\n fs: 'fsharp',\n fsi: 'fsharp',\n fsx: 'fsharp',\n f03: 'f03',\n f08: 'f08',\n f18: 'f18',\n f77: 'f77',\n f90: 'fortran-free-form',\n f95: 'fortran-free-form',\n fnl: 'fennel',\n fish: 'fish',\n ftl: 'ftl',\n tres: 'gdresource',\n res: 'gdresource',\n gd: 'gdscript',\n gdshader: 'gdshader',\n gs: 'genie',\n feature: 'gherkin',\n COMMIT_EDITMSG: 'git-commit',\n 'git-rebase-todo': 'git-rebase',\n gjs: 'glimmer-js',\n gleam: 'gleam',\n gts: 'glimmer-ts',\n glsl: 'glsl',\n vert: 'glsl',\n frag: 'glsl',\n shader: 'shaderlab',\n gp: 'gnuplot',\n plt: 'gnuplot',\n gnuplot: 'gnuplot',\n go: 'go',\n graphql: 'graphql',\n gql: 'graphql',\n groovy: 'groovy',\n gvy: 'groovy',\n hack: 'hack',\n haml: 'haml',\n hbs: 'handlebars',\n handlebars: 'handlebars',\n hs: 'haskell',\n lhs: 'haskell',\n hx: 'haxe',\n hcl: 'hcl',\n hjson: 'hjson',\n hlsl: 'hlsl',\n fx: 'hlsl',\n html: 'html',\n htm: 'html',\n http: 'http',\n rest: 'http',\n hxml: 'hxml',\n hy: 'hy',\n imba: 'imba',\n ini: 'ini',\n cfg: 'ini',\n jade: 'pug',\n pug: 'pug',\n java: 'java',\n js: 'javascript',\n mjs: 'javascript',\n cjs: 'javascript',\n jinja: 'jinja',\n jinja2: 'jinja',\n j2: 'jinja',\n jison: 'jison',\n jl: 'julia',\n json: 'json',\n json5: 'json5',\n jsonc: 'jsonc',\n jsonl: 'jsonl',\n jsonnet: 'jsonnet',\n libsonnet: 'jsonnet',\n jssm: 'jssm',\n jsx: 'jsx',\n kt: 'kotlin',\n kts: 'kts',\n kql: 'kusto',\n tex: 'tex',\n ltx: 'tex',\n lean: 'lean4',\n less: 'less',\n liquid: 'liquid',\n lit: 'lit',\n ll: 'llvm',\n logo: 'logo',\n lua: 'lua',\n luau: 'luau',\n Makefile: 'makefile',\n mk: 'makefile',\n makefile: 'makefile',\n md: 'markdown',\n markdown: 'markdown',\n marko: 'marko',\n m: 'wolfram',\n mat: 'matlab',\n mdc: 'mdc',\n mdx: 'mdx',\n wiki: 'wikitext',\n mediawiki: 'wikitext',\n mmd: 'mermaid',\n mermaid: 'mermaid',\n mips: 'mipsasm',\n mojo: 'mojo',\n '🔥': 'mojo',\n move: 'move',\n nar: 'narrat',\n nf: 'nextflow',\n nim: 'nim',\n nims: 'nim',\n nimble: 'nim',\n nix: 'nix',\n nu: 'nushell',\n mm: 'objective-cpp',\n ml: 'ocaml',\n mli: 'ocaml',\n mll: 'ocaml',\n mly: 'ocaml',\n pas: 'pascal',\n p: 'pascal',\n pl: 'prolog',\n pm: 'perl',\n t: 'perl',\n raku: 'raku',\n p6: 'raku',\n pl6: 'raku',\n php: 'php',\n phtml: 'php',\n pls: 'plsql',\n sql: 'sql',\n po: 'po',\n polar: 'polar',\n pcss: 'postcss',\n pot: 'pot',\n potx: 'potx',\n pq: 'powerquery',\n pqm: 'powerquery',\n ps1: 'powershell',\n psm1: 'powershell',\n psd1: 'powershell',\n prisma: 'prisma',\n pro: 'prolog',\n P: 'prolog',\n properties: 'properties',\n proto: 'protobuf',\n pp: 'puppet',\n purs: 'purescript',\n py: 'python',\n pyw: 'python',\n pyi: 'python',\n qml: 'qml',\n qmldir: 'qmldir',\n qss: 'qss',\n r: 'r',\n R: 'r',\n rkt: 'racket',\n rktl: 'racket',\n razor: 'razor',\n cshtml: 'razor',\n rb: 'ruby',\n rbw: 'ruby',\n reg: 'reg',\n regex: 'regexp',\n rel: 'rel',\n rs: 'rust',\n rst: 'rst',\n rake: 'ruby',\n gemspec: 'ruby',\n jbuilder: 'ruby',\n builder: 'ruby',\n rabl: 'ruby',\n arb: 'ruby',\n ru: 'ruby',\n podspec: 'ruby',\n Gemfile: 'ruby',\n Rakefile: 'ruby',\n Guardfile: 'ruby',\n Capfile: 'ruby',\n Berksfile: 'ruby',\n Brewfile: 'ruby',\n Vagrantfile: 'ruby',\n Thorfile: 'ruby',\n Appraisals: 'ruby',\n Dangerfile: 'ruby',\n sas: 'sas',\n sass: 'sass',\n scala: 'scala',\n sc: 'scala',\n scm: 'scheme',\n ss: 'scheme',\n sld: 'scheme',\n scss: 'scss',\n sdbl: 'sdbl',\n shadergraph: 'shader',\n st: 'smalltalk',\n sol: 'solidity',\n sparql: 'sparql',\n rq: 'sparql',\n spl: 'splunk',\n config: 'ssh-config',\n do: 'stata',\n ado: 'stata',\n dta: 'stata',\n styl: 'stylus',\n stylus: 'stylus',\n svelte: 'svelte',\n swift: 'swift',\n sv: 'system-verilog',\n svh: 'system-verilog',\n service: 'systemd',\n socket: 'systemd',\n device: 'systemd',\n timer: 'systemd',\n talon: 'talonscript',\n tasl: 'tasl',\n tcl: 'tcl',\n templ: 'templ',\n tf: 'tf',\n tfvars: 'tfvars',\n toml: 'toml',\n ts: 'typescript',\n mts: 'typescript',\n cts: 'typescript',\n tsp: 'typespec',\n tsv: 'tsv',\n tsx: 'tsx',\n ttl: 'turtle',\n twig: 'twig',\n typ: 'typst',\n vv: 'v',\n vala: 'vala',\n vapi: 'vala',\n vb: 'vb',\n vbs: 'vb',\n bas: 'vb',\n vh: 'verilog',\n vhd: 'vhdl',\n vhdl: 'vhdl',\n vim: 'vimscript',\n vue: 'vue',\n 'vine.ts': 'vue-vine',\n vy: 'vyper',\n wasm: 'wasm',\n wat: 'wasm',\n wy: '文言',\n wgsl: 'wgsl',\n wit: 'wit',\n wl: 'wolfram',\n nb: 'wolfram',\n xml: 'xml',\n xsl: 'xsl',\n xslt: 'xsl',\n yaml: 'yaml',\n yml: 'yml',\n zs: 'zenscript',\n zig: 'zig',\n zsh: 'zsh',\n sty: 'tex',\n};\n\nexport function getFiletypeFromFileName(fileName: string): SupportedLanguages {\n if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(fileName)) {\n return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(fileName) ?? 'text';\n }\n // Handle special files without extensions first\n if (EXTENSION_TO_FILE_FORMAT[fileName] != null) {\n return EXTENSION_TO_FILE_FORMAT[fileName];\n }\n\n // Try compound extensions first (e.g., .blade.php, .component.ts)\n const compoundMatch = fileName.match(/\\.([^/\\\\]+\\.[^/\\\\]+)$/);\n if (compoundMatch != null) {\n if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(compoundMatch[1])) {\n return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(compoundMatch[1]) ?? 'text';\n }\n if (EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] != null) {\n return EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] ?? 'text';\n }\n }\n\n // Fall back to simple extension\n const simpleMatch = fileName.match(/\\.([^.]+)$/)?.[1] ?? '';\n if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(simpleMatch)) {\n return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(simpleMatch) ?? 'text';\n }\n return EXTENSION_TO_FILE_FORMAT[simpleMatch] ?? 'text';\n}\n\nexport function replaceCustomExtensions(\n version: number,\n map: ExtensionFormatMap\n): boolean {\n if (version <= customExtensionsVersion) {\n return false;\n }\n CUSTOM_EXTENSION_TO_FILE_FORMAT.clear();\n for (const key in map) {\n const lang = map[key];\n if (lang != null) {\n CUSTOM_EXTENSION_TO_FILE_FORMAT.set(key, lang);\n }\n }\n customExtensionsVersion = version;\n return true;\n}\n\nexport function getCustomExtensionsVersion(): number {\n return customExtensionsVersion;\n}\n\nexport function setCustomExtension(\n key: string,\n lang: SupportedLanguages\n): boolean {\n const existing = CUSTOM_EXTENSION_TO_FILE_FORMAT.get(key);\n if (existing === lang) {\n return false;\n }\n if (existing != null) {\n console.warn(\n `setCustomExtension: overriding custom mapping for \"${key}\" from \"${existing}\" to \"${lang}\"`\n );\n }\n CUSTOM_EXTENSION_TO_FILE_FORMAT.set(key, lang);\n customExtensionsVersion++;\n return true;\n}\n\nexport function getCustomExtensionsMap(): ExtensionFormatMap {\n return Object.fromEntries(CUSTOM_EXTENSION_TO_FILE_FORMAT);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getFiletypeFromFileName.js","names":[],"sources":["../../src/utils/getFiletypeFromFileName.ts"],"sourcesContent":["import type { ExtensionFormatMap, SupportedLanguages } from '../types';\n\nconst CUSTOM_EXTENSION_TO_FILE_FORMAT: Map<string, SupportedLanguages> =\n new Map();\n\nlet customExtensionsVersion = 0;\n\nexport const EXTENSION_TO_FILE_FORMAT: ExtensionFormatMap = {\n '1c': '1c',\n abap: 'abap',\n as: 'actionscript-3',\n ada: 'ada',\n adb: 'ada',\n ads: 'ada',\n adoc: 'asciidoc',\n asciidoc: 'asciidoc',\n 'component.html': 'angular-html',\n 'component.ts': 'angular-ts',\n conf: 'nginx',\n htaccess: 'apache',\n cls: 'tex',\n trigger: 'apex',\n apl: 'apl',\n applescript: 'applescript',\n scpt: 'applescript',\n ara: 'ara',\n asm: 'asm',\n s: 'riscv',\n astro: 'astro',\n awk: 'awk',\n bal: 'ballerina',\n sh: 'zsh',\n bash: 'zsh',\n bat: 'cmd',\n cmd: 'cmd',\n be: 'berry',\n beancount: 'beancount',\n bib: 'bibtex',\n bicep: 'bicep',\n 'blade.php': 'blade',\n bsl: 'bsl',\n c: 'c',\n h: 'objective-cpp',\n cs: 'csharp',\n cpp: 'cpp',\n hpp: 'cpp',\n cc: 'cpp',\n cxx: 'cpp',\n hh: 'cpp',\n cdc: 'cdc',\n cairo: 'cairo',\n clar: 'clarity',\n clj: 'clojure',\n cljs: 'clojure',\n cljc: 'clojure',\n soy: 'soy',\n cmake: 'cmake',\n 'CMakeLists.txt': 'cmake',\n cob: 'cobol',\n cbl: 'cobol',\n cobol: 'cobol',\n CODEOWNERS: 'codeowners',\n ql: 'ql',\n coffee: 'coffeescript',\n lisp: 'lisp',\n cl: 'lisp',\n lsp: 'lisp',\n log: 'log',\n v: 'verilog',\n cql: 'cql',\n cr: 'crystal',\n css: 'css',\n csv: 'csv',\n cue: 'cue',\n cypher: 'cypher',\n cyp: 'cypher',\n d: 'd',\n dart: 'dart',\n dax: 'dax',\n desktop: 'desktop',\n diff: 'diff',\n patch: 'diff',\n Dockerfile: 'dockerfile',\n dockerfile: 'dockerfile',\n env: 'dotenv',\n dm: 'dream-maker',\n edge: 'edge',\n el: 'emacs-lisp',\n ex: 'elixir',\n exs: 'elixir',\n elm: 'elm',\n erb: 'erb',\n erl: 'erlang',\n hrl: 'erlang',\n f: 'fortran-fixed-form',\n for: 'fortran-fixed-form',\n fs: 'fsharp',\n fsi: 'fsharp',\n fsx: 'fsharp',\n f03: 'f03',\n f08: 'f08',\n f18: 'f18',\n f77: 'f77',\n f90: 'fortran-free-form',\n f95: 'fortran-free-form',\n fnl: 'fennel',\n fish: 'fish',\n ftl: 'ftl',\n tres: 'gdresource',\n res: 'gdresource',\n gd: 'gdscript',\n gdshader: 'gdshader',\n gs: 'genie',\n feature: 'gherkin',\n COMMIT_EDITMSG: 'git-commit',\n 'git-rebase-todo': 'git-rebase',\n gjs: 'glimmer-js',\n gleam: 'gleam',\n gts: 'glimmer-ts',\n glsl: 'glsl',\n vert: 'glsl',\n frag: 'glsl',\n shader: 'shaderlab',\n gp: 'gnuplot',\n plt: 'gnuplot',\n gnuplot: 'gnuplot',\n go: 'go',\n graphql: 'graphql',\n gql: 'graphql',\n groovy: 'groovy',\n gvy: 'groovy',\n hack: 'hack',\n haml: 'haml',\n hbs: 'handlebars',\n handlebars: 'handlebars',\n hs: 'haskell',\n lhs: 'haskell',\n hx: 'haxe',\n hcl: 'hcl',\n hjson: 'hjson',\n hlsl: 'hlsl',\n fx: 'hlsl',\n html: 'html',\n htm: 'html',\n http: 'http',\n rest: 'http',\n hxml: 'hxml',\n hy: 'hy',\n imba: 'imba',\n ini: 'ini',\n cfg: 'ini',\n jade: 'pug',\n pug: 'pug',\n java: 'java',\n js: 'javascript',\n mjs: 'javascript',\n cjs: 'javascript',\n jinja: 'jinja',\n jinja2: 'jinja',\n j2: 'jinja',\n jison: 'jison',\n jl: 'julia',\n json: 'json',\n json5: 'json5',\n jsonc: 'jsonc',\n jsonl: 'jsonl',\n jsonnet: 'jsonnet',\n libsonnet: 'jsonnet',\n jssm: 'jssm',\n jsx: 'jsx',\n kt: 'kotlin',\n kts: 'kts',\n kql: 'kusto',\n tex: 'tex',\n ltx: 'tex',\n lean: 'lean4',\n less: 'less',\n liquid: 'liquid',\n lit: 'lit',\n ll: 'llvm',\n logo: 'logo',\n lua: 'lua',\n luau: 'luau',\n Makefile: 'makefile',\n mk: 'makefile',\n makefile: 'makefile',\n md: 'markdown',\n markdown: 'markdown',\n marko: 'marko',\n m: 'wolfram',\n mat: 'matlab',\n mdc: 'mdc',\n mdx: 'mdx',\n wiki: 'wikitext',\n mediawiki: 'wikitext',\n mmd: 'mermaid',\n mermaid: 'mermaid',\n mips: 'mipsasm',\n mojo: 'mojo',\n '🔥': 'mojo',\n move: 'move',\n nar: 'narrat',\n nf: 'nextflow',\n nim: 'nim',\n nims: 'nim',\n nimble: 'nim',\n nix: 'nix',\n nu: 'nushell',\n mm: 'objective-cpp',\n ml: 'ocaml',\n mli: 'ocaml',\n mll: 'ocaml',\n mly: 'ocaml',\n odin: 'odin',\n pas: 'pascal',\n p: 'pascal',\n pl: 'prolog',\n pm: 'perl',\n t: 'perl',\n raku: 'raku',\n p6: 'raku',\n pl6: 'raku',\n php: 'php',\n phtml: 'php',\n pls: 'plsql',\n sql: 'sql',\n po: 'po',\n polar: 'polar',\n pcss: 'postcss',\n pot: 'pot',\n potx: 'potx',\n pq: 'powerquery',\n pqm: 'powerquery',\n ps1: 'powershell',\n psm1: 'powershell',\n psd1: 'powershell',\n prisma: 'prisma',\n pro: 'prolog',\n P: 'prolog',\n properties: 'properties',\n proto: 'protobuf',\n pp: 'puppet',\n purs: 'purescript',\n py: 'python',\n pyw: 'python',\n pyi: 'python',\n // FIXME: these should be changed to a Starlark file type if/when one\n // appears in shiki. For now, Starlark is highlighted like the Python subset\n // it is.\n BUCK: 'python',\n BUILD: 'python',\n PACKAGE: 'python',\n WORKSPACE: 'python',\n Tiltfile: 'python',\n bazel: 'python',\n bxl: 'python',\n bzl: 'python',\n bzlmod: 'python',\n star: 'python',\n sky: 'python',\n qml: 'qml',\n qmldir: 'qmldir',\n qss: 'qss',\n r: 'r',\n R: 'r',\n rkt: 'racket',\n rktl: 'racket',\n razor: 'razor',\n cshtml: 'razor',\n rb: 'ruby',\n rbw: 'ruby',\n reg: 'reg',\n regex: 'regexp',\n rel: 'rel',\n rs: 'rust',\n rst: 'rst',\n rake: 'ruby',\n gemspec: 'ruby',\n jbuilder: 'ruby',\n builder: 'ruby',\n rabl: 'ruby',\n arb: 'ruby',\n ru: 'ruby',\n podspec: 'ruby',\n Gemfile: 'ruby',\n Rakefile: 'ruby',\n Guardfile: 'ruby',\n Capfile: 'ruby',\n Berksfile: 'ruby',\n Brewfile: 'ruby',\n Vagrantfile: 'ruby',\n Thorfile: 'ruby',\n Appraisals: 'ruby',\n Dangerfile: 'ruby',\n sas: 'sas',\n sass: 'sass',\n scala: 'scala',\n sc: 'scala',\n scm: 'scheme',\n ss: 'scheme',\n sld: 'scheme',\n scss: 'scss',\n sdbl: 'sdbl',\n shadergraph: 'shader',\n st: 'smalltalk',\n sol: 'solidity',\n sparql: 'sparql',\n rq: 'sparql',\n spl: 'splunk',\n config: 'ssh-config',\n do: 'stata',\n ado: 'stata',\n dta: 'stata',\n styl: 'stylus',\n stylus: 'stylus',\n svelte: 'svelte',\n swift: 'swift',\n sv: 'system-verilog',\n svh: 'system-verilog',\n service: 'systemd',\n socket: 'systemd',\n device: 'systemd',\n timer: 'systemd',\n talon: 'talonscript',\n tasl: 'tasl',\n tcl: 'tcl',\n templ: 'templ',\n tf: 'tf',\n tfvars: 'tfvars',\n toml: 'toml',\n ts: 'typescript',\n mts: 'typescript',\n cts: 'typescript',\n tsp: 'typespec',\n tsv: 'tsv',\n tsx: 'tsx',\n ttl: 'turtle',\n twig: 'twig',\n typ: 'typst',\n vv: 'v',\n vala: 'vala',\n vapi: 'vala',\n vb: 'vb',\n vbs: 'vb',\n bas: 'vb',\n vh: 'verilog',\n vhd: 'vhdl',\n vhdl: 'vhdl',\n vim: 'vimscript',\n vue: 'vue',\n 'vine.ts': 'vue-vine',\n vy: 'vyper',\n wasm: 'wasm',\n wat: 'wasm',\n wy: '文言',\n wgsl: 'wgsl',\n wit: 'wit',\n wl: 'wolfram',\n nb: 'wolfram',\n xml: 'xml',\n xsl: 'xsl',\n xslt: 'xsl',\n yaml: 'yaml',\n yml: 'yml',\n zs: 'zenscript',\n zig: 'zig',\n zsh: 'zsh',\n sty: 'tex',\n};\n\nexport function getFiletypeFromFileName(fileName: string): SupportedLanguages {\n const format = matchFiletypeFromName(fileName);\n if (format != null) {\n return format;\n }\n\n // Special files are keyed by their exact name (Dockerfile, CMakeLists.txt), but callers\n // routinely pass a repository-relative path. Retry on the basename so `docker/Dockerfile`\n // resolves the same way a top-level `Dockerfile` does. The retry only runs once the full\n // path has matched nothing, so real extensions still win (e.g. `docker/Dockerfile.ts`).\n const baseName = fileName.split(/[/\\\\]/).pop() ?? fileName;\n return baseName === fileName\n ? 'text'\n : (matchFiletypeFromName(baseName) ?? 'text');\n}\n\nfunction matchFiletypeFromName(fileName: string): SupportedLanguages | null {\n if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(fileName)) {\n return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(fileName) ?? 'text';\n }\n // Handle special files without extensions first\n if (Object.hasOwn(EXTENSION_TO_FILE_FORMAT, fileName)) {\n return EXTENSION_TO_FILE_FORMAT[fileName] ?? null;\n }\n\n // Try compound extensions first (e.g., .blade.php, .component.ts)\n const compoundMatch = fileName.match(/\\.([^/\\\\]+\\.[^/\\\\]+)$/);\n if (compoundMatch != null) {\n if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(compoundMatch[1])) {\n return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(compoundMatch[1]) ?? 'text';\n }\n if (Object.hasOwn(EXTENSION_TO_FILE_FORMAT, compoundMatch[1])) {\n return EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] ?? 'text';\n }\n }\n\n // Fall back to simple extension\n const simpleMatch = fileName.match(/\\.([^.]+)$/)?.[1] ?? '';\n if (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(simpleMatch)) {\n return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(simpleMatch) ?? 'text';\n }\n return Object.hasOwn(EXTENSION_TO_FILE_FORMAT, simpleMatch)\n ? (EXTENSION_TO_FILE_FORMAT[simpleMatch] ?? 'text')\n : null;\n}\n\nexport function replaceCustomExtensions(\n version: number,\n map: ExtensionFormatMap\n): boolean {\n if (version <= customExtensionsVersion) {\n return false;\n }\n CUSTOM_EXTENSION_TO_FILE_FORMAT.clear();\n for (const key in map) {\n const lang = map[key];\n if (lang != null) {\n CUSTOM_EXTENSION_TO_FILE_FORMAT.set(key, lang);\n }\n }\n customExtensionsVersion = version;\n return true;\n}\n\nexport function getCustomExtensionsVersion(): number {\n return customExtensionsVersion;\n}\n\nexport function setCustomExtension(\n key: string,\n lang: SupportedLanguages\n): boolean {\n const existing = CUSTOM_EXTENSION_TO_FILE_FORMAT.get(key);\n if (existing === lang) {\n return false;\n }\n if (existing != null) {\n console.warn(\n `setCustomExtension: overriding custom mapping for \"${key}\" from \"${existing}\" to \"${lang}\"`\n );\n }\n CUSTOM_EXTENSION_TO_FILE_FORMAT.set(key, lang);\n customExtensionsVersion++;\n return true;\n}\n\nexport function getCustomExtensionsMap(): ExtensionFormatMap {\n return Object.fromEntries(CUSTOM_EXTENSION_TO_FILE_FORMAT);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHighlighterOptions.d.ts","names":[],"sources":["../../src/utils/getHighlighterOptions.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getHighlighterOptions.d.ts","names":[],"sources":["../../src/utils/getHighlighterOptions.ts"],"mappings":";;UASU;EACR,QAAQ,kBAAkB;EAC1B,uBAAuB;;UAGf;EACR,OAAO;EACP,QAAQ;EACR,sBAAsB;;iBAGR,sBACd,MAAM,qBAAqB,oCACzB,OAAO,wBAAwB,0BAChC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { resolveHighlighterType } from "../highlighter/highlighterType.js";
|
|
1
2
|
import { getThemes } from "./getThemes.js";
|
|
2
3
|
//#region src/utils/getHighlighterOptions.ts
|
|
3
|
-
function getHighlighterOptions(lang, { theme, preferredHighlighter
|
|
4
|
+
function getHighlighterOptions(lang, { theme, preferredHighlighter }) {
|
|
4
5
|
return {
|
|
5
6
|
langs: Array.isArray(lang) ? lang : [lang ?? "text"],
|
|
6
7
|
themes: getThemes(theme),
|
|
7
|
-
preferredHighlighter
|
|
8
|
+
preferredHighlighter: resolveHighlighterType(preferredHighlighter)
|
|
8
9
|
};
|
|
9
10
|
}
|
|
10
11
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHighlighterOptions.js","names":[],"sources":["../../src/utils/getHighlighterOptions.ts"],"sourcesContent":["import type {\n DiffsThemeNames,\n HighlighterTypes,\n SupportedLanguages,\n ThemesType,\n} from '../types';\nimport { getThemes } from './getThemes';\n\ninterface HighlighterOptionsShape {\n theme?: DiffsThemeNames | ThemesType;\n preferredHighlighter?: HighlighterTypes;\n}\n\ninterface GetHighlighterOptionsReturn {\n langs: SupportedLanguages[];\n themes: DiffsThemeNames[];\n preferredHighlighter: HighlighterTypes;\n}\n\nexport function getHighlighterOptions(\n lang: SupportedLanguages | SupportedLanguages[] | undefined,\n { theme, preferredHighlighter
|
|
1
|
+
{"version":3,"file":"getHighlighterOptions.js","names":[],"sources":["../../src/utils/getHighlighterOptions.ts"],"sourcesContent":["import { resolveHighlighterType } from '../highlighter/highlighterType';\nimport type {\n DiffsThemeNames,\n HighlighterTypes,\n SupportedLanguages,\n ThemesType,\n} from '../types';\nimport { getThemes } from './getThemes';\n\ninterface HighlighterOptionsShape {\n theme?: DiffsThemeNames | ThemesType;\n preferredHighlighter?: HighlighterTypes;\n}\n\ninterface GetHighlighterOptionsReturn {\n langs: SupportedLanguages[];\n themes: DiffsThemeNames[];\n preferredHighlighter: HighlighterTypes;\n}\n\nexport function getHighlighterOptions(\n lang: SupportedLanguages | SupportedLanguages[] | undefined,\n { theme, preferredHighlighter }: HighlighterOptionsShape\n): GetHighlighterOptionsReturn {\n return {\n langs: Array.isArray(lang) ? lang : [lang ?? 'text'],\n themes: getThemes(theme),\n preferredHighlighter: resolveHighlighterType(preferredHighlighter),\n };\n}\n"],"mappings":";;;AAoBA,SAAgB,sBACd,MACA,EAAE,OAAO,wBACoB;CAC7B,OAAO;EACL,OAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,QAAQ,MAAM;EACnD,QAAQ,UAAU,KAAK;EACvB,sBAAsB,uBAAuB,oBAAoB;CACnE;AACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { DiffsHighlighter
|
|
1
|
+
import { DiffsHighlighter } from "../highlighter/DiffsHighlighter.js";
|
|
2
|
+
import { DiffsThemeNames, ThemesType } from "../types.js";
|
|
2
3
|
//#region src/utils/getHighlighterThemeStyles.d.ts
|
|
3
4
|
interface GetHighlighterThemeStylesProps {
|
|
4
5
|
theme?: DiffsThemeNames | ThemesType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHighlighterThemeStyles.d.ts","names":[],"sources":["../../src/utils/getHighlighterThemeStyles.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getHighlighterThemeStyles.d.ts","names":[],"sources":["../../src/utils/getHighlighterThemeStyles.ts"],"mappings":";;;UAWU;EACR,QAAQ,kBAAkB;EAC1B,aAAa;EACb;;iBAGc,4BACd,OACA,aACA,UACC"}
|
|
@@ -6,7 +6,7 @@ function getHighlighterThemeStyles({ theme = DEFAULT_THEMES, highlighter, prefix
|
|
|
6
6
|
let styles = "";
|
|
7
7
|
if (typeof theme === "string") {
|
|
8
8
|
const themeData = highlighter.getTheme(theme);
|
|
9
|
-
const normalized =
|
|
9
|
+
const normalized = getThemeColors(themeData, highlighter);
|
|
10
10
|
styles += `color:${normalized.fg};`;
|
|
11
11
|
styles += `background-color:${normalized.bg};`;
|
|
12
12
|
styles += `${formatCSSVariablePrefix("global")}fg:${normalized.fg};`;
|
|
@@ -14,18 +14,28 @@ function getHighlighterThemeStyles({ theme = DEFAULT_THEMES, highlighter, prefix
|
|
|
14
14
|
styles += getGitVariables(themeData, prefix);
|
|
15
15
|
} else {
|
|
16
16
|
let themeData = highlighter.getTheme(theme.dark);
|
|
17
|
-
let normalized =
|
|
17
|
+
let normalized = getThemeColors(themeData, highlighter);
|
|
18
18
|
styles += `${formatCSSVariablePrefix("global")}dark:${normalized.fg};`;
|
|
19
19
|
styles += `${formatCSSVariablePrefix("global")}dark-bg:${normalized.bg};`;
|
|
20
20
|
styles += getGitVariables(themeData, "dark");
|
|
21
21
|
themeData = highlighter.getTheme(theme.light);
|
|
22
|
-
normalized =
|
|
22
|
+
normalized = getThemeColors(themeData, highlighter);
|
|
23
23
|
styles += `${formatCSSVariablePrefix("global")}light:${normalized.fg};`;
|
|
24
24
|
styles += `${formatCSSVariablePrefix("global")}light-bg:${normalized.bg};`;
|
|
25
25
|
styles += getGitVariables(themeData, "light");
|
|
26
26
|
}
|
|
27
27
|
return styles;
|
|
28
28
|
}
|
|
29
|
+
function getThemeColors(theme, highlighter) {
|
|
30
|
+
if (highlighter.name === "highlights" && theme.zed?.cssVariables === true) {
|
|
31
|
+
const prefix = formatCSSVariablePrefix("token");
|
|
32
|
+
return {
|
|
33
|
+
fg: `var(${prefix}foreground)`,
|
|
34
|
+
bg: `var(${prefix}background)`
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return normalizeThemeColors(theme);
|
|
38
|
+
}
|
|
29
39
|
function getGitVariables(themeData, modePrefix) {
|
|
30
40
|
modePrefix = modePrefix != null ? `${modePrefix}-` : "";
|
|
31
41
|
let styles = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHighlighterThemeStyles.js","names":[],"sources":["../../src/utils/getHighlighterThemeStyles.ts"],"sourcesContent":["import { normalizeThemeColors } from '@pierre/theming/color';\n\nimport { DEFAULT_THEMES } from '../constants';\nimport type {\n DiffsHighlighter,\n
|
|
1
|
+
{"version":3,"file":"getHighlighterThemeStyles.js","names":[],"sources":["../../src/utils/getHighlighterThemeStyles.ts"],"sourcesContent":["import { normalizeThemeColors } from '@pierre/theming/color';\n\nimport { DEFAULT_THEMES } from '../constants';\nimport type {\n DiffsHighlighter,\n DiffsTheme,\n DiffsThemeNames,\n ThemesType,\n} from '../types';\nimport { formatCSSVariablePrefix } from './formatCSSVariablePrefix';\n\ninterface GetHighlighterThemeStylesProps {\n theme?: DiffsThemeNames | ThemesType;\n highlighter: DiffsHighlighter;\n prefix?: string;\n}\n\nexport function getHighlighterThemeStyles({\n theme = DEFAULT_THEMES,\n highlighter,\n prefix,\n}: GetHighlighterThemeStylesProps): string {\n let styles = '';\n if (typeof theme === 'string') {\n const themeData = highlighter.getTheme(theme);\n const normalized = getThemeColors(themeData, highlighter);\n styles += `color:${normalized.fg};`;\n styles += `background-color:${normalized.bg};`;\n styles += `${formatCSSVariablePrefix('global')}fg:${normalized.fg};`;\n styles += `${formatCSSVariablePrefix('global')}bg:${normalized.bg};`;\n styles += getGitVariables(themeData, prefix);\n } else {\n let themeData = highlighter.getTheme(theme.dark);\n let normalized = getThemeColors(themeData, highlighter);\n styles += `${formatCSSVariablePrefix('global')}dark:${normalized.fg};`;\n styles += `${formatCSSVariablePrefix('global')}dark-bg:${normalized.bg};`;\n styles += getGitVariables(themeData, 'dark');\n\n themeData = highlighter.getTheme(theme.light);\n normalized = getThemeColors(themeData, highlighter);\n styles += `${formatCSSVariablePrefix('global')}light:${normalized.fg};`;\n styles += `${formatCSSVariablePrefix('global')}light-bg:${normalized.bg};`;\n styles += getGitVariables(themeData, 'light');\n }\n return styles;\n}\n\n// cssVariables: true must use the same prefix for backgrounds and tokens.\n// Object palettes already include their configured prefix and defaults.\nfunction getThemeColors(theme: DiffsTheme, highlighter: DiffsHighlighter) {\n if (highlighter.name === 'highlights' && theme.zed?.cssVariables === true) {\n const prefix = formatCSSVariablePrefix('token');\n return { fg: `var(${prefix}foreground)`, bg: `var(${prefix}background)` };\n }\n return normalizeThemeColors(theme);\n}\n\n// Keep the gitDecoration → terminal.ansi fallback; adding editorGutter colors\n// here would change diff backgrounds for existing themes.\nfunction getGitVariables(themeData: DiffsTheme, modePrefix?: string) {\n modePrefix = modePrefix != null ? `${modePrefix}-` : '';\n let styles = '';\n const additionGreen =\n themeData.colors?.['gitDecoration.addedResourceForeground'] ??\n themeData.colors?.['terminal.ansiGreen'];\n if (additionGreen != null) {\n styles += `${formatCSSVariablePrefix('global')}${modePrefix}addition-color:${additionGreen};`;\n }\n const deletionRed =\n themeData.colors?.['gitDecoration.deletedResourceForeground'] ??\n themeData.colors?.['terminal.ansiRed'];\n if (deletionRed != null) {\n styles += `${formatCSSVariablePrefix('global')}${modePrefix}deletion-color:${deletionRed};`;\n }\n const modifiedBlue =\n themeData.colors?.['gitDecoration.modifiedResourceForeground'] ??\n themeData.colors?.['terminal.ansiBlue'];\n if (modifiedBlue != null) {\n styles += `${formatCSSVariablePrefix('global')}${modePrefix}modified-color:${modifiedBlue};`;\n }\n return styles;\n}\n"],"mappings":";;;;AAiBA,SAAgB,0BAA0B,EACxC,QAAQ,gBACR,aACA,UACyC;CACzC,IAAI,SAAS;CACb,IAAI,OAAO,UAAU,UAAU;EAC7B,MAAM,YAAY,YAAY,SAAS,KAAK;EAC5C,MAAM,aAAa,eAAe,WAAW,WAAW;EACxD,UAAU,SAAS,WAAW,GAAG;EACjC,UAAU,oBAAoB,WAAW,GAAG;EAC5C,UAAU,GAAG,wBAAwB,QAAQ,EAAE,KAAK,WAAW,GAAG;EAClE,UAAU,GAAG,wBAAwB,QAAQ,EAAE,KAAK,WAAW,GAAG;EAClE,UAAU,gBAAgB,WAAW,MAAM;CAC7C,OAAO;EACL,IAAI,YAAY,YAAY,SAAS,MAAM,IAAI;EAC/C,IAAI,aAAa,eAAe,WAAW,WAAW;EACtD,UAAU,GAAG,wBAAwB,QAAQ,EAAE,OAAO,WAAW,GAAG;EACpE,UAAU,GAAG,wBAAwB,QAAQ,EAAE,UAAU,WAAW,GAAG;EACvE,UAAU,gBAAgB,WAAW,MAAM;EAE3C,YAAY,YAAY,SAAS,MAAM,KAAK;EAC5C,aAAa,eAAe,WAAW,WAAW;EAClD,UAAU,GAAG,wBAAwB,QAAQ,EAAE,QAAQ,WAAW,GAAG;EACrE,UAAU,GAAG,wBAAwB,QAAQ,EAAE,WAAW,WAAW,GAAG;EACxE,UAAU,gBAAgB,WAAW,OAAO;CAC9C;CACA,OAAO;AACT;AAIA,SAAS,eAAe,OAAmB,aAA+B;CACxE,IAAI,YAAY,SAAS,gBAAgB,MAAM,KAAK,iBAAiB,MAAM;EACzE,MAAM,SAAS,wBAAwB,OAAO;EAC9C,OAAO;GAAE,IAAI,OAAO,OAAO;GAAc,IAAI,OAAO,OAAO;EAAa;CAC1E;CACA,OAAO,qBAAqB,KAAK;AACnC;AAIA,SAAS,gBAAgB,WAAuB,YAAqB;CACnE,aAAa,cAAc,OAAO,GAAG,WAAW,KAAK;CACrD,IAAI,SAAS;CACb,MAAM,gBACJ,UAAU,SAAS,4CACnB,UAAU,SAAS;CACrB,IAAI,iBAAiB,MACnB,UAAU,GAAG,wBAAwB,QAAQ,IAAI,WAAW,iBAAiB,cAAc;CAE7F,MAAM,cACJ,UAAU,SAAS,8CACnB,UAAU,SAAS;CACrB,IAAI,eAAe,MACjB,UAAU,GAAG,wBAAwB,QAAQ,IAAI,WAAW,iBAAiB,YAAY;CAE3F,MAAM,eACJ,UAAU,SAAS,+CACnB,UAAU,SAAS;CACrB,IAAI,gBAAgB,MAClB,UAAU,GAAG,wBAAwB,QAAQ,IAAI,WAAW,iBAAiB,aAAa;CAE5F,OAAO;AACT"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CodeToTokensOptions } from "../highlighter/types.js";
|
|
2
|
+
import { DiffsThemeNames, SupportedLanguages, ThemesType } from "../types.js";
|
|
3
|
+
//#region src/utils/getTokenOptions.d.ts
|
|
4
|
+
declare function getTokenOptions(lang: SupportedLanguages, theme: DiffsThemeNames | ThemesType, tokenizeMaxLineLength: number | undefined): CodeToTokensOptions;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { getTokenOptions };
|
|
7
|
+
//# sourceMappingURL=getTokenOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTokenOptions.d.ts","names":[],"sources":["../../src/utils/getTokenOptions.ts"],"mappings":";;;iBAQgB,gBACd,MAAM,oBACN,OAAO,kBAAkB,YACzB,4CACC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { formatCSSVariablePrefix } from "./formatCSSVariablePrefix.js";
|
|
2
|
+
//#region src/utils/getTokenOptions.ts
|
|
3
|
+
function getTokenOptions(lang, theme, tokenizeMaxLineLength) {
|
|
4
|
+
return {
|
|
5
|
+
lang,
|
|
6
|
+
...typeof theme === "string" ? { theme } : { themes: theme },
|
|
7
|
+
defaultColor: false,
|
|
8
|
+
cssVariablePrefix: formatCSSVariablePrefix("token"),
|
|
9
|
+
tokenizeMaxLineLength,
|
|
10
|
+
tokenizeTimeLimit: 0
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { getTokenOptions };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=getTokenOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTokenOptions.js","names":[],"sources":["../../src/utils/getTokenOptions.ts"],"sourcesContent":["import type {\n CodeToTokensOptions,\n DiffsThemeNames,\n SupportedLanguages,\n ThemesType,\n} from '../types';\nimport { formatCSSVariablePrefix } from './formatCSSVariablePrefix';\n\nexport function getTokenOptions(\n lang: SupportedLanguages,\n theme: DiffsThemeNames | ThemesType,\n tokenizeMaxLineLength: number | undefined\n): CodeToTokensOptions {\n return {\n lang,\n ...(typeof theme === 'string' ? { theme } : { themes: theme }),\n defaultColor: false,\n cssVariablePrefix: formatCSSVariablePrefix('token'),\n tokenizeMaxLineLength,\n // Timed aborts can leave incomplete tokens; limit line length instead.\n tokenizeTimeLimit: 0,\n };\n}\n"],"mappings":";;AAQA,SAAgB,gBACd,MACA,OACA,uBACqB;CACrB,OAAO;EACL;EACA,GAAI,OAAO,UAAU,WAAW,EAAE,MAAM,IAAI,EAAE,QAAQ,MAAM;EAC5D,cAAc;EACd,mBAAmB,wBAAwB,OAAO;EAClD;EAEA,mBAAmB;CACrB;AACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Nodes, RootContent } from "../node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.js";
|
|
2
|
+
//#region src/utils/hastToHtml.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Avoid schema lookups for common token spans; delegate other nodes and
|
|
5
|
+
* attributes to toHtml(). Output must match its default serialization exactly.
|
|
6
|
+
*/
|
|
7
|
+
declare function hastToHtml(tree: Nodes | RootContent[]): string;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { hastToHtml };
|
|
10
|
+
//# sourceMappingURL=hastToHtml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hastToHtml.d.ts","names":[],"sources":["../../src/utils/hastToHtml.ts"],"mappings":";;;;;;iBA4DgB,WAAW,MAAM,QAAQ"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { toHtml } from "hast-util-to-html";
|
|
2
|
+
//#region src/utils/hastToHtml.ts
|
|
3
|
+
const VOID_ELEMENTS = /* @__PURE__ */ new Set([
|
|
4
|
+
"area",
|
|
5
|
+
"base",
|
|
6
|
+
"basefont",
|
|
7
|
+
"bgsound",
|
|
8
|
+
"br",
|
|
9
|
+
"col",
|
|
10
|
+
"command",
|
|
11
|
+
"embed",
|
|
12
|
+
"frame",
|
|
13
|
+
"hr",
|
|
14
|
+
"image",
|
|
15
|
+
"img",
|
|
16
|
+
"input",
|
|
17
|
+
"keygen",
|
|
18
|
+
"link",
|
|
19
|
+
"meta",
|
|
20
|
+
"param",
|
|
21
|
+
"source",
|
|
22
|
+
"track",
|
|
23
|
+
"wbr"
|
|
24
|
+
]);
|
|
25
|
+
const DELEGATED_TAGS = /* @__PURE__ */ new Set([
|
|
26
|
+
"svg",
|
|
27
|
+
"template",
|
|
28
|
+
"script",
|
|
29
|
+
"style"
|
|
30
|
+
]);
|
|
31
|
+
const ATTRIBUTE_NAMES = {
|
|
32
|
+
class: "class",
|
|
33
|
+
className: "class",
|
|
34
|
+
id: "id",
|
|
35
|
+
role: "role",
|
|
36
|
+
style: "style",
|
|
37
|
+
tabIndex: "tabindex",
|
|
38
|
+
tabindex: "tabindex",
|
|
39
|
+
title: "title"
|
|
40
|
+
};
|
|
41
|
+
const DATA_ATTRIBUTE = /^data-[\w.:-]+$/;
|
|
42
|
+
const TEXT_ESCAPE = /[<&]/g;
|
|
43
|
+
const ATTRIBUTE_ESCAPE = /[\0"&'`]/g;
|
|
44
|
+
const CHARACTER_REFERENCES = {
|
|
45
|
+
"<": "<",
|
|
46
|
+
"&": "&",
|
|
47
|
+
"\"": """,
|
|
48
|
+
"'": "'",
|
|
49
|
+
"`": "`",
|
|
50
|
+
"\0": "�"
|
|
51
|
+
};
|
|
52
|
+
const MAX_CACHED_STYLES = 256;
|
|
53
|
+
/**
|
|
54
|
+
* Avoid schema lookups for common token spans; delegate other nodes and
|
|
55
|
+
* attributes to toHtml(). Output must match its default serialization exactly.
|
|
56
|
+
*/
|
|
57
|
+
function hastToHtml(tree) {
|
|
58
|
+
const styles = /* @__PURE__ */ new Map();
|
|
59
|
+
return Array.isArray(tree) ? serializeChildren(tree, styles) : serializeNode(tree, styles);
|
|
60
|
+
}
|
|
61
|
+
function serializeChildren(children, styles) {
|
|
62
|
+
let html = "";
|
|
63
|
+
for (const child of children) html += serializeNode(child, styles);
|
|
64
|
+
return html;
|
|
65
|
+
}
|
|
66
|
+
function serializeNode(node, styles) {
|
|
67
|
+
switch (node.type) {
|
|
68
|
+
case "text": return escapeText(node.value);
|
|
69
|
+
case "element": return serializeElement(node, styles);
|
|
70
|
+
case "root": return serializeChildren(node.children, styles);
|
|
71
|
+
default: return toHtml(node);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function serializeElement(node, styles) {
|
|
75
|
+
const { tagName } = node;
|
|
76
|
+
if (tagName === "span" && node.children.length === 1 && node.children[0].type === "text" && typeof node.properties?.style === "string") {
|
|
77
|
+
let styleOnly = true;
|
|
78
|
+
for (const key in node.properties) if (key !== "style" && node.properties[key] != null) {
|
|
79
|
+
styleOnly = false;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
if (styleOnly) return `<span ${serializeStyle(node.properties.style, styles)}>${escapeText(node.children[0].value)}</span>`;
|
|
83
|
+
}
|
|
84
|
+
if (DELEGATED_TAGS.has(tagName)) return toHtml(node);
|
|
85
|
+
const attributes = serializeAttributes(node.properties, styles);
|
|
86
|
+
if (attributes == null) return toHtml(node);
|
|
87
|
+
const open = attributes === "" ? `<${tagName}>` : `<${tagName} ${attributes}>`;
|
|
88
|
+
const content = serializeChildren(node.children, styles);
|
|
89
|
+
if (content === "" && VOID_ELEMENTS.has(tagName.toLowerCase())) return open;
|
|
90
|
+
return `${open}${content}</${tagName}>`;
|
|
91
|
+
}
|
|
92
|
+
function serializeStyle(value, styles) {
|
|
93
|
+
let attribute = styles.get(value);
|
|
94
|
+
if (attribute == null) {
|
|
95
|
+
attribute = `style="${escapeAttribute(value)}"`;
|
|
96
|
+
if (styles.size < MAX_CACHED_STYLES) styles.set(value, attribute);
|
|
97
|
+
}
|
|
98
|
+
return attribute;
|
|
99
|
+
}
|
|
100
|
+
function serializeAttributes(properties, styles) {
|
|
101
|
+
let attributes = "";
|
|
102
|
+
for (const key in properties) {
|
|
103
|
+
const value = properties[key];
|
|
104
|
+
if (value == null) continue;
|
|
105
|
+
const name = ATTRIBUTE_NAMES[key] ?? (DATA_ATTRIBUTE.test(key) ? key : void 0);
|
|
106
|
+
if (name == null) return;
|
|
107
|
+
if (value === false || typeof value === "number" && Number.isNaN(value)) continue;
|
|
108
|
+
const attribute = key === "style" && typeof value === "string" ? serializeStyle(value, styles) : value === true ? name : `${name}="${escapeAttribute(Array.isArray(value) ? value.join(" ").trim() : String(value))}"`;
|
|
109
|
+
attributes += attributes === "" ? attribute : ` ${attribute}`;
|
|
110
|
+
}
|
|
111
|
+
return attributes;
|
|
112
|
+
}
|
|
113
|
+
function escapeText(value) {
|
|
114
|
+
return value.indexOf("<") < 0 && value.indexOf("&") < 0 ? value : value.replace(TEXT_ESCAPE, toCharacterReference);
|
|
115
|
+
}
|
|
116
|
+
function escapeAttribute(value) {
|
|
117
|
+
return value.replace(ATTRIBUTE_ESCAPE, toCharacterReference);
|
|
118
|
+
}
|
|
119
|
+
function toCharacterReference(character) {
|
|
120
|
+
return CHARACTER_REFERENCES[character];
|
|
121
|
+
}
|
|
122
|
+
//#endregion
|
|
123
|
+
export { hastToHtml };
|
|
124
|
+
|
|
125
|
+
//# sourceMappingURL=hastToHtml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hastToHtml.js","names":[],"sources":["../../src/utils/hastToHtml.ts"],"sourcesContent":["import type { Element, Nodes, Properties, RootContent } from 'hast';\nimport { toHtml } from 'hast-util-to-html';\n\n// Must match the html-void-elements list used by toHtml().\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\n// These elements require schema, fragment or raw-text handling in toHtml().\nconst DELEGATED_TAGS = new Set(['svg', 'template', 'script', 'style']);\n\n// Boolean and comma-separated attributes require the full HTML schema.\nconst ATTRIBUTE_NAMES: Record<string, string | undefined> = {\n class: 'class',\n className: 'class',\n id: 'id',\n role: 'role',\n style: 'style',\n tabIndex: 'tabindex',\n tabindex: 'tabindex',\n title: 'title',\n};\nconst DATA_ATTRIBUTE = /^data-[\\w.:-]+$/;\n\nconst TEXT_ESCAPE = /[<&]/g;\nconst ATTRIBUTE_ESCAPE = /[\\0\"&'`]/g;\n// Must match stringify-entities' default hexadecimal encoding.\nconst CHARACTER_REFERENCES: Record<string, string> = {\n '<': '<',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '\\0': '�',\n};\nconst MAX_CACHED_STYLES = 256;\n\n/**\n * Avoid schema lookups for common token spans; delegate other nodes and\n * attributes to toHtml(). Output must match its default serialization exactly.\n */\nexport function hastToHtml(tree: Nodes | RootContent[]): string {\n const styles = new Map<string, string>();\n return Array.isArray(tree)\n ? serializeChildren(tree, styles)\n : serializeNode(tree, styles);\n}\n\nfunction serializeChildren(\n children: readonly RootContent[],\n styles: Map<string, string>\n): string {\n let html = '';\n for (const child of children) {\n html += serializeNode(child, styles);\n }\n return html;\n}\n\nfunction serializeNode(node: Nodes, styles: Map<string, string>): string {\n switch (node.type) {\n case 'text':\n return escapeText(node.value);\n case 'element':\n return serializeElement(node, styles);\n case 'root':\n return serializeChildren(node.children, styles);\n default:\n return toHtml(node);\n }\n}\n\nfunction serializeElement(node: Element, styles: Map<string, string>): string {\n const { tagName } = node;\n if (\n tagName === 'span' &&\n node.children.length === 1 &&\n node.children[0].type === 'text' &&\n typeof node.properties?.style === 'string'\n ) {\n let styleOnly = true;\n for (const key in node.properties) {\n if (key !== 'style' && node.properties[key] != null) {\n styleOnly = false;\n break;\n }\n }\n if (styleOnly) {\n return `<span ${serializeStyle(node.properties.style, styles)}>${escapeText(node.children[0].value)}</span>`;\n }\n }\n if (DELEGATED_TAGS.has(tagName)) {\n return toHtml(node);\n }\n const attributes = serializeAttributes(node.properties, styles);\n if (attributes == null) {\n return toHtml(node);\n }\n const open =\n attributes === '' ? `<${tagName}>` : `<${tagName} ${attributes}>`;\n const content = serializeChildren(node.children, styles);\n if (content === '' && VOID_ELEMENTS.has(tagName.toLowerCase())) {\n return open;\n }\n return `${open}${content}</${tagName}>`;\n}\n\n// Cap the per-render cache because custom styles may be unique per token.\nfunction serializeStyle(value: string, styles: Map<string, string>): string {\n let attribute = styles.get(value);\n if (attribute == null) {\n attribute = `style=\"${escapeAttribute(value)}\"`;\n if (styles.size < MAX_CACHED_STYLES) styles.set(value, attribute);\n }\n return attribute;\n}\n\n// Returns undefined when a property needs the HTML schema to serialize.\nfunction serializeAttributes(\n properties: Properties | undefined,\n styles: Map<string, string>\n): string | undefined {\n let attributes = '';\n for (const key in properties) {\n const value = properties[key];\n if (value == null) {\n continue;\n }\n const name =\n ATTRIBUTE_NAMES[key] ?? (DATA_ATTRIBUTE.test(key) ? key : undefined);\n if (name == null) {\n return undefined;\n }\n if (value === false || (typeof value === 'number' && Number.isNaN(value))) {\n continue;\n }\n const attribute =\n key === 'style' && typeof value === 'string'\n ? serializeStyle(value, styles)\n : value === true\n ? name\n : `${name}=\"${escapeAttribute(\n Array.isArray(value) ? value.join(' ').trim() : String(value)\n )}\"`;\n attributes += attributes === '' ? attribute : ` ${attribute}`;\n }\n return attributes;\n}\n\nfunction escapeText(value: string): string {\n return value.indexOf('<') < 0 && value.indexOf('&') < 0\n ? value\n : value.replace(TEXT_ESCAPE, toCharacterReference);\n}\n\nfunction escapeAttribute(value: string): string {\n return value.replace(ATTRIBUTE_ESCAPE, toCharacterReference);\n}\n\nfunction toCharacterReference(character: string): string {\n return CHARACTER_REFERENCES[character];\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseDiffDecorations.d.ts","names":[],"sources":["../../src/utils/parseDiffDecorations.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseDiffDecorations.d.ts","names":[],"sources":["../../src/utils/parseDiffDecorations.ts"],"mappings":";;;;UAIU;EACR;EACA;EACA;;iBAGc,2BACd,MACA,WACA,cACC,gCAAgC;UASzB;EACR,MAAM;EACN;EACA;EACA;EACA;;iBAQc,iBACd,MACA,KACA,YACA,WACA,cACC"}
|
package/dist/utils/platform.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ declare function resetPlatformDetection(): void;
|
|
|
9
9
|
declare function isMacLike(): boolean;
|
|
10
10
|
declare function isLinux(): boolean;
|
|
11
11
|
declare function isSafari(): boolean;
|
|
12
|
+
declare function isFirefox(): boolean;
|
|
12
13
|
//#endregion
|
|
13
|
-
export { isLinux, isMacLike, isSafari, resetPlatformDetection };
|
|
14
|
+
export { isFirefox, isLinux, isMacLike, isSafari, resetPlatformDetection };
|
|
14
15
|
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","names":[],"sources":["../../src/utils/platform.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","names":[],"sources":["../../src/utils/platform.ts"],"mappings":";;;;;;;iBAWgB;iBAOA;iBAMA;iBAIA;iBASA"}
|