@refrakt-md/runes 0.17.0 → 0.19.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 (58) hide show
  1. package/dist/aggregate-resolve.d.ts.map +1 -1
  2. package/dist/aggregate-resolve.js +69 -0
  3. package/dist/aggregate-resolve.js.map +1 -1
  4. package/dist/collection-helpers.d.ts +24 -2
  5. package/dist/collection-helpers.d.ts.map +1 -1
  6. package/dist/collection-helpers.js +24 -3
  7. package/dist/collection-helpers.js.map +1 -1
  8. package/dist/collection-resolve.d.ts.map +1 -1
  9. package/dist/collection-resolve.js +15 -8
  10. package/dist/collection-resolve.js.map +1 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +60 -354
  13. package/dist/config.js.map +1 -1
  14. package/dist/drawer-pipeline.d.ts.map +1 -1
  15. package/dist/drawer-pipeline.js +7 -22
  16. package/dist/drawer-pipeline.js.map +1 -1
  17. package/dist/fence-escape.d.ts.map +1 -1
  18. package/dist/fence-escape.js +7 -1
  19. package/dist/fence-escape.js.map +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/lib/component.d.ts.map +1 -1
  25. package/dist/lib/component.js +50 -3
  26. package/dist/lib/component.js.map +1 -1
  27. package/dist/lib/resolver.d.ts.map +1 -1
  28. package/dist/lib/resolver.js +13 -2
  29. package/dist/lib/resolver.js.map +1 -1
  30. package/dist/tags/aggregate.d.ts.map +1 -1
  31. package/dist/tags/aggregate.js +10 -3
  32. package/dist/tags/aggregate.js.map +1 -1
  33. package/dist/tags/budget.d.ts.map +1 -1
  34. package/dist/tags/budget.js +99 -9
  35. package/dist/tags/budget.js.map +1 -1
  36. package/dist/tags/card.d.ts.map +1 -1
  37. package/dist/tags/card.js +26 -43
  38. package/dist/tags/card.js.map +1 -1
  39. package/dist/tags/chart.d.ts.map +1 -1
  40. package/dist/tags/chart.js +31 -64
  41. package/dist/tags/chart.js.map +1 -1
  42. package/dist/tags/common.d.ts +37 -8
  43. package/dist/tags/common.d.ts.map +1 -1
  44. package/dist/tags/common.js +59 -24
  45. package/dist/tags/common.js.map +1 -1
  46. package/dist/tags/diagram.d.ts.map +1 -1
  47. package/dist/tags/diagram.js +33 -7
  48. package/dist/tags/diagram.js.map +1 -1
  49. package/dist/tags/embed.d.ts.map +1 -1
  50. package/dist/tags/embed.js +28 -10
  51. package/dist/tags/embed.js.map +1 -1
  52. package/dist/tags/gallery.d.ts.map +1 -1
  53. package/dist/tags/gallery.js +1 -6
  54. package/dist/tags/gallery.js.map +1 -1
  55. package/dist/tags/sandbox.d.ts.map +1 -1
  56. package/dist/tags/sandbox.js +32 -50
  57. package/dist/tags/sandbox.js.map +1 -1
  58. package/package.json +3 -3
package/dist/tags/card.js CHANGED
@@ -2,7 +2,7 @@ import Markdoc from '@markdoc/markdoc';
2
2
  const { Tag } = Markdoc;
3
3
  import { createContentModelSchema, createComponentRenderable, asNodes } from '../lib/index.js';
4
4
  import { RenderableNodeCursor } from '../lib/renderable.js';
