@refrakt-md/runes 0.42.0 → 0.44.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.
- package/dist/composed-rune.d.ts +9 -1
- package/dist/composed-rune.d.ts.map +1 -1
- package/dist/composed-rune.js +14 -2
- package/dist/composed-rune.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -1
- package/dist/config.js.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +2 -0
- package/dist/examples.js.map +1 -1
- package/dist/index.d.ts +5 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/component.d.ts +5 -1
- package/dist/lib/component.d.ts.map +1 -1
- package/dist/lib/component.js +0 -1
- package/dist/lib/component.js.map +1 -1
- package/dist/lib/composition-errors.d.ts +7 -0
- package/dist/lib/composition-errors.d.ts.map +1 -1
- package/dist/lib/composition-errors.js +7 -0
- package/dist/lib/composition-errors.js.map +1 -1
- package/dist/lib/composition-placement.d.ts +88 -0
- package/dist/lib/composition-placement.d.ts.map +1 -0
- package/dist/lib/composition-placement.js +180 -0
- package/dist/lib/composition-placement.js.map +1 -0
- package/dist/lib/composition.d.ts +60 -3
- package/dist/lib/composition.d.ts.map +1 -1
- package/dist/lib/composition.js +263 -38
- package/dist/lib/composition.js.map +1 -1
- package/dist/lib/header-roles.d.ts +32 -0
- package/dist/lib/header-roles.d.ts.map +1 -0
- package/dist/lib/header-roles.js +52 -0
- package/dist/lib/header-roles.js.map +1 -0
- package/dist/lib/index.d.ts +2 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +161 -243
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/resolver.d.ts +5 -0
- package/dist/lib/resolver.d.ts.map +1 -1
- package/dist/lib/resolver.js +25 -3
- package/dist/lib/resolver.js.map +1 -1
- package/dist/lib/slot-markers.js +9 -1
- package/dist/lib/slot-markers.js.map +1 -1
- package/dist/lib/slots.d.ts +5 -2
- package/dist/lib/slots.d.ts.map +1 -1
- package/dist/lib/slots.js +1 -1
- package/dist/lib/slots.js.map +1 -1
- package/dist/lib/universal-attribute-defs.d.ts +12 -0
- package/dist/lib/universal-attribute-defs.d.ts.map +1 -0
- package/dist/lib/universal-attribute-defs.js +225 -0
- package/dist/lib/universal-attribute-defs.js.map +1 -0
- package/dist/nodes.d.ts +11 -0
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +34 -0
- package/dist/nodes.js.map +1 -1
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +36 -1
- package/dist/plugins.js.map +1 -1
- package/dist/project-runes.d.ts +9 -2
- package/dist/project-runes.d.ts.map +1 -1
- package/dist/project-runes.js +5 -5
- package/dist/project-runes.js.map +1 -1
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +9 -0
- package/dist/reference.js.map +1 -1
- package/dist/tags/accordion.d.ts +1 -0
- package/dist/tags/accordion.d.ts.map +1 -1
- package/dist/tags/accordion.js +1 -1
- package/dist/tags/accordion.js.map +1 -1
- package/dist/tags/actions.d.ts +20 -0
- package/dist/tags/actions.d.ts.map +1 -0
- package/dist/tags/actions.js +72 -0
- package/dist/tags/actions.js.map +1 -0
- package/dist/tags/blog.d.ts.map +1 -1
- package/dist/tags/blog.js +0 -1
- package/dist/tags/blog.js.map +1 -1
- package/dist/tags/budget.d.ts.map +1 -1
- package/dist/tags/budget.js +0 -1
- package/dist/tags/budget.js.map +1 -1
- package/dist/tags/card.d.ts +3 -1
- package/dist/tags/card.d.ts.map +1 -1
- package/dist/tags/card.js +7 -4
- package/dist/tags/card.js.map +1 -1
- package/dist/tags/common.d.ts +9 -0
- package/dist/tags/common.d.ts.map +1 -1
- package/dist/tags/common.js +11 -0
- package/dist/tags/common.js.map +1 -1
- package/dist/tags/hint.d.ts.map +1 -1
- package/dist/tags/hint.js +0 -1
- package/dist/tags/hint.js.map +1 -1
- package/dist/tags/reveal.d.ts +1 -0
- package/dist/tags/reveal.d.ts.map +1 -1
- package/dist/tags/reveal.js +1 -1
- package/dist/tags/reveal.js.map +1 -1
- package/dist/tags/section.d.ts +43 -2
- package/dist/tags/section.d.ts.map +1 -1
- package/dist/tags/section.js +178 -10
- package/dist/tags/section.js.map +1 -1
- package/dist/tags/tabs.d.ts +1 -0
- package/dist/tags/tabs.d.ts.map +1 -1
- package/dist/tags/tabs.js +1 -1
- package/dist/tags/tabs.js.map +1 -1
- package/package.json +3 -3
- package/dist/documents/doc.d.ts +0 -4
- package/dist/documents/doc.d.ts.map +0 -1
- package/dist/documents/doc.js +0 -4
- package/dist/documents/doc.js.map +0 -1
- package/dist/documents/page.d.ts +0 -10
- package/dist/documents/page.d.ts.map +0 -1
- package/dist/documents/page.js +0 -30
- package/dist/documents/page.js.map +0 -1
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { UNIVERSAL_AXIS_FACETS } from '@refrakt-md/transform';
|
|
2
|
+
import { AXIS_ATTRIBUTES } from '../universal-attributes.js';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// The runes a template may place, by name
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
/**
|
|
7
|
+
* Runes a composition can place, by tag name. A composition decides at
|
|
8
|
+
* construction which placed rune owns a role, and only the placed rune's schema
|
|
9
|
+
* says what it accepts. Core runes register when the package entry loads; a
|
|
10
|
+
* plugin's own runes register before its compositions are built, and each
|
|
11
|
+
* composed rune registers once built, so a later composition can place it.
|
|
12
|
+
*/
|
|
13
|
+
const placeable = new Map();
|
|
14
|
+
export function registerPlaceableSchema(name, schema) {
|
|
15
|
+
if (schema)
|
|
16
|
+
placeable.set(name, schema);
|
|
17
|
+
}
|
|
18
|
+
export function placeableSchema(name) {
|
|
19
|
+
return placeable.get(name);
|
|
20
|
+
}
|
|
21
|
+
const ROLE_NAMES = {
|
|
22
|
+
header: 'a page-section header',
|
|
23
|
+
'prose-body': 'a prose body',
|
|
24
|
+
media: 'a media zone or frame target',
|
|
25
|
+
};
|
|
26
|
+
/** Whether a placed rune takes an axis: its schema declares the axis's first
|
|
27
|
+
* attribute. Schema narrowing (SPEC-125) put it there only where the axis
|
|
28
|
+
* applies, and a composed rune's own narrowing follows its placements, so the
|
|
29
|
+
* same question looks through a nested composition. */
|
|
30
|
+
function takes(rune, axis) {
|
|
31
|
+
const names = AXIS_ATTRIBUTES[axis];
|
|
32
|
+
if (!names || names.length === 0)
|
|
33
|
+
return true;
|
|
34
|
+
const schema = placeable.get(rune);
|
|
35
|
+
return schema?.attributes?.[names[0]] !== undefined;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Nominate the carrier (D31) and place every axis (D33). Throws, through
|
|
39
|
+
* `fail`, on a marker that cannot stand and on several top-level runes with no
|
|
40
|
+
* marker.
|
|
41
|
+
*/
|
|
42
|
+
export function resolvePlacements(rune, runes, fail) {
|
|
43
|
+
for (const r of runes) {
|
|
44
|
+
const schema = placeable.get(r.node.tag);
|
|
45
|
+
if (schema?.attributes?.chrome !== undefined) {
|
|
46
|
+
fail('chrome-collision', `it places \`{% ${r.node.tag} %}\`, which declares an attribute named \`chrome\`. In a template \`chrome\` nominates the paint carrier (D31), so the two cannot be told apart. Rename the rune's attribute.`, r.node);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const marked = runes.filter((r) => r.node.attributes.chrome !== undefined);
|
|
50
|
+
for (const r of marked) {
|
|
51
|
+
if (r.node.attributes.chrome !== true) {
|
|
52
|
+
fail('chrome-invalid', `\`chrome\` on \`{% ${r.node.tag} %}\` takes no value; write it bare, as \`{% ${r.node.tag} chrome %}\` (D31).`, r.node);
|
|
53
|
+
}
|
|
54
|
+
if (r.inEach) {
|
|
55
|
+
fail('chrome-invalid', `\`{% ${r.node.tag} chrome %}\` is inside an \`each\` slot, so it would be placed once per item. The carrier is one region; mark a rune outside the slot (D31).`, r.node);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (marked.length > 1) {
|
|
59
|
+
fail('chrome-marked-twice', `\`chrome\` marks ${marked.map((r) => `\`{% ${r.node.tag} %}\``).join(' and ')}. A rune has exactly one paint carrier; mark one of them (D31).`, marked[1].node);
|
|
60
|
+
}
|
|
61
|
+
let carrier = marked[0]?.node;
|
|
62
|
+
if (!carrier) {
|
|
63
|
+
const top = runes.filter((r) => r.top);
|
|
64
|
+
// A rune repeated per item is several regions, however it is written.
|
|
65
|
+
const several = top.length > 1 || top.some((r) => r.inEach);
|
|
66
|
+
if (several) {
|
|
67
|
+
const names = [...new Set(top.map((r) => `\`{% ${r.node.tag} %}\``))].join(', ');
|
|
68
|
+
fail('chrome-ambiguous', `it places several runes at its top level (${names}) and marks none as the paint carrier, so \`elevation\`, \`tint\` and the rest would have nowhere to land. Wrap them in one \`{% section %}\`, which then carries them, or mark one with \`chrome\` (D14, D31).`, top[1]?.node ?? top[0].node);
|
|
69
|
+
}
|
|
70
|
+
carrier = top[0]?.node;
|
|
71
|
+
}
|
|
72
|
+
const carrierRune = carrier?.tag;
|
|
73
|
+
const axes = {};
|
|
74
|
+
const axisOf = {};
|
|
75
|
+
for (const facet of UNIVERSAL_AXIS_FACETS) {
|
|
76
|
+
for (const name of AXIS_ATTRIBUTES[facet.axis] ?? [])
|
|
77
|
+
axisOf[name] = facet.axis;
|
|
78
|
+
const placement = facet.placement;
|
|
79
|
+
if (placement === 'root') {
|
|
80
|
+
axes[facet.axis] = { placement };
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (placement === 'carrier') {
|
|
84
|
+
if (!carrier) {
|
|
85
|
+
axes[facet.axis] = {
|
|
86
|
+
placement,
|
|
87
|
+
dropped: `\`${rune}\` places no rune to carry it`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
else if (takes(carrierRune, facet.axis)) {
|
|
91
|
+
axes[facet.axis] = { placement, node: carrier, rune: carrierRune };
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
axes[facet.axis] = {
|
|
95
|
+
placement,
|
|
96
|
+
unavailable: `its paint carrier \`${carrierRune}\` does not take \`${facet.axis}\``,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
// A role owner: the carrier when it owns the role, else the single rune
|
|
102
|
+
// the template places itself that does (D33.2).
|
|
103
|
+
if (carrier && takes(carrierRune, facet.axis)) {
|
|
104
|
+
axes[facet.axis] = { placement, node: carrier, rune: carrierRune };
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const owners = runes.filter((r) => !r.inEach && takes(r.node.tag, facet.axis));
|
|
108
|
+
if (owners.length === 1) {
|
|
109
|
+
axes[facet.axis] = { placement, node: owners[0].node, rune: owners[0].node.tag };
|
|
110
|
+
}
|
|
111
|
+
else if (owners.length === 0) {
|
|
112
|
+
axes[facet.axis] = {
|
|
113
|
+
placement,
|
|
114
|
+
unavailable: `no rune \`${rune}\` places owns ${ROLE_NAMES[placement]}`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
axes[facet.axis] = {
|
|
119
|
+
placement,
|
|
120
|
+
unavailable: `several runes \`${rune}\` places own ${ROLE_NAMES[placement]} (${owners.map((o) => `\`${o.node.tag}\``).join(', ')}) and none is its paint carrier`,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { carrier, axes, axisOf };
|
|
125
|
+
}
|
|
126
|
+
/** The universal attributes this composition offers, and why it offers none of
|
|
127
|
+
* an axis's — the composed half of SPEC-125's narrowing. Root-placed axes, and
|
|
128
|
+
* axes no placed rune takes, are left to the ordinary structural gates on the
|
|
129
|
+
* composed rune itself: a composition that places no rune and declares
|
|
130
|
+
* `provides: [prose]` keeps `reading` on its own root, as before. */
|
|
131
|
+
export function placementAvailability(placements) {
|
|
132
|
+
const offered = new Set();
|
|
133
|
+
const withheld = new Map();
|
|
134
|
+
for (const [axis, target] of Object.entries(placements.axes)) {
|
|
135
|
+
if (target.placement === 'root')
|
|
136
|
+
continue;
|
|
137
|
+
if ('unavailable' in target) {
|
|
138
|
+
withheld.set(axis, target.unavailable);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
for (const name of AXIS_ATTRIBUTES[axis] ?? [])
|
|
142
|
+
offered.add(name);
|
|
143
|
+
}
|
|
144
|
+
return { offered, withheld };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Split one instance's attributes: the universal ones that move to a placed
|
|
148
|
+
* rune, by target node, and those dropped for want of a carrier. What is left
|
|
149
|
+
* stays on the root. The author's value replaces a literal the template wrote on
|
|
150
|
+
* the target (D34.4).
|
|
151
|
+
*/
|
|
152
|
+
export function moveAttributes(placements, attrs) {
|
|
153
|
+
const moves = new Map();
|
|
154
|
+
const moved = new Set();
|
|
155
|
+
const dropped = [];
|
|
156
|
+
for (const [name, value] of Object.entries(attrs)) {
|
|
157
|
+
if (value === undefined || value === null)
|
|
158
|
+
continue;
|
|
159
|
+
const axis = placements.axisOf[name];
|
|
160
|
+
if (!axis)
|
|
161
|
+
continue;
|
|
162
|
+
const target = placements.axes[axis];
|
|
163
|
+
if (!target || target.placement === 'root')
|
|
164
|
+
continue;
|
|
165
|
+
if ('node' in target) {
|
|
166
|
+
moved.add(name);
|
|
167
|
+
const into = moves.get(target.node) ?? {};
|
|
168
|
+
into[name] = value;
|
|
169
|
+
moves.set(target.node, into);
|
|
170
|
+
}
|
|
171
|
+
else if ('dropped' in target) {
|
|
172
|
+
moved.add(name);
|
|
173
|
+
dropped.push(name);
|
|
174
|
+
}
|
|
175
|
+
// An axis no placed rune takes stays on the root, where it is offered only
|
|
176
|
+
// when the composed rune meets the axis's gate itself.
|
|
177
|
+
}
|
|
178
|
+
return { moves, moved, dropped };
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=composition-placement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition-placement.js","sourceRoot":"","sources":["../../src/lib/composition-placement.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { RuneConfig } from '@refrakt-md/transform';
|
|
|
4
4
|
import type { SchemaTable } from './schema-table.js';
|
|
5
5
|
import { SchemaSideTable } from './schema-side-table.js';
|
|
6
6
|
import type { RegistersDeclaration } from './registers.js';
|
|
7
|
+
import type { AxisTarget, CompositionPlacements } from './composition-placement.js';
|
|
7
8
|
/**
|
|
8
9
|
* A composition template, as `createContentModelSchema` receives it — the third
|
|
9
10
|
* of D5's three mutually exclusive emit paths, beside `transform` and `emits`.
|
|
@@ -19,6 +20,8 @@ export interface CompositionTemplate {
|
|
|
19
20
|
body: string;
|
|
20
21
|
/** The `blocks` the rune declares — what `{% metablock %}` may name (D7). */
|
|
21
22
|
blocks?: readonly string[];
|
|
23
|
+
/** D34 — the definition's defaults for universal axes, by attribute. */
|
|
24
|
+
defaults?: Readonly<Record<string, string>>;
|
|
22
25
|
}
|
|
23
26
|
/** One node of a composition's expansion, as the contract records it (D6). */
|
|
24
27
|
export interface CompositionOutlineNode {
|
|
@@ -56,6 +59,31 @@ export interface CompositionInfo {
|
|
|
56
59
|
config?: RuneConfig;
|
|
57
60
|
/** The config key the engine finds it under. */
|
|
58
61
|
typeName?: string;
|
|
62
|
+
/** Where each universal axis lands (D33): its placement, the rune it lands
|
|
63
|
+
* on, or why it is not offered. For `inspect`, `contracts` and `reference`. */
|
|
64
|
+
axes: Record<string, AxisPlacementInfo>;
|
|
65
|
+
/** D34 — the definition's defaults, each with where it lands and any literal
|
|
66
|
+
* the template writes there, which wins over it. */
|
|
67
|
+
defaults?: Record<string, CompositionDefaultInfo>;
|
|
68
|
+
}
|
|
69
|
+
/** One `defaults` entry, as tooling reads it (D34). */
|
|
70
|
+
export interface CompositionDefaultInfo {
|
|
71
|
+
value: string;
|
|
72
|
+
placement: AxisTarget['placement'];
|
|
73
|
+
/** The placed rune it lands on; absent for a root-placed axis. */
|
|
74
|
+
rune?: string;
|
|
75
|
+
/** A literal the template writes on that rune, which the default yields to. */
|
|
76
|
+
literal?: string;
|
|
77
|
+
}
|
|
78
|
+
/** One axis's placement on a composed rune, as tooling reads it. */
|
|
79
|
+
export interface AxisPlacementInfo {
|
|
80
|
+
placement: AxisTarget['placement'];
|
|
81
|
+
/** The placed rune it lands on. */
|
|
82
|
+
rune?: string;
|
|
83
|
+
/** Offered, but dropped with a warning: there is no carrier (D24). */
|
|
84
|
+
dropped?: string;
|
|
85
|
+
/** Not offered, and why (D33.3). */
|
|
86
|
+
unavailable?: string;
|
|
59
87
|
}
|
|
60
88
|
/** Compositions by schema — the same pattern as `schemaTables`: tooling has only
|
|
61
89
|
* the schema to read from. */
|
|
@@ -77,15 +105,35 @@ export declare function frontmatterKeyLine(frontmatter: string, path: readonly s
|
|
|
77
105
|
* that becomes a property of the outer entity, not a peer of it (D9). */
|
|
78
106
|
export declare const SUBORDINATE_SCHEMA_TYPES: ReadonlySet<string>;
|
|
79
107
|
/**
|
|
80
|
-
* `{% slot name="x" each %}`
|
|
81
|
-
*
|
|
82
|
-
*
|
|
108
|
+
* `{% slot name="x" each %}` and `{% section chrome %}` are the spec's
|
|
109
|
+
* spellings (D26, D31), and Markdoc's tag grammar has no bare boolean
|
|
110
|
+
* attribute. Rewrite `each` inside slot tags, and `chrome` inside any tag, to
|
|
111
|
+
* `=true`, outside quoted values, before parsing.
|
|
83
112
|
*/
|
|
84
113
|
export declare function normaliseEach(body: string): string;
|
|
85
114
|
export interface CompiledComposition {
|
|
86
115
|
/** The transform `createContentModelSchema` calls where it would call `transform`. */
|
|
87
116
|
transform: (resolved: ResolvedContent, attrs: Record<string, any>, config: Config, node: Node) => RenderableTreeNodes;
|
|
88
117
|
info: CompositionInfo;
|
|
118
|
+
/**
|
|
119
|
+
* The template expanded for one instance: what `transform` hands Markdoc,
|
|
120
|
+
* before it is transformed. Validation reads it to see which slot each
|
|
121
|
+
* placed node came from (ADR-046 decision 3).
|
|
122
|
+
*/
|
|
123
|
+
place: (resolved: ResolvedContent, attrs: Record<string, any>) => Node[];
|
|
124
|
+
/** Where the universal attributes land (D14, D31, D33). */
|
|
125
|
+
placements: CompositionPlacements;
|
|
126
|
+
/** One instance's attributes less the universal ones that moved off the root
|
|
127
|
+
* (or were dropped for want of a carrier). What the root keeps. */
|
|
128
|
+
rootAttributes: (attrs: Record<string, any>) => Record<string, any>;
|
|
129
|
+
/** The parsed template, as construction checked it. */
|
|
130
|
+
templateNodes: readonly Node[];
|
|
131
|
+
/** SPEC-182 D4 — the filled attributes the author also wrote, for the
|
|
132
|
+
* `fill-overridden` warning. */
|
|
133
|
+
overriddenFills: (resolved: ResolvedContent, written: Record<string, unknown>) => Array<{
|
|
134
|
+
attribute: string;
|
|
135
|
+
field: string;
|
|
136
|
+
}>;
|
|
89
137
|
}
|
|
90
138
|
export interface CompileCompositionOptions {
|
|
91
139
|
contentModel: ContentModel | ((attrs: Record<string, any>) => ContentModel);
|
|
@@ -119,6 +167,8 @@ export interface CompositionDefinition {
|
|
|
119
167
|
metaFields?: Record<string, unknown>;
|
|
120
168
|
blocks?: Record<string, unknown>;
|
|
121
169
|
provides?: string[];
|
|
170
|
+
/** D34 — defaults for universal axes, by attribute name. */
|
|
171
|
+
defaults?: Record<string, string>;
|
|
122
172
|
template: string;
|
|
123
173
|
/** 1-based line of the source on which the template body starts. */
|
|
124
174
|
templateLine: number;
|
|
@@ -143,6 +193,13 @@ export declare function parseCompositionDefinition(rune: string, source: string)
|
|
|
143
193
|
* resolves a field against the rune's modifier values, exactly as it does for a
|
|
144
194
|
* tree-owning rune — which must declare the same attributes as modifiers for
|
|
145
195
|
* its own blocks to fill.
|
|
196
|
+
*
|
|
197
|
+
* An enum attribute the template only forwards to a placed rune
|
|
198
|
+
* (`{% section media-position=$attrs["media-position"] %}`) is that rune's
|
|
199
|
+
* input, not a modifier of the composition: as a `data-*` on the empty root it
|
|
200
|
+
* would match the dimension rules meant for the rune it is forwarded to — a
|
|
201
|
+
* `data-media-position="cover"` root is laid out as a cover well. It stays in
|
|
202
|
+
* the field bag, which the schema row and registration read.
|
|
146
203
|
*/
|
|
147
204
|
export declare function composedRuneConfig(def: CompositionDefinition): RuneConfig;
|
|
148
205
|
/** One rune as the catalog-wide checks see it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/lib/composition.ts"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EACX,MAAM,EACN,IAAI,EAEJ,mBAAmB,EACnB,MAAM,EACN,eAAe,EAEf,MAAM,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EAEX,YAAY,EAMZ,eAAe,EAIf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/lib/composition.ts"],"names":[],"mappings":"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"}
|