@tamagui/code-to-html 1.112.0 → 1.112.2
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/dist/cjs/highlightLine.js +98 -0
- package/dist/cjs/highlightLine.js.map +6 -0
- package/dist/cjs/highlightLine.native.js +105 -0
- package/dist/cjs/highlightLine.native.js.map +6 -0
- package/dist/cjs/highlightWord.js +37 -0
- package/dist/cjs/highlightWord.js.map +6 -0
- package/dist/cjs/highlightWord.native.js +43 -0
- package/dist/cjs/highlightWord.native.js.map +6 -0
- package/dist/cjs/index.js +2 -90
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/index.native.js +2 -92
- package/dist/cjs/index.native.js.map +3 -3
- package/dist/esm/highlightLine.js +76 -0
- package/dist/esm/highlightLine.js.map +6 -0
- package/dist/esm/highlightLine.mjs +77 -0
- package/dist/esm/highlightLine.mjs.map +1 -0
- package/dist/esm/highlightLine.native.js +82 -0
- package/dist/esm/highlightLine.native.js.map +1 -0
- package/dist/esm/highlightWord.js +15 -0
- package/dist/esm/highlightWord.js.map +6 -0
- package/dist/esm/highlightWord.mjs +13 -0
- package/dist/esm/highlightWord.mjs.map +1 -0
- package/dist/esm/highlightWord.native.js +17 -0
- package/dist/esm/highlightWord.native.js.map +1 -0
- package/dist/esm/index.js +8 -13599
- package/dist/esm/index.js.map +3 -3
- package/dist/esm/index.mjs +10 -13603
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +12 -34794
- package/dist/esm/index.native.js.map +1 -6
- package/package.json +4 -4
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { toHtml } from "hast-util-to-html";
|
|
2
|
+
import parse from "rehype-parse";
|
|
3
|
+
import { unified } from "unified";
|
|
4
|
+
const lineNumberify = function lineNumberify2(ast, lineNum = 1) {
|
|
5
|
+
let lineNumber = lineNum;
|
|
6
|
+
return ast.reduce(
|
|
7
|
+
(result, node) => {
|
|
8
|
+
if (node.type === "text") {
|
|
9
|
+
if (node.value.indexOf(`
|
|
10
|
+
`) === -1)
|
|
11
|
+
return node.lineNumber = lineNumber, result.nodes.push(node), result;
|
|
12
|
+
const lines = node.value.split(`
|
|
13
|
+
`);
|
|
14
|
+
for (let i = 0; i < lines.length; i++)
|
|
15
|
+
i !== 0 && ++lineNumber, !(i === lines.length - 1 && lines[i].length === 0) && result.nodes.push({
|
|
16
|
+
type: "text",
|
|
17
|
+
value: i === lines.length - 1 ? lines[i] : `${lines[i]}
|
|
18
|
+
`,
|
|
19
|
+
lineNumber
|
|
20
|
+
});
|
|
21
|
+
return result.lineNumber = lineNumber, result;
|
|
22
|
+
}
|
|
23
|
+
if (node.children) {
|
|
24
|
+
node.lineNumber = lineNumber;
|
|
25
|
+
const processed = lineNumberify2(node.children, lineNumber);
|
|
26
|
+
return node.children = processed.nodes, result.lineNumber = processed.lineNumber, result.nodes.push(node), result;
|
|
27
|
+
}
|
|
28
|
+
return result.nodes.push(node), result;
|
|
29
|
+
},
|
|
30
|
+
{ nodes: [], lineNumber }
|
|
31
|
+
);
|
|
32
|
+
}, wrapLines = function(ast, linesToHighlight) {
|
|
33
|
+
const highlightAll = linesToHighlight.length === 1 && linesToHighlight[0] === 0, allLines = Array.from(new Set(ast.map((x) => x.lineNumber)));
|
|
34
|
+
let i = 0;
|
|
35
|
+
return allLines.reduce((nodes, marker) => {
|
|
36
|
+
const line = marker, children = [];
|
|
37
|
+
for (; i < ast.length; i++) {
|
|
38
|
+
if (ast[i].lineNumber < line) {
|
|
39
|
+
nodes.push(ast[i]);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (ast[i].lineNumber === line) {
|
|
43
|
+
children.push(ast[i]);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (ast[i].lineNumber > line)
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
return nodes.push({
|
|
50
|
+
type: "element",
|
|
51
|
+
tagName: "div",
|
|
52
|
+
properties: {
|
|
53
|
+
dataLine: line,
|
|
54
|
+
className: "highlight-line",
|
|
55
|
+
dataHighlighted: linesToHighlight.includes(line) || highlightAll ? "true" : "false"
|
|
56
|
+
},
|
|
57
|
+
children,
|
|
58
|
+
lineNumber: line
|
|
59
|
+
}), nodes;
|
|
60
|
+
}, []);
|
|
61
|
+
}, MULTILINE_TOKEN_SPAN = /<span class="token ([^"]+)">[^<]*\n[^<]*<\/span>/g, applyMultilineFix = (ast) => {
|
|
62
|
+
let html = toHtml(ast);
|
|
63
|
+
return html = html.replace(
|
|
64
|
+
MULTILINE_TOKEN_SPAN,
|
|
65
|
+
(match, token) => match.replace(/\n/g, `</span>
|
|
66
|
+
<span class="token ${token}">`)
|
|
67
|
+
), unified().use(parse, { emitParseErrors: !0, fragment: !0 }).parse(html).children;
|
|
68
|
+
};
|
|
69
|
+
function highlightLine(ast, lines) {
|
|
70
|
+
const formattedAst = applyMultilineFix(ast), numbered = lineNumberify(formattedAst).nodes;
|
|
71
|
+
return wrapLines(numbered, lines);
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
highlightLine
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=highlightLine.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/highlightLine.ts"],
|
|
4
|
+
"mappings": "AAEA,SAAS,cAAc;AACvB,OAAO,WAAW;AAClB,SAAS,eAAe;AAExB,MAAM,gBAAgB,SAASA,eAAc,KAAK,UAAU,GAAG;AAC7D,MAAI,aAAa;AACjB,SAAO,IAAI;AAAA,IACT,CAAC,QAAQ,SAAS;AAChB,UAAI,KAAK,SAAS,QAAQ;AACxB,YAAI,KAAK,MAAM,QAAQ;AAAA,CAAI,MAAM;AAC/B,sBAAK,aAAa,YAClB,OAAO,MAAM,KAAK,IAAI,GACf;AAGT,cAAM,QAAQ,KAAK,MAAM,MAAM;AAAA,CAAI;AACnC,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ;AAEhC,UADI,MAAM,KAAG,EAAE,YACX,QAAM,MAAM,SAAS,KAAK,MAAM,CAAC,EAAE,WAAW,MAClD,OAAO,MAAM,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,OAAO,MAAM,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AAAA;AAAA,YACtD;AAAA,UACF,CAAC;AAGH,sBAAO,aAAa,YACb;AAAA,MACT;AAEA,UAAI,KAAK,UAAU;AACjB,aAAK,aAAa;AAClB,cAAM,YAAYA,eAAc,KAAK,UAAU,UAAU;AACzD,oBAAK,WAAW,UAAU,OAC1B,OAAO,aAAa,UAAU,YAC9B,OAAO,MAAM,KAAK,IAAI,GACf;AAAA,MACT;AAEA,oBAAO,MAAM,KAAK,IAAI,GACf;AAAA,IACT;AAAA,IACA,EAAE,OAAO,CAAC,GAAG,WAAuB;AAAA,EACtC;AACF,GAEM,YAAY,SAAmB,KAAY,kBAAkB;AACjE,QAAM,eAAe,iBAAiB,WAAW,KAAK,iBAAiB,CAAC,MAAM,GACxE,WAAkB,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACxE,MAAI,IAAI;AAoCR,SAnCgB,SAAS,OAAO,CAAC,OAAO,WAAW;AACjD,UAAM,OAAO,QACP,WAAkB,CAAC;AACzB,WAAO,IAAI,IAAI,QAAQ,KAAK;AAC1B,UAAI,IAAI,CAAC,EAAE,aAAa,MAAM;AAC5B,cAAM,KAAK,IAAI,CAAC,CAAC;AACjB;AAAA,MACF;AAEA,UAAI,IAAI,CAAC,EAAE,eAAe,MAAM;AAC9B,iBAAS,KAAK,IAAI,CAAC,CAAC;AACpB;AAAA,MACF;AAEA,UAAI,IAAI,CAAC,EAAE,aAAa;AACtB;AAAA,IAEJ;AAEA,iBAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,YAAY;AAAA,QACV,UAAU;AAAA,QACV,WAAW;AAAA,QACX,iBACE,iBAAiB,SAAS,IAAI,KAAK,eAAe,SAAS;AAAA,MAC/D;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IACd,CAAC,GAEM;AAAA,EACT,GAAG,CAAC,CAAC;AAGP,GAGM,uBAAuB,qDAEvB,oBAAoB,CAAC,QAAQ;AAEjC,MAAI,OAAO,OAAO,GAAG;AAGrB,gBAAO,KAAK;AAAA,IAAQ;AAAA,IAAsB,CAAC,OAAO,UAChD,MAAM,QAAQ,OAAO;AAAA,qBAA+B,KAAK,IAAI;AAAA,EAC/D,GAGa,QAAQ,EAAE,IAAI,OAAO,EAAE,iBAAiB,IAAM,UAAU,GAAK,CAAC,EAAE,MAAM,IAAI,EAE3E;AACd;AAEO,SAAS,cAAc,KAAK,OAAO;AACxC,QAAM,eAAe,kBAAkB,GAAG,GACpC,WAAW,cAAc,YAAY,EAAE;AAC7C,SAAO,UAAU,UAAU,KAAK;AAClC;",
|
|
5
|
+
"names": ["lineNumberify"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { toHtml } from "hast-util-to-html";
|
|
2
|
+
import parse from "rehype-parse";
|
|
3
|
+
import { unified } from "unified";
|
|
4
|
+
const lineNumberify = function lineNumberify2(ast, lineNum = 1) {
|
|
5
|
+
let lineNumber = lineNum;
|
|
6
|
+
return ast.reduce((result, node) => {
|
|
7
|
+
if (node.type === "text") {
|
|
8
|
+
if (node.value.indexOf(`
|
|
9
|
+
`) === -1) return node.lineNumber = lineNumber, result.nodes.push(node), result;
|
|
10
|
+
const lines = node.value.split(`
|
|
11
|
+
`);
|
|
12
|
+
for (let i = 0; i < lines.length; i++) i !== 0 && ++lineNumber, !(i === lines.length - 1 && lines[i].length === 0) && result.nodes.push({
|
|
13
|
+
type: "text",
|
|
14
|
+
value: i === lines.length - 1 ? lines[i] : `${lines[i]}
|
|
15
|
+
`,
|
|
16
|
+
lineNumber
|
|
17
|
+
});
|
|
18
|
+
return result.lineNumber = lineNumber, result;
|
|
19
|
+
}
|
|
20
|
+
if (node.children) {
|
|
21
|
+
node.lineNumber = lineNumber;
|
|
22
|
+
const processed = lineNumberify2(node.children, lineNumber);
|
|
23
|
+
return node.children = processed.nodes, result.lineNumber = processed.lineNumber, result.nodes.push(node), result;
|
|
24
|
+
}
|
|
25
|
+
return result.nodes.push(node), result;
|
|
26
|
+
}, {
|
|
27
|
+
nodes: [],
|
|
28
|
+
lineNumber
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
wrapLines = function (ast, linesToHighlight) {
|
|
32
|
+
const highlightAll = linesToHighlight.length === 1 && linesToHighlight[0] === 0,
|
|
33
|
+
allLines = Array.from(new Set(ast.map(x => x.lineNumber)));
|
|
34
|
+
let i = 0;
|
|
35
|
+
return allLines.reduce((nodes, marker) => {
|
|
36
|
+
const line = marker,
|
|
37
|
+
children = [];
|
|
38
|
+
for (; i < ast.length; i++) {
|
|
39
|
+
if (ast[i].lineNumber < line) {
|
|
40
|
+
nodes.push(ast[i]);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (ast[i].lineNumber === line) {
|
|
44
|
+
children.push(ast[i]);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (ast[i].lineNumber > line) break;
|
|
48
|
+
}
|
|
49
|
+
return nodes.push({
|
|
50
|
+
type: "element",
|
|
51
|
+
tagName: "div",
|
|
52
|
+
properties: {
|
|
53
|
+
dataLine: line,
|
|
54
|
+
className: "highlight-line",
|
|
55
|
+
dataHighlighted: linesToHighlight.includes(line) || highlightAll ? "true" : "false"
|
|
56
|
+
},
|
|
57
|
+
children,
|
|
58
|
+
lineNumber: line
|
|
59
|
+
}), nodes;
|
|
60
|
+
}, []);
|
|
61
|
+
},
|
|
62
|
+
MULTILINE_TOKEN_SPAN = /<span class="token ([^"]+)">[^<]*\n[^<]*<\/span>/g,
|
|
63
|
+
applyMultilineFix = ast => {
|
|
64
|
+
let html = toHtml(ast);
|
|
65
|
+
return html = html.replace(MULTILINE_TOKEN_SPAN, (match, token) => match.replace(/\n/g, `</span>
|
|
66
|
+
<span class="token ${token}">`)), unified().use(parse, {
|
|
67
|
+
emitParseErrors: !0,
|
|
68
|
+
fragment: !0
|
|
69
|
+
}).parse(html).children;
|
|
70
|
+
};
|
|
71
|
+
function highlightLine(ast, lines) {
|
|
72
|
+
const formattedAst = applyMultilineFix(ast),
|
|
73
|
+
numbered = lineNumberify(formattedAst).nodes;
|
|
74
|
+
return wrapLines(numbered, lines);
|
|
75
|
+
}
|
|
76
|
+
export { highlightLine };
|
|
77
|
+
//# sourceMappingURL=highlightLine.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toHtml","parse","unified","lineNumberify","lineNumberify2","ast","lineNum","lineNumber","reduce","result","node","type","value","indexOf","nodes","push","lines","split","i","length","children","processed","wrapLines","linesToHighlight","highlightAll","allLines","Array","from","Set","map","x","marker","line","tagName","properties","dataLine","className","dataHighlighted","includes","MULTILINE_TOKEN_SPAN","applyMultilineFix","html","replace","match","token","use","emitParseErrors","fragment","highlightLine","formattedAst","numbered"],"sources":["../../src/highlightLine.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { toHtml } from "hast-util-to-html";
|
|
2
|
+
import parse from "rehype-parse";
|
|
3
|
+
import { unified } from "unified";
|
|
4
|
+
var lineNumberify = function lineNumberify2(ast) {
|
|
5
|
+
var lineNum = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1,
|
|
6
|
+
lineNumber = lineNum;
|
|
7
|
+
return ast.reduce(function (result, node) {
|
|
8
|
+
if (node.type === "text") {
|
|
9
|
+
if (node.value.indexOf(`
|
|
10
|
+
`) === -1) return node.lineNumber = lineNumber, result.nodes.push(node), result;
|
|
11
|
+
for (var lines = node.value.split(`
|
|
12
|
+
`), i = 0; i < lines.length; i++) i !== 0 && ++lineNumber, !(i === lines.length - 1 && lines[i].length === 0) && result.nodes.push({
|
|
13
|
+
type: "text",
|
|
14
|
+
value: i === lines.length - 1 ? lines[i] : `${lines[i]}
|
|
15
|
+
`,
|
|
16
|
+
lineNumber
|
|
17
|
+
});
|
|
18
|
+
return result.lineNumber = lineNumber, result;
|
|
19
|
+
}
|
|
20
|
+
if (node.children) {
|
|
21
|
+
node.lineNumber = lineNumber;
|
|
22
|
+
var processed = lineNumberify2(node.children, lineNumber);
|
|
23
|
+
return node.children = processed.nodes, result.lineNumber = processed.lineNumber, result.nodes.push(node), result;
|
|
24
|
+
}
|
|
25
|
+
return result.nodes.push(node), result;
|
|
26
|
+
}, {
|
|
27
|
+
nodes: [],
|
|
28
|
+
lineNumber
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
wrapLines = function (ast, linesToHighlight) {
|
|
32
|
+
var highlightAll = linesToHighlight.length === 1 && linesToHighlight[0] === 0,
|
|
33
|
+
allLines = Array.from(new Set(ast.map(function (x) {
|
|
34
|
+
return x.lineNumber;
|
|
35
|
+
}))),
|
|
36
|
+
i = 0,
|
|
37
|
+
wrapped = allLines.reduce(function (nodes, marker) {
|
|
38
|
+
for (var line = marker, children = []; i < ast.length; i++) {
|
|
39
|
+
if (ast[i].lineNumber < line) {
|
|
40
|
+
nodes.push(ast[i]);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (ast[i].lineNumber === line) {
|
|
44
|
+
children.push(ast[i]);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (ast[i].lineNumber > line) break;
|
|
48
|
+
}
|
|
49
|
+
return nodes.push({
|
|
50
|
+
type: "element",
|
|
51
|
+
tagName: "div",
|
|
52
|
+
properties: {
|
|
53
|
+
dataLine: line,
|
|
54
|
+
className: "highlight-line",
|
|
55
|
+
dataHighlighted: linesToHighlight.includes(line) || highlightAll ? "true" : "false"
|
|
56
|
+
},
|
|
57
|
+
children,
|
|
58
|
+
lineNumber: line
|
|
59
|
+
}), nodes;
|
|
60
|
+
}, []);
|
|
61
|
+
return wrapped;
|
|
62
|
+
},
|
|
63
|
+
MULTILINE_TOKEN_SPAN = /<span class="token ([^"]+)">[^<]*\n[^<]*<\/span>/g,
|
|
64
|
+
applyMultilineFix = function (ast) {
|
|
65
|
+
var html = toHtml(ast);
|
|
66
|
+
html = html.replace(MULTILINE_TOKEN_SPAN, function (match, token) {
|
|
67
|
+
return match.replace(/\n/g, `</span>
|
|
68
|
+
<span class="token ${token}">`);
|
|
69
|
+
});
|
|
70
|
+
var hast = unified().use(parse, {
|
|
71
|
+
emitParseErrors: !0,
|
|
72
|
+
fragment: !0
|
|
73
|
+
}).parse(html);
|
|
74
|
+
return hast.children;
|
|
75
|
+
};
|
|
76
|
+
function highlightLine(ast, lines) {
|
|
77
|
+
var formattedAst = applyMultilineFix(ast),
|
|
78
|
+
numbered = lineNumberify(formattedAst).nodes;
|
|
79
|
+
return wrapLines(numbered, lines);
|
|
80
|
+
}
|
|
81
|
+
export { highlightLine };
|
|
82
|
+
//# sourceMappingURL=highlightLine.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toHtml","parse","unified","lineNumberify","lineNumberify2","ast","lineNum","arguments","length","lineNumber","reduce","result","node","type","value","indexOf","nodes","push","lines","split","i","children","processed","wrapLines","linesToHighlight","highlightAll","allLines","Array","from","Set","map","x","wrapped","marker","line","tagName","properties","dataLine","className","dataHighlighted","includes","MULTILINE_TOKEN_SPAN","applyMultilineFix","html","replace","match","token","hast","use","emitParseErrors","fragment","highlightLine"],"sources":["../../src/highlightLine.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { toHtml } from "hast-util-to-html";
|
|
2
|
+
import parse from "rehype-parse";
|
|
3
|
+
import { unified } from "unified";
|
|
4
|
+
const CALLOUT = /__(.*?)__/g;
|
|
5
|
+
function highlightWord(code) {
|
|
6
|
+
const result = toHtml(code).replace(
|
|
7
|
+
CALLOUT,
|
|
8
|
+
(_, text) => `<span class="highlight-word">${text}</span>`
|
|
9
|
+
);
|
|
10
|
+
return unified().use(parse, { emitParseErrors: !0, fragment: !0 }).parse(result).children;
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
highlightWord
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=highlightWord.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/highlightWord.ts"],
|
|
4
|
+
"mappings": "AACA,SAAS,cAAc;AACvB,OAAO,WAAW;AAClB,SAAS,eAAe;AAExB,MAAM,UAAU;AAET,SAAS,cAAc,MAAM;AAElC,QAAM,SADO,OAAO,IAAI,EACJ;AAAA,IAClB;AAAA,IACA,CAAC,GAAG,SAAS,gCAAgC,IAAI;AAAA,EACnD;AAIA,SAHa,QAAQ,EAClB,IAAI,OAAO,EAAE,iBAAiB,IAAM,UAAU,GAAK,CAAC,EACpD,MAAM,MAAM,EACH;AACd;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { toHtml } from "hast-util-to-html";
|
|
2
|
+
import parse from "rehype-parse";
|
|
3
|
+
import { unified } from "unified";
|
|
4
|
+
const CALLOUT = /__(.*?)__/g;
|
|
5
|
+
function highlightWord(code) {
|
|
6
|
+
const result = toHtml(code).replace(CALLOUT, (_, text) => `<span class="highlight-word">${text}</span>`);
|
|
7
|
+
return unified().use(parse, {
|
|
8
|
+
emitParseErrors: !0,
|
|
9
|
+
fragment: !0
|
|
10
|
+
}).parse(result).children;
|
|
11
|
+
}
|
|
12
|
+
export { highlightWord };
|
|
13
|
+
//# sourceMappingURL=highlightWord.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toHtml","parse","unified","CALLOUT","highlightWord","code","result","replace","_","text","use","emitParseErrors","fragment","children"],"sources":["../../src/highlightWord.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,MAAA,QAAc;AACvB,OAAOC,KAAA,MAAW;AAClB,SAASC,OAAA,QAAe;AAExB,MAAMC,OAAA,GAAU;AAET,SAASC,cAAcC,IAAA,EAAM;EAElC,MAAMC,MAAA,GADON,MAAA,CAAOK,IAAI,EACJE,OAAA,CAClBJ,OAAA,EACA,CAACK,CAAA,EAAGC,IAAA,KAAS,gCAAgCA,IAAI,SACnD;EAIA,OAHaP,OAAA,CAAQ,EAClBQ,GAAA,CAAIT,KAAA,EAAO;IAAEU,eAAA,EAAiB;IAAMC,QAAA,EAAU;EAAK,CAAC,EACpDX,KAAA,CAAMK,MAAM,EACHO,QAAA;AACd","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { toHtml } from "hast-util-to-html";
|
|
2
|
+
import parse from "rehype-parse";
|
|
3
|
+
import { unified } from "unified";
|
|
4
|
+
var CALLOUT = /__(.*?)__/g;
|
|
5
|
+
function highlightWord(code) {
|
|
6
|
+
var html = toHtml(code),
|
|
7
|
+
result = html.replace(CALLOUT, function (_, text) {
|
|
8
|
+
return `<span class="highlight-word">${text}</span>`;
|
|
9
|
+
}),
|
|
10
|
+
hast = unified().use(parse, {
|
|
11
|
+
emitParseErrors: !0,
|
|
12
|
+
fragment: !0
|
|
13
|
+
}).parse(result);
|
|
14
|
+
return hast.children;
|
|
15
|
+
}
|
|
16
|
+
export { highlightWord };
|
|
17
|
+
//# sourceMappingURL=highlightWord.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toHtml","parse","unified","CALLOUT","highlightWord","code","html","result","replace","_","text","hast","use","emitParseErrors","fragment"],"sources":["../../src/highlightWord.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,MAAA,QAAc;AACvB,OAAOC,KAAA,MAAW;AAClB,SAASC,OAAA,QAAe;AAExB,IAAAC,OAAM,eAAU;AAET,SAASC,cAAcC,IAAA,EAAM;EAElC,IAAAC,IAAM,GAAAN,MADO,CAAAK,IAAO;IAAAE,MACA,GAAAD,IAAA,CAAAE,OAAA,CAAAL,OAAA,YAAAM,CAAA,EAAAC,IAAA;MAClB,uCAAAA,IAAA;IAAA,EACA;IAACC,IAAG,GAAAT,OAAS,GAAAU,GAAA,CAAAX,KAAA;MACfY,eAAA;MAIAC,QAHa;IAIf,GAAAb,KAAA,CAAAM,MAAA","ignoreList":[]}
|