5
- import { SplitLayoutModel, buildLayoutMetas, extractMediaImage } from './common.js';
5
+ import { SplitLayoutModel, buildLayoutMetas, splitMediaBodyFooter, extractMediaImage } from './common.js';
6
6
  /**
7
7
  * `card` (SPEC-070) — a generic, self-contained content card.
8
8
  *
@@ -35,30 +35,10 @@ export const card = createContentModelSchema({
35
35
  fields: [{ name: 'body', match: 'any', optional: true, greedy: true }],
36
36
  },
37
37
  transform(resolved, attrs, config) {
38
- // Split the body nodes on `hr` (`---`) into zones.
39
- const nodes = asNodes(resolved.body);
40
- const zones = [[]];
41
- for (const n of nodes) {
42
- if (n.type === 'hr')
43
- zones.push([]);
44
- else
45
- zones[zones.length - 1].push(n);
46
- }
47
- let mediaNodes = [];
48
- let bodyNodes = [];
49
- let footerNodes = [];
50
- if (zones.length === 1) {
51
- bodyNodes = zones[0];
52
- }
53
- else if (zones.length === 2) {
54
- mediaNodes = zones[0];
55
- bodyNodes = zones[1];
56
- }
57
- else {
58
- mediaNodes = zones[0];
59
- footerNodes = zones[zones.length - 1];
60
- bodyNodes = zones.slice(1, -1).flat();
61
- }
38
+ // Split the body on `---` into media / body / footer zones. The shared
39
+ // helper enforces the canonical media-first body shape (1 group = body,
40
+ // 2 = media + body, 3+ = media + body + footer).
41
+ const { media: mediaNodes, body: bodyNodes, footer: footerNodes } = splitMediaBodyFooter(asNodes(resolved.body));
62
42
  const { metas: layoutMetas, children: layoutChildren } = buildLayoutMetas(attrs);
63
43
  const children = [...layoutChildren];
64
44
  // Media zone — unwrap a bare image; otherwise render arbitrary content.
@@ -78,46 +58,49 @@ export const card = createContentModelSchema({
78
58
  eyebrowNode = bodyNodes[0];
79
59
  mainBodyNodes = bodyNodes.slice(1);
80
60
  }
81
- // Content zone (body + optional footer) one grid child so the split
82
- // layout puts media | content; footer sits at the bottom of content.
83
- const bodyInner = [];
61
+ // SPEC-081/091 flat-slot model: the transform emits flat `data-name` slots
62
+ // (media · eyebrow · body · footer · link); the engine's `layout` config
63
+ // groups eyebrow/body/footer into the `content` wrapper and places it
64
+ // beside media. This is what lets cover ({% ref "SPEC-089" /%}) be a
65
+ // `media-position` variant on card.
84
66
  let eyebrowTag;
85
67
  if (eyebrowNode) {
86
68
  const eyebrowCursor = new RenderableNodeCursor(Markdoc.transform([eyebrowNode], config));
87
69
  const first = eyebrowCursor.toArray()[0];
88
70
  if (Markdoc.Tag.isTag(first)) {
89
71
  eyebrowTag = first;
90
- bodyInner.push(eyebrowTag);
91
72
  }
92
73
  }
93
74
  const bodyCursor = new RenderableNodeCursor(Markdoc.transform(mainBodyNodes, config));
94
75
  const bodyRendered = bodyCursor.toArray();
95
76
  // The body's leading heading is the card title — give it a hook so it can
96
- // sit tight under an eyebrow instead of carrying default prose top margin.
97
- let titleTag;
98
- const firstBody = bodyRendered[0];
99
- if (Markdoc.Tag.isTag(firstBody) && /^h[1-6]$/.test(firstBody.name)) {
100
- titleTag = firstBody;
101
- }
102
- bodyInner.push(...bodyRendered);
103
- const bodyDiv = new Tag('div', { 'data-name': 'body' }, bodyInner);
104
- const contentChildren = [bodyDiv];
77
+ // sit tight under an eyebrow (or a leading `bar` strip) instead of carrying
78
+ // default prose top margin. Find the first heading rather than only
79
+ // position 0, so a composed header (e.g. a `{% bar %}` before the title)
80
+ // doesn't leave the title with a prose-sized gap.
81
+ const titleTag = bodyRendered.find((n) => Markdoc.Tag.isTag(n) && /^h[1-6]$/.test(n.name));
82
+ const bodyDiv = new Tag('div', { 'data-name': 'body' }, bodyRendered);
105
83
  let footerTag;
106
84
  if (footerNodes.length > 0) {
107
85
  const footerCursor = new RenderableNodeCursor(Markdoc.transform(footerNodes, config));
108
86
  footerTag = new Tag('footer', { 'data-name': 'footer' }, footerCursor.toArray());
109
- contentChildren.push(footerTag);
110
87
  }
111
- const contentDiv = new Tag('div', { 'data-name': 'content' }, contentChildren);
112
- children.push(contentDiv);
88
+ // Flat slots, in order. The engine's layout assembly wraps
89
+ // eyebrow/body/footer into `content`.
90
+ if (eyebrowTag)
91
+ children.push(eyebrowTag);
92
+ children.push(bodyDiv);
93
+ if (footerTag)
94
+ children.push(footerTag);
113
95
  // Whole-card link as a stretched overlay (keeps nested links valid).
96
+ // Unlisted in `layout`, so it stays a direct child of the card root.
114
97
  let linkTag;
115
98
  const href = String(attrs.href ?? '');
116
99
  if (href) {
117
100
  linkTag = new Tag('a', { 'data-name': 'link', href, 'aria-hidden': 'true', tabindex: '-1' }, []);
118
101
  children.push(linkTag);
119
102
  }
120
- const refs = { content: contentDiv, body: bodyDiv };
103
+ const refs = { body: bodyDiv };
121
104
  if (titleTag)
122
105
  refs.title = titleTag;
123
106
  if (eyebrowTag)
@@ -129,7 +112,7 @@ export const card = createContentModelSchema({
129
112
  return createComponentRenderable({
130
113
  rune: 'card',
131
114
  tag: 'div',
132
- properties: { layout: layoutMetas.layout },
115
+ properties: { 'media-position': layoutMetas.mediaPosition },
133
116
  refs,
134
117
  children,
135
118
  });
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/tags/card.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEpF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,wBAAwB,CAAC;IAC5C,IAAI,EAAE,gBAAgB;IACtB,UAAU,EAAE;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,uDAAuD,EAAE;KAC1H;IACD,YAAY,EAAE;QACb,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACtE;IACD,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;QAChC,mDAAmD;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAa,CAAC,EAAE,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;gBAC/B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,UAAU,GAAW,EAAE,CAAC;QAC5B,IAAI,SAAS,GAAW,EAAE,CAAC;QAC3B,IAAI,WAAW,GAAW,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACP,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEjF,MAAM,QAAQ,GAAyB,CAAC,GAAG,cAAc,CAAC,CAAC;QAE3D,wEAAwE;QACxE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAC3C,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAyB,CAC7D,CAAC;YACF,MAAM,GAAG,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,KAA6B,CAAC,CAAC,CAAC;QACjH,CAAC;QAED,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,WAA6B,CAAC;QAClC,IAAI,aAAa,GAAG,SAAS,CAAC;QAC9B,IACC,SAAS,CAAC,MAAM,IAAI,CAAC;YACrB,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW;YACjC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,EAC9B,CAAC;YACF,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,SAAS,GAAyB,EAAE,CAAC;QAC3C,IAAI,UAAgD,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAC7C,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,CAAyB,CAChE,CAAC;YACF,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,UAAU,GAAG,KAAK,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;QACF,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAC1C,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAyB,CAChE,CAAC;QACF,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,EAA0B,CAAC;QAClE,0EAA0E;QAC1E,2EAA2E;QAC3E,IAAI,QAA8C,CAAC;QACnD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,QAAQ,GAAG,SAAS,CAAC;QACtB,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,eAAe,GAAyB,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,SAA+C,CAAC;QACpD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAC5C,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAyB,CAC9D,CAAC;YACF,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,YAAY,CAAC,OAAO,EAA0B,CAAC,CAAC;YACzG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;QAC/E,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1B,qEAAqE;QACrE,IAAI,OAA6C,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACtC,IAAI,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACjG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,GAA6C,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC9F,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACpC,IAAI,UAAU;YAAE,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC1C,IAAI,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACvC,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QAEjC,OAAO,yBAAyB,CAAC;YAChC,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE;YAC1C,IAAI;YACJ,QAAQ;SACR,CAAC,CAAC;IACJ,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/tags/card.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/tags/chart.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAkEvC,eAAO,MAAM,KAAK,gBAoChB,CAAC"}
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/tags/chart.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAoBvC,eAAO,MAAM,KAAK,gBA6ChB,CAAC"}
@@ -1,63 +1,21 @@
1
1
  import Markdoc from '@markdoc/markdoc';
2
2
  const { Tag } = Markdoc;
3
3
  import { createContentModelSchema, createComponentRenderable, asNodes } from '../lib/index.js';
4
- import { walkTag } from '../util.js';
5
4
  const chartType = ['bar', 'line', 'pie', 'area'];
6
- /**
7
- * Extract table data from rendered Markdoc table tags.
8
- * Returns { headers: string[], rows: string[][] }
9
- */
10
- function extractTableData(children) {
11
- const headers = [];
12
- const rows = [];
13
- for (const child of children) {
14
- if (!Markdoc.Tag.isTag(child))
5
+ /** Find the rendered data `<table>` (possibly inside a table wrapper). */
6
+ function findTable(nodes) {
7
+ for (const n of nodes) {
8
+ if (!Markdoc.Tag.isTag(n))
15
9
  continue;
16
- // Unwrap rf-table-wrapper div if present
17
- let tableNode = child;
18
- if (child.name === 'div' && child.attributes.class === 'rf-table-wrapper') {
19
- const inner = child.children.find((c) => Markdoc.Tag.isTag(c) && c.name === 'table');
10
+ if (n.name === 'table')
11
+ return n;
12
+ if (n.name === 'div') {
13
+ const inner = n.children.find(c => Markdoc.Tag.isTag(c) && c.name === 'table');
20
14
  if (inner && Markdoc.Tag.isTag(inner))
21
- tableNode = inner;
22
- }
23
- if (tableNode.name === 'table') {
24
- for (const tableChild of tableNode.children) {
25
- if (!Markdoc.Tag.isTag(tableChild))
26
- continue;
27
- if (tableChild.name === 'thead') {
28
- for (const tr of tableChild.children) {
29
- if (!Markdoc.Tag.isTag(tr) || tr.name !== 'tr')
30
- continue;
31
- for (const th of tr.children) {
32
- if (Markdoc.Tag.isTag(th)) {
33
- const text = Array.from(walkTag(th))
34
- .filter(n => typeof n === 'string')
35
- .join('');
36
- headers.push(text.trim());
37
- }
38
- }
39
- }
40
- }
41
- if (tableChild.name === 'tbody') {
42
- for (const tr of tableChild.children) {
43
- if (!Markdoc.Tag.isTag(tr) || tr.name !== 'tr')
44
- continue;
45
- const row = [];
46
- for (const td of tr.children) {
47
- if (Markdoc.Tag.isTag(td)) {
48
- const text = Array.from(walkTag(td))
49
- .filter(n => typeof n === 'string')
50
- .join('');
51
- row.push(text.trim());
52
- }
53
- }
54
- rows.push(row);
55
- }
56
- }
57
- }
15
+ return inner;
58
16
  }
59
17
  }
60
- return { headers, rows };
18
+ return undefined;
61
19
  }
62
20
  export const chart = createContentModelSchema({
63
21
  attributes: {
@@ -73,24 +31,33 @@ export const chart = createContentModelSchema({
73
31
  },
74
32
  transform(resolved, attrs, config) {
75
33
  const children = Markdoc.transform(asNodes(resolved.body), config);
76
- const typeMeta = new Tag('meta', { content: attrs.type ?? 'bar' });
77
- const titleMeta = new Tag('meta', { content: attrs.title ?? '' });
78
- const stackedMeta = new Tag('meta', { content: String(attrs.stacked ?? false) });
79
- // Extract table data and serialize as JSON
80
- const tableData = extractTableData(children);
81
- const dataMeta = new Tag('meta', { content: JSON.stringify(tableData) });
82
- return createComponentRenderable({ rune: 'chart',
34
+ const type = attrs.type ?? 'bar';
35
+ const title = attrs.title ?? '';
36
+ const stacked = attrs.stacked ?? false;
37
+ // SPEC-083: the authored `<table>` is the single source of truth — the no-JS
38
+ // fallback AND the data the rf-chart web component parses. No JSON-in-meta.
39
+ const table = findTable(children);
40
+ const emitted = table ? [table] : children;
41
+ if (table) {
42
+ table.attributes['data-name'] = 'data';
43
+ if (title)
44
+ table.children = [new Tag('caption', {}, [title]), ...table.children];
45
+ }
46
+ // type / stacked ride the bag (→ data-type / data-stacked for the client);
47
+ // title lives in the table's <caption>, not a field-meta.
48
+ const typeMeta = new Tag('meta', { content: type });
49
+ const stackedMeta = new Tag('meta', { content: String(stacked) });
50
+ const node = createComponentRenderable({ rune: 'chart',
83
51
  tag: 'figure',
84
52
  properties: {
85
53
  type: typeMeta,
86
- title: titleMeta,
87
54
  stacked: stackedMeta,
88
55
  },
89
- refs: {
90
- data: dataMeta,
91
- },
92
- children: [typeMeta, titleMeta, stackedMeta, dataMeta],
56
+ children: emitted,
93
57
  });
58
+ // Emit as the rf-chart custom element; the web component enhances the table.
59
+ node.name = 'rf-chart';
60
+ return node;
94
61
  },
95
62
  });
96
63
  //# sourceMappingURL=chart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart.js","sourceRoot":"","sources":["../../src/tags/chart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chart.js","sourceRoot":"","sources":["../../src/tags/chart.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,18 @@
1
1
  import Markdoc from '@markdoc/markdoc';
2
- import type { Tag, RenderableTreeNode, SchemaAttribute } from '@markdoc/markdoc';
2
+ import type { Tag, Node, RenderableTreeNode, SchemaAttribute } from '@markdoc/markdoc';
3
3
  import { RenderableNodeCursor } from '../lib/renderable.js';
4
4
  /** @deprecated Split layout attributes are now provided by splitLayoutAttributes */
5
5
  export declare const SplitablePageSectionModel: undefined;
6
- /** Split layout attribute definitions for runes with split/stacked layouts. */
6
+ /** Shared layout attributes for media+content runes same vocabulary as
7
+ * `bento-cell`, so every media-bearing surface (card, recipe, hero, feature,
8
+ * step, realm, faction, playlist) speaks one language. `media-position` covers
9
+ * all four placements (the old `layout`'s `stacked`/`split`/`split-reverse` are
10
+ * the `top`/`start`/`end` subset, with `bottom` as a new mode). `media-ratio`
11
+ * uses the same preset percentages as `bento-cell` instead of the open-ended
12
+ * `ratio="2 1"` string. `valign` is the orientation-agnostic cross-axis dial
13
+ * (kept as a rare escape hatch for runes where content can be much shorter than
14
+ * media). The old `gap` attribute was dropped — each rune curates its own
15
+ * inter-zone spacing via theme tokens. */
7
16
  export declare const splitLayoutAttributes: Record<string, SchemaAttribute>;
8
17
  /**
9
18
  * @deprecated Use `splitLayoutAttributes` instead.
@@ -14,22 +23,42 @@ export declare const linkItem: Markdoc.Schema;
14
23
  export declare function name(cursor: RenderableNodeCursor): RenderableNodeCursor<Markdoc.Tag<"h1" | "h2" | "h3" | "h4" | "h5" | "h6", Record<string, any>>>;
15
24
  export declare function description(cursor: RenderableNodeCursor): RenderableNodeCursor<Markdoc.Tag<"p", Record<string, any>>>;
16
25
  export interface LayoutMetas {
17
- layout: Tag;
18
- ratio: Tag | undefined;
26
+ mediaPosition: Tag;
27
+ mediaRatio: Tag | undefined;
19
28
  valign: Tag | undefined;
20
- gap: Tag | undefined;
21
29
  collapse: Tag | undefined;
22
30
  }
23
31
  /**
24
- * Build the five layout meta tags shared by all split-layout runes.
25
- * Accepts the attrs object from a `SplitLayoutModel`-based schema and returns
26
- * the meta Tag instances plus a convenience array of the non-undefined tags
32
+ * Build the layout meta tags shared by all media+content runes. Accepts the
33
+ * attrs object from a `splitLayoutAttributes`-based schema and returns the
34
+ * meta Tag instances plus a convenience array of the non-undefined tags
27
35
  * suitable for spreading into a children array.
36
+ *
37
+ * `media-position` is always emitted (default: `top`) — the rune always has a
38
+ * placement, even if the author didn't pick one. `media-ratio` and `valign` are
39
+ * only emitted when the layout is side-by-side (`start` / `end`) — they have no
40
+ * effect on stacked layouts. `collapse` is only emitted when the author sets it.
28
41
  */
29
42
  export declare function buildLayoutMetas(attrs: Record<string, any>): {
30
43
  metas: LayoutMetas;
31
44
  children: Tag[];
32
45
  };
46
+ /**
47
+ * Split a node list on top-level `hr` (`---`) into media / body / footer zones,
48
+ * by group count (matching the card / bento-cell pattern):
49
+ *
50
+ * 1 group → body only
51
+ * 2 groups → media + body
52
+ * 3+ groups → media + body... + footer (middle groups merged into body)
53
+ *
54
+ * This is the canonical "media-first body shape" for media+content runes.
55
+ * Authoring is consistent across every rune that uses it.
56
+ */
57
+ export declare function splitMediaBodyFooter(nodes: Node[]): {
58
+ media: Node[];
59
+ body: Node[];
60
+ footer: Node[];
61
+ };
33
62
  /**
34
63
  * Extract a bare `<img>` tag from rendered media nodes.
35
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/tags/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,GAAG,EAAQ,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,WAAY,CAAC;AAEnD,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAMjE,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,yCAAwB,CAAC;AAEtD,eAAO,MAAM,QAAQ,gBA6BnB,CAAC;AAEH,wBAAgB,IAAI,CAAC,MAAM,EAAE,oBAAoB,mGAEhD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,+DAEvD;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC;IACvB,MAAM,EAAE,GAAG,GAAG,SAAS,CAAC;IACxB,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC;IACrB,QAAQ,EAAE,GAAG,GAAG,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAC5D,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,GAAG,EAAE,CAAC;CACjB,CAuBA;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,GAAG,GAAG,SAAS,CAa/E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAavF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB;aAUtC,GAAG,GAAG,SAAS;cACd,GAAG,GAAG,SAAS;;WAEZ,GAAG,GAAG,SAAS;EAkC9C"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/tags/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,WAAY,CAAC;AAEnD;;;;;;;;;0CAS0C;AAC1C,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAKjE,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,yCAAwB,CAAC;AAEtD,eAAO,MAAM,QAAQ,gBA6BnB,CAAC;AAEH,wBAAgB,IAAI,CAAC,MAAM,EAAE,oBAAoB,mGAEhD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,+DAEvD;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,GAAG,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,GAAG,GAAG,SAAS,CAAC;IACxB,QAAQ,EAAE,GAAG,GAAG,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAC5D,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,GAAG,EAAE,CAAC;CACjB,CAsBA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IAAC,MAAM,EAAE,IAAI,EAAE,CAAA;CAAE,CASnG;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,GAAG,GAAG,SAAS,CAa/E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAavF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB;aAUtC,GAAG,GAAG,SAAS;cACd,GAAG,GAAG,SAAS;;WAEZ,GAAG,GAAG,SAAS;EAkC9C"}
@@ -4,17 +4,25 @@ import { RenderableNodeCursor } from '../lib/renderable.js';
4
4
  import { registerAttributePreset } from '../attribute-presets.js';
5
5
  /** @deprecated Split layout attributes are now provided by splitLayoutAttributes */
6
6
  export const SplitablePageSectionModel = undefined;
7
- /** Split layout attribute definitions for runes with split/stacked layouts. */
7
+ /** Shared layout attributes for media+content runes same vocabulary as
8
+ * `bento-cell`, so every media-bearing surface (card, recipe, hero, feature,
9
+ * step, realm, faction, playlist) speaks one language. `media-position` covers
10
+ * all four placements (the old `layout`'s `stacked`/`split`/`split-reverse` are
11
+ * the `top`/`start`/`end` subset, with `bottom` as a new mode). `media-ratio`
12
+ * uses the same preset percentages as `bento-cell` instead of the open-ended
13
+ * `ratio="2 1"` string. `valign` is the orientation-agnostic cross-axis dial
14
+ * (kept as a rare escape hatch for runes where content can be much shorter than
15
+ * media). The old `gap` attribute was dropped — each rune curates its own
16
+ * inter-zone spacing via theme tokens. */
8
17
  export const splitLayoutAttributes = {
9
- layout: { type: String, required: false, matches: ['stacked', 'split', 'split-reverse'], description: 'Display mode: stacked vertically, or split side-by-side' },
10
- ratio: { type: String, required: false, description: 'Column width ratio in split layout (e.g. "2 1")' },
11
- valign: { type: String, required: false, matches: ['top', 'center', 'bottom'], description: 'Vertical alignment of columns in split layout' },
12
- gap: { type: String, required: false, matches: ['none', 'tight', 'default', 'loose'], description: 'Space between columns in split layout' },
13
- collapse: { type: String, required: false, matches: ['sm', 'md', 'lg', 'never'], description: 'Breakpoint at which split layout collapses to stacked' },
18
+ 'media-position': { type: String, required: false, matches: ['top', 'bottom', 'start', 'end'], description: 'Where the media zone sits relative to the content: above (top), below (bottom), or beside (start/end)' },
19
+ 'media-ratio': { type: String, required: false, matches: ['1/3', '2/5', '1/2', '3/5', '2/3'], description: 'Media zone’s share of the row width when media is beside content (start/end)' },
20
+ valign: { type: String, required: false, matches: ['top', 'center', 'bottom', 'stretch'], description: 'Cross-axis alignment when media is beside content (start/end); applies to the shorter zone' },
21
+ collapse: { type: String, required: false, matches: ['sm', 'md', 'lg', 'never'], description: 'Breakpoint at which side-by-side layouts collapse to a single stacked column' },
14
22
  };
15
23
  registerAttributePreset(splitLayoutAttributes, {
16
24
  name: 'split layout',
17
- description: 'Layout controls for runes that can render stacked vertically or split into side-by-side columns.',
25
+ description: 'Layout controls shared by media+content runes `media-position`, `media-ratio`, `valign`, `collapse`.',
18
26
  });
19
27
  /**
20
28
  * @deprecated Use `splitLayoutAttributes` instead.
@@ -54,36 +62,63 @@ export function description(cursor) {
54
62
  return cursor.tag('p').limit(1);
55
63
  }
56
64
  /**
57
- * Build the five layout meta tags shared by all split-layout runes.
58
- * Accepts the attrs object from a `SplitLayoutModel`-based schema and returns
59
- * the meta Tag instances plus a convenience array of the non-undefined tags
65
+ * Build the layout meta tags shared by all media+content runes. Accepts the
66
+ * attrs object from a `splitLayoutAttributes`-based schema and returns the
67
+ * meta Tag instances plus a convenience array of the non-undefined tags
60
68
  * suitable for spreading into a children array.
69
+ *
70
+ * `media-position` is always emitted (default: `top`) — the rune always has a
71
+ * placement, even if the author didn't pick one. `media-ratio` and `valign` are
72
+ * only emitted when the layout is side-by-side (`start` / `end`) — they have no
73
+ * effect on stacked layouts. `collapse` is only emitted when the author sets it.
61
74
  */
62
75
  export function buildLayoutMetas(attrs) {
63
- const layout = attrs.layout || 'stacked';
64
- const ratio = attrs.ratio || '1 1';
65
- const valign = attrs.valign || 'top';
66
- const gap = attrs.gap || 'default';
76
+ const mediaPosition = attrs['media-position'] || 'top';
77
+ const mediaRatio = attrs['media-ratio'];
78
+ const valign = attrs.valign;
67
79
  const collapse = attrs.collapse;
68
- const layoutMeta = new Markdoc.Tag('meta', { content: layout });
69
- const ratioMeta = layout !== 'stacked' ? new Markdoc.Tag('meta', { content: ratio }) : undefined;
70
- const valignMeta = layout !== 'stacked' ? new Markdoc.Tag('meta', { content: valign }) : undefined;
71
- const gapMeta = gap !== 'default' ? new Markdoc.Tag('meta', { content: gap }) : undefined;
80
+ const beside = mediaPosition === 'start' || mediaPosition === 'end';
81
+ const mediaPositionMeta = new Markdoc.Tag('meta', { content: mediaPosition });
82
+ const mediaRatioMeta = beside && mediaRatio ? new Markdoc.Tag('meta', { content: mediaRatio }) : undefined;
83
+ const valignMeta = beside && valign ? new Markdoc.Tag('meta', { content: valign }) : undefined;
72
84
  const collapseMeta = collapse ? new Markdoc.Tag('meta', { content: collapse }) : undefined;
73
- const children = [layoutMeta];
74
- if (ratioMeta)
75
- children.push(ratioMeta);
85
+ const children = [mediaPositionMeta];
86
+ if (mediaRatioMeta)
87
+ children.push(mediaRatioMeta);
76
88
  if (valignMeta)
77
89
  children.push(valignMeta);
78
- if (gapMeta)
79
- children.push(gapMeta);
80
90
  if (collapseMeta)
81
91
  children.push(collapseMeta);
82
92
  return {
83
- metas: { layout: layoutMeta, ratio: ratioMeta, valign: valignMeta, gap: gapMeta, collapse: collapseMeta },
93
+ metas: { mediaPosition: mediaPositionMeta, mediaRatio: mediaRatioMeta, valign: valignMeta, collapse: collapseMeta },
84
94
  children,
85
95
  };
86
96
  }
97
+ /**
98
+ * Split a node list on top-level `hr` (`---`) into media / body / footer zones,
99
+ * by group count (matching the card / bento-cell pattern):
100
+ *
101
+ * 1 group → body only
102
+ * 2 groups → media + body
103
+ * 3+ groups → media + body... + footer (middle groups merged into body)
104
+ *
105
+ * This is the canonical "media-first body shape" for media+content runes.
106
+ * Authoring is consistent across every rune that uses it.
107
+ */
108
+ export function splitMediaBodyFooter(nodes) {
109
+ const zones = [[]];
110
+ for (const n of nodes) {
111
+ if (n.type === 'hr')
112
+ zones.push([]);
113
+ else
114
+ zones[zones.length - 1].push(n);
115
+ }
116
+ if (zones.length === 1)
117
+ return { media: [], body: zones[0], footer: [] };
118
+ if (zones.length === 2)
119
+ return { media: zones[0], body: zones[1], footer: [] };
120
+ return { media: zones[0], body: zones.slice(1, -1).flat(), footer: zones[zones.length - 1] };
121
+ }
87
122
  /**
88
123
  * Extract a bare `<img>` tag from rendered media nodes.
89
124
  *
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tags/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tags/common.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagram.d.ts","sourceRoot":"","sources":["../../src/tags/diagram.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAMvC,eAAO,MAAM,OAAO,gBAqClB,CAAC"}
1
+ {"version":3,"file":"diagram.d.ts","sourceRoot":"","sources":["../../src/tags/diagram.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAMvC,eAAO,MAAM,OAAO,gBAkElB,CAAC"}
@@ -16,24 +16,50 @@ export const diagram = createContentModelSchema({
16
16
  transform(resolved, attrs) {
17
17
  const language = attrs.language ?? 'mermaid';
18
18
  const title = attrs.title ?? '';
19
- const languageMeta = new Tag('meta', { content: language });
20
- const titleMeta = new Tag('meta', { content: title });
21
19
  // Extract source directly from resolved AST node
22
20
  // to avoid hljs failing on unknown languages like mermaid
23
21
  const sourceNode = asNodes(resolved.source)[0];
24
22
  const source = sourceNode?.attributes?.content || '';
25
- const sourceMeta = new Tag('meta', { content: source });
26
- return createComponentRenderable({ rune: 'diagram',
23
+ // `language` rides the bag only ( `data-language` via the modifier).
24
+ const languageMeta = new Tag('meta', { content: language });
25
+ // SPEC-081: build the SSR fallback structure here (deterministic from
26
+ // authored data) and emit the `rf-diagram` custom element; the behaviors
27
+ // web component hydrates it. No postTransform.
28
+ const children = [];
29
+ let titleEl;
30
+ if (title) {
31
+ titleEl = new Tag('figcaption', {}, [title]);
32
+ children.push(titleEl);
33
+ }
34
+ let sourcePre;
35
+ const containerChildren = [];
36
+ if (source) {
37
+ sourcePre = new Tag('pre', {}, [new Tag('code', {}, [source])]);
38
+ containerChildren.push(sourcePre);
39
+ }
40
+ const containerDiv = new Tag('div', {}, containerChildren);
41
+ children.push(containerDiv);
42
+ // Canonical source for the web component to read. A `<template>` is inert
43
+ // (never rendered, never highlighted/decorated), keeping the renderer's
44
+ // data channel cleanly separate from the presentational `<pre>` fallback.
45
+ if (source) {
46
+ children.push(new Tag('template', { 'data-content': 'source' }, [source]));
47
+ }
48
+ const node = createComponentRenderable({ rune: 'diagram',
27
49
  tag: 'figure',
28
50
  properties: {
29
51
  language: languageMeta,
30
- title: titleMeta,
31
52
  },
32
53
  refs: {
33
- source: sourceMeta,
54
+ ...(titleEl ? { title: titleEl } : {}),
55
+ container: containerDiv,
56
+ ...(sourcePre ? { source: sourcePre } : {}),
34
57
  },
35
- children: [languageMeta, titleMeta, sourceMeta],
58
+ children,
36
59
  });
60
+ // Emit as the `rf-diagram` custom element (the web component upgrades it).
61
+ node.name = 'rf-diagram';
62
+ return node;
37
63
  },
38
64
  });
39
65
  //# sourceMappingURL=diagram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagram.js","sourceRoot":"","sources":["../../src/tags/diagram.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/F,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAE/D,MAAM,CAAC,MAAM,OAAO,GAAG,wBAAwB,CAAC;IAC/C,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,+CAA+C,EAAE;QACxI,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,mCAAmC,EAAE;KAC1F;IACD,YAAY,EAAE;QACb,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACP,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;SAClC;KACD;IACD,SAAS,CAAC,QAAQ,EAAE,KAAK;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAEhC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtD,iDAAiD;QACjD,0DAA0D;QAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,UAAU,EAAE,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;QAErD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAExD,OAAO,yBAAyB,CAAC,EAAE,IAAI,EAAE,SAAS;YACjD,GAAG,EAAE,QAAQ;YACb,UAAU,EAAE;gBACX,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,SAAS;aAChB;YACD,IAAI,EAAE;gBACL,MAAM,EAAE,UAAU;aAClB;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC;SAC/C,CAAC,CAAC;IACJ,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"diagram.js","sourceRoot":"","sources":["../../src/tags/diagram.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/tags/embed.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAmFvC,eAAO,MAAM,KAAK,gBAkDhB,CAAC"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/tags/embed.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAmFvC,eAAO,MAAM,KAAK,gBAuEhB,CAAC"}