@react-x11/components 0.5.0 → 0.6.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.
@@ -43,9 +43,13 @@ import { tint } from 'react-x11/style';
43
43
  import { registerRichText, RICHTEXT_ELEMENT, useSelectionMenu, } from '../richtext/index.js';
44
44
  import { codeBlockLook, codeBlockRuns, codeBlockStyle, codeTextStyle, } from '../codeblock/index.js';
45
45
  import { parse } from './parse.js';
46
+ import { evaluator, resolveExpressions } from './expressions.js';
47
+ import { SPREAD_PREFIX } from './ast.js';
46
48
  import { runsOf, plainTextOf } from './spans.js';
47
49
  import { useLinkClicks } from '../richtext/index.js';
48
50
  import { hx } from './hx.js';
51
+ export { SPREAD_PREFIX } from './ast.js';
52
+ export { scanTag } from './tags.js';
49
53
  export { parse, parseInline } from './parse.js';
50
54
  const h = React.createElement;
51
55
  // Registration is a shared-module function so `<Code>` can render the same
@@ -94,6 +98,31 @@ function deriveLook(theme, props) {
94
98
  ].join('|'),
95
99
  };
96
100
  }
101
+ // --- components ------------------------------------------------------------
102
+ /**
103
+ * The component a tag names, or undefined. Flat key first, so a map can spell
104
+ * a dotted name literally, then the walk, so `Card.Header` finds the property
105
+ * hanging off `Card`.
106
+ */
107
+ function resolveComponent(map, name) {
108
+ if (!map)
109
+ return undefined;
110
+ const flat = map[name];
111
+ if (flat)
112
+ return flat;
113
+ if (!name.includes('.'))
114
+ return undefined;
115
+ let cur = map;
116
+ for (const part of name.split('.')) {
117
+ if (cur == null || (typeof cur !== 'object' && typeof cur !== 'function')) {
118
+ return undefined;
119
+ }
120
+ cur = cur[part];
121
+ }
122
+ return cur == null
123
+ ? undefined
124
+ : cur;
125
+ }
97
126
  function richtext(key, runs, style, wrap = true) {
98
127
  const props = { runs };
99
128
  if (!wrap)
@@ -158,8 +187,47 @@ function renderBlock(block, ctx, key) {
158
187
  });
159
188
  case 'table':
160
189
  return renderTable(block, ctx, key);
190
+ case 'component':
191
+ return renderComponent(block, ctx, key);
161
192
  }
162
193
  }
