stream-markdown-parser 0.0.91 → 0.0.93
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/index.d.ts +26 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -54
- package/dist/index.js.map +1 -1
- package/package.json +12 -14
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MarkdownIt, MarkdownIt as MarkdownIt$1, Token } from "markdown-it-ts";
|
|
1
|
+
import { MarkdownIt, MarkdownIt as MarkdownIt$1, MarkdownItPlugin, Token } from "markdown-it-ts";
|
|
2
2
|
|
|
3
3
|
//#region src/factory.d.ts
|
|
4
4
|
interface FactoryOptions extends Record<string, unknown> {
|
|
@@ -105,7 +105,7 @@ type CustomComponentAttrs = [string, string][] | Record<string, string | boolean
|
|
|
105
105
|
* A generic node shape for custom HTML-like components.
|
|
106
106
|
* When a tag name is included in `customHtmlTags`, the parser emits a node
|
|
107
107
|
* whose `type` equals that tag name and carries the raw HTML `content`
|
|
108
|
-
* plus
|
|
108
|
+
* plus extracted `attrs` from user transforms.
|
|
109
109
|
*/
|
|
110
110
|
interface CustomComponentNode extends BaseNode {
|
|
111
111
|
/** The custom tag name (same as `tag`) */
|
|
@@ -265,13 +265,22 @@ interface ReferenceNode extends BaseNode {
|
|
|
265
265
|
type: 'reference';
|
|
266
266
|
id: string;
|
|
267
267
|
}
|
|
268
|
+
type MarkdownTokenMeta = Record<string, unknown>;
|
|
269
|
+
type MarkdownTokenBase = Omit<Token, 'children' | 'meta'> & {
|
|
270
|
+
children?: MarkdownToken[] | null;
|
|
271
|
+
loading?: boolean;
|
|
272
|
+
mark?: string;
|
|
273
|
+
meta?: MarkdownTokenMeta | null;
|
|
274
|
+
raw?: string;
|
|
275
|
+
};
|
|
268
276
|
interface MarkdownTokenLite {
|
|
269
277
|
type: string;
|
|
270
278
|
tag?: string;
|
|
271
279
|
content?: string;
|
|
272
280
|
info?: string;
|
|
281
|
+
mark?: string;
|
|
273
282
|
markup?: string;
|
|
274
|
-
meta?:
|
|
283
|
+
meta?: MarkdownTokenMeta | null;
|
|
275
284
|
map?: [number, number] | number[] | null;
|
|
276
285
|
block?: boolean;
|
|
277
286
|
hidden?: boolean;
|
|
@@ -282,10 +291,7 @@ interface MarkdownTokenLite {
|
|
|
282
291
|
loading?: boolean;
|
|
283
292
|
raw?: string;
|
|
284
293
|
}
|
|
285
|
-
type MarkdownToken =
|
|
286
|
-
loading?: boolean;
|
|
287
|
-
raw?: string;
|
|
288
|
-
}) | MarkdownTokenLite;
|
|
294
|
+
type MarkdownToken = MarkdownTokenBase | MarkdownTokenLite;
|
|
289
295
|
type ParsedNode = TextNode | HeadingNode | ParagraphNode | ListNode | ListItemNode | CodeBlockNode | InlineCodeNode | LinkNode | ImageNode | ThematicBreakNode | BlockquoteNode | TableNode | TableRowNode | TableCellNode | StrongNode | EmphasisNode | StrikethroughNode | HighlightNode | InsertNode | SubscriptNode | SuperscriptNode | CheckboxNode | CheckboxInputNode | EmojiNode | DefinitionListNode | DefinitionItemNode | FootnoteNode | FootnoteReferenceNode | AdmonitionNode | VmrContainerNode | HardBreakNode | MathInlineNode | MathBlockNode | ReferenceNode | HtmlBlockNode | HtmlInlineNode | CustomComponentNode | UnknownNode;
|
|
290
296
|
interface CustomComponents {
|
|
291
297
|
text: unknown;
|
|
@@ -348,6 +354,12 @@ interface ParseOptions {
|
|
|
348
354
|
validateLink?: (url: string) => boolean;
|
|
349
355
|
debug?: boolean;
|
|
350
356
|
}
|
|
357
|
+
interface InternalParseOptions extends ParseOptions {
|
|
358
|
+
__customHtmlBlockCursor?: number;
|
|
359
|
+
__insideStrong?: boolean;
|
|
360
|
+
__markdownIt?: MarkdownIt$1;
|
|
361
|
+
__sourceMarkdown?: string;
|
|
362
|
+
}
|
|
351
363
|
type PostTransformNodesHook = (nodes: ParsedNode[]) => ParsedNode[];
|
|
352
364
|
//#endregion
|
|
353
365
|
//#region src/parser/inline-parsers/index.d.ts
|
|
@@ -406,6 +418,7 @@ declare function findMatchingClose(src: string, startIdx: number, open: string,
|
|
|
406
418
|
//#endregion
|
|
407
419
|
//#region src/htmlRenderUtils.d.ts
|
|
408
420
|
type HtmlPolicy = 'escape' | 'safe' | 'trusted';
|
|
421
|
+
type HtmlPropValue = string | number | boolean;
|
|
409
422
|
interface HtmlToken {
|
|
410
423
|
type: 'text' | 'tag_open' | 'tag_close' | 'self_closing';
|
|
411
424
|
tagName?: string;
|
|
@@ -419,8 +432,8 @@ declare function isCustomHtmlComponentTag(tagName: string, customComponents: Rec
|
|
|
419
432
|
declare function sanitizeHtmlAttrs(attrs: Record<string, string>, policy?: HtmlPolicy, tagName?: string): Record<string, string>;
|
|
420
433
|
declare function tokenAttrsToRecord(attrs?: Array<[string, string | null]> | null): Record<string, string>;
|
|
421
434
|
declare function sanitizeHtmlTokenAttrs(attrs?: Array<[string, string | null]> | null, policy?: HtmlPolicy, tagName?: string): [string, string][] | undefined;
|
|
422
|
-
declare function convertHtmlPropValue(value: string, key: string):
|
|
423
|
-
declare function convertHtmlAttrsToProps(attrs: Record<string, string>): Record<string,
|
|
435
|
+
declare function convertHtmlPropValue(value: string, key: string): HtmlPropValue;
|
|
436
|
+
declare function convertHtmlAttrsToProps(attrs: Record<string, string>): Record<string, HtmlPropValue>;
|
|
424
437
|
declare function tokenizeHtml(html: string): HtmlToken[];
|
|
425
438
|
declare function hasCustomHtmlComponents(content: string, customComponents: Record<string, unknown>): boolean;
|
|
426
439
|
declare function sanitizeHtmlContent(content: string, policy?: HtmlPolicy): string;
|
|
@@ -463,10 +476,11 @@ declare function normalizeStandaloneBackslashT(s: string, opts?: MathOptions): s
|
|
|
463
476
|
declare function applyMath(md: MarkdownIt$1, mathOpts?: MathOptions): void;
|
|
464
477
|
//#endregion
|
|
465
478
|
//#region src/index.d.ts
|
|
466
|
-
|
|
479
|
+
type MarkdownPluginRegistration = MarkdownItPlugin | readonly [MarkdownItPlugin, ...unknown[]];
|
|
480
|
+
declare function registerMarkdownPlugin(plugin: MarkdownPluginRegistration): void;
|
|
467
481
|
declare function clearRegisteredMarkdownPlugins(): void;
|
|
468
482
|
interface GetMarkdownOptions extends FactoryOptions {
|
|
469
|
-
plugin?:
|
|
483
|
+
plugin?: MarkdownPluginRegistration[];
|
|
470
484
|
apply?: Array<(md: MarkdownIt) => void>;
|
|
471
485
|
/**
|
|
472
486
|
* Custom translation function or translation map for UI texts
|
|
@@ -476,5 +490,5 @@ interface GetMarkdownOptions extends FactoryOptions {
|
|
|
476
490
|
}
|
|
477
491
|
declare function getMarkdown(msgId?: string, options?: GetMarkdownOptions): MarkdownIt;
|
|
478
492
|
//#endregion
|
|
479
|
-
export { AdmonitionNode, BLOCKED_HTML_TAGS, BLOCKED_HTML_TAG_NAMES, BLOCK_HTML_TAG_NAMES, BaseNode, BlockquoteNode, CheckboxInputNode, CheckboxNode, CodeBlockNode, CustomComponentAttrs, CustomComponentNode, CustomComponents, DANGEROUS_HTML_ATTRS, DANGEROUS_HTML_ATTR_NAMES, DefinitionItemNode, DefinitionListNode, ESCAPED_TEX_BRACE_COMMANDS, EXTENDED_STANDARD_HTML_TAGS, EXTENDED_STANDARD_HTML_TAG_NAMES, EmojiNode, EmphasisNode, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, GetMarkdownOptions, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, HtmlPolicy, HtmlToken, INLINE_HTML_TAG_NAMES, ImageNode, InlineCodeNode, InlineNode, InsertNode, KATEX_COMMANDS, LinkNode, ListItemNode, ListNode, type MarkdownIt, MarkdownRender, MarkdownToken, MarkdownTokenLite, MathBlockNode, MathInlineNode, type MathOptions, MermaidBlockNode, NON_STRUCTURING_HTML_TAGS, NON_STRUCTURING_HTML_TAG_NAMES, ParagraphNode, ParseOptions, ParsedNode, PostTransformNodesHook, ReferenceNode, SAFE_ALLOWED_HTML_TAGS, STANDARD_BLOCK_HTML_TAGS, STANDARD_HTML_TAGS, SVG_HTML_TAG_NAMES, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TEX_BRACE_COMMANDS, TableCellNode, TableNode, TableRowNode, TextNode, ThematicBreakNode, TransformTokensHook, URL_HTML_ATTRS, URL_HTML_ATTR_NAMES, UnknownNode, VOID_HTML_TAGS, VOID_HTML_TAG_NAMES, VmrContainerNode, applyContainers, applyMath, clearRegisteredMarkdownPlugins, convertHtmlAttrsToProps, convertHtmlPropValue, findMatchingClose, getHtmlTagFromContent, getMarkdown, hasCompleteHtmlTagContent, hasCustomHtmlComponents, isCustomHtmlComponentTag, isHtmlLikeTagName, isHtmlTagBlocked, isHtmlTagHardBlocked, isMathLike, isUnsafeHtmlUrl, mergeCustomHtmlTags, normalizeCustomHtmlTagName, normalizeCustomHtmlTags, normalizeStandaloneBackslashT, parseFenceToken, parseInlineTokens, parseMarkdownToStructure, processTokens, registerMarkdownPlugin, resolveCustomHtmlTags, sanitizeHtmlAttrs, sanitizeHtmlContent, sanitizeHtmlTokenAttrs, setDefaultMathOptions, shouldRenderUnknownHtmlTagAsText, stripCustomHtmlWrapper, stripHtmlControlAndWhitespace, tokenAttrsToRecord, tokenizeHtml };
|
|
493
|
+
export { AdmonitionNode, BLOCKED_HTML_TAGS, BLOCKED_HTML_TAG_NAMES, BLOCK_HTML_TAG_NAMES, BaseNode, BlockquoteNode, CheckboxInputNode, CheckboxNode, CodeBlockNode, CustomComponentAttrs, CustomComponentNode, CustomComponents, DANGEROUS_HTML_ATTRS, DANGEROUS_HTML_ATTR_NAMES, DefinitionItemNode, DefinitionListNode, ESCAPED_TEX_BRACE_COMMANDS, EXTENDED_STANDARD_HTML_TAGS, EXTENDED_STANDARD_HTML_TAG_NAMES, EmojiNode, EmphasisNode, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, GetMarkdownOptions, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, HtmlPolicy, HtmlPropValue, HtmlToken, INLINE_HTML_TAG_NAMES, ImageNode, InlineCodeNode, InlineNode, InsertNode, InternalParseOptions, KATEX_COMMANDS, LinkNode, ListItemNode, ListNode, type MarkdownIt, MarkdownPluginRegistration, MarkdownRender, MarkdownToken, MarkdownTokenLite, MarkdownTokenMeta, MathBlockNode, MathInlineNode, type MathOptions, MermaidBlockNode, NON_STRUCTURING_HTML_TAGS, NON_STRUCTURING_HTML_TAG_NAMES, ParagraphNode, ParseOptions, ParsedNode, PostTransformNodesHook, ReferenceNode, SAFE_ALLOWED_HTML_TAGS, STANDARD_BLOCK_HTML_TAGS, STANDARD_HTML_TAGS, SVG_HTML_TAG_NAMES, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TEX_BRACE_COMMANDS, TableCellNode, TableNode, TableRowNode, TextNode, ThematicBreakNode, TransformTokensHook, URL_HTML_ATTRS, URL_HTML_ATTR_NAMES, UnknownNode, VOID_HTML_TAGS, VOID_HTML_TAG_NAMES, VmrContainerNode, applyContainers, applyMath, clearRegisteredMarkdownPlugins, convertHtmlAttrsToProps, convertHtmlPropValue, findMatchingClose, getHtmlTagFromContent, getMarkdown, hasCompleteHtmlTagContent, hasCustomHtmlComponents, isCustomHtmlComponentTag, isHtmlLikeTagName, isHtmlTagBlocked, isHtmlTagHardBlocked, isMathLike, isUnsafeHtmlUrl, mergeCustomHtmlTags, normalizeCustomHtmlTagName, normalizeCustomHtmlTags, normalizeStandaloneBackslashT, parseFenceToken, parseInlineTokens, parseMarkdownToStructure, processTokens, registerMarkdownPlugin, resolveCustomHtmlTags, sanitizeHtmlAttrs, sanitizeHtmlContent, sanitizeHtmlTokenAttrs, setDefaultMathOptions, shouldRenderUnknownHtmlTagAsText, stripCustomHtmlWrapper, stripHtmlControlAndWhitespace, tokenAttrsToRecord, tokenizeHtml };
|
|
480
494
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/customHtmlTags.ts","../src/findMatchingClose.ts","../src/htmlRenderUtils.ts","../src/htmlTags.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":";;;UAaiB,cAAA,SAAuB;sBAClB;;EADL,gBAAA,CAAe,EAAA,OAAA;;;;ECXf,CAAA;EAaL;AAEZ;AAMA;;EAKY,cAAA,CAAA,EAAA,SAAA,MAAA,EAAA;EALyB;;AAQrC;AAMA;EAMiB,0BAKR,CAAA,EAAA,OAAA;AAGT;;;UAjDiB,QAAA;;EDWA,GAAA,EAAA,MAAA;;;;ACXjB;AAaA;AAEA;AAMA;;;AAAqC,KARzB,WAAA,GAAc,QAQW,GARA,MAQA,CAAA,MAAA,EAAA,OAAA,CAAA;AAAQ,UAN5B,QAAA,SAAiB,QAMW,CAAA;EAQ5B,IAAA,EAAA,MAAA;EAMA,OAAA,EAAA,MAAW;EAMX,MAAA,CAAA,EAAA,OAAS;AAQ1B;AAKiB,UAjCA,WAAA,SAAoB,QAiCU,CAAA;EAiB9B,IAAA,EAAA,SAAA;EAQA,KAAA,EAAA,MAAA;EAYL,IAAA,EAAA,MAAA;EAYK,KAAA,CAAA,EA9EP,MA8EO,CAAA,MAAA,EAAoB,MAAA,GAAA,OAAA,CAAA;EAK3B,QAAA,EAlFE,UAkFF,EAAA;;AALmC,UA1E5B,aAAA,SAAsB,QA0EM,CAAA;EAAQ,IAAA,EAAA,WAAA;EAUpC,QAAA,EAlFL,UAkFoB,EAAA;EAKf,aAAS,CAAA,EAAA,OAMd;AAGZ;AAOiB,UAnGA,UAAA,SAAmB,QAmGO,CAAQ;EAIlC,IAAA,EAAA,QAAA;EASL,QAAA,EA9GA,UA8Gc,EAAA;EAST,OAAA,CAAA,EAAA,MAAA;AAKjB;AAEU,UA1HO,QAAA,SAAiB,QA0HxB,CAAA;EACF,IAAA,EAAA,MAAA;EAH2B,OAAA,EAAA,OAAA;EAAQ,KAAA,CAAA,EAAA,MAAA;EAM1B,KAAA,EAzHR,YAyHqB,EAAA;AAK9B;AAOiB,UAlIA,YAAA,SAAqB,QAoI7B,CAAA;EAGQ,IAAA,EAAA,WAAA;EAET,QAAA,EAvII,UAuIJ,EAAA;;AAFoC,UAlI3B,aAAA,SAAsB,QAkIK,CAAA;EAAQ,IAAA,EAAA,YAAA;EAMnC,QAAA,EAAA,MAAa;EAMb,IAAA,EAAA,MAAA;EAKA,SAAA,CAAA,EAAA,MAAA;EAKA,OAAA,CAAA,EAAA,MAAA;EAOA,OAAA,CAAA,EAAA,OAAA;EAKP,IAAA,CAAA,EAAA,OAAA;EACE,YAAA,CAAA,EAAA,MAAA;EAN8B,WAAA,CAAA,EAAA,MAAA;EAAQ,GAAA,EAAA,MAAA;AASlD;AAKiB,UA5JA,aAAA,SAAsB,QA4JD,CAAA;EAKrB,IAAA,EAAA,YAAA;EAKA,KAAA,CAAA,EAAA,CAAA,MAAA,EAAc,MAAA,CAAA,EAAA,GAEnB,IAAA;EAGK,GAAA,EAAA,MAAA;EAKA,OAAA,EAAA,MAAA;EAKA,QAAA,CAAA,EAhLJ,UAgLoB,EAAA;AAKjC;AAKiB,UAvLA,cAAA,SAAuB,QAuLW,CAAA;EAKlC,IAAA,EAAA,aAAU;EAMV,GAAA,CAAA,EAAA,MAAA;EAIA,OAAA,EAAA,MAAA;EAMA,QAAA,EAxML,UAwMmB,EAAA;EAMd;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/customHtmlTags.ts","../src/findMatchingClose.ts","../src/htmlRenderUtils.ts","../src/htmlTags.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9347,7 +9347,7 @@ function applyContainers(md) {
|
|
|
9347
9347
|
if (!jsonStr) argsStr = trimmedRest || void 0;
|
|
9348
9348
|
}
|
|
9349
9349
|
if (silent) return true;
|
|
9350
|
-
const envFinal = !!s.env
|
|
9350
|
+
const envFinal = !!s.env.__markstreamFinal;
|
|
9351
9351
|
let nextLine = startLine + 1;
|
|
9352
9352
|
let found = false;
|
|
9353
9353
|
while (nextLine <= endLine) {
|
|
@@ -9363,7 +9363,7 @@ function applyContainers(md) {
|
|
|
9363
9363
|
const tokenOpen = s.push("vmr_container_open", "div", 1);
|
|
9364
9364
|
tokenOpen.attrSet("class", `vmr-container vmr-container-${name}`);
|
|
9365
9365
|
tokenOpen.meta = {
|
|
9366
|
-
...tokenOpen.meta,
|
|
9366
|
+
...tokenOpen.meta ?? {},
|
|
9367
9367
|
unclosed: !found && !envFinal
|
|
9368
9368
|
};
|
|
9369
9369
|
if (argsStr) tokenOpen.attrSet("data-args", argsStr);
|
|
@@ -10392,7 +10392,7 @@ function applyFixHtmlInlineTokens(md, options = {}) {
|
|
|
10392
10392
|
type: "html_block",
|
|
10393
10393
|
loading: true,
|
|
10394
10394
|
tag,
|
|
10395
|
-
content: t.children[0]
|
|
10395
|
+
content: String(t.children[0]?.content ?? "") + String(t.children[1]?.content ?? "")
|
|
10396
10396
|
}];
|
|
10397
10397
|
continue;
|
|
10398
10398
|
} else if (t.children.length === 3 && t.children[0].type === "html_inline" && t.children[2].type === "html_inline") {
|
|
@@ -10465,7 +10465,7 @@ function looksLikeCode(line) {
|
|
|
10465
10465
|
function applyFixIndentedCodeBlock(md, options = {}) {
|
|
10466
10466
|
if (options.enabled === false) return;
|
|
10467
10467
|
md.core.ruler.after("inline", "fix_indented_code_block", (state) => {
|
|
10468
|
-
const tokens = state.tokens;
|
|
10468
|
+
const tokens = state.tokens ?? [];
|
|
10469
10469
|
for (let i = 0; i < tokens.length; i++) {
|
|
10470
10470
|
const token = tokens[i];
|
|
10471
10471
|
if (token.type !== "code_block") continue;
|
|
@@ -10474,28 +10474,30 @@ function applyFixIndentedCodeBlock(md, options = {}) {
|
|
|
10474
10474
|
const lines = content.split(/\r?\n/).filter((line) => line.trim().length > 0);
|
|
10475
10475
|
if (lines.length === 1 && !looksLikeCode(lines[0] ?? "")) {
|
|
10476
10476
|
const textContent = lines[0] ?? "";
|
|
10477
|
+
const level = token.level ?? 0;
|
|
10477
10478
|
tokens.splice(i, 1, {
|
|
10478
10479
|
type: "paragraph_open",
|
|
10479
10480
|
tag: "p",
|
|
10480
10481
|
nesting: 1,
|
|
10481
|
-
level
|
|
10482
|
+
level
|
|
10482
10483
|
}, {
|
|
10483
10484
|
type: "inline",
|
|
10484
10485
|
tag: "",
|
|
10485
10486
|
nesting: 0,
|
|
10486
|
-
level
|
|
10487
|
+
level,
|
|
10487
10488
|
content: textContent,
|
|
10488
10489
|
children: [{
|
|
10489
10490
|
type: "text",
|
|
10490
10491
|
content: textContent,
|
|
10491
|
-
level:
|
|
10492
|
+
level: level + 1,
|
|
10493
|
+
raw: textContent
|
|
10492
10494
|
}],
|
|
10493
10495
|
block: true
|
|
10494
10496
|
}, {
|
|
10495
10497
|
type: "paragraph_close",
|
|
10496
10498
|
tag: "p",
|
|
10497
10499
|
nesting: -1,
|
|
10498
|
-
level
|
|
10500
|
+
level
|
|
10499
10501
|
});
|
|
10500
10502
|
i += 2;
|
|
10501
10503
|
}
|
|
@@ -10722,7 +10724,7 @@ function firstIndexOfAny(input, chars) {
|
|
|
10722
10724
|
return first;
|
|
10723
10725
|
}
|
|
10724
10726
|
function getHrefFromLinkOpen(token) {
|
|
10725
|
-
const href = token
|
|
10727
|
+
const href = token.attrs?.find((attr) => attr?.[0] === "href")?.[1];
|
|
10726
10728
|
return typeof href === "string" ? href : "";
|
|
10727
10729
|
}
|
|
10728
10730
|
function setHrefOnLinkOpen(token, href) {
|
|
@@ -10963,7 +10965,7 @@ function fixLinkToken(tokens) {
|
|
|
10963
10965
|
count += 1;
|
|
10964
10966
|
}
|
|
10965
10967
|
}
|
|
10966
|
-
|
|
10968
|
+
const linkToken = {
|
|
10967
10969
|
type: "link",
|
|
10968
10970
|
loading: false,
|
|
10969
10971
|
href,
|
|
@@ -10975,7 +10977,8 @@ function fixLinkToken(tokens) {
|
|
|
10975
10977
|
raw: text$1
|
|
10976
10978
|
}],
|
|
10977
10979
|
raw: String(`[${text$1}](${href})`)
|
|
10978
|
-
}
|
|
10980
|
+
};
|
|
10981
|
+
replacerTokens.push(linkToken);
|
|
10979
10982
|
if (emphasisMatch) {
|
|
10980
10983
|
const type = emphasisMatch[1].length;
|
|
10981
10984
|
pushEmClose(replacerTokens, type);
|
|
@@ -12179,7 +12182,7 @@ function applyMath(md, mathOpts) {
|
|
|
12179
12182
|
}
|
|
12180
12183
|
foundAny = true;
|
|
12181
12184
|
if (!silent) {
|
|
12182
|
-
const before = src.slice(s.pos - s.pending.length, index);
|
|
12185
|
+
const before = src.slice(s.pos - (s.pending ?? "").length, index);
|
|
12183
12186
|
let toPushBefore = src.slice(0, searchPos) ? src.slice(preMathPos, index) : before;
|
|
12184
12187
|
const isStrongPrefix = countUnescapedStrong(toPushBefore) % 2 === 1;
|
|
12185
12188
|
if (index !== s.pos && isStrongPrefix) toPushBefore = s.pending + src.slice(s.pos, index);
|
|
@@ -12503,7 +12506,8 @@ function parseEmphasisToken(tokens, startIndex, options) {
|
|
|
12503
12506
|
let i = startIndex + 1;
|
|
12504
12507
|
const innerTokens = [];
|
|
12505
12508
|
while (i < tokens.length && tokens[i].type !== "em_close") {
|
|
12506
|
-
|
|
12509
|
+
const tokenText = tokens[i];
|
|
12510
|
+
emText += String(tokens[i].content ?? tokenText.text ?? "");
|
|
12507
12511
|
innerTokens.push(tokens[i]);
|
|
12508
12512
|
i++;
|
|
12509
12513
|
}
|
|
@@ -12712,8 +12716,8 @@ function normalizeStandardHtmlChildren(children) {
|
|
|
12712
12716
|
if (!text$1) return;
|
|
12713
12717
|
const last = normalized[normalized.length - 1];
|
|
12714
12718
|
if (last?.type === "text") {
|
|
12715
|
-
last.content =
|
|
12716
|
-
last.raw =
|
|
12719
|
+
last.content = `${last.content}${text$1}`;
|
|
12720
|
+
last.raw = `${last.raw}${text$1}`;
|
|
12717
12721
|
return;
|
|
12718
12722
|
}
|
|
12719
12723
|
normalized.push({
|
|
@@ -12728,10 +12732,10 @@ function normalizeStandardHtmlChildren(children) {
|
|
|
12728
12732
|
pushText(String(child.raw ?? ""));
|
|
12729
12733
|
continue;
|
|
12730
12734
|
}
|
|
12731
|
-
if (Array.isArray(child.children)) {
|
|
12735
|
+
if ("children" in child && Array.isArray(child.children)) {
|
|
12732
12736
|
normalized.push({
|
|
12733
12737
|
...child,
|
|
12734
|
-
children: normalizeStandardHtmlChildren(child.children
|
|
12738
|
+
children: normalizeStandardHtmlChildren(child.children)
|
|
12735
12739
|
});
|
|
12736
12740
|
continue;
|
|
12737
12741
|
}
|
|
@@ -12901,7 +12905,7 @@ function parseImageToken(token, loading = false) {
|
|
|
12901
12905
|
let attrs = token.attrs ?? [];
|
|
12902
12906
|
let childWithAttrs = null;
|
|
12903
12907
|
if ((!attrs || attrs.length === 0) && Array.isArray(token.children)) for (const child of token.children) {
|
|
12904
|
-
const childAttrs = child
|
|
12908
|
+
const childAttrs = child.attrs;
|
|
12905
12909
|
if (Array.isArray(childAttrs) && childAttrs.length > 0) {
|
|
12906
12910
|
attrs = childAttrs;
|
|
12907
12911
|
childWithAttrs = child;
|
|
@@ -13104,10 +13108,11 @@ function parseStrongToken(tokens, startIndex, raw, options) {
|
|
|
13104
13108
|
innerTokens.push(tokens[i]);
|
|
13105
13109
|
i++;
|
|
13106
13110
|
}
|
|
13107
|
-
|
|
13111
|
+
const innerOptions = {
|
|
13108
13112
|
...options,
|
|
13109
13113
|
__insideStrong: true
|
|
13110
|
-
}
|
|
13114
|
+
};
|
|
13115
|
+
children.push(...parseInlineTokens(innerTokens, resolveInnerRaw(raw, strongText), void 0, innerOptions));
|
|
13111
13116
|
return {
|
|
13112
13117
|
node: {
|
|
13113
13118
|
type: "strong",
|
|
@@ -13429,6 +13434,7 @@ function recoverTrailingMarkdownLinkLabel(raw, href) {
|
|
|
13429
13434
|
}
|
|
13430
13435
|
function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
13431
13436
|
if (!tokens || tokens.length === 0) return [];
|
|
13437
|
+
const internalOptions = options;
|
|
13432
13438
|
const result = [];
|
|
13433
13439
|
let currentTextNode = null;
|
|
13434
13440
|
let i = 0;
|
|
@@ -13864,7 +13870,7 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
13864
13870
|
return true;
|
|
13865
13871
|
}
|
|
13866
13872
|
function tryReparseCollapsedInlineText(rawContent) {
|
|
13867
|
-
const md =
|
|
13873
|
+
const md = internalOptions?.__markdownIt;
|
|
13868
13874
|
if (!md) return null;
|
|
13869
13875
|
if (tokens.length <= 1 || !tokens.some((token) => token?.type === "math_inline")) return null;
|
|
13870
13876
|
if (!INLINE_REPARSE_MARKER_RE.test(rawContent)) return null;
|
|
@@ -14092,10 +14098,11 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
14092
14098
|
pushText(String(token.content ?? ""), String(token.content ?? ""));
|
|
14093
14099
|
i++;
|
|
14094
14100
|
break;
|
|
14095
|
-
default:
|
|
14096
|
-
|
|
14101
|
+
default: {
|
|
14102
|
+
const syntheticLink = token;
|
|
14103
|
+
if (token.type === "link" && syntheticLink.href != null && options?.validateLink && !options.validateLink(String(syntheticLink.href))) {
|
|
14097
14104
|
resetCurrentTextNode();
|
|
14098
|
-
const displayText = String(
|
|
14105
|
+
const displayText = String(syntheticLink.text ?? "");
|
|
14099
14106
|
pushText(displayText, displayText);
|
|
14100
14107
|
i++;
|
|
14101
14108
|
} else if (recoverOuterImageLinkFromSyntheticLinkToken(token)) i++;
|
|
@@ -14106,6 +14113,7 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
14106
14113
|
i++;
|
|
14107
14114
|
}
|
|
14108
14115
|
break;
|
|
14116
|
+
}
|
|
14109
14117
|
}
|
|
14110
14118
|
}
|
|
14111
14119
|
function commitTextNode(content, token, preToken, nextToken) {
|
|
@@ -14381,7 +14389,8 @@ function parseInlineTokens(tokens, raw, pPreToken, options) {
|
|
|
14381
14389
|
if (outerOpenToken?.type === "text" && String(outerOpenToken.content ?? "").endsWith("[") && hasEscapedMarkup(outerOpenToken, "\\[")) return false;
|
|
14382
14390
|
const previous = result[result.length - 1];
|
|
14383
14391
|
if (previous?.type !== "image" && previous?.type !== "link") return false;
|
|
14384
|
-
const
|
|
14392
|
+
const previousWithChildren = previous;
|
|
14393
|
+
const previousLink = previous?.type === "link" && Array.isArray(previousWithChildren.children) && previousWithChildren.children.length === 1 && previousWithChildren.children[0]?.type === "image" ? result.pop() : null;
|
|
14385
14394
|
const imageNode = previousLink ? previousLink.children[0] : result.pop();
|
|
14386
14395
|
if (!imageNode || imageNode.type !== "image") return false;
|
|
14387
14396
|
const nextToken = tokens[i + 1];
|
|
@@ -14977,11 +14986,11 @@ function parseFootnote(tokens, index, options) {
|
|
|
14977
14986
|
let j = index + 1;
|
|
14978
14987
|
while (j < tokens.length && tokens[j].type !== "footnote_close") if (tokens[j].type === "paragraph_open") {
|
|
14979
14988
|
const contentToken = tokens[j + 1];
|
|
14980
|
-
const children = contentToken.children
|
|
14989
|
+
const children = contentToken.children ? [...contentToken.children] : [];
|
|
14981
14990
|
if (tokens[j + 2].type === "footnote_anchor") children.push(tokens[j + 2]);
|
|
14982
14991
|
footnoteChildren.push({
|
|
14983
14992
|
type: "paragraph",
|
|
14984
|
-
children: parseInlineTokens(
|
|
14993
|
+
children: parseInlineTokens(children, String(contentToken.content ?? ""), void 0, options),
|
|
14985
14994
|
raw: String(contentToken.content ?? "")
|
|
14986
14995
|
});
|
|
14987
14996
|
j += 3;
|
|
@@ -14998,7 +15007,7 @@ function parseFootnote(tokens, index, options) {
|
|
|
14998
15007
|
//#region src/parser/node-parsers/heading-parser.ts
|
|
14999
15008
|
function parseHeading(tokens, index, options) {
|
|
15000
15009
|
const token = tokens[index];
|
|
15001
|
-
const attrs = token
|
|
15010
|
+
const attrs = token.attrs;
|
|
15002
15011
|
const attrsRecord = Array.isArray(attrs) && attrs.length ? Object.fromEntries(attrs.filter((pair) => Array.isArray(pair) && pair.length >= 1 && pair[0]).map(([name, value]) => [String(name), value == null || value === "" ? true : String(value)])) : void 0;
|
|
15003
15012
|
const levelStr = String(token.tag?.substring(1) ?? "1");
|
|
15004
15013
|
const headingLevel = Number.parseInt(levelStr, 10);
|
|
@@ -15393,7 +15402,7 @@ function parseBasicBlockToken(tokens, index, options) {
|
|
|
15393
15402
|
const htmlBlockNode = parseHtmlBlock(token);
|
|
15394
15403
|
const tagSets = htmlBlockNode.tag ? getHtmlTagSets(options?.customHtmlTags) : null;
|
|
15395
15404
|
if (htmlBlockNode.tag && htmlBlockNode.loading && tagSets && !tagSets.allowedTagSet.has(htmlBlockNode.tag)) {
|
|
15396
|
-
const content = String(token
|
|
15405
|
+
const content = String(token.content ?? "").replace(/\n+$/, "");
|
|
15397
15406
|
return [{
|
|
15398
15407
|
type: "paragraph",
|
|
15399
15408
|
children: content ? [{
|
|
@@ -15410,7 +15419,7 @@ function parseBasicBlockToken(tokens, index, options) {
|
|
|
15410
15419
|
const cursor = Number(options?.__customHtmlBlockCursor ?? 0);
|
|
15411
15420
|
const mappedLineStart = Array.isArray(token.map) ? lineToIndex(source, Number(token.map?.[0] ?? 0)) : 0;
|
|
15412
15421
|
const fromSource = findNextCustomHtmlBlockFromSource(source, tag, Math.max(clampNonNegative(cursor), clampNonNegative(mappedLineStart)));
|
|
15413
|
-
if (fromSource) options.__customHtmlBlockCursor = fromSource.end;
|
|
15422
|
+
if (fromSource && options) options.__customHtmlBlockCursor = fromSource.end;
|
|
15414
15423
|
const rawHtml = String(fromSource?.raw ?? htmlBlockNode.raw ?? "");
|
|
15415
15424
|
const openEnd = findTagCloseIndexOutsideQuotes(rawHtml);
|
|
15416
15425
|
const openTag = openEnd !== -1 ? rawHtml.slice(0, openEnd + 1) : rawHtml;
|
|
@@ -15507,6 +15516,9 @@ function parseParagraph(tokens, index, options) {
|
|
|
15507
15516
|
|
|
15508
15517
|
//#endregion
|
|
15509
15518
|
//#region src/parser/index.ts
|
|
15519
|
+
function getNodeFields(node) {
|
|
15520
|
+
return node;
|
|
15521
|
+
}
|
|
15510
15522
|
function getCustomHtmlTagSet(options) {
|
|
15511
15523
|
const custom = options?.customHtmlTags;
|
|
15512
15524
|
if (!Array.isArray(custom) || custom.length === 0) return null;
|
|
@@ -15521,11 +15533,11 @@ function buildAllowedHtmlTagSet(options) {
|
|
|
15521
15533
|
return set;
|
|
15522
15534
|
}
|
|
15523
15535
|
function stringifyInlineNodeRaw(node) {
|
|
15524
|
-
const raw = node
|
|
15536
|
+
const raw = node.raw;
|
|
15525
15537
|
if (typeof raw === "string") return raw;
|
|
15526
|
-
const content = node
|
|
15538
|
+
const content = getNodeFields(node).content;
|
|
15527
15539
|
if (typeof content === "string") return content;
|
|
15528
|
-
if (node
|
|
15540
|
+
if (node.type === "hardbreak") return "<br>";
|
|
15529
15541
|
return "";
|
|
15530
15542
|
}
|
|
15531
15543
|
function buildParagraphFromInlineChildren(children) {
|
|
@@ -15537,7 +15549,8 @@ function buildParagraphFromInlineChildren(children) {
|
|
|
15537
15549
|
}
|
|
15538
15550
|
function maybePromoteCustomNodeFromParagraph(node, options) {
|
|
15539
15551
|
if (node.type !== "paragraph") return null;
|
|
15540
|
-
const
|
|
15552
|
+
const nodeChildren = getNodeFields(node).children;
|
|
15553
|
+
const children = Array.isArray(nodeChildren) ? nodeChildren : [];
|
|
15541
15554
|
if (children.length === 0) return null;
|
|
15542
15555
|
const customTagSet = getCustomHtmlTagSet(options);
|
|
15543
15556
|
if (!customTagSet?.size) return null;
|
|
@@ -15546,7 +15559,7 @@ function maybePromoteCustomNodeFromParagraph(node, options) {
|
|
|
15546
15559
|
const child = children[i];
|
|
15547
15560
|
if (!customTagSet.has(String(child?.type ?? "").toLowerCase())) continue;
|
|
15548
15561
|
const prefixChildren$1 = children.slice(0, i);
|
|
15549
|
-
if (!String(child
|
|
15562
|
+
if (!String(getNodeFields(child).content ?? "").trim()) continue;
|
|
15550
15563
|
if (!prefixChildren$1.some((prefixChild) => prefixChild?.type === "hardbreak")) continue;
|
|
15551
15564
|
customIndex = i;
|
|
15552
15565
|
break;
|
|
@@ -15577,15 +15590,15 @@ function parseStandaloneHtmlDocument(markdown) {
|
|
|
15577
15590
|
}];
|
|
15578
15591
|
}
|
|
15579
15592
|
function getMergeableNodeRaw(node) {
|
|
15580
|
-
const raw = node
|
|
15593
|
+
const raw = node.raw;
|
|
15581
15594
|
if (typeof raw === "string") return raw;
|
|
15582
|
-
const content = node
|
|
15595
|
+
const content = getNodeFields(node).content;
|
|
15583
15596
|
if (typeof content === "string") return content;
|
|
15584
15597
|
return "";
|
|
15585
15598
|
}
|
|
15586
15599
|
function isCloseOnlyHtmlBlockForTag(node, tag) {
|
|
15587
15600
|
if (node.type !== "html_block" || !tag) return false;
|
|
15588
|
-
const raw = String(node
|
|
15601
|
+
const raw = String(node.raw ?? node.content ?? "");
|
|
15589
15602
|
return new RegExp(String.raw`^\s*<\s*\/\s*${escapeTagForRegExp(tag)}\s*>\s*$`, "i").test(raw);
|
|
15590
15603
|
}
|
|
15591
15604
|
function findNextHtmlBlockFromSource(source, tag, startIndex) {
|
|
@@ -15743,7 +15756,8 @@ function shouldStructureGenericHtmlBlockChildren(innerRaw, children) {
|
|
|
15743
15756
|
if (children.some((child) => STRUCTURED_HTML_WRAPPER_BLOCK_TYPES.has(String(child?.type ?? "").toLowerCase()))) return true;
|
|
15744
15757
|
if (children.some((child) => {
|
|
15745
15758
|
if (child?.type !== "html_block") return false;
|
|
15746
|
-
|
|
15759
|
+
const childFields = getNodeFields(child);
|
|
15760
|
+
return Array.isArray(childFields.children) && childFields.children.length > 0;
|
|
15747
15761
|
})) return true;
|
|
15748
15762
|
if (!hasStructuredHtmlWrapperMarkers(innerRaw)) return false;
|
|
15749
15763
|
if (children.length > 1) return true;
|
|
@@ -15753,9 +15767,10 @@ function shouldStructureGenericHtmlBlockChildren(innerRaw, children) {
|
|
|
15753
15767
|
function structureGenericHtmlBlockChildren(nodes, md, options, final) {
|
|
15754
15768
|
return nodes.map((node) => {
|
|
15755
15769
|
if (node?.type !== "html_block") return node;
|
|
15756
|
-
const
|
|
15757
|
-
|
|
15758
|
-
|
|
15770
|
+
const fields = getNodeFields(node);
|
|
15771
|
+
const tag = String(fields.tag ?? "").toLowerCase();
|
|
15772
|
+
if (!tag || tag === "details" || NON_STRUCTURING_HTML_TAGS.has(tag) || Array.isArray(fields.children)) return node;
|
|
15773
|
+
const raw = String(node.raw ?? fields.content ?? "");
|
|
15759
15774
|
if (!raw) return node;
|
|
15760
15775
|
const openEnd = findTagCloseIndexOutsideQuotes(raw);
|
|
15761
15776
|
if (openEnd === -1) return node;
|
|
@@ -15774,12 +15789,18 @@ function parseDetailsFragmentChildren(fragment, md, options) {
|
|
|
15774
15789
|
if (!fragment.trim()) return [];
|
|
15775
15790
|
return parseMarkdownToStructure(fragment, md, options);
|
|
15776
15791
|
}
|
|
15792
|
+
function parseSummaryChildren(fragment, md, options) {
|
|
15793
|
+
const children = parseDetailsFragmentChildren(fragment, md, options);
|
|
15794
|
+
const onlyChild = children[0];
|
|
15795
|
+
if (children.length === 1 && onlyChild?.type === "paragraph" && Array.isArray(onlyChild.children)) return onlyChild.children;
|
|
15796
|
+
return children;
|
|
15797
|
+
}
|
|
15777
15798
|
function buildStructuredSummaryNode(summaryRaw, md, options) {
|
|
15778
15799
|
const summaryNode = parseHtmlBlock({ content: summaryRaw });
|
|
15779
15800
|
const openEnd = findTagCloseIndexOutsideQuotes(summaryRaw);
|
|
15780
15801
|
const closeStart = findLastClosingTagStart(summaryRaw, "summary");
|
|
15781
15802
|
if (openEnd !== -1 && closeStart !== -1 && closeStart >= openEnd + 1) {
|
|
15782
|
-
const children =
|
|
15803
|
+
const children = parseSummaryChildren(summaryRaw.slice(openEnd + 1, closeStart), md, options);
|
|
15783
15804
|
if (children.length > 0) summaryNode.children = children;
|
|
15784
15805
|
}
|
|
15785
15806
|
summaryNode.raw = summaryRaw;
|
|
@@ -15844,7 +15865,7 @@ function combineStructuredDetailsHtmlBlocks(nodes, source, md, options, final, s
|
|
|
15844
15865
|
})() : openRaw;
|
|
15845
15866
|
const [children] = combineStructuredDetailsHtmlBlocks(selfContained ? [] : closeIndex === -1 ? nodes.slice(i + 1) : nodes.slice(i + 1, closeIndex), source, md, options, final, openStart + openRaw.length);
|
|
15846
15867
|
const prefixChildren = buildDetailsPrefixChildren(effectiveOpenRaw, md, buildDetailsChildParseOptions(options, final));
|
|
15847
|
-
const closeRaw = closeIndex === -1 ? "</details>" : String(nodes[closeIndex]
|
|
15868
|
+
const closeRaw = closeIndex === -1 ? "</details>" : String(nodes[closeIndex].raw ?? getMergeableNodeRaw(nodes[closeIndex]) ?? "</details>");
|
|
15848
15869
|
const explicitClose = selfContained || closeIndex !== -1 && exact?.closed === true;
|
|
15849
15870
|
const trimmedCloseRaw = closeRaw.replace(/[\t\r\n ]+$/, "");
|
|
15850
15871
|
const closeStart = explicitClose ? (() => {
|
|
@@ -15888,7 +15909,7 @@ function mergeSplitTopLevelHtmlBlocks(nodes, final, source) {
|
|
|
15888
15909
|
if (nodePos !== -1) sourceHtmlCursor = nodePos + nodeRaw.length;
|
|
15889
15910
|
continue;
|
|
15890
15911
|
}
|
|
15891
|
-
const tag = String(node
|
|
15912
|
+
const tag = String(node.tag ?? "").toLowerCase();
|
|
15892
15913
|
if (!tag) continue;
|
|
15893
15914
|
if (tag === "details") {
|
|
15894
15915
|
if (nodePos !== -1) sourceHtmlCursor = nodePos + nodeRaw.length;
|
|
@@ -15897,11 +15918,11 @@ function mergeSplitTopLevelHtmlBlocks(nodes, final, source) {
|
|
|
15897
15918
|
const exact = findNextHtmlBlockFromSource(source, tag, nodePos !== -1 ? nodePos : sourceHtmlCursor);
|
|
15898
15919
|
if (!exact) continue;
|
|
15899
15920
|
sourceHtmlCursor = exact.end;
|
|
15900
|
-
const currentContent = String(node
|
|
15901
|
-
const currentRaw = String(node
|
|
15921
|
+
const currentContent = String(node.content ?? nodeRaw);
|
|
15922
|
+
const currentRaw = String(node.raw ?? currentContent);
|
|
15902
15923
|
const nextContent = buildHtmlBlockContent(exact.raw, tag, exact.closed);
|
|
15903
15924
|
const desiredLoading = !final && !exact.closed;
|
|
15904
|
-
const needsExpansion = currentContent !== nextContent || currentRaw !== exact.raw || Boolean(node
|
|
15925
|
+
const needsExpansion = currentContent !== nextContent || currentRaw !== exact.raw || Boolean(node.loading) !== desiredLoading;
|
|
15905
15926
|
const exactOpenEnd = findTagCloseIndexOutsideQuotes(exact.raw);
|
|
15906
15927
|
const exactOpenTag = exactOpenEnd === -1 ? "" : exact.raw.slice(0, exactOpenEnd + 1);
|
|
15907
15928
|
const exactAttrs = exactOpenTag ? parseTagAttrs(exactOpenTag) : [];
|
|
@@ -17353,9 +17374,8 @@ function getMarkdown(msgId = `editor-${Date.now()}`, options = {}) {
|
|
|
17353
17374
|
if (Array.isArray(options.plugin)) for (const p of options.plugin) {
|
|
17354
17375
|
const pluginItem = p;
|
|
17355
17376
|
if (Array.isArray(pluginItem)) {
|
|
17356
|
-
const fn = pluginItem
|
|
17357
|
-
|
|
17358
|
-
if (typeof fn === "function") md.use(fn, opts);
|
|
17377
|
+
const [fn, ...params] = pluginItem;
|
|
17378
|
+
if (typeof fn === "function") md.use(fn, ...params);
|
|
17359
17379
|
} else if (typeof pluginItem === "function") md.use(pluginItem);
|
|
17360
17380
|
}
|
|
17361
17381
|
if (Array.isArray(options.apply)) for (const fn of options.apply) try {
|
|
@@ -17365,9 +17385,8 @@ function getMarkdown(msgId = `editor-${Date.now()}`, options = {}) {
|
|
|
17365
17385
|
}
|
|
17366
17386
|
if (_registeredMarkdownPlugins.length) {
|
|
17367
17387
|
for (const p of _registeredMarkdownPlugins) if (Array.isArray(p)) {
|
|
17368
|
-
const fn = p
|
|
17369
|
-
|
|
17370
|
-
if (typeof fn === "function") md.use(fn, opts);
|
|
17388
|
+
const [fn, ...params] = p;
|
|
17389
|
+
if (typeof fn === "function") md.use(fn, ...params);
|
|
17371
17390
|
} else if (typeof p === "function") md.use(p);
|
|
17372
17391
|
}
|
|
17373
17392
|
md.use(sub_plugin);
|