mathpix-markdown-it 2.0.1 → 2.0.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/README.md +84 -81
- package/es5/bundle.js +2 -2
- package/es5/index.js +2 -2
- package/lib/components/mathpix-markdown/index.js +2 -1
- package/lib/components/mathpix-markdown/index.js.map +1 -1
- package/lib/markdown/common/consts.d.ts +3 -0
- package/lib/markdown/common/consts.js +8 -5
- package/lib/markdown/common/consts.js.map +1 -1
- package/lib/markdown/common/convert-math-to-html.d.ts +2 -0
- package/lib/markdown/common/convert-math-to-html.js +126 -0
- package/lib/markdown/common/convert-math-to-html.js.map +1 -0
- package/lib/markdown/common/html-re.d.ts +7 -0
- package/lib/markdown/common/html-re.js +88 -0
- package/lib/markdown/common/html-re.js.map +1 -0
- package/lib/markdown/common/mmdRules.js +10 -0
- package/lib/markdown/common/mmdRules.js.map +1 -1
- package/lib/markdown/index.js +2 -1
- package/lib/markdown/index.js.map +1 -1
- package/lib/markdown/md-block-rule/mathml-block.d.ts +2 -0
- package/lib/markdown/md-block-rule/mathml-block.js +68 -0
- package/lib/markdown/md-block-rule/mathml-block.js.map +1 -0
- package/lib/markdown/md-block-rule/mmd-html-block.d.ts +2 -0
- package/lib/markdown/md-block-rule/mmd-html-block.js +96 -0
- package/lib/markdown/md-block-rule/mmd-html-block.js.map +1 -0
- package/lib/markdown/md-inline-rule/html_inline_full_tag.d.ts +2 -0
- package/lib/markdown/md-inline-rule/html_inline_full_tag.js +62 -0
- package/lib/markdown/md-inline-rule/html_inline_full_tag.js.map +1 -0
- package/lib/markdown/md-inline-rule/mathml-inline.d.ts +2 -0
- package/lib/markdown/md-inline-rule/mathml-inline.js +42 -0
- package/lib/markdown/md-inline-rule/mathml-inline.js.map +1 -0
- package/lib/markdown/md-inline-rule2/mmd-html_inline2.d.ts +1 -0
- package/lib/markdown/md-inline-rule2/mmd-html_inline2.js +85 -0
- package/lib/markdown/md-inline-rule2/mmd-html_inline2.js.map +1 -0
- package/lib/markdown/md-renderer-rules/breaks.js +5 -1
- package/lib/markdown/md-renderer-rules/breaks.js.map +1 -1
- package/lib/markdown/mdPluginRaw.js +34 -289
- package/lib/markdown/mdPluginRaw.js.map +1 -1
- package/lib/markdown/rules.js +1 -1
- package/lib/markdown/rules.js.map +1 -1
- package/lib/markdown/sanitize/index.js +1 -1
- package/lib/markdown/sanitize/index.js.map +1 -1
- package/lib/mathjax/fix-unicode.d.ts +6 -0
- package/lib/mathjax/fix-unicode.js +38 -0
- package/lib/mathjax/fix-unicode.js.map +1 -0
- package/lib/mathjax/mathJaxConfig.js +2 -1
- package/lib/mathjax/mathJaxConfig.js.map +1 -1
- package/lib/mathjax/mathjax.js +4 -0
- package/lib/mathjax/mathjax.js.map +1 -1
- package/lib/mathpix-markdown-model/index.d.ts +2 -0
- package/lib/mathpix-markdown-model/index.js +2 -1
- package/lib/mathpix-markdown-model/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mmdHtmlBlock = void 0;
|
|
4
|
+
var html_re_1 = require("../common/html-re");
|
|
5
|
+
var mmdHtmlBlock = function (state, startLine, endLine, silent) {
|
|
6
|
+
var i, nextLine, token, lineText, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];
|
|
7
|
+
// if it's indented more than 3 spaces, it should be a code block
|
|
8
|
+
if (state.sCount[startLine] - state.blkIndent >= 4) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (!state.md.options.html ||
|
|
12
|
+
state.md.options.htmlDisableTagMatching ||
|
|
13
|
+
state.src.charCodeAt(pos) !== 0x3C /* < */) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
lineText = state.src.slice(pos, max);
|
|
17
|
+
var openTag;
|
|
18
|
+
for (i = 0; i < html_re_1.HTML_SEQUENCES.length; i++) {
|
|
19
|
+
openTag = html_re_1.HTML_SEQUENCES[i][0];
|
|
20
|
+
if (openTag.test(lineText)) {
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (i === html_re_1.HTML_SEQUENCES.length) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
var match = lineText.match(openTag);
|
|
28
|
+
if (!match) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
nextLine = startLine + 1;
|
|
32
|
+
if (((match === null || match === void 0 ? void 0 : match.length) > 2 && (match[2] === '/>' || match[2] === "/"))
|
|
33
|
+
|| html_re_1.selfClosingTags.includes(match[1])) {
|
|
34
|
+
if (silent) {
|
|
35
|
+
// true if this sequence can be a terminator, false otherwise
|
|
36
|
+
return html_re_1.HTML_SEQUENCES[i][2];
|
|
37
|
+
}
|
|
38
|
+
state.line = nextLine;
|
|
39
|
+
token = state.push('html_block', '', 0);
|
|
40
|
+
token.map = [startLine, nextLine];
|
|
41
|
+
token.content = state.getLines(startLine, nextLine, state.blkIndent, true);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
var openTagNext = html_re_1.HTML_SEQUENCES[i][1]
|
|
45
|
+
? html_re_1.HTML_SEQUENCES[i][0]
|
|
46
|
+
: new RegExp('^(?:<' + match[1] + '\\s*>)');
|
|
47
|
+
// If we are here - we detected HTML block.
|
|
48
|
+
// Let's roll down till block end.
|
|
49
|
+
var closeTag = html_re_1.HTML_SEQUENCES[i][1]
|
|
50
|
+
? html_re_1.HTML_SEQUENCES[i][1]
|
|
51
|
+
: new RegExp('^(?:<\\/' + match[1] + '\\s*>)');
|
|
52
|
+
if (!closeTag) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
/* TODO: Check nested tags */
|
|
56
|
+
var hasCloseTag = false;
|
|
57
|
+
var openTagCount = 1;
|
|
58
|
+
if (!closeTag.test(lineText)) {
|
|
59
|
+
for (; nextLine < endLine; nextLine++) {
|
|
60
|
+
if (state.sCount[nextLine] < state.blkIndent) {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
pos = state.bMarks[nextLine] + state.tShift[nextLine];
|
|
64
|
+
max = state.eMarks[nextLine];
|
|
65
|
+
lineText = state.src.slice(pos, max);
|
|
66
|
+
if (openTagNext.test(lineText)) {
|
|
67
|
+
openTagCount++;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (closeTag.test(lineText)) {
|
|
71
|
+
if (lineText.length !== 0) {
|
|
72
|
+
nextLine++;
|
|
73
|
+
}
|
|
74
|
+
openTagCount--;
|
|
75
|
+
if (openTagCount === 0) {
|
|
76
|
+
hasCloseTag = true;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (!hasCloseTag) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
if (silent) {
|
|
86
|
+
// true if this sequence can be a terminator, false otherwise
|
|
87
|
+
return html_re_1.HTML_SEQUENCES[i][2];
|
|
88
|
+
}
|
|
89
|
+
state.line = nextLine;
|
|
90
|
+
token = state.push('html_block', '', 0);
|
|
91
|
+
token.map = [startLine, nextLine];
|
|
92
|
+
token.content = state.getLines(startLine, nextLine, state.blkIndent, true);
|
|
93
|
+
return true;
|
|
94
|
+
};
|
|
95
|
+
exports.mmdHtmlBlock = mmdHtmlBlock;
|
|
96
|
+
//# sourceMappingURL=mmd-html-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mmd-html-block.js","sourceRoot":"","sources":["../../../src/markdown/md-block-rule/mmd-html-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.html_inline_full_tag = void 0;
|
|
4
|
+
var html_re_1 = require("../common/html-re");
|
|
5
|
+
var svgInlineRegex = /^<(svg)\b[^>]*>[\s\S]*<\/svg>/i;
|
|
6
|
+
var preInlineRegex = /^<(pre)\b[^>]*>[\s\S]*<\/pre>/i;
|
|
7
|
+
var codeInlineRegex = /^<(code)\b[^>]*>[\s\S]*<\/code>/i;
|
|
8
|
+
var scriptInlineRegex = /^<(script)\b[^>]*>[\s\S]*<\/script>/i;
|
|
9
|
+
var styleInlineRegex = /^<(style)\b[^>]*>[\s\S]*<\/style>/i;
|
|
10
|
+
var textareaInlineRegex = /^<(textarea)\b[^>]*>[\s\S]*<\/textarea>/i;
|
|
11
|
+
var optionInlineRegex = /^<(option)\b[^>]*>[\s\S]*<\/option>/i;
|
|
12
|
+
// Helper function to match regex against state source
|
|
13
|
+
var matchTagRegex = function (src, pos, options) {
|
|
14
|
+
var _a;
|
|
15
|
+
var remainder = src.slice(pos);
|
|
16
|
+
var match = remainder.match(svgInlineRegex) ||
|
|
17
|
+
remainder.match(preInlineRegex) ||
|
|
18
|
+
remainder.match(codeInlineRegex);
|
|
19
|
+
if (match) {
|
|
20
|
+
return match;
|
|
21
|
+
}
|
|
22
|
+
if ((options === null || options === void 0 ? void 0 : options.htmlSanitize) === true || ((_a = options === null || options === void 0 ? void 0 : options.htmlSanitize) === null || _a === void 0 ? void 0 : _a.disallowedTagsMode) === 'discard') {
|
|
23
|
+
return remainder.match(styleInlineRegex) ||
|
|
24
|
+
remainder.match(scriptInlineRegex) ||
|
|
25
|
+
remainder.match(textareaInlineRegex) ||
|
|
26
|
+
remainder.match(optionInlineRegex);
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
};
|
|
30
|
+
var html_inline_full_tag = function (state, silent) {
|
|
31
|
+
try {
|
|
32
|
+
var pos = state.pos, src = state.src, posMax = state.posMax;
|
|
33
|
+
if (!state.md.options.html || pos + 2 >= posMax || src.charCodeAt(pos) !== 0x3C /* < */) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
var match = matchTagRegex(src, pos, state.md.options);
|
|
37
|
+
if (!match) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
var tag = match[1] ? match[1].toLowerCase() : '';
|
|
41
|
+
if (!tag) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
var matchedTagContent = (0, html_re_1.extractFullHtmlTagContent)(src.slice(pos), tag);
|
|
45
|
+
if (!(matchedTagContent === null || matchedTagContent === void 0 ? void 0 : matchedTagContent.length)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (!silent) {
|
|
49
|
+
var token = state.push('html_inline', '', 0);
|
|
50
|
+
token.content = src.slice(pos, pos + matchedTagContent[0].length);
|
|
51
|
+
token.isFullHtmlTagContent = true;
|
|
52
|
+
}
|
|
53
|
+
state.pos += matchedTagContent[0].length;
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
console.error("[ERROR]=>[html_inline_full_tag]=>", err);
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.html_inline_full_tag = html_inline_full_tag;
|
|
62
|
+
//# sourceMappingURL=html_inline_full_tag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html_inline_full_tag.js","sourceRoot":"","sources":["../../../src/markdown/md-inline-rule/html_inline_full_tag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inlineMathML = void 0;
|
|
4
|
+
var convert_math_to_html_1 = require("../common/convert-math-to-html");
|
|
5
|
+
var consts_1 = require("../common/consts");
|
|
6
|
+
var inlineMathML = function (state, silent) {
|
|
7
|
+
var _a;
|
|
8
|
+
try {
|
|
9
|
+
var pos = state.pos, src = state.src, posMax = state.posMax;
|
|
10
|
+
// Early exit if input is too short or does not start with '<'
|
|
11
|
+
if (pos + 2 >= posMax || src.charCodeAt(pos) !== 0x3C /* < */) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
// Attempt to match the MathML inline pattern
|
|
15
|
+
var match = src.slice(pos).match(consts_1.mathMLInlineRegex);
|
|
16
|
+
if (!match || !consts_1.validMathMLRegex.test(match[0])) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
// Determine the type of MathML (inline or display)
|
|
20
|
+
var type = ((_a = match[1]) === null || _a === void 0 ? void 0 : _a.indexOf('block')) !== -1 ? "display_mathML" : "inline_mathML";
|
|
21
|
+
// Create and configure token if not in silent mode
|
|
22
|
+
if (!silent) {
|
|
23
|
+
var token = state.push(type, "", 0);
|
|
24
|
+
token.content = src.slice(pos, pos + match[0].length);
|
|
25
|
+
token.inlinePos = {
|
|
26
|
+
start: state.pos,
|
|
27
|
+
end: pos + match[0].length
|
|
28
|
+
};
|
|
29
|
+
// Convert MathML to HTML and obtain additional data using MathJax
|
|
30
|
+
(0, convert_math_to_html_1.convertMathToHtml)(state, token, state.md.options);
|
|
31
|
+
}
|
|
32
|
+
// Advance the state position to the end of the matched content
|
|
33
|
+
state.pos += match[0].length;
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
console.error("[ERROR]=>[inlineMathML]=>", err);
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.inlineMathML = inlineMathML;
|
|
42
|
+
//# sourceMappingURL=mathml-inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mathml-inline.js","sourceRoot":"","sources":["../../../src/markdown/md-inline-rule/mathml-inline.ts"],"names":[],"mappings":";;;AACA,uEAAmE;AACnE,2CAAuE;AAEhE,IAAM,YAAY,GAAe,UAAC,KAAK,EAAE,MAAM;;IACpD,IAAI;QACM,IAAA,GAAG,GAAkB,KAAK,IAAvB,EAAE,GAAG,GAAa,KAAK,IAAlB,EAAE,MAAM,GAAK,KAAK,OAAV,CAAW;QAEnC,8DAA8D;QAC9D,IAAI,GAAG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;YAC7D,OAAO,KAAK,CAAC;SACd;QAED,6CAA6C;QAC7C,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,0BAAiB,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,IAAI,CAAC,yBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9C,OAAO,KAAK,CAAC;SACd;QAED,mDAAmD;QACnD,IAAI,IAAI,GAAU,CAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,OAAO,CAAC,MAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC;QAEzF,mDAAmD;QACnD,IAAI,CAAC,MAAM,EAAE;YACX,IAAM,KAAK,GAAU,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtD,KAAK,CAAC,SAAS,GAAG;gBAChB,KAAK,EAAE,KAAK,CAAC,GAAG;gBAChB,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;aAC3B,CAAC;YACF,kEAAkE;YAClE,IAAA,wCAAiB,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;SACnD;QAED,+DAA+D;QAC/D,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAA;AAtCY,QAAA,YAAY,gBAsCxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const mmdHtmlInline2: (state: any) => void;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mmdHtmlInline2 = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var html_re_1 = require("../common/html-re");
|
|
6
|
+
var mmdHtmlInline2 = function (state) {
|
|
7
|
+
var _a;
|
|
8
|
+
if (!((_a = state.tokens) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
var stack = [];
|
|
12
|
+
var closeStack = [];
|
|
13
|
+
// Helper function to hide soft breaks before a token
|
|
14
|
+
var hideSoftBreakBefore = function (tokens, index) {
|
|
15
|
+
var tokenBefore = index > 0 ? tokens[index - 1] : null;
|
|
16
|
+
var tokenBefore2 = index > 1 ? tokens[index - 2] : null;
|
|
17
|
+
if ((tokenBefore === null || tokenBefore === void 0 ? void 0 : tokenBefore.type) === 'softbreak' && (tokenBefore2 === null || tokenBefore2 === void 0 ? void 0 : tokenBefore2.type) === 'html_inline') {
|
|
18
|
+
tokens[index - 1].hidden = true;
|
|
19
|
+
tokens[index - 1].showLineBreak = true;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
for (var i = 0; i < state.tokens.length; i++) {
|
|
23
|
+
var token = state.tokens[i];
|
|
24
|
+
if (token.type === 'html_inline') {
|
|
25
|
+
var matchOpen = token.content.match(html_re_1.HTML_OPEN_TAG_RE);
|
|
26
|
+
if (matchOpen) {
|
|
27
|
+
var tag = matchOpen[1] ? matchOpen[1].toLowerCase() : '';
|
|
28
|
+
var isClose = matchOpen[2] === '/';
|
|
29
|
+
if (tag && !html_re_1.selfClosingTags.includes(tag) && !isClose && !token.isFullHtmlTagContent) {
|
|
30
|
+
stack.push({
|
|
31
|
+
token: token,
|
|
32
|
+
content: token.content,
|
|
33
|
+
tag: tag,
|
|
34
|
+
idx: i,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
var matchClose = token.content.match(html_re_1.HTML_CLOSE_TAG_RE);
|
|
40
|
+
if (matchClose) {
|
|
41
|
+
var closeTag = matchClose[1] ? matchClose[1].toLowerCase() : '';
|
|
42
|
+
if (stack.length === 0) {
|
|
43
|
+
console.log("Mismatched closing tag: </".concat(closeTag, ">"));
|
|
44
|
+
closeStack.push({ token: token, content: token.content, tag: closeTag });
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
var lastOpenTag = stack[stack.length - 1].tag;
|
|
48
|
+
if (lastOpenTag === closeTag || html_re_1.selfClosingTags.includes(lastOpenTag)) {
|
|
49
|
+
// stack.pop();
|
|
50
|
+
var pStack = stack.pop();
|
|
51
|
+
hideSoftBreakBefore(state.tokens, pStack.idx);
|
|
52
|
+
hideSoftBreakBefore(state.tokens, i);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
console.log("Mismatched closing tag: </".concat(closeTag, ">"));
|
|
56
|
+
closeStack.push({ token: token, content: token.content, tag: closeTag });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Convert unmatched opening and closing tags to text type
|
|
61
|
+
var convertToTextType = function (tokens) {
|
|
62
|
+
var e_1, _a;
|
|
63
|
+
try {
|
|
64
|
+
for (var tokens_1 = tslib_1.__values(tokens), tokens_1_1 = tokens_1.next(); !tokens_1_1.done; tokens_1_1 = tokens_1.next()) {
|
|
65
|
+
var item = tokens_1_1.value;
|
|
66
|
+
item.token.type = 'text';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
70
|
+
finally {
|
|
71
|
+
try {
|
|
72
|
+
if (tokens_1_1 && !tokens_1_1.done && (_a = tokens_1.return)) _a.call(tokens_1);
|
|
73
|
+
}
|
|
74
|
+
finally { if (e_1) throw e_1.error; }
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
if (stack.length) {
|
|
78
|
+
convertToTextType(stack);
|
|
79
|
+
}
|
|
80
|
+
if (closeStack.length) {
|
|
81
|
+
convertToTextType(closeStack);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
exports.mmdHtmlInline2 = mmdHtmlInline2;
|
|
85
|
+
//# sourceMappingURL=mmd-html_inline2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mmd-html_inline2.js","sourceRoot":"","sources":["../../../src/markdown/md-inline-rule2/mmd-html_inline2.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,11 @@ var softBreak = function (tokens, idx, options /*, env */) {
|
|
|
11
11
|
return '';
|
|
12
12
|
}
|
|
13
13
|
if (tokens[idx].hidden) {
|
|
14
|
-
return tokens[idx].showSpace
|
|
14
|
+
return tokens[idx].showSpace
|
|
15
|
+
? ' '
|
|
16
|
+
: tokens[idx].showLineBreak
|
|
17
|
+
? '\n'
|
|
18
|
+
: '';
|
|
15
19
|
}
|
|
16
20
|
return options.breaks ? (options.xhtmlOut ? '<br />\n' : '<br>\n') : '\n';
|
|
17
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breaks.js","sourceRoot":"","sources":["../../../src/markdown/md-renderer-rules/breaks.ts"],"names":[],"mappings":";;;AAAA;;;KAGK;AACE,IAAM,SAAS,GAAG,UAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU;IACvD,IAAM,WAAW,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAC,CAAC,CAAC,CAAC;IACvD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;QACrC,OAAO,EAAE,CAAC;KACX;IACD,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"breaks.js","sourceRoot":"","sources":["../../../src/markdown/md-renderer-rules/breaks.ts"],"names":[],"mappings":";;;AAAA;;;KAGK;AACE,IAAM,SAAS,GAAG,UAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU;IACvD,IAAM,WAAW,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAC,CAAC,CAAC,CAAC;IACvD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;QACrC,OAAO,EAAE,CAAC;KACX;IACD,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS;YAC1B,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa;gBACzB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,EAAE,CAAC;KACV;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC,CAAC;AAbW,QAAA,SAAS,aAapB;AAEK,IAAM,SAAS,GAAG,UAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU;IACvD,IAAM,WAAW,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAC,CAAC,CAAC,CAAC;IACvD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;QACrC,OAAO,EAAE,CAAC;KACX;IACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClD,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB"}
|