markdown-flow-ui 0.2.36-dev.1 → 0.3.0

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.
Files changed (128) hide show
  1. package/README.md +12 -12
  2. package/dist/_virtual/index.es4.js +5 -5
  3. package/dist/_virtual/index.es5.js +5 -5
  4. package/dist/_virtual/index4.cjs +1 -1
  5. package/dist/_virtual/index5.cjs +1 -1
  6. package/dist/_virtual/variable-marker.cjs +2 -0
  7. package/dist/_virtual/variable-marker.cjs.map +1 -0
  8. package/dist/_virtual/variable-marker.es.js +5 -0
  9. package/dist/_virtual/variable-marker.es.js.map +1 -0
  10. package/dist/components/ContentRender/ContentRender.cjs +2 -2
  11. package/dist/components/ContentRender/ContentRender.cjs.map +1 -1
  12. package/dist/components/ContentRender/ContentRender.es.js +206 -205
  13. package/dist/components/ContentRender/ContentRender.es.js.map +1 -1
  14. package/dist/components/ContentRender/utils/inline-code-ranges.cjs +9 -9
  15. package/dist/components/ContentRender/utils/inline-code-ranges.cjs.map +1 -1
  16. package/dist/components/ContentRender/utils/inline-code-ranges.d.ts +3 -0
  17. package/dist/components/ContentRender/utils/inline-code-ranges.es.js +185 -161
  18. package/dist/components/ContentRender/utils/inline-code-ranges.es.js.map +1 -1
  19. package/dist/components/ContentRender/utils/mermaid-parse.cjs +4 -4
  20. package/dist/components/ContentRender/utils/mermaid-parse.cjs.map +1 -1
  21. package/dist/components/ContentRender/utils/mermaid-parse.es.js +53 -48
  22. package/dist/components/ContentRender/utils/mermaid-parse.es.js.map +1 -1
  23. package/dist/components/ContentRender/utils/split-content.cjs +6 -6
  24. package/dist/components/ContentRender/utils/split-content.cjs.map +1 -1
  25. package/dist/components/ContentRender/utils/split-content.d.ts +1 -0
  26. package/dist/components/ContentRender/utils/split-content.es.js +361 -313
  27. package/dist/components/ContentRender/utils/split-content.es.js.map +1 -1
  28. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs +1 -1
  29. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.map +1 -1
  30. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js +278 -283
  31. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js.map +1 -1
  32. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs +1 -1
  33. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs.map +1 -1
  34. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js +57 -58
  35. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js.map +1 -1
  36. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs +1 -1
  37. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.d.ts +1 -1
  38. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js +1 -1
  39. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.cjs +1 -1
  40. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.d.ts +1 -1
  41. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.es.js +19 -19
  42. package/dist/components/MarkdownFlowEditor/locales/en-US.json.cjs +1 -1
  43. package/dist/components/MarkdownFlowEditor/locales/en-US.json.d.ts +1 -1
  44. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js +5 -5
  45. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.cjs +1 -1
  46. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.d.ts +1 -1
  47. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.es.js +1 -1
  48. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.cjs +1 -1
  49. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.d.ts +1 -1
  50. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.es.js +15 -15
  51. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.cjs +1 -1
  52. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.d.ts +1 -1
  53. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js +13 -13
  54. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.cjs +1 -1
  55. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.d.ts +1 -1
  56. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.es.js +1 -1
  57. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs +1 -1
  58. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.d.ts +1 -1
  59. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js +1 -1
  60. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.cjs +1 -1
  61. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.d.ts +1 -1
  62. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.es.js +1 -1
  63. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.cjs +1 -1
  64. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.d.ts +1 -1
  65. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.es.js +15 -15
  66. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.cjs +1 -1
  67. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.d.ts +1 -1
  68. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js +1 -1
  69. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.cjs +3 -3
  70. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.cjs.map +1 -1
  71. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.es.js +177 -176
  72. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.es.js.map +1 -1
  73. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.cjs +2 -1
  74. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.cjs.map +1 -1
  75. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.d.ts +3 -1
  76. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.es.js +38 -55
  77. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.es.js.map +1 -1
  78. package/dist/components/MarkdownFlowEditor/utils.cjs +1 -1
  79. package/dist/components/MarkdownFlowEditor/utils.cjs.map +1 -1
  80. package/dist/components/MarkdownFlowEditor/utils.d.ts +2 -2
  81. package/dist/components/MarkdownFlowEditor/utils.es.js +34 -31
  82. package/dist/components/MarkdownFlowEditor/utils.es.js.map +1 -1
  83. package/dist/components/ui/inputGroup/textarea.cjs +1 -1
  84. package/dist/components/ui/inputGroup/textarea.es.js +1 -1
  85. package/dist/lib/interaction-defaults.cjs +1 -1
  86. package/dist/lib/interaction-defaults.cjs.map +1 -1
  87. package/dist/lib/interaction-defaults.es.js +124 -133
  88. package/dist/lib/interaction-defaults.es.js.map +1 -1
  89. package/dist/lib/interaction-defaults.failure.test.d.ts +1 -0
  90. package/dist/node_modules/rc-input/es/BaseInput.cjs +1 -1
  91. package/dist/node_modules/rc-input/es/BaseInput.es.js +1 -1
  92. package/dist/node_modules/rc-textarea/es/ResizableTextArea.cjs +1 -1
  93. package/dist/node_modules/rc-textarea/es/ResizableTextArea.es.js +1 -1
  94. package/dist/node_modules/rc-textarea/es/TextArea.cjs +1 -1
  95. package/dist/node_modules/rc-textarea/es/TextArea.es.js +1 -1
  96. package/dist/node_modules/rc-textarea/es/index.cjs +1 -1
  97. package/dist/node_modules/rc-textarea/es/index.es.js +1 -1
  98. package/dist/node_modules/remark-flow/dist/escaping.cjs +2 -2
  99. package/dist/node_modules/remark-flow/dist/escaping.cjs.map +1 -1
  100. package/dist/node_modules/remark-flow/dist/escaping.es.js +128 -63
  101. package/dist/node_modules/remark-flow/dist/escaping.es.js.map +1 -1
  102. package/dist/node_modules/remark-flow/dist/index.cjs +1 -1
  103. package/dist/node_modules/remark-flow/dist/index.cjs.map +1 -1
  104. package/dist/node_modules/remark-flow/dist/index.es.js +49 -37
  105. package/dist/node_modules/remark-flow/dist/index.es.js.map +1 -1
  106. package/dist/node_modules/remark-flow/dist/interaction-parser.cjs +1 -1
  107. package/dist/node_modules/remark-flow/dist/interaction-parser.cjs.map +1 -1
  108. package/dist/node_modules/remark-flow/dist/interaction-parser.es.js +260 -255
  109. package/dist/node_modules/remark-flow/dist/interaction-parser.es.js.map +1 -1
  110. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.cjs +1 -1
  111. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.cjs.map +1 -1
  112. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.es.js +71 -42
  113. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.es.js.map +1 -1
  114. package/dist/node_modules/remark-flow/dist/interaction-syntax.cjs +1 -1
  115. package/dist/node_modules/remark-flow/dist/interaction-syntax.cjs.map +1 -1
  116. package/dist/node_modules/remark-flow/dist/interaction-syntax.es.js +501 -46
  117. package/dist/node_modules/remark-flow/dist/interaction-syntax.es.js.map +1 -1
  118. package/dist/node_modules/remark-flow/dist/variable-marker.cjs +2 -0
  119. package/dist/node_modules/remark-flow/dist/variable-marker.cjs.map +1 -0
  120. package/dist/node_modules/remark-flow/dist/variable-marker.es.js +77 -0
  121. package/dist/node_modules/remark-flow/dist/variable-marker.es.js.map +1 -0
  122. package/dist/node_modules/remark-flow/dist/variable-name.cjs +14 -1
  123. package/dist/node_modules/remark-flow/dist/variable-name.cjs.map +1 -1
  124. package/dist/node_modules/remark-flow/dist/variable-name.es.js +742 -25
  125. package/dist/node_modules/remark-flow/dist/variable-name.es.js.map +1 -1
  126. package/dist/node_modules/unified/lib/index.cjs +1 -1
  127. package/dist/node_modules/unified/lib/index.es.js +1 -1
  128. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-syntax.es.js","sources":["../../../../node_modules/remark-flow/dist/interaction-syntax.js"],"sourcesContent":["\"use strict\";\n/**\n * Read `?[...]` as one piece of text while the Markdown is being tokenized.\n *\n * The plugins find interactions by walking the tree's text nodes, which only exist once the\n * Markdown has been parsed -- and by then the parse has already rewritten what is inside the\n * brackets. A backslash escape is Markdown's own syntax too, so `https:\\/\\/example.com` reaches the\n * text node as `https://example.com`: the escape the option relied on is gone and the `//` splits\n * it into a display and a value. Worse, GFM turns that URL into a link node of its own, so the\n * interaction is no longer inside one text node at all and is shown to the learner as raw text.\n * The same happens to anything else Markdown reads inline: `$...$` with remark-math, `*...*`,\n * an entity.\n *\n * So the brackets are claimed before any of that runs. This construct starts at `?[` and ends at\n * the first `]` the escape rule leaves unescaped, exactly where `INTERACTION_CONTENT_SOURCE` ends\n * it, and the whole span becomes one node carrying the source unchanged (see `INTERACTION_NODE`),\n * which the plugins then parse from what the author wrote.\n *\n * `?[text](url)` is a link, not an interaction, as the visitor's lookahead has always said, so a\n * `]` followed by `(` gives the span back to Markdown.\n *\n * The types are declared here rather than imported, so the published declarations do not reach\n * into micromark's packages, which this one does not depend on at runtime.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TOKENIZED_TREE = exports.INTERACTION_NODE = void 0;\nexports.interactionSyntax = interactionSyntax;\nexports.interactionFromMarkdown = interactionFromMarkdown;\nexports.registerInteractionSyntax = registerInteractionSyntax;\n/**\n * The node type this construct produces.\n *\n * Its own type, not `text`: GFM finds `www.` links and emails by rewriting text nodes after the\n * parse, and it cut an interaction whose option carried `https://www.postgresql.org` into\n * text and a link, so the question was never recognised. Nothing that rewrites text touches a\n * node of another type; the plugins turn each one into an element, or back into text.\n */\nexports.INTERACTION_NODE = 'flowInteraction';\n/**\n * Set on the root of a tree parsed with this construct registered.\n *\n * Whether a plugin is attached to a processor says nothing about the tree it is given:\n * `runSync(tree)` can hand it one parsed by another processor, or built by hand, in which nothing\n * was tokenized. The visitor reads this mark, not the registration, to know which it has.\n */\nexports.TOKENIZED_TREE = 'flowInteractionTokenized';\nconst QUESTION_MARK = 63;\nconst LEFT_BRACKET = 91;\nconst RIGHT_BRACKET = 93;\nconst LEFT_PAREN = 40;\nconst BACKSLASH = 92;\n// The characters a backslash escapes inside an interaction: `|`, `/`, `.`, `]`. Mirrors ESCAPABLE.\nconst ESCAPABLE_CODES = new Set([124, 47, 46, 93]);\nconst INTERACTION = 'flowInteraction';\nconst MARKER = 'flowInteractionMarker';\nconst DATA = 'flowInteractionData';\nconst LINE_ENDING = 'lineEnding';\n/** Whether `code` is one of micromark's virtual line endings (CR, LF, CRLF). */\nconst isLineEnding = (code) => code !== null && code < -2;\nfunction tokenizeInteraction(effects, ok, nok) {\n return start;\n // Every character is consumed inside a token of its own kind -- the `?[` and `]` markers, the\n // data between them, line endings -- because micromark only lets a construct consume while a\n // token is open.\n function start(code) {\n effects.enter(INTERACTION);\n effects.enter(MARKER);\n effects.consume(code);\n return open;\n }\n function open(code) {\n if (code !== LEFT_BRACKET) {\n return nok(code);\n }\n effects.consume(code);\n effects.exit(MARKER);\n return beforeContent;\n }\n // Data is only opened on a character it will hold: micromark rejects an empty token.\n function beforeContent(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === RIGHT_BRACKET) {\n return close(code);\n }\n if (isLineEnding(code)) {\n return lineEnding(code);\n }\n effects.enter(DATA);\n return content(code);\n }\n function lineEnding(code) {\n // An interaction may run across lines, as the regex it mirrors allows. A line ending is its\n // own token in micromark, so it sits between runs of data rather than inside one.\n effects.enter(LINE_ENDING);\n effects.consume(code);\n effects.exit(LINE_ENDING);\n return beforeContent;\n }\n function content(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === RIGHT_BRACKET) {\n effects.exit(DATA);\n return close(code);\n }\n if (isLineEnding(code)) {\n effects.exit(DATA);\n return lineEnding(code);\n }\n effects.consume(code);\n return code === BACKSLASH ? afterBackslash : content;\n }\n function afterBackslash(code) {\n // `\\]` is an escaped bracket and does not close; any other backslash is literal text and\n // the character after it is read as usual. Only the escapable characters pair up.\n if (code !== null && ESCAPABLE_CODES.has(code)) {\n effects.consume(code);\n return content;\n }\n return content(code);\n }\n function close(code) {\n effects.enter(MARKER);\n effects.consume(code);\n effects.exit(MARKER);\n return after;\n }\n function after(code) {\n if (code === LEFT_PAREN) {\n return nok(code);\n }\n effects.exit(INTERACTION);\n return ok(code);\n }\n}\n/** The micromark syntax extension: `?` may open an interaction wherever inline text is read. */\nfunction interactionSyntax() {\n return {\n text: {\n [QUESTION_MARK]: {\n name: 'flowInteraction',\n tokenize: tokenizeInteraction,\n },\n },\n };\n}\n/** The mdast extension: the whole span becomes one node holding the source as written. */\nfunction interactionFromMarkdown() {\n return {\n transforms: [\n (tree) => {\n tree.data = { ...tree.data, [exports.TOKENIZED_TREE]: true };\n },\n ],\n enter: {\n [INTERACTION](token) {\n this.enter({ type: exports.INTERACTION_NODE, value: '' }, token);\n },\n },\n exit: {\n [INTERACTION](token) {\n const node = this.stack[this.stack.length - 1];\n node.value = this.sliceSerialize(token);\n this.exit(token);\n },\n },\n };\n}\n// A unified processor is a callable instance, so `typeof` says function, not object.\nconst isProcessor = (value) => (typeof value === 'object' || typeof value === 'function') &&\n value !== null &&\n typeof value.data === 'function';\n/**\n * Teach the processor a plugin is attached to to tokenize interactions.\n *\n * A plugin called through `unified().use()` runs with the processor as `this`; one called by hand\n * -- `remarkFlow()(tree)`, as older code and the tests do -- has none, and keeps working on the\n * tree it is given as before.\n */\nfunction registerInteractionSyntax(self) {\n if (!isProcessor(self)) {\n return;\n }\n const data = self.data();\n const add = (field, value) => {\n const list = data[field] ?? [];\n if (!list.includes(value)) {\n list.push(value);\n }\n data[field] = list;\n };\n add('micromarkExtensions', SYNTAX);\n add('fromMarkdownExtensions', FROM_MARKDOWN);\n}\n// One instance each, so a processor that attaches several of these plugins registers once.\nconst SYNTAX = interactionSyntax();\nconst FROM_MARKDOWN = interactionFromMarkdown();\n//# sourceMappingURL=interaction-syntax.js.map"],"names":["exports","interactionSyntax","interactionFromMarkdown","registerInteractionSyntax","QUESTION_MARK","LEFT_BRACKET","RIGHT_BRACKET","LEFT_PAREN","BACKSLASH","ESCAPABLE_CODES","INTERACTION","MARKER","DATA","LINE_ENDING","isLineEnding","code","tokenizeInteraction","effects","ok","nok","start","open","beforeContent","close","lineEnding","content","afterBackslash","after","tree","token","node","isProcessor","value","self","data","add","field","list","SYNTAX","FROM_MARKDOWN"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"interaction-syntax.es.js","sources":["../../../../node_modules/remark-flow/dist/interaction-syntax.js"],"sourcesContent":["\"use strict\";\n/**\n * Read `?[...]` as one piece of text while the Markdown is being tokenized.\n *\n * The plugins find interactions by walking the tree's text nodes, which only exist once the\n * Markdown has been parsed -- and by then the parse has already rewritten what is inside the\n * brackets. A backslash escape is Markdown's own syntax too, so `https:\\/\\/example.com` reaches the\n * text node as `https://example.com`: the escape the option relied on is gone and the `//` splits\n * it into a display and a value. Worse, GFM turns that URL into a link node of its own, so the\n * interaction is no longer inside one text node at all and is shown to the learner as raw text.\n * The same happens to anything else Markdown reads inline: `$...$` with remark-math, `*...*`,\n * an entity.\n *\n * So the brackets are claimed before any of that runs. This construct starts at `?[` and ends at\n * the first `]` the escape rule leaves unescaped outside any `{{...}}` marker, exactly where\n * `INTERACTION_CONTENT_SOURCE` ends it. Every marker is opaque until its first literal `}}`.\n * The whole span becomes one node carrying the source unchanged (see `INTERACTION_NODE`),\n * which the plugins then parse from what the author wrote.\n *\n * `?[text](url)` is a link, not an interaction, as the visitor's lookahead has always said, so a\n * `]` followed by `(` gives the span back to Markdown.\n *\n * The types are declared here rather than imported, so the published declarations do not reach\n * into micromark's packages, which this one does not depend on at runtime.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TOKENIZED_TREE = exports.OPAQUE_PARAGRAPH = exports.VARIABLE_NODE = exports.INTERACTION_NODE = void 0;\nexports.interactionSyntax = interactionSyntax;\nexports.interactionFromMarkdown = interactionFromMarkdown;\nexports.registerInteractionSyntax = registerInteractionSyntax;\nconst variable_name_1 = require(\"./variable-name\");\n/**\n * The node type this construct produces.\n *\n * Its own type, not `text`: GFM finds `www.` links and emails by rewriting text nodes after the\n * parse, and it cut an interaction whose option carried `https://www.postgresql.org` into\n * text and a link, so the question was never recognised. Nothing that rewrites text touches a\n * node of another type; the plugins turn each one into an element, or back into text.\n */\nexports.INTERACTION_NODE = 'flowInteraction';\nexports.VARIABLE_NODE = 'flowVariableMarker';\nexports.OPAQUE_PARAGRAPH = 'flowOpaqueParagraph';\nconst OPAQUE_HEADING = 'flowOpaqueHeading';\n/**\n * Set on the root of a tree parsed with this construct registered.\n *\n * Whether a plugin is attached to a processor says nothing about the tree it is given:\n * `runSync(tree)` can hand it one parsed by another processor, or built by hand, in which nothing\n * was tokenized. The visitor reads this mark, not the registration, to know which it has.\n */\nexports.TOKENIZED_TREE = 'flowInteractionTokenized';\nconst QUESTION_MARK = 63;\nconst LEFT_BRACKET = 91;\nconst RIGHT_BRACKET = 93;\nconst LEFT_PAREN = 40;\nconst LESS_THAN = 60;\nconst BACKSLASH = 92;\nconst BACKTICK = 96;\nconst NUMBER_SIGN = 35;\nconst DOLLAR_SIGN = 36;\nconst EXCLAMATION_MARK = 33;\nconst SPACE = 32;\nconst HEADING_DEPTH_MAX = 6;\nconst LEFT_BRACE = 123;\nconst RIGHT_BRACE = 125;\n// The characters a backslash escapes inside an interaction: `|`, `/`, `.`, `]`. Mirrors ESCAPABLE.\nconst ESCAPABLE_CODES = new Set([124, 47, 46, 93]);\nconst INTERACTION = 'flowInteraction';\nconst VARIABLE = 'flowVariableMarker';\nconst MARKER = 'flowInteractionMarker';\nconst DATA = 'flowInteractionData';\nconst LINE_ENDING = 'lineEnding';\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst CARRIAGE_RETURN_LINE_FEED = -3;\nconst HORIZONTAL_TAB = -2;\nconst VIRTUAL_SPACE = -1;\nconst literalInlineOpenings = new WeakMap();\nconst sourceInlineOpenings = new WeakMap();\nconst sourceInlineSeeds = [];\nconst EMPTY_INLINE_SEED = new Uint32Array();\nfunction rejectedSourceOpening(parser, offset) {\n let offsets = sourceInlineOpenings.get(parser);\n if (offsets === undefined) {\n offsets =\n sourceInlineSeeds[sourceInlineSeeds.length - 1] ?? EMPTY_INLINE_SEED;\n sourceInlineOpenings.set(parser, offsets);\n }\n let low = 0;\n let high = offsets.length;\n while (low < high) {\n const middle = (low + high) >>> 1;\n if (offsets[middle] < offset)\n low = middle + 1;\n else\n high = middle;\n }\n return offsets[low] === offset;\n}\nfunction previousLiteralCodeOpening(code) {\n const native = this.parser.constructs.text[BACKTICK]?.find(construct => construct.name === 'codeText');\n return native?.previous?.call(this, code) ?? true;\n}\nfunction previousLiteralMathOpening(code) {\n const native = this.parser.constructs.text[DOLLAR_SIGN]?.find(construct => construct.name === 'mathText');\n return native?.previous?.call(this, code) ?? true;\n}\n/** A rejected opening cannot pair with a delimiter exposed only by opaque-marker flow protection. */\nfunction tokenizeLiteralInlineOpening(effects, ok, nok) {\n if (!rejectedSourceOpening(this.parser, this.now().offset) &&\n !literalInlineOpenings.get(this.parser)?.has(this.now().offset))\n return nok;\n let opening;\n return start;\n function start(code) {\n opening = code;\n effects.enter('data');\n return run(code);\n }\n function run(code) {\n if (code === opening) {\n effects.consume(code);\n return run;\n }\n effects.exit('data');\n return ok(code);\n }\n}\n/** Preserve NUL provenance before a serialized token loses the distinction from literal U+FFFD. */\nfunction preserveTokenNulls(context, token) {\n const offsets = [];\n let offset = 0;\n let afterTab = false;\n for (const chunk of context.sliceStream(token)) {\n // sliceSerialize omits the virtual padding after a real tab when expandTabs is false.\n if (chunk === VIRTUAL_SPACE && afterTab)\n continue;\n if (chunk === REPLACEMENT_CHARACTER)\n offsets.push(offset);\n offset +=\n typeof chunk === 'string'\n ? chunk.length\n : chunk === CARRIAGE_RETURN_LINE_FEED\n ? 2\n : 1;\n afterTab = chunk === HORIZONTAL_TAB;\n }\n if (offsets.length)\n token.flowNullOffsets = offsets;\n}\n/** Restore only known raw NULs while keeping Markdown's container-prefix serialization. */\nfunction tokenValue(context, token) {\n const value = context.sliceSerialize(token);\n if (!token.flowNullOffsets)\n return value;\n const parts = [];\n let at = 0;\n for (const offset of token.flowNullOffsets) {\n parts.push(value.slice(at, offset), '\\u0000');\n at = offset + 1;\n }\n parts.push(value.slice(at));\n return parts.join('');\n}\n/** Whether `code` is one of micromark's virtual line endings (CR, LF, CRLF). */\nconst isLineEnding = (code) => code !== null && code < -2;\nfunction tokenizeInteraction(effects, ok, nok) {\n const finish = () => preserveTokenNulls(this, effects.exit(INTERACTION));\n return start;\n // Every character is consumed inside a token of its own kind -- the `?[` and `]` markers, the\n // data between them, line endings -- because micromark only lets a construct consume while a\n // token is open.\n function start(code) {\n effects.enter(INTERACTION);\n effects.enter(MARKER);\n effects.consume(code);\n return open;\n }\n function open(code) {\n if (code !== LEFT_BRACKET) {\n return nok(code);\n }\n effects.consume(code);\n effects.exit(MARKER);\n return beforeContent;\n }\n // Data is only opened on a character it will hold: micromark rejects an empty token.\n function beforeContent(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === RIGHT_BRACKET) {\n return close(code);\n }\n if (isLineEnding(code)) {\n return lineEnding(code);\n }\n effects.enter(DATA);\n return content(code);\n }\n function variableSecondBrace(code) {\n if (code !== LEFT_BRACE)\n return content(code);\n effects.consume(code);\n return variableBody;\n }\n function variableBody(code) {\n if (code === null) {\n // A confirmed marker owns its tail even when it never closes. Rolling back here\n // would let Markdown discover an inner `?[...]` and invent buttons inside the key.\n effects.exit(DATA);\n finish();\n return ok(code);\n }\n if (isLineEnding(code)) {\n effects.exit(DATA);\n return variableLineEnding(code);\n }\n // Neither backslashes nor brackets have special meaning inside the marker.\n effects.consume(code);\n return code === RIGHT_BRACE ? variableAfterBrace : variableBody;\n }\n function variableAfterBrace(code) {\n if (code !== RIGHT_BRACE)\n return variableBody(code);\n effects.consume(code);\n return content;\n }\n function variableLineEnding(code) {\n effects.enter(LINE_ENDING);\n effects.consume(code);\n effects.exit(LINE_ENDING);\n return variableBeforeData;\n }\n function variableBeforeData(code) {\n if (code === null) {\n finish();\n return ok(code);\n }\n if (isLineEnding(code))\n return variableLineEnding(code);\n effects.enter(DATA);\n return variableBody(code);\n }\n function lineEnding(code) {\n // An interaction may run across lines, as the regex it mirrors allows. A line ending is its\n // own token in micromark, so it sits between runs of data rather than inside one.\n effects.enter(LINE_ENDING);\n effects.consume(code);\n effects.exit(LINE_ENDING);\n return beforeContent;\n }\n function content(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === RIGHT_BRACKET) {\n effects.exit(DATA);\n return close(code);\n }\n if (isLineEnding(code)) {\n effects.exit(DATA);\n return lineEnding(code);\n }\n effects.consume(code);\n if (code === LEFT_BRACE)\n return variableSecondBrace;\n return code === BACKSLASH ? afterBackslash : content;\n }\n function afterBackslash(code) {\n // `\\]` is an escaped bracket and does not close; any other backslash is literal text and\n // the character after it is read as usual. Only the escapable characters pair up.\n if (code !== null && ESCAPABLE_CODES.has(code)) {\n effects.consume(code);\n return content;\n }\n return content(code);\n }\n function close(code) {\n effects.enter(MARKER);\n effects.consume(code);\n effects.exit(MARKER);\n return after;\n }\n function after(code) {\n if (code === LEFT_PAREN) {\n return nok(code);\n }\n finish();\n return ok(code);\n }\n}\n/** Claim standalone references before Markdown can recognize syntax inside their opaque body. */\nfunction tokenizeVariable(effects, ok, nok) {\n const finish = () => preserveTokenNulls(this, effects.exit(VARIABLE));\n return start;\n function start(code) {\n effects.enter(VARIABLE);\n effects.consume(code);\n return second;\n }\n function second(code) {\n if (code !== LEFT_BRACE)\n return nok(code);\n effects.consume(code);\n return beforeBody;\n }\n function beforeBody(code) {\n if (code === null) {\n finish();\n return ok(code);\n }\n if (isLineEnding(code)) {\n effects.enter(LINE_ENDING);\n effects.consume(code);\n effects.exit(LINE_ENDING);\n return beforeBody;\n }\n effects.enter(DATA);\n return body(code);\n }\n function body(code) {\n if (code === null || isLineEnding(code)) {\n effects.exit(DATA);\n return beforeBody(code);\n }\n effects.consume(code);\n return code === RIGHT_BRACE ? afterBrace : body;\n }\n function afterBrace(code) {\n if (code !== RIGHT_BRACE)\n return body(code);\n effects.consume(code);\n effects.exit(DATA);\n finish();\n return ok;\n }\n}\n/** Keep block-looking lines inside a multiline marker in the same inline text stream. */\nfunction tokenizeOpaqueParagraph(effects, ok, nok) {\n const opaque = tokenizeOpaqueBlock(this, effects, ok, nok, false);\n const definition = this.parser.constructs.contentInitial?.[LEFT_BRACKET]?.find(construct => construct.name === 'definition');\n if (!definition || this.interrupt)\n return opaque;\n return code => code === LEFT_BRACKET\n ? effects.check({\n partial: true,\n tokenize(effects, yes, no) {\n // Native definition checks register labels. Keep speculative labels local.\n const native = Object.create(this, {\n parser: {\n value: Object.create(this.parser, {\n defined: { value: [] },\n }),\n },\n });\n return definition.tokenize.call(native, effects, yes, no);\n },\n }, nok, opaque)(code)\n : opaque(code);\n}\n/** The same marker ownership applies when its opening is inside an ATX heading. */\nfunction tokenizeOpaqueHeading(effects, ok, nok) {\n return tokenizeOpaqueBlock(this, effects, ok, nok, true);\n}\nfunction tokenizeOpaqueBlock(context, effects, ok, nok, heading, probe = false) {\n let marker = false;\n let brace = false;\n let multiline = false;\n let interaction = false;\n let question = false;\n let headingDepth = 0;\n let checkedSize = 0;\n let codeOpeningSize = 0;\n let codeOpeningOffset = 0;\n let codeOpeningCrossedBoundary = false;\n let mathOpeningSize = 0;\n let mathOpeningOffset = 0;\n let mathOpeningCrossedBoundary = false;\n let previousCode = null;\n let rejectedDelimiter = null;\n const labels = [];\n const activeLinkLabels = new Set();\n const rejectedInlineOpenings = new Set();\n let chunk;\n let outer;\n const outerType = heading ? OPAQUE_HEADING : 'content';\n const html = context.parser.constructs.text[LESS_THAN]?.find(construct => construct.name === 'htmlText');\n const autolink = context.parser.constructs.text[LESS_THAN]?.find(construct => construct.name === 'autolink');\n const math = context.parser.constructs.text[DOLLAR_SIGN]?.find(construct => construct.name === 'mathText');\n const labelEnd = context.parser.constructs.text[RIGHT_BRACKET]?.find(construct => construct.name === 'labelEnd');\n let closingLabel;\n const continuationConstruct = { partial: true, tokenize: continuation };\n const inlineContinuationConstruct = {\n partial: true,\n tokenize: inlineContinuation,\n };\n const markerLineConstruct = { partial: true, tokenize: markerLine };\n const active = { ...context.currentConstruct, concrete: true };\n const inactive = { ...context.currentConstruct, concrete: false };\n // A flow lookahead can request another document line (notably GFM tables).\n // Keep this concrete construct active while probing, so list containers cannot\n // start inside a marker before that speculative lookahead has rolled back.\n const interruptFlow = Object.fromEntries(Object.entries(context.parser.constructs.flow).map(([code, constructs]) => [\n code,\n constructs.map(construct => ({ ...construct, partial: true })),\n ]));\n return start;\n function start(code) {\n // The continuation check must use Markdown's other block constructs without\n // recursively starting another speculative opaque paragraph.\n if (context.interrupt)\n return nok(code);\n if (!probe)\n context.currentConstruct = inactive;\n outer = effects.enter(outerType);\n if (heading) {\n effects.enter(MARKER);\n return headingSequence(code);\n }\n effects.enter('paragraph');\n return beforeContent(code);\n }\n function headingSequence(code) {\n if (code === NUMBER_SIGN) {\n if (++headingDepth > HEADING_DEPTH_MAX)\n return nok(code);\n effects.consume(code);\n return headingSequence;\n }\n if (code !== null && !isLineEnding(code) && !isSpace(code))\n return nok(code);\n outer.flowHeadingDepth = headingDepth;\n return headingPadding(code);\n }\n function headingPadding(code) {\n if (isSpace(code)) {\n effects.consume(code);\n return headingPadding;\n }\n effects.exit(MARKER);\n return beforeContent(code);\n }\n function beforeContent(code) {\n if (code === null || isLineEnding(code))\n return nok(code);\n chunk = effects.enter('chunkText', { contentType: 'text' });\n return content(code);\n }\n function content(code) {\n if (code === null || isLineEnding(code)) {\n if (probe) {\n if (!marker || code === null)\n return nok(code);\n effects.exit('chunkText');\n closeOuter();\n return ok(code);\n }\n if (marker && code !== null) {\n multiline = true;\n brace = false;\n effects.consume(code);\n effects.exit('chunkText');\n return nextLine;\n }\n if (code !== null && !heading) {\n return effects.check(continuationConstruct, continueLine, finish)(code);\n }\n return finish(code);\n }\n if (!marker) {\n // Inline code and HTML already own their braces. Check before claiming a\n // marker so a later real code fence remains in Markdown's flow.\n if (!interaction && code === BACKTICK) {\n if (rejectedSourceOpening(context.parser, context.now().offset)) {\n rejectedDelimiter = code;\n return skipRejectedOpening(code);\n }\n checkedSize = 0;\n codeOpeningSize = 0;\n codeOpeningOffset = context.now().offset;\n codeOpeningCrossedBoundary = false;\n return effects.check({ partial: true, tokenize: codeSpan }, skipChecked, skipCodeOpening)(code);\n }\n if (!interaction && code === LESS_THAN && (autolink || html)) {\n checkedSize = 0;\n return effects.check({ partial: true, tokenize: autolinkSpan }, skipChecked, tryHtml)(code);\n }\n if (!interaction && code === DOLLAR_SIGN && math) {\n if (rejectedSourceOpening(context.parser, context.now().offset)) {\n rejectedDelimiter = code;\n return skipRejectedOpening(code);\n }\n checkedSize = 0;\n mathOpeningSize = 0;\n mathOpeningOffset = context.now().offset;\n mathOpeningCrossedBoundary = false;\n return effects.check({ partial: true, tokenize: mathSpan }, skipChecked, skipMathOpening)(code);\n }\n if (code === RIGHT_BRACKET && labels.length && labelEnd) {\n closingLabel = labels.pop();\n if (closingLabel)\n activeLinkLabels.delete(closingLabel);\n if (!closingLabel?.inactive) {\n checkedSize = 0;\n return effects.check({ partial: true, tokenize: linkResourceSpan }, skipLinkResource, ordinary)(code);\n }\n }\n if (heading && isSpace(code)) {\n checkedSize = 0;\n return effects.check({ partial: true, tokenize: headingTail }, headingEnd, skipChecked)(code);\n }\n if (code === BACKSLASH) {\n effects.consume(code);\n brace = false;\n question = false;\n return escaped;\n }\n }\n return ordinary(code);\n }\n function skipRejectedOpening(code) {\n if (code !== rejectedDelimiter)\n return content(code);\n effects.consume(code);\n previousCode = code;\n brace = false;\n question = false;\n return skipRejectedOpening;\n }\n function ordinary(code) {\n const prior = previousCode;\n effects.consume(code);\n previousCode = code;\n if (!marker && code === LEFT_BRACKET) {\n const label = {\n type: prior === EXCLAMATION_MARK ? 'labelImage' : 'labelLink',\n end: context.now(),\n };\n labels.push(label);\n if (label.type === 'labelLink')\n activeLinkLabels.add(label);\n }\n const wasMarker = marker;\n if (marker) {\n if (brace && code === RIGHT_BRACE) {\n marker = false;\n brace = false;\n }\n else {\n brace = code === RIGHT_BRACE;\n }\n }\n else if (brace && code === LEFT_BRACE) {\n marker = true;\n brace = false;\n }\n else {\n brace = code === LEFT_BRACE;\n }\n if (!probe && wasMarker !== marker) {\n context.currentConstruct = marker ? active : inactive;\n }\n if (!marker) {\n if (question && code === LEFT_BRACKET)\n interaction = true;\n if (code === RIGHT_BRACKET)\n interaction = false;\n question = code === QUESTION_MARK;\n }\n return content;\n }\n function escaped(code) {\n if (interaction && (code === null || !ESCAPABLE_CODES.has(code))) {\n return content(code);\n }\n if (code === null || isLineEnding(code))\n return content(code);\n effects.consume(code);\n previousCode = null;\n return content;\n }\n function codeSpan(check, yes, no) {\n let opening = 0;\n let closing = 0;\n return open;\n function consume(code) {\n check.consume(code);\n checkedSize++;\n }\n function open(code) {\n if (code === BACKTICK) {\n opening++;\n codeOpeningSize++;\n consume(code);\n return open;\n }\n return body(code);\n }\n function body(code) {\n if (code === null)\n return no(code);\n if (isLineEnding(code)) {\n if (probe || heading) {\n codeOpeningCrossedBoundary = heading;\n return no(code);\n }\n return check.check(continuationConstruct, line, blockedLine)(code);\n }\n if (code === BACKTICK) {\n closing = 0;\n return close(code);\n }\n consume(code);\n return body;\n }\n function line(code) {\n consume(code);\n return body;\n }\n function blockedLine(code) {\n return check.check({ partial: true, tokenize: inlineBoundary }, boundary, no)(code);\n }\n function boundary(code) {\n codeOpeningCrossedBoundary = true;\n return no(code);\n }\n function inlineBoundary(probe, yes, no) {\n let line = '';\n return start;\n function start(code) {\n probe.consume(code);\n return content;\n }\n function content(code) {\n if (code === null || isLineEnding(code)) {\n return (0, variable_name_1.isInlineCodeBoundaryLine)(line) ? yes(code) : no(code);\n }\n line +=\n code === HORIZONTAL_TAB\n ? '\\t'\n : code === VIRTUAL_SPACE\n ? ' '\n : String.fromCodePoint(code);\n probe.consume(code);\n return content;\n }\n }\n function close(code) {\n if (code === BACKTICK) {\n closing++;\n consume(code);\n return close;\n }\n return closing === opening ? yes(code) : body(code);\n }\n }\n function htmlSpan(check, yes, no) {\n if (!html)\n return no;\n return nativeSpan.call(this, html, 'htmlText', check, yes, no);\n }\n function autolinkSpan(check, yes, no) {\n if (!autolink)\n return no;\n return nativeSpan.call(this, autolink, 'autolink', check, yes, no);\n }\n function tryHtml(code) {\n // A failed native autolink trial rolls its tokens back, so reset its byte count too.\n checkedSize = 0;\n return effects.check({ partial: true, tokenize: htmlSpan }, skipChecked, ordinary)(code);\n }\n function mathSpan(check, yes, no) {\n if (!math)\n return no;\n let opening = true;\n let trailingSize = 0;\n // A complete run is tried only once, including when its first dollar was escaped.\n const nativeContext = Object.create(this, { previous: { value: null } });\n return nativeSpan.call(nativeContext, math, 'mathText', {\n ...check,\n consume(code) {\n if (opening && code === DOLLAR_SIGN)\n mathOpeningSize++;\n else\n opening = false;\n trailingSize = code === DOLLAR_SIGN ? trailingSize + 1 : 0;\n check.consume(code);\n },\n }, yes, no, () => trailingSize === mathOpeningSize, () => {\n mathOpeningCrossedBoundary = true;\n });\n }\n function linkResourceSpan(check, yes, no) {\n if (!labelEnd || !closingLabel)\n return no;\n // The native label-end tokenizer owns resource destinations and titles. Its\n // matching opening is tracked here because flow has not tokenized inline labels yet.\n // Older tokenizers read events; newer ones mutate a label-start stack. Keep\n // both representations local so speculative checks cannot change parser state.\n const labelStart = { ...closingLabel };\n const nativeContext = Object.create(this, {\n events: { value: [['enter', labelStart]] },\n _labelStarts: { value: [labelStart] },\n });\n return nativeSpan.call(nativeContext, labelEnd, 'resource', check, yes, no);\n }\n function nativeSpan(construct, tokenType, check, yes, no, closesBeforeLineEnding = () => false, onBoundary = () => undefined) {\n // Use the registered grammar, including HTML attributes, math options, and link titles.\n let closed = false;\n let done = false;\n const state = construct.tokenize.call(this, tracedEffects(check), complete, failed);\n return withinParagraph(state);\n function tracedEffects(check) {\n return {\n ...check,\n consume(code) {\n checkedSize++;\n check.consume(code);\n },\n exit(type) {\n const token = check.exit(type);\n if (type === tokenType)\n closed = true;\n return token;\n },\n attempt(construct, yes, no) {\n return check.attempt({\n ...construct,\n tokenize(effects, yes, no) {\n return construct.tokenize.call(this, tracedEffects(effects), yes, no);\n },\n }, yes, no);\n },\n };\n }\n function complete(code) {\n done = true;\n return closed ? yes(code) : no(code);\n }\n function failed(code) {\n done = true;\n return no(code);\n }\n function withinParagraph(state) {\n return code => {\n // Inline constructs normally see only one paragraph. Flow lookahead must impose\n // the same boundary before passing it a blank line or a new flow block.\n // A closed HTML token still receives this code so its `ok` state can run.\n if (!closed && isLineEnding(code) && !closesBeforeLineEnding()) {\n if (probe || heading)\n return boundary(code);\n return check.check(inlineContinuationConstruct, advance, boundary)(code);\n }\n return advance(code);\n function advance(code) {\n const next = state(code);\n return next && !done ? withinParagraph(next) : next;\n }\n };\n }\n function boundary(code) {\n onBoundary();\n return no(code);\n }\n }\n function skipChecked(code) {\n if (!checkedSize)\n return content(code);\n effects.consume(code);\n previousCode = code;\n checkedSize--;\n brace = false;\n question = false;\n if (isLineEnding(code)) {\n effects.exit('chunkText');\n return nextCheckedLine;\n }\n return skipChecked;\n }\n function nextCheckedLine(code) {\n openNextChunk();\n return skipChecked(code);\n }\n function skipCodeOpening(code) {\n if (!probe && codeOpeningCrossedBoundary)\n rejectedInlineOpenings.add(codeOpeningOffset);\n checkedSize = codeOpeningSize;\n return skipChecked(code);\n }\n function skipMathOpening(code) {\n if (!probe && mathOpeningCrossedBoundary)\n rejectedInlineOpenings.add(mathOpeningOffset);\n checkedSize = mathOpeningSize;\n return skipChecked(code);\n }\n function skipLinkResource(code) {\n if (closingLabel?.type === 'labelLink') {\n for (const label of activeLinkLabels)\n label.inactive = true;\n activeLinkLabels.clear();\n }\n interaction = false;\n return skipChecked(code);\n }\n function headingTail(check, yes, no) {\n let hashes = false;\n return padding;\n function consume(code) {\n check.consume(code);\n checkedSize++;\n }\n function padding(code) {\n if (isSpace(code)) {\n consume(code);\n return padding;\n }\n return sequence(code);\n }\n function sequence(code) {\n if (code === NUMBER_SIGN) {\n hashes = true;\n consume(code);\n return sequence;\n }\n if (!hashes)\n return no(code);\n return after(code);\n }\n function after(code) {\n if (isSpace(code)) {\n consume(code);\n return after;\n }\n return code === null || isLineEnding(code) ? yes(code) : no(code);\n }\n }\n function headingEnd(code) {\n if (!multiline)\n return nok(code);\n effects.exit('chunkText');\n effects.enter(MARKER);\n return headingEndTail(code);\n }\n function headingEndTail(code) {\n if (checkedSize) {\n effects.consume(code);\n checkedSize--;\n return headingEndTail;\n }\n effects.exit(MARKER);\n retainLiteralInlineOpenings();\n effects.exit(outerType);\n return ok(code);\n }\n function nextLine(code) {\n if (code === null) {\n closeOuter();\n return ok(code);\n }\n openNextChunk();\n return content(code);\n }\n function openNextChunk() {\n chunk.next = effects.enter('chunkText', {\n contentType: 'text',\n previous: chunk,\n });\n chunk = chunk.next;\n }\n function closeOuter() {\n retainLiteralInlineOpenings();\n if (!heading)\n effects.exit('paragraph');\n effects.exit(outerType);\n }\n function retainLiteralInlineOpenings() {\n if (probe || !rejectedInlineOpenings.size)\n return;\n let openings = literalInlineOpenings.get(context.parser);\n if (!openings) {\n openings = new Set();\n literalInlineOpenings.set(context.parser, openings);\n }\n for (const opening of rejectedInlineOpenings)\n openings.add(opening);\n }\n function finish(code) {\n if (!multiline)\n return nok(code);\n effects.exit('chunkText');\n closeOuter();\n return ok(code);\n }\n function continueLine(code) {\n effects.consume(code);\n previousCode = null;\n effects.exit('chunkText');\n return nextLine;\n }\n function continuation(check, yes, no) {\n return line;\n function line(code) {\n check.consume(code);\n return prefix;\n }\n function prefix(code) {\n if (isSpace(code)) {\n check.consume(code);\n return prefix;\n }\n if (code === null || isLineEnding(code))\n return no(code);\n return check.check(markerLineConstruct, yes, check.interrupt(interruptFlow, no, yes))(code);\n }\n }\n function inlineContinuation(check, yes, no) {\n // A native inline state may have just exited a token and still need this\n // character to finish. Give the speculative boundary check its own token.\n return code => {\n check.enter(DATA);\n return continuation(check, finish(yes), finish(no))(code);\n };\n function finish(next) {\n return code => {\n check.exit(DATA);\n return next(code);\n };\n }\n }\n function markerLine(check, yes, no) {\n return tokenizeOpaqueBlock(this, check, yes, no, false, true);\n }\n}\nconst isSpace = (code) => code === SPACE || code === HORIZONTAL_TAB || code === VIRTUAL_SPACE;\n/** The micromark syntax extension: `?` may open an interaction wherever inline text is read. */\nfunction interactionSyntax() {\n return {\n flow: {\n [NUMBER_SIGN]: {\n name: OPAQUE_HEADING,\n concrete: true,\n tokenize: tokenizeOpaqueHeading,\n },\n null: {\n name: exports.OPAQUE_PARAGRAPH,\n concrete: true,\n tokenize: tokenizeOpaqueParagraph,\n },\n },\n text: {\n [BACKTICK]: {\n name: 'flowLiteralCodeOpening',\n previous: previousLiteralCodeOpening,\n tokenize: tokenizeLiteralInlineOpening,\n },\n [DOLLAR_SIGN]: {\n name: 'flowLiteralMathOpening',\n previous: previousLiteralMathOpening,\n tokenize: tokenizeLiteralInlineOpening,\n },\n [QUESTION_MARK]: {\n name: 'flowInteraction',\n tokenize: tokenizeInteraction,\n },\n [LEFT_BRACE]: { name: VARIABLE, tokenize: tokenizeVariable },\n },\n };\n}\n/** The mdast extension: the whole span becomes one node holding the source as written. */\nfunction interactionFromMarkdown() {\n return {\n transforms: [\n (tree) => {\n tree.data = { ...tree.data, [exports.TOKENIZED_TREE]: true };\n },\n ],\n enter: {\n [OPAQUE_HEADING](token) {\n this.enter({ type: 'heading', depth: token.flowHeadingDepth, children: [] }, token);\n },\n [VARIABLE](token) {\n this.enter({ type: exports.VARIABLE_NODE, value: '' }, token);\n },\n [INTERACTION](token) {\n this.enter({ type: exports.INTERACTION_NODE, value: '' }, token);\n },\n },\n exit: {\n [OPAQUE_HEADING](token) {\n this.exit(token);\n },\n [VARIABLE](token) {\n const node = this.stack[this.stack.length - 1];\n node.value = tokenValue(this, token);\n this.exit(token);\n },\n [INTERACTION](token) {\n const node = this.stack[this.stack.length - 1];\n node.value = tokenValue(this, token);\n this.exit(token);\n },\n },\n };\n}\nconst seededProcessors = new WeakSet();\nconst seededParsers = new WeakMap();\nconst seededParserWrappers = new WeakSet();\nfunction seedParser(parser) {\n if (typeof parser !== 'function')\n return parser;\n const original = parser;\n if (seededParserWrappers.has(original))\n return original;\n let wrapped = seededParsers.get(original);\n if (!wrapped) {\n wrapped = function (document, file) {\n // Micromark strips one leading BOM before assigning source offsets.\n const source = document.startsWith('\\uFEFF')\n ? document.slice(1)\n : document;\n sourceInlineSeeds.push((0, variable_name_1.findRejectedDocumentInlineOpenings)(source));\n try {\n return original.call(this, document, file);\n }\n finally {\n sourceInlineSeeds.pop();\n }\n };\n seededParsers.set(original, wrapped);\n seededParserWrappers.add(wrapped);\n }\n return wrapped;\n}\n/** Keep parser assignment working in either plugin order and on copied processors. */\nfunction registerSourceSeeds(processor) {\n if (seededProcessors.has(processor))\n return;\n seededProcessors.add(processor);\n for (const key of ['parser', 'Parser']) {\n const descriptor = Object.getOwnPropertyDescriptor(processor, key);\n if (descriptor && !descriptor.configurable) {\n if ('value' in descriptor && descriptor.writable)\n processor[key] = seedParser(processor[key]);\n continue;\n }\n let current = processor[key];\n const writable = !descriptor ||\n !!descriptor.set ||\n ('value' in descriptor && descriptor.writable);\n Object.defineProperty(processor, key, {\n configurable: descriptor?.configurable ?? true,\n enumerable: descriptor?.enumerable ?? true,\n get() {\n // Later attachers such as GFM install competing flow constructs. Marker\n // ownership must run first regardless of the user's plugin order.\n const data = processor.data();\n const extensions = data.micromarkExtensions;\n if (extensions?.includes(SYNTAX) &&\n extensions[extensions.length - 1] !== SYNTAX)\n data.micromarkExtensions = [\n ...extensions.filter(extension => extension !== SYNTAX),\n SYNTAX,\n ];\n return seedParser(descriptor?.get ? descriptor.get.call(this) : current);\n },\n ...(writable\n ? {\n set(value) {\n if (descriptor?.set)\n descriptor.set.call(this, value);\n else\n current = value;\n },\n }\n : {}),\n });\n }\n}\n// A unified processor is a callable instance, so `typeof` says function, not object.\nconst isProcessor = (value) => (typeof value === 'object' || typeof value === 'function') &&\n value !== null &&\n typeof value.data === 'function';\n/**\n * Teach the processor a plugin is attached to to tokenize interactions.\n *\n * A plugin called through `unified().use()` runs with the processor as `this`; one called by hand\n * -- `remarkFlow()(tree)`, as older code and the tests do -- has none, and keeps working on the\n * tree it is given as before.\n */\nfunction registerInteractionSyntax(self) {\n if (!isProcessor(self)) {\n return;\n }\n const data = self.data();\n registerSourceSeeds(self);\n const add = (field, value) => {\n const list = data[field] ?? [];\n if (!list.includes(value)) {\n list.push(value);\n }\n data[field] = list;\n };\n add('micromarkExtensions', SYNTAX);\n add('fromMarkdownExtensions', FROM_MARKDOWN);\n}\n// One instance each, so a processor that attaches several of these plugins registers once.\nconst SYNTAX = interactionSyntax();\nconst FROM_MARKDOWN = interactionFromMarkdown();\n//# sourceMappingURL=interaction-syntax.js.map"],"names":["exports","interactionSyntax","interactionFromMarkdown","registerInteractionSyntax","variable_name_1","require$$0","OPAQUE_HEADING","QUESTION_MARK","LEFT_BRACKET","RIGHT_BRACKET","LEFT_PAREN","LESS_THAN","BACKSLASH","BACKTICK","NUMBER_SIGN","DOLLAR_SIGN","EXCLAMATION_MARK","SPACE","HEADING_DEPTH_MAX","LEFT_BRACE","RIGHT_BRACE","ESCAPABLE_CODES","INTERACTION","VARIABLE","MARKER","DATA","LINE_ENDING","REPLACEMENT_CHARACTER","CARRIAGE_RETURN_LINE_FEED","HORIZONTAL_TAB","VIRTUAL_SPACE","literalInlineOpenings","sourceInlineOpenings","sourceInlineSeeds","EMPTY_INLINE_SEED","rejectedSourceOpening","parser","offset","offsets","low","high","middle","previousLiteralCodeOpening","code","construct","previousLiteralMathOpening","tokenizeLiteralInlineOpening","effects","ok","nok","opening","start","run","preserveTokenNulls","context","token","afterTab","chunk","tokenValue","value","parts","at","isLineEnding","tokenizeInteraction","finish","open","beforeContent","close","lineEnding","content","variableSecondBrace","variableBody","variableLineEnding","variableAfterBrace","variableBeforeData","afterBackslash","after","tokenizeVariable","second","beforeBody","body","afterBrace","tokenizeOpaqueParagraph","opaque","tokenizeOpaqueBlock","definition","yes","no","native","tokenizeOpaqueHeading","heading","probe","marker","brace","multiline","interaction","question","headingDepth","checkedSize","codeOpeningSize","codeOpeningOffset","codeOpeningCrossedBoundary","mathOpeningSize","mathOpeningOffset","mathOpeningCrossedBoundary","previousCode","rejectedDelimiter","labels","activeLinkLabels","rejectedInlineOpenings","outer","outerType","html","autolink","math","labelEnd","closingLabel","continuationConstruct","continuation","inlineContinuationConstruct","inlineContinuation","markerLineConstruct","markerLine","active","inactive","interruptFlow","constructs","headingSequence","isSpace","headingPadding","closeOuter","nextLine","continueLine","skipRejectedOpening","codeSpan","skipChecked","skipCodeOpening","autolinkSpan","tryHtml","mathSpan","skipMathOpening","linkResourceSpan","skipLinkResource","ordinary","headingTail","headingEnd","escaped","prior","label","wasMarker","check","closing","consume","line","blockedLine","inlineBoundary","boundary","htmlSpan","nativeSpan","trailingSize","nativeContext","labelStart","tokenType","closesBeforeLineEnding","onBoundary","closed","done","state","tracedEffects","complete","failed","withinParagraph","type","advance","next","nextCheckedLine","openNextChunk","hashes","padding","sequence","headingEndTail","retainLiteralInlineOpenings","openings","prefix","tree","node","seededProcessors","seededParsers","seededParserWrappers","seedParser","original","wrapped","document","file","source","registerSourceSeeds","processor","key","descriptor","current","writable","data","extensions","SYNTAX","extension","isProcessor","self","add","field","list","FROM_MARKDOWN"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("../../../_virtual/variable-marker.cjs");var V;function t(){return V||(V=1,(function(a){Object.defineProperty(a,"__esModule",{value:!0}),a.formatVariableAssignment=a.formatVariableReference=a.findVariableMarkers=a.readVariableMarker=a.createVariableExpressionRegex=a.isValidVariableName=a.normalizeVariableName=a.RAW_VARIABLE_MARKER_SOURCE=a.RAW_VARIABLE_BODY_SOURCE=a.VARIABLE_ASSIGNMENT_SOURCE=a.VARIABLE_REFERENCE_SOURCE=a.trimVariablePadding=a.VARIABLE_PADDING_SOURCE=a.VARIABLE_NAME_SOURCE=void 0;const R="\\u0009-\\u000d\\u001c-\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000",A="\\u0000-\\u001f\\u007f-\\u009f\\u2028\\u2029",f=`(?:(?!\\}\\})[^${A}])`,_=`(?:(?!\\}\\})[^${A}${R}])`;a.VARIABLE_NAME_SOURCE=`${_}(?:${f}*?${_})?`,a.VARIABLE_PADDING_SOURCE=`[${R}]*`;const u=e=>e>=9&&e<=13||e>=28&&e<=32||e===133||e===160||e===5760||e>=8192&&e<=8202||e===8232||e===8233||e===8239||e===8287||e===12288,b=e=>{let r=0,n=e.length;for(;r<n&&u(e.charCodeAt(r));)r+=1;for(;n>r&&u(e.charCodeAt(n-1));)n-=1;return e.slice(r,n)};a.trimVariablePadding=b,a.VARIABLE_REFERENCE_SOURCE=`\\{\\{${a.VARIABLE_PADDING_SOURCE}(${a.VARIABLE_NAME_SOURCE})${a.VARIABLE_PADDING_SOURCE}\\}\\}`,a.VARIABLE_ASSIGNMENT_SOURCE=`%${a.VARIABLE_REFERENCE_SOURCE}`,a.RAW_VARIABLE_BODY_SOURCE="(?:(?!\\}\\})[\\s\\S])*",a.RAW_VARIABLE_MARKER_SOURCE=`\\{\\{${a.RAW_VARIABLE_BODY_SOURCE}\\}\\}`;const m=e=>{const r=(0,a.trimVariablePadding)(e);if(!r)return null;for(let n=0;n<r.length;n+=1){const i=r.charCodeAt(n);if(i<=31||i>=127&&i<=159||i===8232||i===8233||i===125&&r.charCodeAt(n+1)===125)return null}return r};a.normalizeVariableName=m;const C=e=>(0,a.normalizeVariableName)(e)!==null;a.isValidVariableName=C;const c=(e="g")=>new RegExp(a.VARIABLE_REFERENCE_SOURCE,e);a.createVariableExpressionRegex=c;const O=(e,r=0)=>{if(!Number.isInteger(r)||r<0||!e.startsWith("{{",r))return null;const n=e.indexOf("}}",r+2);if(n<0)return null;const i=e.slice(r+2,n);return{start:r,end:n+2,rawName:i,name:(0,a.normalizeVariableName)(i)}};a.readVariableMarker=O;const N=e=>{const r=[];let n=0;for(;;){const i=e.indexOf("{{",n);if(i<0)return r;const l=(0,a.readVariableMarker)(e,i);if(!l)return r;r.push(l),n=l.end}};a.findVariableMarkers=N;const S=e=>{const r=(0,a.normalizeVariableName)(e);return r===null?null:`{{ ${r} }}`};a.formatVariableReference=S;const d=e=>{const r=(0,a.formatVariableReference)(e);return r===null?null:`%${r}`};a.formatVariableAssignment=d})(E.__exports)),E.__exports}exports.__require=t;
2
+ //# sourceMappingURL=variable-marker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable-marker.cjs","sources":["../../../../node_modules/remark-flow/dist/variable-marker.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatVariableAssignment = exports.formatVariableReference = exports.findVariableMarkers = exports.readVariableMarker = exports.createVariableExpressionRegex = exports.isValidVariableName = exports.normalizeVariableName = exports.RAW_VARIABLE_MARKER_SOURCE = exports.RAW_VARIABLE_BODY_SOURCE = exports.VARIABLE_ASSIGNMENT_SOURCE = exports.VARIABLE_REFERENCE_SOURCE = exports.trimVariablePadding = exports.VARIABLE_PADDING_SOURCE = exports.VARIABLE_NAME_SOURCE = void 0;\n/**\n * Variable names are opaque Unicode text. Only control characters, line separators and the\n * literal marker terminator are forbidden after trimming the established Python padding set.\n */\nconst PYTHON_WHITESPACE_SOURCE = '\\\\u0009-\\\\u000d\\\\u001c-\\\\u0020\\\\u0085\\\\u00a0\\\\u1680\\\\u2000-\\\\u200a\\\\u2028\\\\u2029\\\\u202f\\\\u205f\\\\u3000';\n// JavaScript's \\s and String.trim() differ from Python's whitespace definition: notably,\n// Python includes U+0085 and U+001C–001F but keeps U+FEFF as part of a name. Use one explicit\n// set for the name, marker padding and normalization so keys survive the browser/server trip.\nconst CONTROL_SOURCE = '\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u2028\\\\u2029';\nconst NAME_CHARACTER_SOURCE = `(?:(?!\\\\}\\\\})[^${CONTROL_SOURCE}])`;\nconst NAME_EDGE_SOURCE = `(?:(?!\\\\}\\\\})[^${CONTROL_SOURCE}${PYTHON_WHITESPACE_SOURCE}])`;\nexports.VARIABLE_NAME_SOURCE = `${NAME_EDGE_SOURCE}(?:${NAME_CHARACTER_SOURCE}*?${NAME_EDGE_SOURCE})?`;\nexports.VARIABLE_PADDING_SOURCE = `[${PYTHON_WHITESPACE_SOURCE}]*`;\nconst isPaddingCode = (code) => (code >= 0x09 && code <= 0x0d) ||\n (code >= 0x1c && code <= 0x20) ||\n code === 0x85 ||\n code === 0xa0 ||\n code === 0x1680 ||\n (code >= 0x2000 && code <= 0x200a) ||\n code === 0x2028 ||\n code === 0x2029 ||\n code === 0x202f ||\n code === 0x205f ||\n code === 0x3000;\n/** Trim only the established Python padding set, in linear time; U+FEFF is preserved. */\nconst trimVariablePadding = (raw) => {\n let start = 0;\n let end = raw.length;\n while (start < end && isPaddingCode(raw.charCodeAt(start)))\n start += 1;\n while (end > start && isPaddingCode(raw.charCodeAt(end - 1)))\n end -= 1;\n return raw.slice(start, end);\n};\nexports.trimVariablePadding = trimVariablePadding;\n/** A variable reference, with its normalized name in the first capture group. */\nexports.VARIABLE_REFERENCE_SOURCE = `\\\\{\\\\{${exports.VARIABLE_PADDING_SOURCE}(${exports.VARIABLE_NAME_SOURCE})${exports.VARIABLE_PADDING_SOURCE}\\\\}\\\\}`;\n/** The assignment marker at the beginning of an interaction. */\nexports.VARIABLE_ASSIGNMENT_SOURCE = `%${exports.VARIABLE_REFERENCE_SOURCE}`;\n// Syntax-only source used when claiming the whole marker before validating its body. It must\n// stop at the first literal `}}`, even if the body is invalid or contains another `{{`.\nexports.RAW_VARIABLE_BODY_SOURCE = '(?:(?!\\\\}\\\\})[\\\\s\\\\S])*';\nexports.RAW_VARIABLE_MARKER_SOURCE = `\\\\{\\\\{${exports.RAW_VARIABLE_BODY_SOURCE}\\\\}\\\\}`;\n/** Trim marker padding without changing a name's punctuation, case or Unicode. */\nconst normalizeVariableName = (raw) => {\n const name = (0, exports.trimVariablePadding)(raw);\n if (!name)\n return null;\n for (let index = 0; index < name.length; index += 1) {\n const code = name.charCodeAt(index);\n if (code <= 0x1f ||\n (code >= 0x7f && code <= 0x9f) ||\n code === 0x2028 ||\n code === 0x2029 ||\n (code === 0x7d && name.charCodeAt(index + 1) === 0x7d))\n return null;\n }\n return name;\n};\nexports.normalizeVariableName = normalizeVariableName;\n/** Whether a name, after trimming marker padding, follows the shared grammar. */\nconst isValidVariableName = (raw) => (0, exports.normalizeVariableName)(raw) !== null;\nexports.isValidVariableName = isValidVariableName;\n/**\n * Create an independent valid-token matcher. Anchor its source when validating a complete\n * token; scan Markdown documents with findDocumentVariableMarkers instead of a restarting regex.\n */\nconst createVariableExpressionRegex = (flags = 'g') => new RegExp(exports.VARIABLE_REFERENCE_SOURCE, flags);\nexports.createVariableExpressionRegex = createVariableExpressionRegex;\n/** Read exactly one marker at `start`; invalid bodies are still one indivisible token. */\nconst readVariableMarker = (text, start = 0) => {\n if (!Number.isInteger(start) || start < 0 || !text.startsWith('{{', start))\n return null;\n const close = text.indexOf('}}', start + 2);\n if (close < 0)\n return null;\n const rawName = text.slice(start + 2, close);\n return {\n start,\n end: close + 2,\n rawName,\n name: (0, exports.normalizeVariableName)(rawName),\n };\n};\nexports.readVariableMarker = readVariableMarker;\n/** Scan raw markers once, without treating an opening brace inside a key as another marker. */\nconst findVariableMarkers = (text) => {\n const markers = [];\n let cursor = 0;\n for (;;) {\n const start = text.indexOf('{{', cursor);\n if (start < 0)\n return markers;\n const marker = (0, exports.readVariableMarker)(text, start);\n if (!marker)\n return markers;\n markers.push(marker);\n cursor = marker.end;\n }\n};\nexports.findVariableMarkers = findVariableMarkers;\n/** Padding keeps a final single `}` in the name separate from the closing `}}`. */\nconst formatVariableReference = (raw) => {\n const name = (0, exports.normalizeVariableName)(raw);\n return name === null ? null : `{{ ${name} }}`;\n};\nexports.formatVariableReference = formatVariableReference;\n/** Serialize a valid assignment marker with the same padding as an ordinary reference. */\nconst formatVariableAssignment = (raw) => {\n const reference = (0, exports.formatVariableReference)(raw);\n return reference === null ? null : `%${reference}`;\n};\nexports.formatVariableAssignment = formatVariableAssignment;\n//# sourceMappingURL=variable-marker.js.map"],"names":["exports","PYTHON_WHITESPACE_SOURCE","CONTROL_SOURCE","NAME_CHARACTER_SOURCE","NAME_EDGE_SOURCE","isPaddingCode","code","trimVariablePadding","raw","start","end","normalizeVariableName","name","index","isValidVariableName","createVariableExpressionRegex","flags","readVariableMarker","text","close","rawName","findVariableMarkers","markers","cursor","marker","formatVariableReference","formatVariableAssignment","reference"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,77 @@
1
+ import { __exports as l } from "../../../_virtual/variable-marker.es.js";
2
+ var V;
3
+ function t() {
4
+ return V ? l : (V = 1, (function(a) {
5
+ Object.defineProperty(a, "__esModule", { value: !0 }), a.formatVariableAssignment = a.formatVariableReference = a.findVariableMarkers = a.readVariableMarker = a.createVariableExpressionRegex = a.isValidVariableName = a.normalizeVariableName = a.RAW_VARIABLE_MARKER_SOURCE = a.RAW_VARIABLE_BODY_SOURCE = a.VARIABLE_ASSIGNMENT_SOURCE = a.VARIABLE_REFERENCE_SOURCE = a.trimVariablePadding = a.VARIABLE_PADDING_SOURCE = a.VARIABLE_NAME_SOURCE = void 0;
6
+ const R = "\\u0009-\\u000d\\u001c-\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000", A = "\\u0000-\\u001f\\u007f-\\u009f\\u2028\\u2029", f = `(?:(?!\\}\\})[^${A}])`, _ = `(?:(?!\\}\\})[^${A}${R}])`;
7
+ a.VARIABLE_NAME_SOURCE = `${_}(?:${f}*?${_})?`, a.VARIABLE_PADDING_SOURCE = `[${R}]*`;
8
+ const u = (e) => e >= 9 && e <= 13 || e >= 28 && e <= 32 || e === 133 || e === 160 || e === 5760 || e >= 8192 && e <= 8202 || e === 8232 || e === 8233 || e === 8239 || e === 8287 || e === 12288, m = (e) => {
9
+ let r = 0, n = e.length;
10
+ for (; r < n && u(e.charCodeAt(r)); )
11
+ r += 1;
12
+ for (; n > r && u(e.charCodeAt(n - 1)); )
13
+ n -= 1;
14
+ return e.slice(r, n);
15
+ };
16
+ a.trimVariablePadding = m, a.VARIABLE_REFERENCE_SOURCE = `\\{\\{${a.VARIABLE_PADDING_SOURCE}(${a.VARIABLE_NAME_SOURCE})${a.VARIABLE_PADDING_SOURCE}\\}\\}`, a.VARIABLE_ASSIGNMENT_SOURCE = `%${a.VARIABLE_REFERENCE_SOURCE}`, a.RAW_VARIABLE_BODY_SOURCE = "(?:(?!\\}\\})[\\s\\S])*", a.RAW_VARIABLE_MARKER_SOURCE = `\\{\\{${a.RAW_VARIABLE_BODY_SOURCE}\\}\\}`;
17
+ const b = (e) => {
18
+ const r = (0, a.trimVariablePadding)(e);
19
+ if (!r)
20
+ return null;
21
+ for (let n = 0; n < r.length; n += 1) {
22
+ const i = r.charCodeAt(n);
23
+ if (i <= 31 || i >= 127 && i <= 159 || i === 8232 || i === 8233 || i === 125 && r.charCodeAt(n + 1) === 125)
24
+ return null;
25
+ }
26
+ return r;
27
+ };
28
+ a.normalizeVariableName = b;
29
+ const C = (e) => (0, a.normalizeVariableName)(e) !== null;
30
+ a.isValidVariableName = C;
31
+ const c = (e = "g") => new RegExp(a.VARIABLE_REFERENCE_SOURCE, e);
32
+ a.createVariableExpressionRegex = c;
33
+ const O = (e, r = 0) => {
34
+ if (!Number.isInteger(r) || r < 0 || !e.startsWith("{{", r))
35
+ return null;
36
+ const n = e.indexOf("}}", r + 2);
37
+ if (n < 0)
38
+ return null;
39
+ const i = e.slice(r + 2, n);
40
+ return {
41
+ start: r,
42
+ end: n + 2,
43
+ rawName: i,
44
+ name: (0, a.normalizeVariableName)(i)
45
+ };
46
+ };
47
+ a.readVariableMarker = O;
48
+ const N = (e) => {
49
+ const r = [];
50
+ let n = 0;
51
+ for (; ; ) {
52
+ const i = e.indexOf("{{", n);
53
+ if (i < 0)
54
+ return r;
55
+ const E = (0, a.readVariableMarker)(e, i);
56
+ if (!E)
57
+ return r;
58
+ r.push(E), n = E.end;
59
+ }
60
+ };
61
+ a.findVariableMarkers = N;
62
+ const S = (e) => {
63
+ const r = (0, a.normalizeVariableName)(e);
64
+ return r === null ? null : `{{ ${r} }}`;
65
+ };
66
+ a.formatVariableReference = S;
67
+ const d = (e) => {
68
+ const r = (0, a.formatVariableReference)(e);
69
+ return r === null ? null : `%${r}`;
70
+ };
71
+ a.formatVariableAssignment = d;
72
+ })(l), l);
73
+ }
74
+ export {
75
+ t as __require
76
+ };
77
+ //# sourceMappingURL=variable-marker.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable-marker.es.js","sources":["../../../../node_modules/remark-flow/dist/variable-marker.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatVariableAssignment = exports.formatVariableReference = exports.findVariableMarkers = exports.readVariableMarker = exports.createVariableExpressionRegex = exports.isValidVariableName = exports.normalizeVariableName = exports.RAW_VARIABLE_MARKER_SOURCE = exports.RAW_VARIABLE_BODY_SOURCE = exports.VARIABLE_ASSIGNMENT_SOURCE = exports.VARIABLE_REFERENCE_SOURCE = exports.trimVariablePadding = exports.VARIABLE_PADDING_SOURCE = exports.VARIABLE_NAME_SOURCE = void 0;\n/**\n * Variable names are opaque Unicode text. Only control characters, line separators and the\n * literal marker terminator are forbidden after trimming the established Python padding set.\n */\nconst PYTHON_WHITESPACE_SOURCE = '\\\\u0009-\\\\u000d\\\\u001c-\\\\u0020\\\\u0085\\\\u00a0\\\\u1680\\\\u2000-\\\\u200a\\\\u2028\\\\u2029\\\\u202f\\\\u205f\\\\u3000';\n// JavaScript's \\s and String.trim() differ from Python's whitespace definition: notably,\n// Python includes U+0085 and U+001C–001F but keeps U+FEFF as part of a name. Use one explicit\n// set for the name, marker padding and normalization so keys survive the browser/server trip.\nconst CONTROL_SOURCE = '\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u2028\\\\u2029';\nconst NAME_CHARACTER_SOURCE = `(?:(?!\\\\}\\\\})[^${CONTROL_SOURCE}])`;\nconst NAME_EDGE_SOURCE = `(?:(?!\\\\}\\\\})[^${CONTROL_SOURCE}${PYTHON_WHITESPACE_SOURCE}])`;\nexports.VARIABLE_NAME_SOURCE = `${NAME_EDGE_SOURCE}(?:${NAME_CHARACTER_SOURCE}*?${NAME_EDGE_SOURCE})?`;\nexports.VARIABLE_PADDING_SOURCE = `[${PYTHON_WHITESPACE_SOURCE}]*`;\nconst isPaddingCode = (code) => (code >= 0x09 && code <= 0x0d) ||\n (code >= 0x1c && code <= 0x20) ||\n code === 0x85 ||\n code === 0xa0 ||\n code === 0x1680 ||\n (code >= 0x2000 && code <= 0x200a) ||\n code === 0x2028 ||\n code === 0x2029 ||\n code === 0x202f ||\n code === 0x205f ||\n code === 0x3000;\n/** Trim only the established Python padding set, in linear time; U+FEFF is preserved. */\nconst trimVariablePadding = (raw) => {\n let start = 0;\n let end = raw.length;\n while (start < end && isPaddingCode(raw.charCodeAt(start)))\n start += 1;\n while (end > start && isPaddingCode(raw.charCodeAt(end - 1)))\n end -= 1;\n return raw.slice(start, end);\n};\nexports.trimVariablePadding = trimVariablePadding;\n/** A variable reference, with its normalized name in the first capture group. */\nexports.VARIABLE_REFERENCE_SOURCE = `\\\\{\\\\{${exports.VARIABLE_PADDING_SOURCE}(${exports.VARIABLE_NAME_SOURCE})${exports.VARIABLE_PADDING_SOURCE}\\\\}\\\\}`;\n/** The assignment marker at the beginning of an interaction. */\nexports.VARIABLE_ASSIGNMENT_SOURCE = `%${exports.VARIABLE_REFERENCE_SOURCE}`;\n// Syntax-only source used when claiming the whole marker before validating its body. It must\n// stop at the first literal `}}`, even if the body is invalid or contains another `{{`.\nexports.RAW_VARIABLE_BODY_SOURCE = '(?:(?!\\\\}\\\\})[\\\\s\\\\S])*';\nexports.RAW_VARIABLE_MARKER_SOURCE = `\\\\{\\\\{${exports.RAW_VARIABLE_BODY_SOURCE}\\\\}\\\\}`;\n/** Trim marker padding without changing a name's punctuation, case or Unicode. */\nconst normalizeVariableName = (raw) => {\n const name = (0, exports.trimVariablePadding)(raw);\n if (!name)\n return null;\n for (let index = 0; index < name.length; index += 1) {\n const code = name.charCodeAt(index);\n if (code <= 0x1f ||\n (code >= 0x7f && code <= 0x9f) ||\n code === 0x2028 ||\n code === 0x2029 ||\n (code === 0x7d && name.charCodeAt(index + 1) === 0x7d))\n return null;\n }\n return name;\n};\nexports.normalizeVariableName = normalizeVariableName;\n/** Whether a name, after trimming marker padding, follows the shared grammar. */\nconst isValidVariableName = (raw) => (0, exports.normalizeVariableName)(raw) !== null;\nexports.isValidVariableName = isValidVariableName;\n/**\n * Create an independent valid-token matcher. Anchor its source when validating a complete\n * token; scan Markdown documents with findDocumentVariableMarkers instead of a restarting regex.\n */\nconst createVariableExpressionRegex = (flags = 'g') => new RegExp(exports.VARIABLE_REFERENCE_SOURCE, flags);\nexports.createVariableExpressionRegex = createVariableExpressionRegex;\n/** Read exactly one marker at `start`; invalid bodies are still one indivisible token. */\nconst readVariableMarker = (text, start = 0) => {\n if (!Number.isInteger(start) || start < 0 || !text.startsWith('{{', start))\n return null;\n const close = text.indexOf('}}', start + 2);\n if (close < 0)\n return null;\n const rawName = text.slice(start + 2, close);\n return {\n start,\n end: close + 2,\n rawName,\n name: (0, exports.normalizeVariableName)(rawName),\n };\n};\nexports.readVariableMarker = readVariableMarker;\n/** Scan raw markers once, without treating an opening brace inside a key as another marker. */\nconst findVariableMarkers = (text) => {\n const markers = [];\n let cursor = 0;\n for (;;) {\n const start = text.indexOf('{{', cursor);\n if (start < 0)\n return markers;\n const marker = (0, exports.readVariableMarker)(text, start);\n if (!marker)\n return markers;\n markers.push(marker);\n cursor = marker.end;\n }\n};\nexports.findVariableMarkers = findVariableMarkers;\n/** Padding keeps a final single `}` in the name separate from the closing `}}`. */\nconst formatVariableReference = (raw) => {\n const name = (0, exports.normalizeVariableName)(raw);\n return name === null ? null : `{{ ${name} }}`;\n};\nexports.formatVariableReference = formatVariableReference;\n/** Serialize a valid assignment marker with the same padding as an ordinary reference. */\nconst formatVariableAssignment = (raw) => {\n const reference = (0, exports.formatVariableReference)(raw);\n return reference === null ? null : `%${reference}`;\n};\nexports.formatVariableAssignment = formatVariableAssignment;\n//# sourceMappingURL=variable-marker.js.map"],"names":["exports","PYTHON_WHITESPACE_SOURCE","CONTROL_SOURCE","NAME_CHARACTER_SOURCE","NAME_EDGE_SOURCE","isPaddingCode","code","trimVariablePadding","raw","start","end","normalizeVariableName","name","index","isValidVariableName","createVariableExpressionRegex","flags","readVariableMarker","text","close","rawName","findVariableMarkers","markers","cursor","marker","formatVariableReference","formatVariableAssignment","reference"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,2 +1,15 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../_virtual/variable-name.cjs");var R;function t(){return R||(R=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.extractVariableNames=e.createVariableExpressionRegex=e.isValidVariableName=e.normalizeVariableName=e.VARIABLE_ASSIGNMENT_SOURCE=e.VARIABLE_REFERENCE_SOURCE=e.VARIABLE_NAME_SOURCE=void 0;const i="\\u0009-\\u000d\\u001c-\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000";e.VARIABLE_NAME_SOURCE=`[^{}${i}]+`;const n=`[${i}]*`,l=new RegExp(`^[${i}]+|[${i}]+$`,"gu");e.VARIABLE_REFERENCE_SOURCE=`\\{\\{${n}(${e.VARIABLE_NAME_SOURCE})${n}\\}\\}`,e.VARIABLE_ASSIGNMENT_SOURCE=`%${e.VARIABLE_REFERENCE_SOURCE}`;const u=new RegExp(`^${e.VARIABLE_NAME_SOURCE}$`,"u"),_=a=>{const E=a.replace(l,"");return u.test(E)?E:null};e.normalizeVariableName=_;const A=a=>(0,e.normalizeVariableName)(a)!==null;e.isValidVariableName=A;const V=(a="g")=>new RegExp(e.VARIABLE_REFERENCE_SOURCE,a);e.createVariableExpressionRegex=V;const N=a=>{const E=new Set;for(const c of a.matchAll((0,e.createVariableExpressionRegex)("gu")))E.add(c[1]);return[...E]};e.extractVariableNames=N})(r.__exports)),r.__exports}exports.__require=t;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("../../../_virtual/variable-name.cjs"),cn=require("./variable-marker.cjs"),Bn=require("./escaping.cjs");var un;function Hn(){return un||(un=1,(function(w){var an=C.__exports&&C.__exports.__createBinding||(Object.create?(function(n,r,t,e){e===void 0&&(e=t);var o=Object.getOwnPropertyDescriptor(r,t);(!o||("get"in o?!r.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(n,e,o)}):(function(n,r,t,e){e===void 0&&(e=t),n[e]=r[t]})),fn=C.__exports&&C.__exports.__exportStar||function(n,r){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&an(r,n,t)};Object.defineProperty(w,"__esModule",{value:!0}),w.extractVariableNames=w.findRejectedDocumentInlineOpenings=w.findDocumentVariableMarkers=w.isInlineCodeBoundaryLine=void 0,fn(cn.__require(),w);const dn=Bn.__require(),Q=cn.__require();class hn{constructor(r){this.text=r;let t=1;for(let o=0;o<r.length;o++)r[o]==="\r"?(t++,r[o+1]===`
2
+ `&&o++):r[o]===`
3
+ `&&t++;this.starts=new Uint32Array(t);let e=1;for(let o=0;o<r.length;o++)r[o]==="\r"?(r[o+1]===`
4
+ `&&o++,this.starts[e++]=o+1):r[o]===`
5
+ `&&(this.starts[e++]=o+1)}get length(){return this.starts.length}start(r){return this.starts[r]}at(r){const t=this.starts[r],e=this.starts[r+1]??this.text.length;let o=e;return r+1<this.starts.length&&(o--,this.text[o]===`
6
+ `&&this.text[o-1]==="\r"&&o--),{start:t,contentEnd:o,end:e}}}function k(n,r){let t=0,e=n.length;for(;t<e;){const o=t+e>>>1;n.start(o)<=r?t=o+1:e=o}return Math.max(0,t-1)}const j=/[\t\n\f\r ]/,Y=/[\t\n\r ]/,x=/[!-/:-@[-`{-~]/,gn=32,En=32,bn=63,mn=/[A-Za-z0-9.!#$%&'*+/=?^_`{|}~-]/,pn=/[A-Za-z0-9]/,V=/^ {0,3}#{1,6}(?:[ \t]|$)/,K=/^ {0,3}(?:(?:\*[ \t]*){3,}|(?:-[ \t]*){3,}|(?:_[ \t]*){3,})$/,_n=/^ {0,3}(?:=+|-+)[\t ]*$/,nn=/^ {0,3}(?:>|(?:[-+*]|1[.)])[ \t]+[^ \t])/,yn=/^[ \t]*\r?$|^ {0,3}(?:`{3,}[^`\r\n]*|~{3,}[^\r\n]*)\r?$/,Sn=n=>yn.test(n)||V.test(n)||_n.test(n)||K.test(n)||nn.test(n)||$n(n);w.isInlineCodeBoundaryLine=Sn;function B(n,r,t,e){const o=e.get(r);if(o!==void 0&&t>=o)return-1;const s=n.indexOf(r,t);return s<0&&e.set(r,t),s}function X(n,r,t){for(const[c,g]of[["<!--","-->"],["<![CDATA[","]]>"],["<?","?>"]])if(n.startsWith(c,r)){const d=B(n,g,r+c.length,t);return d<0?null:d+g.length}if(/^<![A-Za-z]/.test(n.slice(r,r+3))){const c=B(n,">",r+3,t);return c<0?null:c+1}let e=r+1;const o=n[e]==="/";o&&e++;const s=/[A-Za-z][A-Za-z0-9-]*/y;if(s.lastIndex=e,!s.exec(n))return null;for(e=s.lastIndex;;){const c=e;for(;e<n.length&&j.test(n[e]);)e++;if(n[e]===">")return e+1;if(!o&&n.startsWith("/>",e))return e+2;if(o||e===c)return null;const g=/[A-Za-z_:][A-Za-z0-9_.:-]*/y;if(g.lastIndex=e,!g.exec(n))return null;e=g.lastIndex;const d=e;for(;e<n.length&&j.test(n[e]);)e++;if(n[e]!=="="){e=d;continue}for(e++;e<n.length&&j.test(n[e]);)e++;const f=n[e];if(f==='"'||f==="'"){const i=B(n,f,e+1,t);if(i<0)return null;e=i+1}else{const i=e;for(;e<n.length&&!/[\t\n\f\r "'=<>`]/.test(n[e]);)e++;if(e===i)return null}}}function wn(n,r){let t=r+1;if(/[A-Za-z]/.test(n[t]??"")){let e=0;for(;e<En&&/[A-Za-z0-9+.-]/.test(n[t]??"");)t++,e++;if(e>=2&&n[t]===":"){for(t++;t<n.length;){const o=n.charCodeAt(t);if(n[t]===">")return{bodyStart:r+1,bodyEnd:t,end:t+1};if(o>0&&o<=32||o===127||n[t]==="<")return null;t++}return null}}for(t=r+1;t<n.length&&mn.test(n[t]);)t++;if(t===r+1||n[t]!=="@")return null;for(t++;;){if(!pn.test(n[t]??""))return null;const e=t;for(;t<n.length&&/[A-Za-z0-9-]/.test(n[t]);)t++;if(t-e>bn||n[t-1]==="-")return null;if(n[t]===">")return{bodyStart:r+1,bodyEnd:t,end:t+1};if(n[t]!==".")return null;t++}}function A(n,r,t){let e=0;for(;e<t;){if(!r.virtualPadding){const s=n[r.offset];if(s!==" "&&s!==" ")break;const c=s===" "?4-r.column%4:1;r.offset++,r.column+=c,r.virtualPadding=c}const o=Math.min(t-e,r.virtualPadding);r.virtualPadding-=o,e+=o}return e}function M(n,r){return A(n,{...r},4)}function An(n,r,t,e,o,s=[]){if(t>0&&!e)return null;let c=null;const g=t;for(;t<r.length;t++){const{start:d,contentEnd:f}=r.at(t),i=n.slice(d,f),u=t===g?o:T(i,s);if(u===null){if(!s.some(m=>"quote"in m)&&/^[\t ]*$/.test(i))continue;return c}const _=i.slice(u.offset);if(/^[\t ]*$/.test(_)){if(c===null)return null}else{if(M(i,u)<4)return c;c=f}}return c}function tn(n,r,t){const e=/^ {0,3}<(script|style|pre|textarea)(?=[\t\n\f\r >]|$)/i.exec(n.slice(r,r+16));if(!e)return null;const o=X(n,r+e[0].indexOf("<"),t);return{name:e[1],end:o??r+e[0].length}}function In(n,r,t,e,o){const s=tn(n,r,t);if(!s)return null;const c=o?.()??n.length;if(s.end>c)return null;const g=new RegExp(`</${s.name}[ \\t\\r\\n]*>`,"gi");g.lastIndex=s.end;const d=g.exec(n),f=d?d.index+d[0].length:c,i=Math.min(c,e.at(k(e,f)).contentEnd);return{bodyStart:s.end,bodyEnd:i,end:i}}function Ln(n,r,t,e,o,s=[]){const c=/^ {0,3}<(?:!--|\?|!\[CDATA\[|![A-Z])/.exec(n.slice(r,r+12));if(!c)return null;const g=o?.()??n.length,d=c[0].slice(c[0].indexOf("<")),f=d==="<!--"?"-->":d==="<?"?"?>":d==="<![CDATA["?"]]>":">";let i=r+c[0].length,u=k(e,i),_=null;for(;;){const S=B(n,f,i,t);if(S<0||S+f.length>g)break;if(f===">"&&s.length){for(;u+1<e.length&&e.start(u+1)<=S;)u++;const y=e.at(u),h=P(n.slice(y.start,y.contentEnd),s);if(h!==null&&S<y.start+h){i=S+f.length;continue}}_=S+f.length;break}if(_===null)return g<n.length?{bodyStart:r+c[0].length,bodyEnd:g,end:g}:null;const m=Math.min(g,e.at(k(e,_)).contentEnd);return{bodyStart:_,bodyEnd:m,end:m}}function W(n,r){if(n[r]!==`
7
+ `&&n[r]!=="\r")return!1;let t=r+(n[r]==="\r"&&n[r+1]===`
8
+ `?2:1);for(;n[t]===" "||n[t]===" ";)t++;return n[t]===`
9
+ `||n[t]==="\r"}function H(n,r){for(;r<n.length&&Y.test(n[r]);){if(W(n,r))return null;r++}return r}function en(n,r,t=gn){let e=r;const o=()=>n[e]==="\\"&&x.test(n[e+1]??"");if(n[e]==="<"){for(e++;e<n.length&&n[e]!==">";){if(n[e]===`
10
+ `||n[e]==="\r"||n[e]==="<")return null;e+=o()?2:1}if(n[e]!==">")return null;e++}else{let s=0;for(;e<n.length&&!Y.test(n[e]);)if(o())e+=2;else if(n[e]==="("){if(++s>t)return null;e++}else if(n[e]===")"){if(s===0)break;s--,e++}else{const c=n.charCodeAt(e);if(c<32||c===127)return null;e++}if(s)return null}return e}function rn(n,r,t=W){let e=r;const o=()=>n[e]==="\\"&&x.test(n[e+1]??""),s=n[e],c=s==="("?")":s;if(!['"',"'","("].includes(s))return null;for(e++;e<n.length&&n[e]!==c;){if(t(n,e))return null;e+=o()?2:1}return n[e]===c?e+1:null}function vn(n,r){let t=H(n,r+1);if(t===null||(t=en(n,t),t===null))return null;const e=t;return t=H(n,t),t===null?null:n[t]===")"?t+1:t===e||(t=rn(n,t),t===null)||(t=H(n,t),t===null)?null:n[t]===")"?t+1:null}function kn(n,r,t,e=r.start(t),o=[],s){const c=r.at(t),g=/^ {0,3}\[((?:\\[^\r\n]|[^[\]\\\r\n]){1,999})\]:/.exec(n.slice(e,c.contentEnd));if(!g||/^[\t ]*$/.test(g[1]))return null;const d=s?.()??q(n,r,t,o,!0),f=(l,a)=>{if(n[a]!==`
11
+ `&&n[a]!=="\r")return!1;const E=k(r,a)+1;if(E>=r.length||r.start(E)>=d)return!0;const p=r.at(E),b=n.slice(p.start,p.contentEnd),I=P(b,o);return I===null?(0,w.isInlineCodeBoundaryLine)(b):/^[\t ]*$/.test(b.slice(I))},i=l=>{let a=l;for(;;){if(a=H(n,a)??-1,a<0||a>=d)return null;const E=r.at(k(r,a));if(!o.length||a!==E.start)return a;const p=n.slice(E.start,E.contentEnd),b=P(p,o);if(b===null)return a;if(/^[\t ]*$/.test(p.slice(b)))return null;if(!b)return a;a+=b}};let u=i(e+g[0].length);if(u===null)return null;const _=u,m=en(n,u,1/0);if(m===null||m===_)return null;for(u=m;n[u]===" "||n[u]===" ";)u++;const S=u,y=u===n.length||n[u]==="\r"||n[u]===`
12
+ `;if(y){if(u=i(u),u===null)return S}else if(u===m)return null;const h=rn(n,u,f);if(h===null)return y?S:null;for(u=h;n[u]===" "||n[u]===" ";)u++;return u<=d&&(u===n.length||n[u]==="\r"||n[u]===`
13
+ `)?u:y?S:null}function on(n,r,t,e){let o=0;for(let h=n.indexOf(r);h>=0;){o++;do h++;while(n[h]===r);h=n.indexOf(r,h)}const s=new Uint32Array(o),c=new Uint32Array(o),g=new Uint32Array(o),d=4294967295;g.fill(d);let f,i=0;for(let h=n.indexOf(r);h>=0;){const l=h;do h++;while(n[h]===r);s[i]=l,c[i++]=h-l,h=n.indexOf(r,h)}let u=0,_=[];for(let h=0;h<e.length;h++){const{start:l,contentEnd:a,end:E}=e.at(h),p=n.slice(l,a),b=G(p,_,h===0||/^[\t ]*$/.test(n.slice(e.at(h-1).start,e.at(h-1).contentEnd))),I=p.slice(b.contentStart);b.indentation<4&&V.test(I)?(y(u,l),y(l,a),u=E,_=b.steps):b.entered?(y(u,l),u=l,_=b.steps):(b.indentation<4||/^[\t ]*$/.test(I))&&((0,w.isInlineCodeBoundaryLine)(I)||tn(n,l+b.contentStart,t))&&(y(u,l),u=E,_=b.steps)}y(u,n.length);let m=0;return{get(h){for(;m<o&&s[m]<h;)m++;let l=m,a=d,E=h,p=0;return s[l]===h?(p=c[l],a=g[l],E+=p):l>0&&s[l-1]+1===h&&f&&(l--,p=c[l]-1,a=f[l],E+=p),a===d?void 0:{bodyStart:E,bodyEnd:a,end:a+p}}};function S(h){let l=0,a=o;for(;l<a;){const E=l+a>>>1;s[E]<h?l=E+1:a=E}return l}function y(h,l){const a=S(h),E=S(l);if(a===E)return;const p=new Map;for(let b=E-1;b>=a;b--){const I=s[b],v=c[b];g[b]=p.get(v)??d;let D=0;for(let N=I-1;N>=0&&n[N]==="\\";N--)D++;D%2&&v>1&&(f||(f=new Uint32Array(o),f.fill(d)),f[b]=p.get(v-1)??d),p.set(v,I)}}}function G(n,r,t){const e=T(n,r),o=e??{offset:0,column:0,virtualPadding:0},s=n.slice(o.offset),c=Nn(n,o),g=c.steps.length>0&&!K.test(s)&&(t||nn.test(s)),d=g?c.position:o,f={...d};return A(n,f,3),{contentStart:f.offset,position:d,indentation:M(n,d),steps:g?[...e===null?[]:r,...c.steps]:e===null?[]:r,entered:g}}function q(n,r,t,e,o=!1){if(!e.length)return n.length;for(let s=t+1;s<r.length;s++){const c=r.at(s),g=n.slice(c.start,c.contentEnd);if(P(g,e)===null){if(/^[\t ]*$/.test(g)){if(!o&&!e.some(d=>"quote"in d))continue}else if(o&&!(0,w.isInlineCodeBoundaryLine)(g))continue;return c.start}}return n.length}function Nn(n,r){let t={...r};const e=[];for(;;){const o={...t},s=A(n,t,3);if(!t.virtualPadding&&n[t.offset]===">"){e.push({quote:!0}),t.offset++,t.column++,A(n,t,1);continue}const c=t.virtualPadding?null:/^(?:[-+*]|\d{1,9}[.)])(?=[ \t])/.exec(n.slice(t.offset));if(c){t.offset+=c[0].length,t.column+=c[0].length;const g={...t};let d=A(n,t,5);d>4&&(t=g,d=A(n,t,1)),e.push({indent:s+c[0].length+d});continue}return{position:o,steps:e}}}function Cn(n,r,t){if(M(n,r)>=4)return null;const e={...r};A(n,e,3);const o=/^(`{3,})([^`]*$)|^(~{3,})(.*$)/.exec(n.slice(e.offset)),s=o?.[1]??o?.[3];return s?{marker:s[0],size:s.length,steps:t}:null}function T(n,r){const t={offset:0,column:0,virtualPadding:0};for(let e=0;e<r.length;e++){const o=r[e];if("quote"in o){if(A(n,t,3),t.virtualPadding||n[t.offset]!==">")return null;t.offset++,t.column++,A(n,t,1)}else if(A(n,t,o.indent)<o.indent)return/^[\t ]*$/.test(n.slice(t.offset))&&!r.slice(e+1).some(s=>"quote"in s)?t:null}return t}function P(n,r){return T(n,r)?.offset??null}function On(n,r,t,e,o){const s=r.at(t),c=Cn(n.slice(s.start,s.contentEnd),e,o);if(!c)return null;const g=new RegExp(`^ {0,3}${c.marker}{${c.size},}[\\t ]*$`);for(let d=t+1;d<r.length;d++){const f=r.at(d),i=n.slice(f.start,f.contentEnd),u=T(i,c.steps);if(u===null){if(/^[\t ]*$/.test(i))continue;return{bodyStart:s.end,bodyEnd:f.start,end:f.start}}const _={...u};if(A(i,_,3),M(i,u)<4&&g.test(i.slice(_.offset)))return{bodyStart:s.end,bodyEnd:f.start,end:f.contentEnd}}return{bodyStart:s.end,bodyEnd:n.length,end:n.length}}const ln=new Set("address article aside base basefont blockquote body caption center col colgroup dd details dialog dir div dl dt fieldset figcaption figure footer form frame frameset h1 h2 h3 h4 h5 h6 head header hr html iframe legend li link main menu menuitem nav noframes ol optgroup option p param search section summary table tbody td tfoot th thead title tr track ul".split(" "));function $n(n){const r=/^ {0,3}<\/?([A-Za-z][A-Za-z0-9-]*)(?=[ \t/>]|$)/.exec(n);return r!==null&&ln.has(r[1].toLowerCase())}function Mn(n,r,t,e,o=r.start(t),s=[],c){const g=r.at(t),d=n.slice(o,g.contentEnd),f=/^ {0,3}<\/?([A-Za-z][A-Za-z0-9-]*)(?=[ \t/>]|$)/.exec(d);if(!f)return null;const i=o+d.indexOf("<"),u=X(n,i,e);if(!ln.has(f[1].toLowerCase())){const S=t>0?r.at(t-1):void 0;if(S&&!/^[\t ]*$/.test(n.slice(S.start,S.contentEnd))||u===null||u>g.contentEnd||!/^[\t ]*$/.test(n.slice(u,g.contentEnd)))return null}const _=c?.()??q(n,r,t,s),m=u===null||u>_?o:u;for(let S=Math.max(t+1,k(r,m));S<r.length;S++){const y=r.at(S);if(y.start>=_)return{bodyStart:m,bodyEnd:_,end:_};const h=n.slice(y.start,y.contentEnd),l=P(h,s);if(y.start>=m&&(l===null||/^[\t ]*$/.test(h.slice(l))))return{bodyStart:m,bodyEnd:y.start,end:y.start}}return{bodyStart:m,bodyEnd:_,end:_}}const sn=(n,r)=>{if(!n.includes("{{"))return[];const t=[],e=new Map,o=new hn(n);let s,c;const g=[],d=new Set,f=(h,l)=>{const a=n.slice(h,l);let E=0;for(;;){const p=a.indexOf("{{",E);if(p<0)return;const b=(0,Q.readVariableMarker)(a,p);if(!b){t.push({start:h+p,end:l,rawName:a.slice(p+2),name:null});return}t.push({...b,start:h+b.start,end:h+b.end}),E=b.end}};let i=0,u=-1,_=0,m=[],S,y;for(;i<n.length;){for(;_<o.length&&o.start(_)<i;)_++;if(_<o.length&&o.start(_)===i){const l=_,a=o.at(l);if(a.start===a.contentEnd){i=a.end;continue}const E=l>0?o.at(l-1):void 0,p=E?n.slice(E.start,E.contentEnd):"",b=T(p,m),I={...b??{offset:0,column:0,virtualPadding:0}};A(p,I,3);const v=p.slice(I.offset),D=b!==null&&M(p,b)>=4,N=!E||/^[\t ]*$/.test(v)||!D&&V.test(v)||!D&&K.test(v)||E.contentEnd===u,L=G(n.slice(a.start,a.contentEnd),m,N);m!==L.steps&&(S=void 0,y=void 0),m=L.steps;const F=()=>S??(S=q(n,o,l,m)),zn=()=>((y===void 0||y<=a.start)&&(y=q(n,o,l,m,!0)),y),R=a.start+L.contentStart,U=L.indentation<4&&(N||L.entered)?kn(n,o,l,R,m,zn):null;if(U!==null){f(i,U),u=U,i=U;continue}(!E||/^[\t ]*$/.test(n.slice(E.start,E.contentEnd)))&&(g.length=0,d.clear());const Z=On(n,o,l,L.position,m);if(Z){f(i,Z.bodyEnd),u=Z.end,i=Z.end;continue}const J=An(n,o,l,N||L.entered,L.position,m);if(J!==null){f(i,J),i=J;continue}const O=L.indentation<4?In(n,R,e,o,F):null;if(O){f(i,O.bodyStart),f(O.bodyStart,O.bodyEnd),u=O.end,i=O.end;continue}const $=L.indentation<4?Ln(n,R,e,o,F,m):null;if($){f(i,$.bodyStart),f($.bodyStart,$.bodyEnd),u=$.end,i=$.end;continue}const z=L.indentation<4?Mn(n,o,l,e,R,m,F):null;if(z){f(i,z.bodyStart),f(z.bodyStart,z.bodyEnd),i=z.end;continue}}if(n.startsWith("{{",i)){const l=(0,Q.readVariableMarker)(n,i);if(!l){t.push({start:i,end:n.length,rawName:n.slice(i+2),name:null});break}t.push(l),i=l.end;continue}if(n[i]==="\\"){i+=2;continue}const h=n.startsWith("?[",i)?(0,dn.readDocumentInteraction)(n,i,l=>{if(W(n,l))return!0;if(n[l]!==`
14
+ `&&n[l]!=="\r")return!1;const a=k(o,l)+1;if(a>=o.length)return!1;const E=o.at(a),p=n.slice(E.start,E.contentEnd),b=G(p,m,!1);return b.entered||b.indentation<4&&(0,w.isInlineCodeBoundaryLine)(p.slice(b.contentStart))}):null;if(h){f(i+2,h.end-(h.complete?1:0)),i=h.end;continue}if(n[i]==="["){let l=0;for(let E=i-2;E>=0&&n[E]==="\\";E--)l++;const a={image:n[i-1]==="!"&&l%2===0,active:!0};g.push(a),a.image||d.add(a)}if(n[i]==="]"&&g.length){const l=g.pop();if(l&&d.delete(l),l?.active&&n[i+1]==="("){const a=vn(n,i+1);if(a!==null){if(!l.image){for(const E of d)E.active=!1;d.clear()}f(i+2,a-1),i=a;continue}}}if(n[i]==="$"){const l=(c??(c=on(n,"$",e,o))).get(i);if(l){f(l.bodyStart,l.bodyEnd),i=l.end;continue}for(r?.push(i);n[i]==="$";)i++;continue}if(n[i]==="`"||n[i]==="~"){const l=n[i]==="`"?(s??(s=on(n,"`",e,o))).get(i):void 0;if(l){f(i,l.bodyEnd),i=l.end;continue}n[i]==="`"&&r?.push(i);const a=n[i];for(;n[i]===a;)i++;continue}if(n[i]==="<"){const l=wn(n,i);if(l){f(l.bodyStart,l.bodyEnd),i=l.end;continue}const a=X(n,i,e);if(a!==null){f(i,a),i=a;continue}}i++}return t},Tn=n=>sn(n);w.findDocumentVariableMarkers=Tn;const Pn=n=>{const r=[];return sn(n,r),Uint32Array.from(r)};w.findRejectedDocumentInlineOpenings=Pn;const Dn=n=>{const r=new Set;for(const t of(0,w.findDocumentVariableMarkers)(n))t.name!==null&&r.add(t.name);return[...r]};w.extractVariableNames=Dn})(C.__exports)),C.__exports}exports.__require=Hn;
2
15
  //# sourceMappingURL=variable-name.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"variable-name.cjs","sources":["../../../../node_modules/remark-flow/dist/variable-name.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractVariableNames = exports.createVariableExpressionRegex = exports.isValidVariableName = exports.normalizeVariableName = exports.VARIABLE_ASSIGNMENT_SOURCE = exports.VARIABLE_REFERENCE_SOURCE = exports.VARIABLE_NAME_SOURCE = void 0;\n/**\n * Variable names share the teaching engine's existing grammar: one or more characters other\n * than Python whitespace or braces. Punctuation and Unicode are kept exactly as written.\n */\nconst PYTHON_WHITESPACE_SOURCE = '\\\\u0009-\\\\u000d\\\\u001c-\\\\u0020\\\\u0085\\\\u00a0\\\\u1680\\\\u2000-\\\\u200a\\\\u2028\\\\u2029\\\\u202f\\\\u205f\\\\u3000';\n// JavaScript's \\s and String.trim() differ from Python's whitespace definition: notably,\n// Python includes U+0085 and U+001C–001F but keeps U+FEFF as part of a name. Use one explicit\n// set for the name, marker padding and normalization so keys survive the browser/server trip.\nexports.VARIABLE_NAME_SOURCE = `[^{}${PYTHON_WHITESPACE_SOURCE}]+`;\nconst PADDING_SOURCE = `[${PYTHON_WHITESPACE_SOURCE}]*`;\nconst PADDING = new RegExp(`^[${PYTHON_WHITESPACE_SOURCE}]+|[${PYTHON_WHITESPACE_SOURCE}]+$`, 'gu');\n/** A variable reference, with its normalized name in the first capture group. */\nexports.VARIABLE_REFERENCE_SOURCE = `\\\\{\\\\{${PADDING_SOURCE}(${exports.VARIABLE_NAME_SOURCE})${PADDING_SOURCE}\\\\}\\\\}`;\n/** The assignment marker at the beginning of an interaction. */\nexports.VARIABLE_ASSIGNMENT_SOURCE = `%${exports.VARIABLE_REFERENCE_SOURCE}`;\nconst VARIABLE_NAME = new RegExp(`^${exports.VARIABLE_NAME_SOURCE}$`, 'u');\n/** Trim marker padding without changing a name's punctuation, case or Unicode. */\nconst normalizeVariableName = (raw) => {\n const name = raw.replace(PADDING, '');\n return VARIABLE_NAME.test(name) ? name : null;\n};\nexports.normalizeVariableName = normalizeVariableName;\n/** Whether a name, after trimming marker padding, follows the shared grammar. */\nconst isValidVariableName = (raw) => (0, exports.normalizeVariableName)(raw) !== null;\nexports.isValidVariableName = isValidVariableName;\n/** Create an independent expression matcher so callers never share a regex's lastIndex. */\nconst createVariableExpressionRegex = (flags = 'g') => new RegExp(exports.VARIABLE_REFERENCE_SOURCE, flags);\nexports.createVariableExpressionRegex = createVariableExpressionRegex;\n/** Collect unique names in source order, including assignment and ordinary reference markers. */\nconst extractVariableNames = (text) => {\n const names = new Set();\n for (const match of text.matchAll((0, exports.createVariableExpressionRegex)('gu'))) {\n names.add(match[1]);\n }\n return [...names];\n};\nexports.extractVariableNames = extractVariableNames;\n//# sourceMappingURL=variable-name.js.map"],"names":["exports","PYTHON_WHITESPACE_SOURCE","PADDING_SOURCE","PADDING","VARIABLE_NAME","normalizeVariableName","raw","name","isValidVariableName","createVariableExpressionRegex","flags","extractVariableNames","text","names","match"],"mappings":"sLACA,OAAO,eAAcA,EAAU,aAAc,CAAE,MAAO,GAAM,EAC5DA,EAAA,qBAA+BA,gCAAwCA,EAAA,oBAA8BA,EAAA,sBAAgCA,6BAAqCA,EAAA,0BAAoCA,EAAA,qBAA+B,OAK7O,MAAMC,EAA2B,wGAIjCD,EAAA,qBAA+B,OAAOC,CAAwB,KAC9D,MAAMC,EAAiB,IAAID,CAAwB,KAC7CE,EAAU,IAAI,OAAO,KAAKF,CAAwB,OAAOA,CAAwB,MAAO,IAAI,EAElGD,EAAA,0BAAoC,SAASE,CAAc,IAAIF,EAAQ,oBAAoB,IAAIE,CAAc,SAE7GF,EAAA,2BAAqC,IAAIA,EAAQ,yBAAyB,GAC1E,MAAMI,EAAgB,IAAI,OAAO,IAAIJ,EAAQ,oBAAoB,IAAK,GAAG,EAEnEK,EAAyBC,GAAQ,CACnC,MAAMC,EAAOD,EAAI,QAAQH,EAAS,EAAE,EACpC,OAAOC,EAAc,KAAKG,CAAI,EAAIA,EAAO,IAC7C,EACAP,EAAA,sBAAgCK,EAEhC,MAAMG,EAAuBF,MAAYN,EAAQ,uBAAuBM,CAAG,IAAM,KACjFN,EAAA,oBAA8BQ,EAE9B,MAAMC,EAAgC,CAACC,EAAQ,MAAQ,IAAI,OAAOV,EAAQ,0BAA2BU,CAAK,EAC1GV,EAAA,8BAAwCS,EAExC,MAAME,EAAwBC,GAAS,CACnC,MAAMC,EAAQ,IAAI,IAClB,UAAWC,KAASF,EAAK,YAAaZ,EAAQ,+BAA+B,IAAI,CAAC,EAC9Ea,EAAM,IAAIC,EAAM,CAAC,CAAC,EAEtB,MAAO,CAAC,GAAGD,CAAK,CACpB,EACAb,EAAA,qBAA+BW","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"variable-name.cjs","sources":["../../../../node_modules/remark-flow/dist/variable-name.js"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractVariableNames = exports.findRejectedDocumentInlineOpenings = exports.findDocumentVariableMarkers = exports.isInlineCodeBoundaryLine = void 0;\n__exportStar(require(\"./variable-marker\"), exports);\nconst escaping_1 = require(\"./escaping\");\nconst variable_marker_1 = require(\"./variable-marker\");\n/** Store only line starts; line objects are temporary views, never retained per input line. */\nclass DocumentLines {\n constructor(text) {\n this.text = text;\n let count = 1;\n for (let at = 0; at < text.length; at++) {\n if (text[at] === '\\r') {\n count++;\n if (text[at + 1] === '\\n')\n at++;\n }\n else if (text[at] === '\\n')\n count++;\n }\n this.starts = new Uint32Array(count);\n let index = 1;\n for (let at = 0; at < text.length; at++) {\n if (text[at] === '\\r') {\n if (text[at + 1] === '\\n')\n at++;\n this.starts[index++] = at + 1;\n }\n else if (text[at] === '\\n')\n this.starts[index++] = at + 1;\n }\n }\n get length() {\n return this.starts.length;\n }\n start(index) {\n return this.starts[index];\n }\n at(index) {\n const start = this.starts[index];\n const end = this.starts[index + 1] ?? this.text.length;\n let contentEnd = end;\n if (index + 1 < this.starts.length) {\n contentEnd--;\n if (this.text[contentEnd] === '\\n' && this.text[contentEnd - 1] === '\\r')\n contentEnd--;\n }\n return { start, contentEnd, end };\n }\n}\nfunction containingLine(lines, offset) {\n let low = 0;\n let high = lines.length;\n while (low < high) {\n const middle = (low + high) >>> 1;\n if (lines.start(middle) <= offset)\n low = middle + 1;\n else\n high = middle;\n }\n return Math.max(0, low - 1);\n}\nconst HTML_SPACE = /[\\t\\n\\f\\r ]/;\nconst RESOURCE_SPACE = /[\\t\\n\\r ]/;\nconst MARKDOWN_PUNCTUATION = /[!-/:-@[-`{-~]/;\nconst MAX_LINK_DESTINATION_DEPTH = 32;\nconst MAX_AUTOLINK_SCHEME_LENGTH = 32;\nconst MAX_AUTOLINK_DOMAIN_LABEL_LENGTH = 63;\nconst AUTOLINK_ATEXT = /[A-Za-z0-9.!#$%&'*+/=?^_`{|}~-]/;\nconst ASCII_ALPHANUMERIC = /[A-Za-z0-9]/;\nconst ATX_HEADING_LINE = /^ {0,3}#{1,6}(?:[ \\t]|$)/;\nconst THEMATIC_BREAK_LINE = /^ {0,3}(?:(?:\\*[ \\t]*){3,}|(?:-[ \\t]*){3,}|(?:_[ \\t]*){3,})$/;\nconst SETEXT_UNDERLINE_LINE = /^ {0,3}(?:=+|-+)[\\t ]*$/;\nconst CONTAINER_INTERRUPT_LINE = /^ {0,3}(?:>|(?:[-+*]|1[.)])[ \\t]+[^ \\t])/;\nconst INLINE_CODE_BREAK_LINE = /^[ \\t]*\\r?$|^ {0,3}(?:`{3,}[^`\\r\\n]*|~{3,}[^\\r\\n]*)\\r?$/;\n/** @internal Shared document/flow boundary for an unfinished inline code span. */\nconst isInlineCodeBoundaryLine = (line) => INLINE_CODE_BREAK_LINE.test(line) ||\n ATX_HEADING_LINE.test(line) ||\n SETEXT_UNDERLINE_LINE.test(line) ||\n THEMATIC_BREAK_LINE.test(line) ||\n CONTAINER_INTERRUPT_LINE.test(line) ||\n ordinaryHtmlInterrupt(line);\nexports.isInlineCodeBoundaryLine = isInlineCodeBoundaryLine;\n/** Reuse failed suffix searches across malformed literal candidates in one document. */\nfunction findClosing(text, closing, from, missingClosers) {\n const missingFrom = missingClosers.get(closing);\n if (missingFrom !== undefined && from >= missingFrom)\n return -1;\n const end = text.indexOf(closing, from);\n if (end < 0)\n missingClosers.set(closing, from);\n return end;\n}\n/** Read a complete HTML token, using CommonMark's tag and attribute name shapes. */\nfunction htmlLiteralEnd(text, start, missingClosers) {\n for (const [opening, closing] of [\n ['<!--', '-->'],\n ['<![CDATA[', ']]>'],\n ['<?', '?>'],\n ]) {\n if (text.startsWith(opening, start)) {\n const end = findClosing(text, closing, start + opening.length, missingClosers);\n return end < 0 ? null : end + closing.length;\n }\n }\n if (/^<![A-Za-z]/.test(text.slice(start, start + 3))) {\n const end = findClosing(text, '>', start + 3, missingClosers);\n return end < 0 ? null : end + 1;\n }\n let cursor = start + 1;\n const closingTag = text[cursor] === '/';\n if (closingTag)\n cursor++;\n const tagName = /[A-Za-z][A-Za-z0-9-]*/y;\n tagName.lastIndex = cursor;\n if (!tagName.exec(text))\n return null;\n cursor = tagName.lastIndex;\n for (;;) {\n const beforePadding = cursor;\n while (cursor < text.length && HTML_SPACE.test(text[cursor]))\n cursor++;\n if (text[cursor] === '>')\n return cursor + 1;\n if (!closingTag && text.startsWith('/>', cursor))\n return cursor + 2;\n if (closingTag || cursor === beforePadding)\n return null;\n const attribute = /[A-Za-z_:][A-Za-z0-9_.:-]*/y;\n attribute.lastIndex = cursor;\n if (!attribute.exec(text))\n return null;\n cursor = attribute.lastIndex;\n const afterName = cursor;\n while (cursor < text.length && HTML_SPACE.test(text[cursor]))\n cursor++;\n if (text[cursor] !== '=') {\n cursor = afterName;\n continue;\n }\n cursor++;\n while (cursor < text.length && HTML_SPACE.test(text[cursor]))\n cursor++;\n const quote = text[cursor];\n if (quote === '\"' || quote === \"'\") {\n const end = findClosing(text, quote, cursor + 1, missingClosers);\n if (end < 0)\n return null;\n cursor = end + 1;\n }\n else {\n const valueStart = cursor;\n while (cursor < text.length && !/[\\t\\n\\f\\r \"'=<>`]/.test(text[cursor]))\n cursor++;\n if (cursor === valueStart)\n return null;\n }\n }\n}\n/** Read only complete CommonMark angle URI/email autolinks, without URL safety policy. */\nfunction autolinkSpan(text, start) {\n let cursor = start + 1;\n if (/[A-Za-z]/.test(text[cursor] ?? '')) {\n let size = 0;\n while (size < MAX_AUTOLINK_SCHEME_LENGTH &&\n /[A-Za-z0-9+.-]/.test(text[cursor] ?? '')) {\n cursor++;\n size++;\n }\n if (size >= 2 && text[cursor] === ':') {\n cursor++;\n while (cursor < text.length) {\n const code = text.charCodeAt(cursor);\n if (text[cursor] === '>')\n return { bodyStart: start + 1, bodyEnd: cursor, end: cursor + 1 };\n // Markdown replaces NUL for literal admission; raw marker validity still sees the NUL.\n if ((code > 0 && code <= 32) || code === 127 || text[cursor] === '<')\n return null;\n cursor++;\n }\n return null;\n }\n }\n cursor = start + 1;\n while (cursor < text.length && AUTOLINK_ATEXT.test(text[cursor]))\n cursor++;\n if (cursor === start + 1 || text[cursor] !== '@')\n return null;\n cursor++;\n for (;;) {\n if (!ASCII_ALPHANUMERIC.test(text[cursor] ?? ''))\n return null;\n const labelStart = cursor;\n while (cursor < text.length && /[A-Za-z0-9-]/.test(text[cursor]))\n cursor++;\n if (cursor - labelStart > MAX_AUTOLINK_DOMAIN_LABEL_LENGTH ||\n text[cursor - 1] === '-')\n return null;\n if (text[cursor] === '>')\n return { bodyStart: start + 1, bodyEnd: cursor, end: cursor + 1 };\n if (text[cursor] !== '.')\n return null;\n cursor++;\n }\n}\n/** Consume virtual whitespace columns while keeping the original UTF-16 offset. */\nfunction consumeContainerPadding(line, position, maximum) {\n let consumed = 0;\n while (consumed < maximum) {\n if (!position.virtualPadding) {\n const character = line[position.offset];\n if (character !== ' ' && character !== '\\t')\n break;\n const width = character === '\\t' ? 4 - (position.column % 4) : 1;\n position.offset++;\n position.column += width;\n position.virtualPadding = width;\n }\n const width = Math.min(maximum - consumed, position.virtualPadding);\n position.virtualPadding -= width;\n consumed += width;\n }\n return consumed;\n}\n/** Four columns suffice to distinguish native indented code from inline content. */\nfunction contentIndentColumns(line, position) {\n return consumeContainerPadding(line, { ...position }, 4);\n}\n/** Bound indented code to its last nonblank indented line, leaving trailing blanks outside. */\nfunction indentedCodeEnd(text, lines, index, followsBlock, firstPosition, steps = []) {\n if (index > 0 && !followsBlock)\n return null;\n let lastContentEnd = null;\n const firstIndex = index;\n for (; index < lines.length; index++) {\n const { start, contentEnd } = lines.at(index);\n const line = text.slice(start, contentEnd);\n const position = index === firstIndex\n ? firstPosition\n : containerContentPosition(line, steps);\n if (position === null) {\n if (!steps.some(step => 'quote' in step) && /^[\\t ]*$/.test(line))\n continue;\n return lastContentEnd;\n }\n const content = line.slice(position.offset);\n if (/^[\\t ]*$/.test(content)) {\n if (lastContentEnd === null)\n return null;\n }\n else {\n const columns = contentIndentColumns(line, position);\n if (columns < 4)\n return lastContentEnd;\n lastContentEnd = contentEnd;\n }\n }\n return lastContentEnd;\n}\nfunction rawHtmlOpening(text, start, missingClosers) {\n const opening = /^ {0,3}<(script|style|pre|textarea)(?=[\\t\\n\\f\\r >]|$)/i.exec(text.slice(start, start + 16));\n if (!opening)\n return null;\n const end = htmlLiteralEnd(text, start + opening[0].indexOf('<'), missingClosers);\n return { name: opening[1], end: end ?? start + opening[0].length };\n}\n/** Preserve the opening token's attribute scope separately from a raw-text HTML body. */\nfunction rawHtmlSpan(text, start, missingClosers, lines, blockEnd) {\n const opening = rawHtmlOpening(text, start, missingClosers);\n if (!opening)\n return null;\n const limit = blockEnd?.() ?? text.length;\n if (opening.end > limit)\n return null;\n const closing = new RegExp(`</${opening.name}[ \\\\t\\\\r\\\\n]*>`, 'gi');\n closing.lastIndex = opening.end;\n const matched = closing.exec(text);\n const closingEnd = matched ? matched.index + matched[0].length : limit;\n const end = Math.min(limit, lines.at(containingLine(lines, closingEnd)).contentEnd);\n return { bodyStart: opening.end, bodyEnd: end, end };\n}\n/** Comments, instructions, declarations and CDATA keep their whole closing line literal. */\nfunction terminatedHtmlBlockSpan(text, start, missingClosers, lines, blockEnd, steps = []) {\n const opening = /^ {0,3}<(?:!--|\\?|!\\[CDATA\\[|![A-Z])/.exec(text.slice(start, start + 12));\n if (!opening)\n return null;\n const limit = blockEnd?.() ?? text.length;\n const prefix = opening[0].slice(opening[0].indexOf('<'));\n const closing = prefix === '<!--'\n ? '-->'\n : prefix === '<?'\n ? '?>'\n : prefix === '<![CDATA['\n ? ']]>'\n : '>';\n let from = start + opening[0].length;\n let closingLine = containingLine(lines, from);\n let tokenEnd = null;\n for (;;) {\n const closingStart = findClosing(text, closing, from, missingClosers);\n if (closingStart < 0 || closingStart + closing.length > limit)\n break;\n if (closing === '>' && steps.length) {\n while (closingLine + 1 < lines.length &&\n lines.start(closingLine + 1) <= closingStart)\n closingLine++;\n const line = lines.at(closingLine);\n const content = containerContentStart(text.slice(line.start, line.contentEnd), steps);\n if (content !== null && closingStart < line.start + content) {\n from = closingStart + closing.length;\n continue;\n }\n }\n tokenEnd = closingStart + closing.length;\n break;\n }\n // Keep the historical plain incomplete-token fallback; a confirmed container\n // boundary can still end a native block without its terminator.\n if (tokenEnd === null)\n return limit < text.length\n ? { bodyStart: start + opening[0].length, bodyEnd: limit, end: limit }\n : null;\n const end = Math.min(limit, lines.at(containingLine(lines, tokenEnd)).contentEnd);\n return { bodyStart: tokenEnd, bodyEnd: end, end };\n}\n/** A blank line ends complete inline resources and inline math/code paragraphs. */\nfunction blankLineAfter(text, cursor) {\n if (text[cursor] !== '\\n' && text[cursor] !== '\\r')\n return false;\n let next = cursor + (text[cursor] === '\\r' && text[cursor + 1] === '\\n' ? 2 : 1);\n while (text[next] === ' ' || text[next] === '\\t')\n next++;\n return text[next] === '\\n' || text[next] === '\\r';\n}\nfunction resourceSpaceEnd(text, cursor) {\n while (cursor < text.length && RESOURCE_SPACE.test(text[cursor])) {\n if (blankLineAfter(text, cursor))\n return null;\n cursor++;\n }\n return cursor;\n}\n/** Shared destination reader; native reference definitions have no nesting-depth cap. */\nfunction resourceDestinationEnd(text, start, maxDepth = MAX_LINK_DESTINATION_DEPTH) {\n let cursor = start;\n const escaped = () => text[cursor] === '\\\\' && MARKDOWN_PUNCTUATION.test(text[cursor + 1] ?? '');\n if (text[cursor] === '<') {\n cursor++;\n while (cursor < text.length && text[cursor] !== '>') {\n if (text[cursor] === '\\n' ||\n text[cursor] === '\\r' ||\n text[cursor] === '<')\n return null;\n cursor += escaped() ? 2 : 1;\n }\n if (text[cursor] !== '>')\n return null;\n cursor++;\n }\n else {\n let depth = 0;\n while (cursor < text.length && !RESOURCE_SPACE.test(text[cursor])) {\n if (escaped())\n cursor += 2;\n else if (text[cursor] === '(') {\n if (++depth > maxDepth)\n return null;\n cursor++;\n }\n else if (text[cursor] === ')') {\n if (depth === 0)\n break;\n depth--;\n cursor++;\n }\n else {\n const code = text.charCodeAt(cursor);\n if (code < 32 || code === 127)\n return null;\n cursor++;\n }\n }\n if (depth)\n return null;\n }\n return cursor;\n}\nfunction resourceTitleEnd(text, start, blankBoundary = blankLineAfter) {\n let cursor = start;\n const escaped = () => text[cursor] === '\\\\' && MARKDOWN_PUNCTUATION.test(text[cursor + 1] ?? '');\n const quote = text[cursor];\n const closing = quote === '(' ? ')' : quote;\n if (!['\"', \"'\", '('].includes(quote))\n return null;\n cursor++;\n while (cursor < text.length && text[cursor] !== closing) {\n if (blankBoundary(text, cursor))\n return null;\n cursor += escaped() ? 2 : 1;\n }\n return text[cursor] === closing ? cursor + 1 : null;\n}\n/** Read only a complete link resource after a previously matched label. */\nfunction linkResourceEnd(text, start) {\n let cursor = resourceSpaceEnd(text, start + 1);\n if (cursor === null)\n return null;\n cursor = resourceDestinationEnd(text, cursor);\n if (cursor === null)\n return null;\n const destinationEnd = cursor;\n cursor = resourceSpaceEnd(text, cursor);\n if (cursor === null)\n return null;\n if (text[cursor] === ')')\n return cursor + 1;\n if (cursor === destinationEnd)\n return null;\n cursor = resourceTitleEnd(text, cursor);\n if (cursor === null)\n return null;\n cursor = resourceSpaceEnd(text, cursor);\n if (cursor === null)\n return null;\n return text[cursor] === ')' ? cursor + 1 : null;\n}\n/** Bound valid reference resources, reusing the inline destination and title readers. */\nfunction referenceDefinitionEnd(text, lines, index, start = lines.start(index), steps = [], blockEnd) {\n const line = lines.at(index);\n const label = /^ {0,3}\\[((?:\\\\[^\\r\\n]|[^[\\]\\\\\\r\\n]){1,999})\\]:/.exec(text.slice(start, line.contentEnd));\n if (!label || /^[\\t ]*$/.test(label[1]))\n return null;\n const limit = blockEnd?.() ?? containerBlockEnd(text, lines, index, steps, true);\n const blankBoundary = (_text, at) => {\n if (text[at] !== '\\n' && text[at] !== '\\r')\n return false;\n const next = containingLine(lines, at) + 1;\n if (next >= lines.length || lines.start(next) >= limit)\n return true;\n const nextLine = lines.at(next);\n const value = text.slice(nextLine.start, nextLine.contentEnd);\n const contentStart = containerContentStart(value, steps);\n return contentStart === null\n ? (0, exports.isInlineCodeBoundaryLine)(value)\n : /^[\\t ]*$/.test(value.slice(contentStart));\n };\n const paddingEnd = (from) => {\n let cursor = from;\n for (;;) {\n cursor = resourceSpaceEnd(text, cursor) ?? -1;\n if (cursor < 0 || cursor >= limit)\n return null;\n const current = lines.at(containingLine(lines, cursor));\n if (!steps.length || cursor !== current.start)\n return cursor;\n const value = text.slice(current.start, current.contentEnd);\n const contentStart = containerContentStart(value, steps);\n if (contentStart === null)\n return cursor;\n if (/^[\\t ]*$/.test(value.slice(contentStart)))\n return null;\n if (!contentStart)\n return cursor;\n cursor += contentStart;\n }\n };\n let cursor = paddingEnd(start + label[0].length);\n if (cursor === null)\n return null;\n const destinationStart = cursor;\n const destinationEnd = resourceDestinationEnd(text, cursor, Infinity);\n if (destinationEnd === null || destinationEnd === destinationStart)\n return null;\n cursor = destinationEnd;\n while (text[cursor] === ' ' || text[cursor] === '\\t')\n cursor++;\n const destinationLineEnd = cursor;\n const lineEnded = cursor === text.length || text[cursor] === '\\r' || text[cursor] === '\\n';\n if (lineEnded) {\n cursor = paddingEnd(cursor);\n if (cursor === null)\n return destinationLineEnd;\n }\n else if (cursor === destinationEnd)\n return null;\n const titleEnd = resourceTitleEnd(text, cursor, blankBoundary);\n if (titleEnd === null)\n return lineEnded ? destinationLineEnd : null;\n cursor = titleEnd;\n while (text[cursor] === ' ' || text[cursor] === '\\t')\n cursor++;\n if (cursor <= limit &&\n (cursor === text.length || text[cursor] === '\\r' || text[cursor] === '\\n'))\n return cursor;\n return lineEnded ? destinationLineEnd : null;\n}\n/** Retain compact numeric closer indexes only after a delimiter is actually encountered. */\nfunction inlineLiteralSpans(text, delimiter, missingClosers, lines) {\n let count = 0;\n for (let at = text.indexOf(delimiter); at >= 0;) {\n count++;\n do {\n at++;\n } while (text[at] === delimiter);\n at = text.indexOf(delimiter, at);\n }\n const starts = new Uint32Array(count);\n const sizes = new Uint32Array(count);\n const closes = new Uint32Array(count);\n const absent = 0xffffffff;\n closes.fill(absent);\n let suffixes;\n let run = 0;\n for (let at = text.indexOf(delimiter); at >= 0;) {\n const opening = at;\n do {\n at++;\n } while (text[at] === delimiter);\n starts[run] = opening;\n sizes[run++] = at - opening;\n at = text.indexOf(delimiter, at);\n }\n let segmentStart = 0;\n let container = [];\n for (let index = 0; index < lines.length; index++) {\n const { start, contentEnd, end } = lines.at(index);\n const line = text.slice(start, contentEnd);\n const projected = projectedContainerLine(line, container, index === 0 ||\n /^[\\t ]*$/.test(text.slice(lines.at(index - 1).start, lines.at(index - 1).contentEnd)));\n const content = line.slice(projected.contentStart);\n if (projected.indentation < 4 && ATX_HEADING_LINE.test(content)) {\n indexSegment(segmentStart, start);\n indexSegment(start, contentEnd);\n segmentStart = end;\n container = projected.steps;\n }\n else if (projected.entered) {\n // Entering a quote/item starts a new paragraph; its own complete and\n // continued literals keep their normal same-container matching.\n indexSegment(segmentStart, start);\n segmentStart = start;\n container = projected.steps;\n }\n else if ((projected.indentation < 4 || /^[\\t ]*$/.test(content)) &&\n ((0, exports.isInlineCodeBoundaryLine)(content) ||\n rawHtmlOpening(text, start + projected.contentStart, missingClosers))) {\n indexSegment(segmentStart, start);\n segmentStart = end;\n container = projected.steps;\n }\n }\n indexSegment(segmentStart, text.length);\n let searchHint = 0;\n return {\n get(opening) {\n while (searchHint < count && starts[searchHint] < opening)\n searchHint++;\n let index = searchHint;\n let closing = absent;\n let bodyStart = opening;\n let size = 0;\n if (starts[index] === opening) {\n size = sizes[index];\n closing = closes[index];\n bodyStart += size;\n }\n else if (index > 0 && starts[index - 1] + 1 === opening && suffixes) {\n index--;\n size = sizes[index] - 1;\n closing = suffixes[index];\n bodyStart += size;\n }\n return closing === absent\n ? undefined\n : { bodyStart, bodyEnd: closing, end: closing + size };\n },\n };\n function lowerBound(position) {\n let low = 0;\n let high = count;\n while (low < high) {\n const middle = (low + high) >>> 1;\n if (starts[middle] < position)\n low = middle + 1;\n else\n high = middle;\n }\n return low;\n }\n function indexSegment(start, end) {\n const first = lowerBound(start);\n const last = lowerBound(end);\n if (first === last)\n return;\n const next = new Map();\n for (let index = last - 1; index >= first; index--) {\n const opening = starts[index];\n const size = sizes[index];\n closes[index] = next.get(size) ?? absent;\n let slashes = 0;\n for (let at = opening - 1; at >= 0 && text[at] === '\\\\'; at--)\n slashes++;\n if (slashes % 2 && size > 1) {\n if (!suffixes) {\n suffixes = new Uint32Array(count);\n suffixes.fill(absent);\n }\n suffixes[index] = next.get(size - 1) ?? absent;\n }\n next.set(size, opening);\n }\n }\n}\n/** Reuse native container continuation before looking for a nested block opening. */\nfunction projectedContainerLine(line, active, startsBlock) {\n const continued = containerContentPosition(line, active);\n const base = continued ?? { offset: 0, column: 0, virtualPadding: 0 };\n const remainder = line.slice(base.offset);\n const nested = containerOpening(line, base);\n const entered = nested.steps.length > 0 &&\n !THEMATIC_BREAK_LINE.test(remainder) &&\n (startsBlock || CONTAINER_INTERRUPT_LINE.test(remainder));\n const position = entered ? nested.position : base;\n const blockMarker = { ...position };\n consumeContainerPadding(line, blockMarker, 3);\n return {\n contentStart: blockMarker.offset,\n position,\n indentation: contentIndentColumns(line, position),\n steps: entered\n ? [...(continued === null ? [] : active), ...nested.steps]\n : continued === null\n ? []\n : active,\n entered,\n };\n}\n/** Literal blocks cannot continue beyond a nonblank container dedent. */\nfunction containerBlockEnd(text, lines, index, steps, lazyReference = false) {\n if (!steps.length)\n return text.length;\n for (let at = index + 1; at < lines.length; at++) {\n const line = lines.at(at);\n const value = text.slice(line.start, line.contentEnd);\n if (containerContentStart(value, steps) !== null)\n continue;\n if (/^[\\t ]*$/.test(value)) {\n if (!lazyReference && !steps.some(step => 'quote' in step))\n continue;\n }\n else if (lazyReference && !(0, exports.isInlineCodeBoundaryLine)(value))\n continue;\n return line.start;\n }\n return text.length;\n}\n/** Read quote/list steps without rewriting the original text or source offsets. */\nfunction containerOpening(line, initial) {\n let position = { ...initial };\n const steps = [];\n for (;;) {\n const beforeSpace = { ...position };\n const leading = consumeContainerPadding(line, position, 3);\n if (!position.virtualPadding && line[position.offset] === '>') {\n steps.push({ quote: true });\n position.offset++;\n position.column++;\n consumeContainerPadding(line, position, 1);\n continue;\n }\n const list = position.virtualPadding\n ? null\n : /^(?:[-+*]|\\d{1,9}[.)])(?=[ \\t])/.exec(line.slice(position.offset));\n if (list) {\n position.offset += list[0].length;\n position.column += list[0].length;\n const afterMarker = { ...position };\n let padding = consumeContainerPadding(line, position, 5);\n if (padding > 4) {\n position = afterMarker;\n padding = consumeContainerPadding(line, position, 1);\n }\n steps.push({ indent: leading + list[0].length + padding });\n continue;\n }\n return { position: beforeSpace, steps };\n }\n}\nfunction fenceOpening(line, position, steps) {\n if (contentIndentColumns(line, position) >= 4)\n return null;\n const marker = { ...position };\n consumeContainerPadding(line, marker, 3);\n const fence = /^(`{3,})([^`]*$)|^(~{3,})(.*$)/.exec(line.slice(marker.offset));\n const run = fence?.[1] ?? fence?.[3];\n return run ? { marker: run[0], size: run.length, steps } : null;\n}\nfunction containerContentPosition(line, steps) {\n const position = { offset: 0, column: 0, virtualPadding: 0 };\n for (let index = 0; index < steps.length; index++) {\n const step = steps[index];\n if ('quote' in step) {\n consumeContainerPadding(line, position, 3);\n if (position.virtualPadding || line[position.offset] !== '>')\n return null;\n position.offset++;\n position.column++;\n consumeContainerPadding(line, position, 1);\n }\n else if (consumeContainerPadding(line, position, step.indent) < step.indent) {\n // Empty lines can omit list padding while still continuing their enclosing quotes.\n return /^[\\t ]*$/.test(line.slice(position.offset)) &&\n !steps.slice(index + 1).some(next => 'quote' in next)\n ? position\n : null;\n }\n }\n return position;\n}\nfunction containerContentStart(line, steps) {\n return containerContentPosition(line, steps)?.offset ?? null;\n}\nfunction fencedCodeSpan(text, lines, index, position, steps) {\n const openingLine = lines.at(index);\n const opening = fenceOpening(text.slice(openingLine.start, openingLine.contentEnd), position, steps);\n if (!opening)\n return null;\n const closing = new RegExp(`^ {0,3}${opening.marker}{${opening.size},}[\\\\t ]*$`);\n for (let at = index + 1; at < lines.length; at++) {\n const line = lines.at(at);\n const value = text.slice(line.start, line.contentEnd);\n const contentPosition = containerContentPosition(value, opening.steps);\n if (contentPosition === null) {\n if (/^[\\t ]*$/.test(value))\n continue;\n return {\n bodyStart: openingLine.end,\n bodyEnd: line.start,\n end: line.start,\n };\n }\n const marker = { ...contentPosition };\n consumeContainerPadding(value, marker, 3);\n if (contentIndentColumns(value, contentPosition) < 4 &&\n closing.test(value.slice(marker.offset)))\n return {\n bodyStart: openingLine.end,\n bodyEnd: line.start,\n end: line.contentEnd,\n };\n }\n return { bodyStart: openingLine.end, bodyEnd: text.length, end: text.length };\n}\nconst HTML_BLOCK_TAGS = new Set('address article aside base basefont blockquote body caption center col colgroup dd details dialog dir div dl dt fieldset figcaption figure footer form frame frameset h1 h2 h3 h4 h5 h6 head header hr html iframe legend li link main menu menuitem nav noframes ol optgroup option p param search section summary table tbody td tfoot th thead title tr track ul'.split(' '));\nfunction ordinaryHtmlInterrupt(line) {\n const tag = /^ {0,3}<\\/?([A-Za-z][A-Za-z0-9-]*)(?=[ \\t/>]|$)/.exec(line);\n return tag !== null && HTML_BLOCK_TAGS.has(tag[1].toLowerCase());\n}\n/** Native ordinary HTML blocks stop at a blank line, after any complete opening token. */\nfunction ordinaryHtmlSpan(text, lines, index, missingClosers, start = lines.start(index), steps = [], blockEnd) {\n const line = lines.at(index);\n const source = text.slice(start, line.contentEnd);\n const tag = /^ {0,3}<\\/?([A-Za-z][A-Za-z0-9-]*)(?=[ \\t/>]|$)/.exec(source);\n if (!tag)\n return null;\n const tokenStart = start + source.indexOf('<');\n const tokenEnd = htmlLiteralEnd(text, tokenStart, missingClosers);\n if (!HTML_BLOCK_TAGS.has(tag[1].toLowerCase())) {\n const previous = index > 0 ? lines.at(index - 1) : undefined;\n if ((previous &&\n !/^[\\t ]*$/.test(text.slice(previous.start, previous.contentEnd))) ||\n tokenEnd === null ||\n tokenEnd > line.contentEnd ||\n !/^[\\t ]*$/.test(text.slice(tokenEnd, line.contentEnd)))\n return null;\n }\n const limit = blockEnd?.() ?? containerBlockEnd(text, lines, index, steps);\n const bodyStart = tokenEnd === null || tokenEnd > limit ? start : tokenEnd;\n for (let at = Math.max(index + 1, containingLine(lines, bodyStart)); at < lines.length; at++) {\n const next = lines.at(at);\n if (next.start >= limit)\n return { bodyStart, bodyEnd: limit, end: limit };\n const value = text.slice(next.start, next.contentEnd);\n const contentStart = containerContentStart(value, steps);\n if (next.start >= bodyStart &&\n (contentStart === null || /^[\\t ]*$/.test(value.slice(contentStart))))\n return { bodyStart, bodyEnd: next.start, end: next.start };\n }\n return { bodyStart, bodyEnd: limit, end: limit };\n}\n/**\n * Read document marker ranges in source order, using original UTF-16 source offsets.\n * Complete markers in code/HTML examples retain their names; incomplete markers have `name: null`\n * and end at the literal boundary, or at document EOF for a true unclosed outside marker.\n * Raw readers remain available when the caller needs opaque markers without Markdown context.\n */\nconst scanDocumentVariableMarkers = (text, rejectedOpenings) => {\n // Documents without an opening cannot produce a marker or need literal indexes.\n if (!text.includes('{{'))\n return [];\n const markers = [];\n const missingHtmlClosers = new Map();\n const lines = new DocumentLines(text);\n let inlineSpans;\n let mathSpans;\n const labels = [];\n const activeLinkLabels = new Set();\n const collectLiteral = (start, end) => {\n const literal = text.slice(start, end);\n let cursor = 0;\n for (;;) {\n const opening = literal.indexOf('{{', cursor);\n if (opening < 0)\n return;\n const marker = (0, variable_marker_1.readVariableMarker)(literal, opening);\n if (!marker) {\n markers.push({\n start: start + opening,\n end,\n rawName: literal.slice(opening + 2),\n name: null,\n });\n return;\n }\n markers.push({\n ...marker,\n start: start + marker.start,\n end: start + marker.end,\n });\n cursor = marker.end;\n }\n };\n let cursor = 0;\n let blockEndedAt = -1;\n let nextLine = 0;\n let container = [];\n let cachedContainerEnd;\n let cachedReferenceEnd;\n while (cursor < text.length) {\n while (nextLine < lines.length && lines.start(nextLine) < cursor)\n nextLine++;\n if (nextLine < lines.length && lines.start(nextLine) === cursor) {\n const lineIndex = nextLine;\n const current = lines.at(lineIndex);\n if (current.start === current.contentEnd) {\n cursor = current.end;\n continue;\n }\n const previous = lineIndex > 0 ? lines.at(lineIndex - 1) : undefined;\n const previousText = previous\n ? text.slice(previous.start, previous.contentEnd)\n : '';\n const previousPosition = containerContentPosition(previousText, container);\n const previousMarker = {\n ...(previousPosition ?? { offset: 0, column: 0, virtualPadding: 0 }),\n };\n consumeContainerPadding(previousText, previousMarker, 3);\n const previousContent = previousText.slice(previousMarker.offset);\n const previousIndented = previousPosition !== null &&\n contentIndentColumns(previousText, previousPosition) >= 4;\n const followsBlock = !previous ||\n /^[\\t ]*$/.test(previousContent) ||\n (!previousIndented && ATX_HEADING_LINE.test(previousContent)) ||\n (!previousIndented && THEMATIC_BREAK_LINE.test(previousContent)) ||\n previous.contentEnd === blockEndedAt;\n const projected = projectedContainerLine(text.slice(current.start, current.contentEnd), container, followsBlock);\n if (container !== projected.steps) {\n cachedContainerEnd = undefined;\n cachedReferenceEnd = undefined;\n }\n container = projected.steps;\n const blockEnd = () => (cachedContainerEnd ?? (cachedContainerEnd = containerBlockEnd(text, lines, lineIndex, container)));\n const referenceEnd = () => {\n if (cachedReferenceEnd === undefined ||\n cachedReferenceEnd <= current.start)\n cachedReferenceEnd = containerBlockEnd(text, lines, lineIndex, container, true);\n return cachedReferenceEnd;\n };\n const contentStart = current.start + projected.contentStart;\n const definitionEnd = projected.indentation < 4 && (followsBlock || projected.entered)\n ? referenceDefinitionEnd(text, lines, lineIndex, contentStart, container, referenceEnd)\n : null;\n if (definitionEnd !== null) {\n collectLiteral(cursor, definitionEnd);\n blockEndedAt = definitionEnd;\n cursor = definitionEnd;\n continue;\n }\n if (!previous ||\n /^[\\t ]*$/.test(text.slice(previous.start, previous.contentEnd))) {\n labels.length = 0;\n activeLinkLabels.clear();\n }\n const fence = fencedCodeSpan(text, lines, lineIndex, projected.position, container);\n if (fence) {\n collectLiteral(cursor, fence.bodyEnd);\n blockEndedAt = fence.end;\n cursor = fence.end;\n continue;\n }\n const indentedEnd = indentedCodeEnd(text, lines, lineIndex, followsBlock || projected.entered, projected.position, container);\n if (indentedEnd !== null) {\n collectLiteral(cursor, indentedEnd);\n cursor = indentedEnd;\n continue;\n }\n const rawHtml = projected.indentation < 4\n ? rawHtmlSpan(text, contentStart, missingHtmlClosers, lines, blockEnd)\n : null;\n if (rawHtml) {\n collectLiteral(cursor, rawHtml.bodyStart);\n collectLiteral(rawHtml.bodyStart, rawHtml.bodyEnd);\n blockEndedAt = rawHtml.end;\n cursor = rawHtml.end;\n continue;\n }\n const terminatedHtml = projected.indentation < 4\n ? terminatedHtmlBlockSpan(text, contentStart, missingHtmlClosers, lines, blockEnd, container)\n : null;\n if (terminatedHtml) {\n collectLiteral(cursor, terminatedHtml.bodyStart);\n collectLiteral(terminatedHtml.bodyStart, terminatedHtml.bodyEnd);\n blockEndedAt = terminatedHtml.end;\n cursor = terminatedHtml.end;\n continue;\n }\n const html = projected.indentation < 4\n ? ordinaryHtmlSpan(text, lines, lineIndex, missingHtmlClosers, contentStart, container, blockEnd)\n : null;\n if (html) {\n collectLiteral(cursor, html.bodyStart);\n collectLiteral(html.bodyStart, html.bodyEnd);\n cursor = html.end;\n continue;\n }\n }\n // A marker reached first owns its whole body, including any code/HTML-looking text.\n if (text.startsWith('{{', cursor)) {\n const marker = (0, variable_marker_1.readVariableMarker)(text, cursor);\n if (!marker) {\n markers.push({\n start: cursor,\n end: text.length,\n rawName: text.slice(cursor + 2),\n name: null,\n });\n break;\n }\n markers.push(marker);\n cursor = marker.end;\n continue;\n }\n if (text[cursor] === '\\\\') {\n cursor += 2;\n continue;\n }\n const interaction = text.startsWith('?[', cursor)\n ? (0, escaping_1.readDocumentInteraction)(text, cursor, index => {\n if (blankLineAfter(text, index))\n return true;\n if (text[index] !== '\\n' && text[index] !== '\\r')\n return false;\n const next = containingLine(lines, index) + 1;\n if (next >= lines.length)\n return false;\n const line = lines.at(next);\n const value = text.slice(line.start, line.contentEnd);\n const projected = projectedContainerLine(value, container, false);\n return (projected.entered ||\n (projected.indentation < 4 &&\n (0, exports.isInlineCodeBoundaryLine)(value.slice(projected.contentStart))));\n })\n : null;\n if (interaction) {\n collectLiteral(cursor + 2, interaction.end - (interaction.complete ? 1 : 0));\n cursor = interaction.end;\n continue;\n }\n if (text[cursor] === '[') {\n let slashes = 0;\n for (let at = cursor - 2; at >= 0 && text[at] === '\\\\'; at--)\n slashes++;\n const label = {\n image: text[cursor - 1] === '!' && slashes % 2 === 0,\n active: true,\n };\n labels.push(label);\n if (!label.image)\n activeLinkLabels.add(label);\n }\n if (text[cursor] === ']' && labels.length) {\n const label = labels.pop();\n if (label)\n activeLinkLabels.delete(label);\n if (label?.active && text[cursor + 1] === '(') {\n const end = linkResourceEnd(text, cursor + 1);\n if (end !== null) {\n if (!label.image) {\n // Each non-image ancestor is invalidated at most once; image-only\n // ancestors never need to be rescanned for every following link.\n for (const outer of activeLinkLabels)\n outer.active = false;\n activeLinkLabels.clear();\n }\n collectLiteral(cursor + 2, end - 1);\n cursor = end;\n continue;\n }\n }\n }\n if (text[cursor] === '$') {\n const span = (mathSpans ?? (mathSpans = inlineLiteralSpans(text, '$', missingHtmlClosers, lines))).get(cursor);\n if (span) {\n collectLiteral(span.bodyStart, span.bodyEnd);\n cursor = span.end;\n continue;\n }\n rejectedOpenings?.push(cursor);\n while (text[cursor] === '$')\n cursor++;\n continue;\n }\n if (text[cursor] === '`' || text[cursor] === '~') {\n const span = text[cursor] === '`'\n ? (inlineSpans ?? (inlineSpans = inlineLiteralSpans(text, '`', missingHtmlClosers, lines))).get(cursor)\n : undefined;\n if (span) {\n collectLiteral(cursor, span.bodyEnd);\n cursor = span.end;\n continue;\n }\n if (text[cursor] === '`')\n rejectedOpenings?.push(cursor);\n // Only the full opening run can start a span; its suffix is not another opening.\n const character = text[cursor];\n while (text[cursor] === character)\n cursor++;\n continue;\n }\n if (text[cursor] === '<') {\n const link = autolinkSpan(text, cursor);\n if (link) {\n collectLiteral(link.bodyStart, link.bodyEnd);\n cursor = link.end;\n continue;\n }\n const end = htmlLiteralEnd(text, cursor, missingHtmlClosers);\n if (end !== null) {\n collectLiteral(cursor, end);\n cursor = end;\n continue;\n }\n }\n cursor++;\n }\n return markers;\n};\nconst findDocumentVariableMarkers = (text) => scanDocumentVariableMarkers(text);\nexports.findDocumentVariableMarkers = findDocumentVariableMarkers;\n/** @internal Seed native inline guards from the same complete-document scan. */\nconst findRejectedDocumentInlineOpenings = (text) => {\n const offsets = [];\n scanDocumentVariableMarkers(text, offsets);\n return Uint32Array.from(offsets);\n};\nexports.findRejectedDocumentInlineOpenings = findRejectedDocumentInlineOpenings;\n/** Collect unique document names in source order, including complete literal example markers. */\nconst extractVariableNames = (text) => {\n const names = new Set();\n for (const marker of (0, exports.findDocumentVariableMarkers)(text)) {\n if (marker.name !== null)\n names.add(marker.name);\n }\n return [...names];\n};\nexports.extractVariableNames = extractVariableNames;\n//# sourceMappingURL=variable-name.js.map"],"names":["__createBinding","this","o","m","k","k2","desc","__exportStar","exports","p","require$$0","escaping_1","require$$1","variable_marker_1","DocumentLines","text","count","at","index","start","end","contentEnd","containingLine","lines","offset","low","high","middle","HTML_SPACE","RESOURCE_SPACE","MARKDOWN_PUNCTUATION","MAX_LINK_DESTINATION_DEPTH","MAX_AUTOLINK_SCHEME_LENGTH","MAX_AUTOLINK_DOMAIN_LABEL_LENGTH","AUTOLINK_ATEXT","ASCII_ALPHANUMERIC","ATX_HEADING_LINE","THEMATIC_BREAK_LINE","SETEXT_UNDERLINE_LINE","CONTAINER_INTERRUPT_LINE","INLINE_CODE_BREAK_LINE","isInlineCodeBoundaryLine","line","ordinaryHtmlInterrupt","findClosing","closing","from","missingClosers","missingFrom","htmlLiteralEnd","opening","cursor","closingTag","tagName","beforePadding","attribute","afterName","quote","valueStart","autolinkSpan","size","code","labelStart","consumeContainerPadding","position","maximum","consumed","character","width","contentIndentColumns","indentedCodeEnd","followsBlock","firstPosition","steps","lastContentEnd","firstIndex","containerContentPosition","step","content","rawHtmlOpening","rawHtmlSpan","blockEnd","limit","matched","closingEnd","terminatedHtmlBlockSpan","prefix","closingLine","tokenEnd","closingStart","containerContentStart","blankLineAfter","next","resourceSpaceEnd","resourceDestinationEnd","maxDepth","escaped","depth","resourceTitleEnd","blankBoundary","linkResourceEnd","destinationEnd","referenceDefinitionEnd","label","containerBlockEnd","_text","nextLine","value","contentStart","paddingEnd","current","destinationStart","destinationLineEnd","lineEnded","titleEnd","inlineLiteralSpans","delimiter","starts","sizes","closes","absent","suffixes","run","segmentStart","container","projected","projectedContainerLine","indexSegment","searchHint","bodyStart","lowerBound","first","last","slashes","active","startsBlock","continued","base","remainder","nested","containerOpening","entered","blockMarker","lazyReference","initial","beforeSpace","leading","list","afterMarker","padding","fenceOpening","marker","fence","fencedCodeSpan","openingLine","contentPosition","HTML_BLOCK_TAGS","tag","ordinaryHtmlSpan","source","tokenStart","previous","scanDocumentVariableMarkers","rejectedOpenings","markers","missingHtmlClosers","inlineSpans","mathSpans","labels","activeLinkLabels","collectLiteral","literal","blockEndedAt","cachedContainerEnd","cachedReferenceEnd","lineIndex","previousText","previousPosition","previousMarker","previousContent","previousIndented","referenceEnd","definitionEnd","indentedEnd","rawHtml","terminatedHtml","html","interaction","outer","span","link","findDocumentVariableMarkers","findRejectedDocumentInlineOpenings","offsets","extractVariableNames","names"],"mappings":"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","x_google_ignoreList":[0]}