194
+ /**
195
+ * A component block. The node only exists because the parser was told this
196
+ * name resolves, so the lookup here agrees by construction — the `undefined`
197
+ * branch is for the window between a `components` prop changing and the
198
+ * re-parse that follows it.
199
+ *
200
+ * Children arrive as a laid-out column of blocks, so a component places one
201
+ * child and does not have to know what markdown is.
202
+ */
203
+ function renderComponent(block, ctx, key) {
204
+ const Component = resolveComponent(ctx.components, block.name);
205
+ if (!Component)
206
+ return null;
207
+ const props = {};
208
+ // Insertion order is the order they were written, which is what decides
209
+ // whether a spread overrides a named attribute or the other way round.
210
+ for (const [name, value] of Object.entries(block.attributes)) {
211
+ if (name.startsWith(SPREAD_PREFIX)) {
212
+ const spread = value.kind === 'expression' ? ctx.evaluate?.(value.src) : undefined;
213
+ if (spread && typeof spread === 'object')
214
+ Object.assign(props, spread);
215
+ continue;
216
+ }
217
+ props[name] =
218
+ value.kind === 'literal' ? value.value : ctx.evaluate?.(value.src);
219
+ }
220
+ const children = block.children.length === 0
221
+ ? undefined
222
+ : hx('box', {
223
+ style: {
224
+ flexDirection: 'column',
225
+ gap: ctx.look.blockGap,
226
+ alignItems: 'stretch',
227
+ },
228
+ }, renderBlocks(block.children, ctx));
229
+ return h(React.Fragment, { key }, h(Component, props, children));
230
+ }
163
231
  function renderCode(text, lang, ctx, key) {
164
232
  const custom = ctx.fences?.[lang];
165
233
  if (custom) {
@@ -338,7 +406,30 @@ export function Markdown(props) {
338
406
  props.monoFamily,
339
407
  props.highlight,
340
408
  ]);
341
- const doc = React.useMemo(() => parse(source, { partial }), [source, partial]);
409
+ // The gate the parser asks. Memoised on the map's identity so that a
410
+ // stable `components` prop keeps one function, and the parse memo below
411
+ // does not re-read the whole document on every render.
412
+ const componentMap = props.components;
413
+ const isComponent = React.useMemo(() => componentMap
414
+ ? (name) => resolveComponent(componentMap, name) !== undefined
415
+ : undefined, [componentMap]);
416
+ // `scope` is both the gate and the bindings: giving one turns expression
417
+ // parsing on, and is where the compiled functions get their arguments.
418
+ const scope = props.scope;
419
+ const evaluate = React.useMemo(() => (scope ? evaluator(scope) : undefined), [scope]);
420
+ const doc = React.useMemo(() => {
421
+ const parsed = parse(source, {
422
+ partial,
423
+ ...(isComponent ? { isComponent } : null),
424
+ ...(evaluate ? { expressions: true } : null),
425
+ });
426
+ // Expressions resolve to text here rather than during the render, so
427
+ // every `runsOf` caller downstream keeps seeing an inline tree it
428
+ // already understands. `raws` is carried through, so the block cache
429
+ // still keys on the source text; a change of `scope` invalidates it
430
+ // through the seam epoch instead.
431
+ return evaluate ? resolveExpressions(parsed, evaluate) : parsed;
432
+ }, [source, partial, isComponent, evaluate]);
342
433
  // Per-block element cache, keyed on the block's raw source (+ whether it
343
434
  // is the live tail). Streaming appends re-render only the block that
344
435
  // changed; everything else is the same ReactElement, so React bails out
@@ -351,13 +442,19 @@ export function Markdown(props) {
351
442
  const seamsRef = React.useRef({
352
443
  fences: props.fences,
353
444
  resolveLanguage: props.resolveLanguage,
445
+ components: props.components,
446
+ scope: props.scope,
354
447
  gen: 0,
355
448
  });
356
449
  if (seamsRef.current.fences !== props.fences ||
357
- seamsRef.current.resolveLanguage !== props.resolveLanguage) {
450
+ seamsRef.current.resolveLanguage !== props.resolveLanguage ||
451
+ seamsRef.current.components !== props.components ||
452
+ seamsRef.current.scope !== props.scope) {
358
453
  seamsRef.current = {
359
454
  fences: props.fences,
360
455
  resolveLanguage: props.resolveLanguage,
456
+ components: props.components,
457
+ scope: props.scope,
361
458
  gen: seamsRef.current.gen + 1,
362
459
  };
363
460
  }
@@ -374,6 +471,8 @@ export function Markdown(props) {
374
471
  fonts,
375
472
  fences: props.fences,
376
473
  resolveLanguage: props.resolveLanguage,
474
+ components: props.components,
475
+ ...(evaluate ? { evaluate } : null),
377
476
  };
378
477
  for (let i = 0; i < doc.blocks.length; i += 1) {
379
478
  const live = partial && i === doc.blocks.length - 1;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/markdown/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/markdown/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,mEAAmE;AACnE,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,0EAA0E;AAC1E,qEAAqE;AACrE,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,wEAAwE;AACxE,6DAA6D;AAC7D,EAAE;AACF,sEAAsE;AACtE,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,kBAAkB;AAClB,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,6DAA6D;AAC7D,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,wEAAwE;AACxE,wEAAwE;AACxE,yEAAyE;AACzE,uEAAuE;AACvE,4EAA4E;AAC5E,YAAY;AACZ,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAWvC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAY7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;AAE9B,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,4BAA4B;AAC5B,gBAAgB,EAAE,CAAC;AAmJnB,SAAS,UAAU,CACjB,KAA8B,EAC9B,KAAoB;IAEpB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,YAAY,CAAC;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,WAAW,CAAC;IACnD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAiB;QAC3B,MAAM;QACN,UAAU;QACV,IAAI;QACJ,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;KACzB,CAAC;IACF,OAAO;QACL,MAAM;QACN,GAAG;QACH,MAAM;QACN,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QAC1B,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACjD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QAChC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC1D,SAAS;QACT,GAAG,EAAE;YACH,IAAI;YACJ,GAAG;YACH,MAAM;YACN,MAAM;YACN,UAAU;YACV,IAAI;YACJ,MAAM;YACN,UAAU;YACV,SAAS;SACV,CAAC,IAAI,CAAC,GAAG,CAAC;KACZ,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,GAAgC,EAChC,IAAY;IAEZ,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE,CAAC;YAC1E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,GAAI,GAA+B,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,IAAI,IAAI;QAChB,CAAC,CAAC,SAAS;QACX,CAAC,CAAE,GAA8C,CAAC;AACtD,CAAC;AAyBD,SAAS,QAAQ,CACf,GAAoB,EACpB,IAAe,EACf,KAAa,EACb,IAAI,GAAG,IAAI;IAEX,MAAM,KAAK,GAA8C,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IAC9B,IAAI,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAA6B,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CACnB,GAAc,EACd,IAA2B;IAE3B,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB,EAAE,GAAc;IACvD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,KAAgB,EAAE,GAAc,EAAE,GAAW;IAChE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAE5D,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;gBAC1C,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;gBAC9C,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;aAC3D,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAEtD,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,MAAM,GAAc;gBACxB,GAAG,GAAG;gBACN,IAAI,EAAE;oBACJ,GAAG,IAAI;oBACP,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACjE;aACF,CAAC;YACF,OAAO,EAAE,CACP,KAAK,EACL;gBACE,GAAG;gBACH,KAAK,EAAE;oBACL,GAAG,MAAM,CAAC,MAAM;oBAChB,GAAG,EAAE,IAAI,CAAC,QAAQ;oBAClB,eAAe,EAAE,CAAC;oBAClB,eAAe,EAAE,IAAI,CAAC,MAAM;oBAC5B,WAAW,EAAE,EAAE;iBAChB;aACF,EACD,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CACxC,CAAC;QACJ,CAAC;QAED,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAErC,KAAK,MAAM;YACT,OAAO,EAAE,CAAC,KAAK,EAAE;gBACf,GAAG;gBACH,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC;oBACT,eAAe,EAAE,IAAI,CAAC,MAAM;oBAC5B,SAAS,EAAE,CAAC;oBACZ,YAAY,EAAE,CAAC;iBAChB;aACF,CAAC,CAAC;QAEL,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAEtC,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CACtB,KAAqB,EACrB,GAAc,EACd,GAAW;IAEX,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,wEAAwE;IACxE,uEAAuE;IACvE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,QAAQ,GACZ,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,CACA,KAAK,EACL;YACE,KAAK,EAAE;gBACL,aAAa,EAAE,QAAQ;gBACvB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;gBACtB,UAAU,EAAE,SAAS;aACtB;SACF,EACD,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAClC,CAAC;IACR,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,UAAU,CACjB,IAAY,EACZ,IAAY,EACZ,GAAc,EACd,GAAW;IAEX,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,EAAE,CAAC;QACX,sEAAsE;QACtE,mDAAmD;QACnD,OAAO,CAAC,CACN,KAAK,CAAC,QAAQ,EACd,EAAE,GAAG,EAAE,EACP,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CACnD,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;QACrC,IAAI;QACJ,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;QAC7B,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KAC3E,CAAC,CAAC;IACH,sEAAsE;IACtE,OAAO,EAAE,CACP,KAAK,EACL;QACE,GAAG;QACH,KAAK,EAAE;YACL,GAAG,cAAc,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,QAAQ;YAClB,aAAa,EAAE,QAAQ;SACxB;KACF,EACD,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAe,EAAE,GAAc,EAAE,GAAW;IAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO;QAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACpC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACxC,2EAA2E;IAC3E,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,WAAW,GAAU,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,MAAiB,CAAC;QACtB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,GAAG,EAAE,CACT,KAAK,EACL,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EACzC,CAAC,CACC,KAAK,EACL;gBACE,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,WAAW,EAAE,CAAC;oBACd,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;oBAC/D,YAAY,EAAE,CAAC;oBACf,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBACjE,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;oBACxB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;iBAC/C;aACF,EACD,IAAI,CAAC,OAAO;gBACV,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;gBACtD,CAAC,CAAC,IAAI,CACT,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,EAAE,CACT,KAAK,EACL,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EACzC,EAAE,CACA,MAAM,EACN;gBACE,KAAK,EAAE;oBACL,KAAK,EAAE,IAAI,CAAC,GAAG;oBACf,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBAC1B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;iBAC/B;aACF,EACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAC1C,CACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CACP,KAAK,EACL,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EACjC,MAAM,EACN,EAAE,CACA,KAAK,EACL;YACE,KAAK,EAAE;gBACL,GAAG,MAAM,CAAC,MAAM;gBAChB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACpC,QAAQ,EAAE,CAAC;gBACX,UAAU,EAAE,CAAC;aACd;SACF,EACD,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CACpC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,WAAW,CAClB,KAAiB,EACjB,GAAc,EACd,GAAW;IAEX,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IAEhC,yEAAyE;IACzE,qEAAqE;IACrE,oEAAoE;IACpE,MAAM,MAAM,GAAa,IAAI,KAAK,CAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,CAAC,KAAqB,EAAE,CAAe,EAAQ,EAAE;QAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,CAAS,CAAC;YACd,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBACxC,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC,KAAK,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;YACjD,CAAC;YACD,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI;QAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;IAE7D,2EAA2E;IAC3E,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,SAAS,GAAG,CAChB,KAAqB,EACrB,CAAe,EACf,MAAuB,EACvB,EAAW,EACX,OAAiB,EACN,EAAE,CACb,EAAE,CACA,KAAK,EACL;QACE,GAAG,EAAE,MAAM;QACX,KAAK,EAAE;YACL,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACvC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAClD;KACF,EACD,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACvB,CAAC,CACC,KAAK,EACL;QACE,GAAG,EAAE,CAAC;QACN,KAAK,EAAE;YACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAChB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YACnC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;SACvC;KACF,EACD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;QAC7B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;QACtC,QAAQ,EAAE,CAAC;KACZ,CAAC,CACH,CACF,CACF,CAAC;IAEJ,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,sEAAsE;IACtE,iDAAiD;IACjD,OAAO,EAAE,CACP,KAAK,EACL,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAC/D,EAAE,CACA,KAAK,EACL;QACE,KAAK,EAAE;YACL,GAAG,MAAM,CAAC,MAAM;YAChB,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,YAAY;SACxB;KACF,EACD,GAAG,QAAQ,CACZ,CACF,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE;IACnC,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;IACjC,SAAS,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE;CACV,CAAC;AAS3C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC3E,uEAAuE;IACvE,wDAAwD;IACxD,MAAM,KAAK,GAAG,QAAQ,EAAwC,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAM,EAAyC,CAAC;IAE5D,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CACxB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAC9B;QACE,KAAK;QACL,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,SAAS;KAChB,CACF,CAAC;IAEF,qEAAqE;IACrE,wEAAwE;IACxE,uDAAuD;IACvD,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC;IACtC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAC/B,GAAG,EAAE,CACH,YAAY;QACV,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,SAAS;QACtE,CAAC,CAAC,SAAS,EACf,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC5B,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAC5C,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,GAAG,GAAa,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;YAC3B,OAAO;YACP,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACzC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAC;QACH,qEAAqE;QACrE,kEAAkE;QAClE,qEAAqE;QACrE,oEAAoE;QACpE,kCAAkC;QAClC,OAAO,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAClE,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7C,yEAAyE;IACzE,qEAAqE;IACrE,wEAAwE;IACxE,mDAAmD;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAoB,IAAI,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC;IACjC,uEAAuE;IACvE,yEAAyE;IACzE,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAM1B;QACD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;IACH,IACE,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QACxC,QAAQ,CAAC,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;QAC1D,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QAChD,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EACtC,CAAC;QACD,QAAQ,CAAC,OAAO,GAAG;YACjB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;SAC9B,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACzE,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC1D,QAAQ,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAC/C,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;IAE/B,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,CAAC;QACC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC7C,MAAM,GAAG,GAAc;YACrB,IAAI;YACJ,KAAK;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACpC,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EACb,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAC7B,CAAC,CACF,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,qDAAqD;IAC5E,CAAC;IAED,MAAM,SAAS,GAAU;QACvB,aAAa,EAAE,QAAQ;QACvB,GAAG,EAAE,IAAI,CAAC,QAAQ;QAClB,UAAU,EAAE,SAAS;KACtB,CAAC;IAEF,OAAO,EAAE,CACP,KAAK,EACL;QACE,KAAK,EAAE,KAAK;YACV,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,SAAS;QACb,4DAA4D;QAC5D,mEAAmE;QACnE,qEAAqE;QACrE,kCAAkC;QAClC,UAAU;QACV,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,GAAG,KAAK;QACR,GAAG,IAAI;QACP,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC;KACb,EAC5B,GAAG,QAAQ,CACZ,CAAC;AACJ,CAAC"}
@@ -4,5 +4,5 @@ export declare function parse(source: string, options?: ParseOptions): Document;
4
4
  * Parse inline markdown. `atDocEnd` marks text whose end is the live end of
5
5
  * a streaming document — only then do the implicit-close rules apply.
6
6
  */
7
- export declare function parseInline(text: string, atDocEnd: boolean): InlineNode[];
7
+ export declare function parseInline(text: string, atDocEnd: boolean, expressions?: boolean): InlineNode[];
8
8
  //# sourceMappingURL=parse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/markdown/parse.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAEV,QAAQ,EACR,UAAU,EAGV,YAAY,EAEb,MAAM,UAAU,CAAC;AAuDlB,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,QAAQ,CAW1E;AAqfD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,UAAU,EAAE,CAqOzE"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/markdown/parse.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAGV,QAAQ,EACR,UAAU,EAGV,YAAY,EAEb,MAAM,UAAU,CAAC;AA4IlB,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,QAAQ,CAkB1E;AA+kBD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,WAAW,UAAQ,GAClB,UAAU,EAAE,CA8Pd"}
@@ -1,3 +1,6 @@
1
+ import { closeBrace, scanTag } from './tags.js';
2
+ /** Nothing is a component unless the caller says so. */
3
+ const NO_COMPONENTS = () => false;
1
4
  // --- line-level regexes, compiled once -------------------------------------
2
5
  const RE_BLANK = /^[ \t]*$/;
3
6
  const RE_ATX = /^ {0,3}(#{1,6})(?:[ \t]+(.*?))?(?:[ \t]+#+)?[ \t]*$/;
@@ -15,12 +18,81 @@ const RE_TABLE_DELIM = /^ {0,3}\|?[ \t]*:?-+:?[ \t]*(?:\|[ \t]*:?-+:?[ \t]*)*\|?
15
18
  const RE_TABLE_DELIM_PREFIX = /^ {0,3}\|[ \t:|-]*$/;
16
19
  /** Would this line open something other than a paragraph? The test lazy
17
20
  * continuation and list/quote termination share. */
18
- function isBlockStart(line) {
21
+ function isBlockStart(line, isComponent = NO_COMPONENTS, expressions = false) {
19
22
  return (RE_ATX.test(line) ||
20
23
  RE_FENCE_OPEN.test(line) ||
21
24
  RE_HR.test(line) ||
22
25
  RE_QUOTE.test(line) ||
23
- RE_LIST.test(line));
26
+ RE_LIST.test(line) ||
27
+ isComponentBlockLine(line, isComponent, expressions));
28
+ }
29
+ /** A line that opens a component block, resolved — speculation does not
30
+ * interrupt a paragraph. */
31
+ function isComponentBlockLine(line, isComponent, expressions) {
32
+ const found = componentBlockAt([line], 0, isComponent, expressions);
33
+ return found !== null && found !== 'incomplete';
34
+ }
35
+ /**
36
+ * The component block opening at `lines[at]`, if one does.
37
+ *
38
+ * A component block owns its whole line — `<Chart/>` with prose after it is
39
+ * a paragraph with a tag in it, which is the inline case and not this one —
40
+ * but it may spend several lines doing so, because a component with six
41
+ * props is written down the page and MDX authors expect that to work. Lines
42
+ * are joined until the tag closes; a blank line gives up, since a tag does
43
+ * not span a paragraph break.
44
+ *
45
+ * `'incomplete'` means "still arriving", which only the live tail acts on.
46
+ */
47
+ function componentBlockAt(lines, at, isComponent, expressions = false) {
48
+ // The identity check is not an optimisation: `scanTag` reports a bare
49
+ // `<Chart` as "still arriving" before it can know whether anyone claims
50
+ // the name, and a document that never opted in must not have its lazy
51
+ // continuation changed by a line that merely looks like a tag.
52
+ if (isComponent === NO_COMPONENTS)
53
+ return null;
54
+ const indent = indentOf(lines[at]);
55
+ if (indent > 3 || lines[at][indent] !== '<')
56
+ return null;
57
+ let text = lines[at];
58
+ for (let j = at; j < lines.length; j += 1) {
59
+ if (j > at)
60
+ text += `\n${lines[j]}`;
61
+ const tag = scanTag(text, indent, isComponent, expressions);
62
+ if (tag === null)
63
+ return null;
64
+ if (tag === 'incomplete') {
65
+ if (j + 1 < lines.length && RE_BLANK.test(lines[j + 1]))
66
+ return null;
67
+ continue;
68
+ }
69
+ if (tag.kind === 'close')
70
+ return null;
71
+ return text.slice(tag.end).trim() === '' ? { tag, lastLine: j } : null;
72
+ }
73
+ return 'incomplete';
74
+ }
75
+ /** The line closing `name`, counting same-name nesting, or -1. */
76
+ function componentCloseLine(lines, from, name, isComponent) {
77
+ let depth = 0;
78
+ for (let i = from; i < lines.length; i += 1) {
79
+ const indent = indentOf(lines[i]);
80
+ if (indent > 3 || lines[i][indent] !== '<')
81
+ continue;
82
+ const tag = scanTag(lines[i], indent, isComponent);
83
+ if (tag === null || tag === 'incomplete' || tag.name !== name)
84
+ continue;
85
+ if (lines[i].slice(tag.end).trim() !== '')
86
+ continue;
87
+ if (tag.kind === 'open')
88
+ depth += 1;
89
+ else if (tag.kind === 'close') {
90
+ if (depth === 0)
91
+ return i;
92
+ depth -= 1;
93
+ }
94
+ }
95
+ return -1;
24
96
  }
25
97
  /** Leading tabs advance to 4-column stops; content tabs are left alone. */
26
98
  function expandLeadingTabs(line) {
@@ -53,7 +125,7 @@ export function parse(source, options = {}) {
53
125
  const lines = normalized.split('\n').map(expandLeadingTabs);
54
126
  const blocks = [];
55
127
  const ranges = [];
56
- parseBlocks(lines, partial, blocks, ranges);
128
+ parseBlocks(lines, partial, blocks, ranges, options.isComponent ?? NO_COMPONENTS, options.expressions === true);
57
129
  return {
58
130
  blocks,
59
131
  raws: ranges.map(([a, b]) => lines.slice(a, b).join('\n')),
@@ -66,7 +138,7 @@ export function parse(source, options = {}) {
66
138
  * anyway" rule. `ranges`, when given, receives each block's [start, endExcl)
67
139
  * line range (only the top-level call wants them, for the streaming cache).
68
140
  */
69
- function parseBlocks(lines, tailOpen, out, ranges) {
141
+ function parseBlocks(lines, tailOpen, out, ranges, isComponent = NO_COMPONENTS, expressions = false) {
70
142
  let i = 0;
71
143
  const n = lines.length;
72
144
  let paraStart = -1;
@@ -83,7 +155,7 @@ function parseBlocks(lines, tailOpen, out, ranges) {
83
155
  para.length = 0;
84
156
  paraStart = -1;
85
157
  // the paragraph owns the live tail iff its last line is the document's
86
- const children = parseInline(text, tailOpen && end === n);
158
+ const children = parseInline(text, tailOpen && end === n, expressions);
87
159
  if (children.length > 0)
88
160
  commit({ type: 'paragraph', children }, start, end);
89
161
  };
@@ -113,7 +185,7 @@ function parseBlocks(lines, tailOpen, out, ranges) {
113
185
  commit({
114
186
  type: 'heading',
115
187
  depth: setext[1][0] === '=' ? 1 : 2,
116
- children: parseInline(text, false),
188
+ children: parseInline(text, false, expressions),
117
189
  }, start, i + 1);
118
190
  i += 1;
119
191
  continue;
@@ -141,7 +213,7 @@ function parseBlocks(lines, tailOpen, out, ranges) {
141
213
  commit({
142
214
  type: 'heading',
143
215
  depth: atx[1].length,
144
- children: parseInline(atx[2] ?? '', held),
216
+ children: parseInline(atx[2] ?? '', held, expressions),
145
217
  }, i, i + 1);
146
218
  i += 1;
147
219
  continue;
@@ -177,6 +249,54 @@ function parseBlocks(lines, tailOpen, out, ranges) {
177
249
  commit({ type: 'code', lang, text: body.join('\n'), closed }, start, i);
178
250
  continue;
179
251
  }
252
+ // A component standing where a paragraph would (docs/prd-mdx.md). Gated
253
+ // on `isComponent`, so a document that never opted in never gets here.
254
+ const component = componentBlockAt(lines, i, isComponent, expressions);
255
+ if (component === 'incomplete') {
256
+ // A tag still arriving: hold it back rather than flash `<Cha` on the
257
+ // screen, the way a half-arrived link is held. Only the live tail may
258
+ // do this — anywhere else the tag is simply never going to close.
259
+ if (tailOpen) {
260
+ flushPara(i);
261
+ i = n;
262
+ continue;
263
+ }
264
+ }
265
+ else if (component) {
266
+ const { tag, lastLine } = component;
267
+ flushPara(i);
268
+ const start = i;
269
+ const node = (children) => ({
270
+ type: 'component',
271
+ name: tag.name,
272
+ attributes: tag.attributes,
273
+ children,
274
+ });
275
+ if (tag.kind === 'self') {
276
+ i = lastLine + 1;
277
+ commit(node([]), start, i);
278
+ continue;
279
+ }
280
+ const closeAt = componentCloseLine(lines, lastLine + 1, tag.name, isComponent);
281
+ if (closeAt !== -1) {
282
+ const children = [];
283
+ parseBlocks(lines.slice(lastLine + 1, closeAt), tailOpen && closeAt >= n, children, undefined, isComponent, expressions);
284
+ i = closeAt + 1;
285
+ commit(node(children), start, i);
286
+ continue;
287
+ }
288
+ // Open, with no close yet. While the document is still arriving that
289
+ // is the ordinary state of an element being typed: hold the tag and
290
+ // let the children render as the markdown they are, so the reader sees
291
+ // the prose rather than nothing. Mounting the component now and
292
+ // appending to its children instead would remount it — and lose its
293
+ // state — on the chunk that finally closes it.
294
+ if (tailOpen) {
295
+ i = lastLine + 1;
296
+ continue;
297
+ }
298
+ // Final document, never closed: the tag is text, so fall through.
299
+ }
180
300
  const quote = RE_QUOTE.exec(line);
181
301
  if (quote) {
182
302
  flushPara(i);
@@ -194,7 +314,7 @@ function parseBlocks(lines, tailOpen, out, ranges) {
194
314
  continue;
195
315
  }
196
316
  if (!RE_BLANK.test(l) &&
197
- !isBlockStart(l) &&
317
+ !isBlockStart(l, isComponent, expressions) &&
198
318
  inner.length > 0 &&
199
319
  !RE_BLANK.test(inner[inner.length - 1])) {
200
320
  inner.push(l); // lazy: "> a\nb" keeps b in the quote
@@ -204,7 +324,7 @@ function parseBlocks(lines, tailOpen, out, ranges) {
204
324
  break;
205
325
  }
206
326
  const children = [];
207
- parseBlocks(inner, tailOpen && i === n, children);
327
+ parseBlocks(inner, tailOpen && i === n, children, undefined, isComponent, expressions);
208
328
  if (children.length > 0)
209
329
  commit({ type: 'quote', children }, start, i);
210
330
  continue;
@@ -215,7 +335,7 @@ function parseBlocks(lines, tailOpen, out, ranges) {
215
335
  if (list && !(para.length > 0 && !list[4]) && !(held && !list[4])) {
216
336
  flushPara(i);
217
337
  const start = i;
218
- const block = parseList(lines, i, tailOpen);
338
+ const block = parseList(lines, i, tailOpen, isComponent, expressions);
219
339
  i = block.end;
220
340
  commit(block.list, start, i);
221
341
  continue;
@@ -247,7 +367,9 @@ function parseBlocks(lines, tailOpen, out, ranges) {
247
367
  const rows = [];
248
368
  while (i < n) {
249
369
  const l = lines[i];
250
- if (RE_BLANK.test(l) || !l.includes('|') || isBlockStart(l))
370
+ if (RE_BLANK.test(l) ||
371
+ !l.includes('|') ||
372
+ isBlockStart(l, isComponent, expressions))
251
373
  break;
252
374
  rows.push(normalizeRow(splitRow(l), align.length, tailOpen && i === n - 1));
253
375
  i += 1;
@@ -299,7 +421,7 @@ function parseBlocks(lines, tailOpen, out, ranges) {
299
421
  }
300
422
  flushPara(n);
301
423
  }
302
- function parseList(lines, from, tailOpen) {
424
+ function parseList(lines, from, tailOpen, isComponent = NO_COMPONENTS, expressions = false) {
303
425
  const n = lines.length;
304
426
  const first = RE_LIST.exec(lines[from]);
305
427
  // caller matched — this is the narrowing, not a runtime possibility
@@ -354,7 +476,9 @@ function parseList(lines, from, tailOpen) {
354
476
  i += 1;
355
477
  continue;
356
478
  }
357
- if (pendingBlanks === 0 && !isBlockStart(l) && !RE_BLANK.test(l)) {
479
+ if (pendingBlanks === 0 &&
480
+ !isBlockStart(l, isComponent, expressions) &&
481
+ !RE_BLANK.test(l)) {
358
482
  inner.push(l); // lazy paragraph continuation
359
483
  i += 1;
360
484
  continue;
@@ -371,7 +495,7 @@ function parseList(lines, from, tailOpen) {
371
495
  inner[0] = inner[0].slice(task[0].length);
372
496
  }
373
497
  const children = [];
374
- parseBlocks(inner, tailOpen && i >= n, children);
498
+ parseBlocks(inner, tailOpen && i >= n, children, undefined, isComponent, expressions);
375
499
  items.push({ checked, children });
376
500
  }
377
501
  return {
@@ -477,7 +601,7 @@ function classify(ch) {
477
601
  * Parse inline markdown. `atDocEnd` marks text whose end is the live end of
478
602
  * a streaming document — only then do the implicit-close rules apply.
479
603
  */
480
- export function parseInline(text, atDocEnd) {
604
+ export function parseInline(text, atDocEnd, expressions = false) {
481
605
  const items = [];
482
606
  let buf = '';
483
607
  const flushText = () => {
@@ -574,6 +698,30 @@ export function parseInline(text, atDocEnd) {
574
698
  i += run;
575
699
  continue;
576
700
  }
701
+ // `{expr}` in the prose — rung 2 only, so a brace in an ordinary
702
+ // document is the character it has always been.
703
+ if (expressions && ch === '{') {
704
+ const end = closeBrace(text, i);
705
+ if (end === -1) {
706
+ // Still arriving: hold the rest of the line back rather than show
707
+ // half an expression. In a final document it is just text.
708
+ if (atDocEnd) {
709
+ flushText();
710
+ i = len;
711
+ continue;
712
+ }
713
+ buf += ch;
714
+ i += 1;
715
+ continue;
716
+ }
717
+ flushText();
718
+ items.push({
719
+ kind: 'node',
720
+ node: { type: 'expression', src: text.slice(i + 1, end - 1).trim() },
721
+ });
722
+ i = end;
723
+ continue;
724
+ }
577
725
  if (ch === '<') {
578
726
  const rest = text.slice(i);
579
727
  const auto = RE_AUTOLINK.exec(rest) ?? RE_AUTOEMAIL.exec(rest);