Skip to content

Commit 95c9d0a

Browse files
committed
support twoslash transformers
1 parent c8dd78c commit 95c9d0a

File tree

4 files changed

+49
-0
lines changed

4 files changed

+49
-0
lines changed

packages/mdx/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"react-dom": "^18.3.1"
6969
},
7070
"dependencies": {
71+
"@shikijs/transformers": "^3.6.0",
7172
"hast-util-to-string": "^3.0.1",
7273
"mdast-util-mdx-jsx": "^3.2.0",
7374
"next-mdx-remote-client": "^1.0.3",

packages/mdx/src/plugins/rehype/rehypeSyntaxHighlighting.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
DEFAULT_LIGHT_THEME,
1818
DEFAULT_THEMES,
1919
DEFAULT_LANGS,
20+
SHIKI_TRANSFORMERS,
2021
} from './shiki-constants.js';
2122
import { getLanguage } from './utils.js';
2223

@@ -126,6 +127,7 @@ const traverseNode = (
126127
colorReplacements: shikiColorReplacements,
127128
tabindex: false,
128129
tokenizeMaxLineLength: 1000,
130+
transformers: SHIKI_TRANSFORMERS,
129131
});
130132

131133
const codeElement = hast.children[0] as Element;

packages/mdx/src/plugins/rehype/shiki-constants.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
1+
import {
2+
transformerNotationHighlight,
3+
transformerNotationFocus,
4+
transformerMetaHighlight,
5+
transformerNotationDiff,
6+
} from '@shikijs/transformers';
7+
import type { ShikiTransformer } from '@shikijs/types';
18
import { createCssVariablesTheme } from 'shiki/core';
29
import type { BundledLanguage, ThemeRegistration } from 'shiki/types';
310

11+
export const LINE_HIGHLIGHT_CLASS_NAME = 'line-highlight';
12+
export const LINE_FOCUS_CLASS_NAME = 'line-focus';
13+
export const LINE_DIFF_ADD_CLASS_NAME = 'line-diff line-add';
14+
export const LINE_DIFF_REMOVE_CLASS_NAME = 'line-diff line-remove';
15+
416
export type ShikiLang = BundledLanguage | 'text';
517
export type ShikiTheme = (typeof SHIKI_THEMES)[number];
618

@@ -493,3 +505,26 @@ export const DEFAULT_LANGS = [
493505
'tsx',
494506
'yaml',
495507
];
508+
509+
export const matchAlgorithm = {
510+
matchAlgorithm: 'v3',
511+
} as const;
512+
513+
export const SHIKI_TRANSFORMERS: ShikiTransformer[] = [
514+
transformerMetaHighlight({
515+
className: LINE_HIGHLIGHT_CLASS_NAME,
516+
}),
517+
transformerNotationHighlight({
518+
...matchAlgorithm,
519+
classActiveLine: LINE_HIGHLIGHT_CLASS_NAME,
520+
}),
521+
transformerNotationFocus({
522+
...matchAlgorithm,
523+
classActiveLine: LINE_FOCUS_CLASS_NAME,
524+
}),
525+
transformerNotationDiff({
526+
...matchAlgorithm,
527+
classLineAdd: LINE_DIFF_ADD_CLASS_NAME,
528+
classLineRemove: LINE_DIFF_REMOVE_CLASS_NAME,
529+
}),
530+
];

yarn.lock

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ __metadata:
433433
"@mintlify/eslint-config-typescript": "npm:^1.0.9"
434434
"@mintlify/prettier-config": "npm:^1.0.1"
435435
"@mintlify/ts-config": "npm:^2.0.2"
436+
"@shikijs/transformers": "npm:^3.6.0"
436437
"@trivago/prettier-plugin-sort-imports": "npm:^4.3.0"
437438
"@tsconfig/recommended": "npm:1.x"
438439
"@types/hast": "npm:^3.0.4"
@@ -693,6 +694,16 @@ __metadata:
693694
languageName: node
694695
linkType: hard
695696

697+
"@shikijs/transformers@npm:^3.6.0":
698+
version: 3.6.0
699+
resolution: "@shikijs/transformers@npm:3.6.0"
700+
dependencies:
701+
"@shikijs/core": "npm:3.6.0"
702+
"@shikijs/types": "npm:3.6.0"
703+
checksum: 10c0/c08d65bffe2c484ce2e6b0b3016379833fa79d53e22fdfa575c10d0b6c3a35580742a2e9ef2032288178d87c99505544f62bde01434d79c87f0ff9b2c4f03fb6
704+
languageName: node
705+
linkType: hard
706+
696707
"@shikijs/types@npm:3.6.0":
697708
version: 3.6.0
698709
resolution: "@shikijs/types@npm:3.6.0"

0 commit comments

Comments
 (0)