@refrakt-md/storytelling 0.8.4 → 0.9.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/config.d.ts.map +1 -1
- package/dist/config.js +56 -11
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/pipeline.d.ts +18 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +242 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/tags/character.d.ts.map +1 -1
- package/dist/tags/character.js +24 -44
- package/dist/tags/character.js.map +1 -1
- package/dist/tags/common.d.ts +29 -0
- package/dist/tags/common.d.ts.map +1 -0
- package/dist/tags/common.js +59 -0
- package/dist/tags/common.js.map +1 -0
- package/dist/tags/faction.d.ts.map +1 -1
- package/dist/tags/faction.js +13 -66
- package/dist/tags/faction.js.map +1 -1
- package/dist/tags/realm.d.ts.map +1 -1
- package/dist/tags/realm.js +15 -70
- package/dist/tags/realm.js.map +1 -1
- package/package.json +4 -4
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA6M7C,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -2,6 +2,9 @@ import { ratioToFr, resolveValign, resolveGap } from '@refrakt-md/transform';
|
|
|
2
2
|
export const config = {
|
|
3
3
|
Character: {
|
|
4
4
|
block: 'character',
|
|
5
|
+
defaultDensity: 'full',
|
|
6
|
+
sections: { badge: 'header', name: 'title', content: 'body', portrait: 'media' },
|
|
7
|
+
mediaSlots: { portrait: 'portrait' },
|
|
5
8
|
contentWrapper: { tag: 'div', ref: 'content' },
|
|
6
9
|
modifiers: {
|
|
7
10
|
role: { source: 'meta', default: 'supporting' },
|
|
@@ -13,8 +16,8 @@ export const config = {
|
|
|
13
16
|
badge: {
|
|
14
17
|
tag: 'div', before: true,
|
|
15
18
|
children: [
|
|
16
|
-
{ tag: 'span', ref: 'role-badge', metaText: 'role' },
|
|
17
|
-
{ tag: 'span', ref: 'status-badge', metaText: 'status', condition: 'status' },
|
|
19
|
+
{ tag: 'span', ref: 'role-badge', metaText: 'role', label: 'Role:', metaType: 'category', metaRank: 'primary' },
|
|
20
|
+
{ tag: 'span', ref: 'status-badge', metaText: 'status', label: 'Status:', condition: 'status', metaType: 'status', metaRank: 'primary', sentimentMap: { alive: 'positive', dead: 'negative', unknown: 'neutral', missing: 'caution' } },
|
|
18
21
|
],
|
|
19
22
|
},
|
|
20
23
|
},
|
|
@@ -23,6 +26,10 @@ export const config = {
|
|
|
23
26
|
CharacterSection: { block: 'character-section', parent: 'Character', autoLabel: { span: 'header' }, editHints: { header: 'inline', name: 'inline', body: 'none' } },
|
|
24
27
|
Realm: {
|
|
25
28
|
block: 'realm',
|
|
29
|
+
defaultDensity: 'full',
|
|
30
|
+
sections: { badge: 'header', name: 'title', scene: 'media' },
|
|
31
|
+
mediaSlots: { scene: 'cover' },
|
|
32
|
+
rootAttributes: { 'data-media-position': 'top' },
|
|
26
33
|
modifiers: {
|
|
27
34
|
realmType: { source: 'meta', default: 'place' },
|
|
28
35
|
scale: { source: 'meta' },
|
|
@@ -43,8 +50,8 @@ export const config = {
|
|
|
43
50
|
badge: {
|
|
44
51
|
tag: 'div', before: true,
|
|
45
52
|
children: [
|
|
46
|
-
{ tag: 'span', ref: 'type-badge', metaText: 'realmType' },
|
|
47
|
-
{ tag: 'span', ref: 'scale-badge', metaText: 'scale', condition: 'scale' },
|
|
53
|
+
{ tag: 'span', ref: 'type-badge', metaText: 'realmType', label: 'Type:', metaType: 'category', metaRank: 'primary' },
|
|
54
|
+
{ tag: 'span', ref: 'scale-badge', metaText: 'scale', label: 'Scale:', condition: 'scale', metaType: 'category', metaRank: 'secondary' },
|
|
48
55
|
],
|
|
49
56
|
},
|
|
50
57
|
},
|
|
@@ -54,6 +61,8 @@ export const config = {
|
|
|
54
61
|
RealmSection: { block: 'realm-section', parent: 'Realm', autoLabel: { span: 'header' }, editHints: { header: 'inline', name: 'inline', body: 'none' } },
|
|
55
62
|
Lore: {
|
|
56
63
|
block: 'lore',
|
|
64
|
+
defaultDensity: 'full',
|
|
65
|
+
sections: { badge: 'header', title: 'title', content: 'body' },
|
|
57
66
|
contentWrapper: { tag: 'div', ref: 'content' },
|
|
58
67
|
modifiers: {
|
|
59
68
|
category: { source: 'meta' },
|
|
@@ -65,7 +74,7 @@ export const config = {
|
|
|
65
74
|
tag: 'div', before: true,
|
|
66
75
|
conditionAny: ['category'],
|
|
67
76
|
children: [
|
|
68
|
-
{ tag: 'span', ref: 'category-badge', metaText: 'category', condition: 'category' },
|
|
77
|
+
{ tag: 'span', ref: 'category-badge', metaText: 'category', label: 'Category:', condition: 'category', metaType: 'category', metaRank: 'primary' },
|
|
69
78
|
],
|
|
70
79
|
},
|
|
71
80
|
},
|
|
@@ -73,6 +82,10 @@ export const config = {
|
|
|
73
82
|
},
|
|
74
83
|
Faction: {
|
|
75
84
|
block: 'faction',
|
|
85
|
+
defaultDensity: 'full',
|
|
86
|
+
sections: { badge: 'header', name: 'title', scene: 'media' },
|
|
87
|
+
mediaSlots: { scene: 'cover' },
|
|
88
|
+
rootAttributes: { 'data-media-position': 'top' },
|
|
76
89
|
modifiers: {
|
|
77
90
|
factionType: { source: 'meta' },
|
|
78
91
|
alignment: { source: 'meta' },
|
|
@@ -94,9 +107,9 @@ export const config = {
|
|
|
94
107
|
tag: 'div', before: true,
|
|
95
108
|
conditionAny: ['factionType', 'alignment', 'size'],
|
|
96
109
|
children: [
|
|
97
|
-
{ tag: 'span', ref: 'type-badge', metaText: 'factionType', condition: 'factionType' },
|
|
98
|
-
{ tag: 'span', ref: 'alignment-badge', metaText: 'alignment', condition: 'alignment' },
|
|
99
|
-
{ tag: 'span', ref: 'size-badge', metaText: 'size', condition: 'size' },
|
|
110
|
+
{ tag: 'span', ref: 'type-badge', metaText: 'factionType', label: 'Type:', condition: 'factionType', metaType: 'category', metaRank: 'primary' },
|
|
111
|
+
{ tag: 'span', ref: 'alignment-badge', metaText: 'alignment', label: 'Alignment:', condition: 'alignment', metaType: 'category', metaRank: 'primary', sentimentMap: { good: 'positive', neutral: 'neutral', evil: 'negative', chaotic: 'caution', lawful: 'neutral' } },
|
|
112
|
+
{ tag: 'span', ref: 'size-badge', metaText: 'size', label: 'Size:', condition: 'size', metaType: 'quantity', metaRank: 'secondary' },
|
|
100
113
|
],
|
|
101
114
|
},
|
|
102
115
|
},
|
|
@@ -106,6 +119,8 @@ export const config = {
|
|
|
106
119
|
FactionSection: { block: 'faction-section', parent: 'Faction', autoLabel: { span: 'header' }, editHints: { header: 'inline', name: 'inline', body: 'none' } },
|
|
107
120
|
Plot: {
|
|
108
121
|
block: 'plot',
|
|
122
|
+
defaultDensity: 'full',
|
|
123
|
+
sections: { badge: 'header', title: 'title' },
|
|
109
124
|
modifiers: {
|
|
110
125
|
plotType: { source: 'meta', default: 'arc' },
|
|
111
126
|
structure: { source: 'meta', default: 'linear' },
|
|
@@ -116,12 +131,26 @@ export const config = {
|
|
|
116
131
|
tag: 'div', before: true,
|
|
117
132
|
conditionAny: ['plotType', 'structure'],
|
|
118
133
|
children: [
|
|
119
|
-
{ tag: 'span', ref: 'type-badge', metaText: 'plotType', condition: 'plotType' },
|
|
120
|
-
{ tag: 'span', ref: 'structure-badge', metaText: 'structure', condition: 'structure' },
|
|
134
|
+
{ tag: 'span', ref: 'type-badge', metaText: 'plotType', label: 'Type:', condition: 'plotType', metaType: 'category', metaRank: 'primary' },
|
|
135
|
+
{ tag: 'span', ref: 'structure-badge', metaText: 'structure', label: 'Structure:', condition: 'structure', metaType: 'category', metaRank: 'secondary' },
|
|
121
136
|
],
|
|
122
137
|
},
|
|
123
138
|
},
|
|
124
139
|
editHints: { title: 'inline', beats: 'none' },
|
|
140
|
+
postTransform(node, { modifiers }) {
|
|
141
|
+
// Linear plots use connected sequence for beat timeline
|
|
142
|
+
if (modifiers.structure === 'linear') {
|
|
143
|
+
const children = [...node.children];
|
|
144
|
+
for (let i = 0; i < children.length; i++) {
|
|
145
|
+
const child = children[i];
|
|
146
|
+
if (typeof child === 'object' && child !== null && !Array.isArray(child) && child.name === 'ol') {
|
|
147
|
+
children[i] = { ...child, attributes: { ...child.attributes, 'data-sequence': 'connected' } };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return { ...node, children };
|
|
151
|
+
}
|
|
152
|
+
return node;
|
|
153
|
+
},
|
|
125
154
|
},
|
|
126
155
|
Beat: {
|
|
127
156
|
block: 'beat',
|
|
@@ -133,9 +162,24 @@ export const config = {
|
|
|
133
162
|
follows: { source: 'meta' },
|
|
134
163
|
},
|
|
135
164
|
editHints: { label: 'inline', body: 'none' },
|
|
165
|
+
postTransform(node, { modifiers }) {
|
|
166
|
+
const STATUS_TO_CHECKED = {
|
|
167
|
+
complete: 'checked',
|
|
168
|
+
active: 'active',
|
|
169
|
+
planned: 'unchecked',
|
|
170
|
+
abandoned: 'skipped',
|
|
171
|
+
};
|
|
172
|
+
const checked = STATUS_TO_CHECKED[modifiers.status];
|
|
173
|
+
if (checked) {
|
|
174
|
+
return { ...node, attributes: { ...node.attributes, 'data-checked': checked } };
|
|
175
|
+
}
|
|
176
|
+
return node;
|
|
177
|
+
},
|
|
136
178
|
},
|
|
137
179
|
Bond: {
|
|
138
180
|
block: 'bond',
|
|
181
|
+
defaultDensity: 'compact',
|
|
182
|
+
sections: { body: 'body' },
|
|
139
183
|
modifiers: {
|
|
140
184
|
bondType: { source: 'meta' },
|
|
141
185
|
status: { source: 'meta', default: 'active' },
|
|
@@ -145,6 +189,7 @@ export const config = {
|
|
|
145
189
|
},
|
|
146
190
|
Storyboard: {
|
|
147
191
|
block: 'storyboard',
|
|
192
|
+
defaultDensity: 'full',
|
|
148
193
|
modifiers: {
|
|
149
194
|
variant: { source: 'meta', default: 'clean' },
|
|
150
195
|
columns: { source: 'meta', default: '3' },
|
|
@@ -152,6 +197,6 @@ export const config = {
|
|
|
152
197
|
styles: { columns: '--sb-columns' },
|
|
153
198
|
editHints: { panels: 'none' },
|
|
154
199
|
},
|
|
155
|
-
StoryboardPanel: { block: 'storyboard-panel', parent: 'Storyboard', editHints: { image: 'image', caption: 'inline', body: 'none' } },
|
|
200
|
+
StoryboardPanel: { block: 'storyboard-panel', parent: 'Storyboard', mediaSlots: { image: 'cover' }, editHints: { image: 'image', caption: 'inline', body: 'none' } },
|
|
156
201
|
};
|
|
157
202
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,CAAC,MAAM,MAAM,GAA+B;IACjD,SAAS,EAAE;QACV,KAAK,EAAE,WAAW;QAClB,cAAc,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;QAC9C,SAAS,EAAE;YACV,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE;YAC/C,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;YAC5C,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC3B,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SACxB;QACD,SAAS,EAAE;YACV,KAAK,EAAE;gBACN,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;gBACxB,QAAQ,EAAE;oBACT,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,CAAC,MAAM,MAAM,GAA+B;IACjD,SAAS,EAAE;QACV,KAAK,EAAE,WAAW;QAClB,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;QAChF,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;QACpC,cAAc,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;QAC9C,SAAS,EAAE;YACV,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE;YAC/C,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;YAC5C,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC3B,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SACxB;QACD,SAAS,EAAE;YACV,KAAK,EAAE;gBACN,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;gBACxB,QAAQ,EAAE;oBACT,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;oBAC/G,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;iBACvO;aACD;SACD;QACD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;KAChF;IACD,gBAAgB,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAEnK,KAAK,EAAE;QACN,KAAK,EAAE,OAAO;QACd,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QAC5D,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC9B,cAAc,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE;QAChD,SAAS,EAAE;YACV,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;YAC/C,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YACzB,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YACxB,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC1B,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;YAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;YAC3D,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;YAC5D,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE;YAC7D,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9C;QACD,MAAM,EAAE;YACP,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE;YACtD,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE;YAC5D,GAAG,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE;SACnD;QACD,SAAS,EAAE;YACV,KAAK,EAAE;gBACN,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;gBACxB,QAAQ,EAAE;oBACT,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;oBACpH,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;iBACxI;aACD;SACD;QACD,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7E;IACD,YAAY,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAEvJ,IAAI,EAAE;QACL,KAAK,EAAE,MAAM;QACb,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;QAC9D,cAAc,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;QAC9C,SAAS,EAAE;YACV,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC5B,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;YAC7C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SACxB;QACD,SAAS,EAAE;YACV,KAAK,EAAE;gBACN,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;gBACxB,YAAY,EAAE,CAAC,UAAU,CAAC;gBAC1B,QAAQ,EAAE;oBACT,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;iBAClJ;aACD;SACD;QACD,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;KAC5C;IAED,OAAO,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QAC5D,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC9B,cAAc,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE;QAChD,SAAS,EAAE;YACV,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/B,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC7B,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YACxB,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YACxB,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;YAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;YAC3D,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;YAC5D,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE;YAC7D,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9C;QACD,MAAM,EAAE;YACP,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE;YACtD,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE;YAC5D,GAAG,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE;SACnD;QACD,SAAS,EAAE;YACV,KAAK,EAAE;gBACN,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;gBACxB,YAAY,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC;gBAClD,QAAQ,EAAE;oBACT,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;oBAChJ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;oBACvQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;iBACpI;aACD;SACD;QACD,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;KAC7D;IACD,cAAc,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAE7J,IAAI,EAAE;QACL,KAAK,EAAE,MAAM;QACb,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;QAC7C,SAAS,EAAE;YACV,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;YAC5C,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;YAChD,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SACxB;QACD,SAAS,EAAE;YACV,KAAK,EAAE;gBACN,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;gBACxB,YAAY,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;gBACvC,QAAQ,EAAE;oBACT,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;oBAC1I,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;iBACxJ;aACD;SACD;QACD,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7C,aAAa,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE;YAChC,wDAAwD;YACxD,IAAI,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAK,KAAa,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;wBAC1G,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,EAAE,GAAI,KAAa,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,EAAS,CAAC;oBAC/G,CAAC;gBACF,CAAC;gBACD,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC9B,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;KACD;IACD,IAAI,EAAE;QACL,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,SAAS,EAAE;YACV,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;YAC9C,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YACtB,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YACzB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SAC3B;QACD,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;QAC5C,aAAa,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE;YAChC,MAAM,iBAAiB,GAA2B;gBACjD,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,SAAS;aACpB,CAAC;YACF,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,CAAC;YACjF,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;KACD;IAED,IAAI,EAAE;QACL,KAAK,EAAE,MAAM;QACb,cAAc,EAAE,SAAS;QACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC1B,SAAS,EAAE;YACV,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC5B,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC7C,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAClD;QACD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;KAC3F;IAED,UAAU,EAAE;QACX,KAAK,EAAE,YAAY;QACnB,cAAc,EAAE,MAAM;QACtB,SAAS,EAAE;YACV,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;YAC7C,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;SACzC;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;QACnC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;KAC7B;IACD,eAAe,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;CACpK,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAWrD,eAAO,MAAM,YAAY,EAAE,WAmK1B,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,10 +6,11 @@ import { plot, beat } from './tags/plot.js';
|
|
|
6
6
|
import { bond } from './tags/bond.js';
|
|
7
7
|
import { storyboard, storyboardPanel } from './tags/storyboard.js';
|
|
8
8
|
import { config } from './config.js';
|
|
9
|
+
import { storytellingPipelineHooks } from './pipeline.js';
|
|
9
10
|
export const storytelling = {
|
|
10
11
|
name: 'storytelling',
|
|
11
12
|
displayName: 'Storytelling',
|
|
12
|
-
version: '0.
|
|
13
|
+
version: '0.9.0',
|
|
13
14
|
runes: {
|
|
14
15
|
'character': {
|
|
15
16
|
transform: character,
|
|
@@ -17,6 +18,8 @@ export const storytelling = {
|
|
|
17
18
|
description: 'Character profile with portrait, role, status, and sectioned details. Headings become sections.',
|
|
18
19
|
seoType: 'Person',
|
|
19
20
|
reinterprets: { heading: 'character detail section', paragraph: 'description', image: 'portrait', list: 'traits or inventory' },
|
|
21
|
+
category: 'Semantic',
|
|
22
|
+
snippet: ['{% character name="${1:Name}" role="${2|protagonist,antagonist,supporting,minor|}" status="${3|alive,dead,unknown,missing|}" %}', '## Backstory', '', '${4:Character background.}', '', '## Abilities', '', '- ${5:Ability one}', '{% /character %}'],
|
|
20
23
|
fixture: `{% character name="Veshra" role="antagonist" status="alive" aliases="The Bone Witch" tags="magic-user" %}
|
|
21
24
|
## Backstory
|
|
22
25
|
|
|
@@ -39,6 +42,8 @@ Raised in the shadow of the Ashen Spire, Veshra discovered her gift for necroman
|
|
|
39
42
|
description: 'Location or realm description with scene image, scale, and sectioned details. Headings become sections.',
|
|
40
43
|
seoType: 'Place',
|
|
41
44
|
reinterprets: { heading: 'realm detail section', paragraph: 'description', image: 'scene image', list: 'features or inhabitants' },
|
|
45
|
+
category: 'Semantic',
|
|
46
|
+
snippet: ['{% realm name="${1:Name}" type="${2:sanctuary}" %}', '${3:Description of the location.}', '{% /realm %}'],
|
|
42
47
|
fixture: `{% realm name="Rivendell" type="sanctuary" scale="settlement" parent="Eriador" %}
|
|
43
48
|

|
|
44
49
|
|
|
@@ -65,6 +70,8 @@ A hidden valley in the foothills of the Misty Mountains.
|
|
|
65
70
|
description: 'Faction or organization within a story world with alignment, size, and sectioned details.',
|
|
66
71
|
seoType: 'Organization',
|
|
67
72
|
reinterprets: { heading: 'faction detail section', paragraph: 'description', list: 'members or resources' },
|
|
73
|
+
category: 'Semantic',
|
|
74
|
+
snippet: ['{% faction name="${1:Name}" type="${2:guild}" %}', '${3:Faction description.}', '{% /faction %}'],
|
|
68
75
|
fixture: `{% faction name="The Silver Order" type="knightly order" alignment="lawful" size="large" %}
|
|
69
76
|
A prestigious order of knights sworn to protect the realm.
|
|
70
77
|
|
|
@@ -90,6 +97,8 @@ Their fortress overlooks the capital city from the northern cliffs.
|
|
|
90
97
|
description: 'Lore entry for world-building details, legends, or historical records. Supports spoiler mode.',
|
|
91
98
|
seoType: 'Article',
|
|
92
99
|
reinterprets: { heading: 'lore title', paragraph: 'content', blockquote: 'in-world quote' },
|
|
100
|
+
category: 'Semantic',
|
|
101
|
+
snippet: ['{% lore title="${1:Title}" category="${2:history}" %}', '${3:Lore content.}', '{% /lore %}'],
|
|
93
102
|
fixture: `{% lore title="The Prophecy of the Chosen One" category="prophecy" spoiler=true %}
|
|
94
103
|
An ancient text found in the ruins of the First Temple.
|
|
95
104
|
|
|
@@ -105,6 +114,8 @@ The prophecy has been interpreted differently by various factions throughout his
|
|
|
105
114
|
description: 'Plot arc with sequential beats. Lists with [x]/[>]/[ ]/[-] markers become beat checkpoints.',
|
|
106
115
|
seoType: 'CreativeWork',
|
|
107
116
|
reinterprets: { heading: 'plot title', paragraph: 'summary', list: 'beat checkpoints (with status markers)' },
|
|
117
|
+
category: 'Semantic',
|
|
118
|
+
snippet: ['{% plot title="${1:Arc Title}" %}', '${2:Plot summary.}', '', '- [ ] **${3:Beat One}** \\u2014 ${4:Description}', '- [ ] **${5:Beat Two}** \\u2014 ${6:Description}', '{% /plot %}'],
|
|
108
119
|
fixture: `{% plot title="The Quest for the Crown" type="quest" structure="linear" %}
|
|
109
120
|
The heroes must recover the lost crown before the solstice.
|
|
110
121
|
|
|
@@ -124,6 +135,8 @@ The heroes must recover the lost crown before the solstice.
|
|
|
124
135
|
aliases: ['relationship'],
|
|
125
136
|
description: 'Relationship between two named entities with type, status, and directional indicator.',
|
|
126
137
|
reinterprets: { paragraph: 'relationship description' },
|
|
138
|
+
category: 'Semantic',
|
|
139
|
+
snippet: ['{% bond from="${1:Entity A}" to="${2:Entity B}" type="${3:alliance}" %}', '${4:Relationship description.}', '{% /bond %}'],
|
|
127
140
|
fixture: `{% bond from="Aragorn" to="Legolas" type="fellowship" status="active" %}
|
|
128
141
|
Forged during the Council of Elrond, their bond was tested through the
|
|
129
142
|
War of the Ring. Despite their different backgrounds, they developed
|
|
@@ -135,6 +148,8 @@ a deep mutual respect.
|
|
|
135
148
|
aliases: ['comic'],
|
|
136
149
|
description: 'Comic/storyboard layout where images become panels and paragraphs become captions',
|
|
137
150
|
reinterprets: { image: 'panel visual', paragraph: 'caption/dialogue' },
|
|
151
|
+
category: 'Semantic',
|
|
152
|
+
snippet: ['{% storyboard %}', '', '', '${3:Caption for panel 1}', '', '', '', '${6:Caption for panel 2}', '{% /storyboard %}'],
|
|
138
153
|
fixture: `{% storyboard variant="clean" columns="3" %}
|
|
139
154
|

|
|
140
155
|
The hero surveys the landscape from atop the hill.
|
|
@@ -154,6 +169,7 @@ The journey begins.
|
|
|
154
169
|
theme: {
|
|
155
170
|
runes: config,
|
|
156
171
|
},
|
|
172
|
+
pipeline: storytellingPipelineHooks,
|
|
157
173
|
};
|
|
158
174
|
export default storytelling;
|
|
159
175
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PackagePipelineHooks, EntityRegistration } from '@refrakt-md/types';
|
|
2
|
+
export interface BondRelationship {
|
|
3
|
+
target: string;
|
|
4
|
+
bondType: string;
|
|
5
|
+
status: string;
|
|
6
|
+
bidirectional: boolean;
|
|
7
|
+
sourceUrl: string;
|
|
8
|
+
}
|
|
9
|
+
export interface StorytellingAggregatedData {
|
|
10
|
+
/** All registered entities by name for cross-link lookup */
|
|
11
|
+
entityByName: Map<string, EntityRegistration>;
|
|
12
|
+
/** Relationship graph from bonds: entityName → relationships */
|
|
13
|
+
relationships: Map<string, BondRelationship[]>;
|
|
14
|
+
/** Bond validation warnings (orphaned from/to references) */
|
|
15
|
+
orphanedBonds: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare const storytellingPipelineHooks: PackagePipelineHooks;
|
|
18
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAyGlF,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IAC1C,4DAA4D;IAC5D,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC9C,gEAAgE;IAChE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/C,6DAA6D;IAC7D,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,yBAAyB,EAAE,oBA+JvC,CAAC"}
|
package/dist/pipeline.js
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import Markdoc from '@markdoc/markdoc';
|
|
2
|
+
const { Tag } = Markdoc;
|
|
3
|
+
const STORYTELLING_ENTITY_TYPES = new Set(['character', 'realm', 'faction', 'lore', 'plot', 'bond']);
|
|
4
|
+
/** Tags where cross-links should not resolve */
|
|
5
|
+
const EXCLUDED_TAGS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', 'code']);
|
|
6
|
+
function walkTags(node, fn) {
|
|
7
|
+
if (Markdoc.Tag.isTag(node)) {
|
|
8
|
+
fn(node);
|
|
9
|
+
for (const child of node.children)
|
|
10
|
+
walkTags(child, fn);
|
|
11
|
+
}
|
|
12
|
+
else if (Array.isArray(node)) {
|
|
13
|
+
node.forEach(n => walkTags(n, fn));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function extractTextContent(node) {
|
|
17
|
+
if (typeof node === 'string')
|
|
18
|
+
return node;
|
|
19
|
+
if (!Markdoc.Tag.isTag(node))
|
|
20
|
+
return '';
|
|
21
|
+
return node.children.map(c => extractTextContent(c)).join('');
|
|
22
|
+
}
|
|
23
|
+
/** Convert camelCase to kebab-case (matching engine convention) */
|
|
24
|
+
function toKebabCase(s) {
|
|
25
|
+
return s
|
|
26
|
+
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
|
27
|
+
.replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')
|
|
28
|
+
.toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
function readField(tag, field) {
|
|
31
|
+
const kebab = toKebabCase(field);
|
|
32
|
+
const meta = tag.children.find((c) => Markdoc.Tag.isTag(c) && c.attributes['data-field'] === kebab);
|
|
33
|
+
return Markdoc.Tag.isTag(meta) ? meta.attributes.content ?? '' : '';
|
|
34
|
+
}
|
|
35
|
+
function readRefText(tag, name) {
|
|
36
|
+
const ref = tag.children.find((c) => Markdoc.Tag.isTag(c) && c.attributes['data-name'] === name);
|
|
37
|
+
return ref ? extractTextContent(ref) : '';
|
|
38
|
+
}
|
|
39
|
+
/** Extract the display name for a storytelling entity based on rune type */
|
|
40
|
+
function extractEntityName(tag, runeType) {
|
|
41
|
+
switch (runeType) {
|
|
42
|
+
case 'character':
|
|
43
|
+
case 'realm':
|
|
44
|
+
case 'faction':
|
|
45
|
+
return readRefText(tag, 'name');
|
|
46
|
+
case 'lore':
|
|
47
|
+
case 'plot':
|
|
48
|
+
return readRefText(tag, 'title');
|
|
49
|
+
default:
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Extract type-specific metadata for a storytelling entity */
|
|
54
|
+
function extractEntityData(tag, runeType) {
|
|
55
|
+
const data = {};
|
|
56
|
+
switch (runeType) {
|
|
57
|
+
case 'character':
|
|
58
|
+
data.role = readField(tag, 'role');
|
|
59
|
+
data.status = readField(tag, 'status');
|
|
60
|
+
data.aliases = readField(tag, 'aliases');
|
|
61
|
+
data.tags = readField(tag, 'tags');
|
|
62
|
+
break;
|
|
63
|
+
case 'realm':
|
|
64
|
+
data.realmType = readField(tag, 'realmType');
|
|
65
|
+
data.scale = readField(tag, 'scale');
|
|
66
|
+
data.tags = readField(tag, 'tags');
|
|
67
|
+
data.parent = readField(tag, 'parent');
|
|
68
|
+
break;
|
|
69
|
+
case 'faction':
|
|
70
|
+
data.factionType = readField(tag, 'factionType');
|
|
71
|
+
data.alignment = readField(tag, 'alignment');
|
|
72
|
+
data.size = readField(tag, 'size');
|
|
73
|
+
data.tags = readField(tag, 'tags');
|
|
74
|
+
break;
|
|
75
|
+
case 'lore':
|
|
76
|
+
data.category = readField(tag, 'category');
|
|
77
|
+
data.spoiler = readField(tag, 'spoiler');
|
|
78
|
+
data.tags = readField(tag, 'tags');
|
|
79
|
+
break;
|
|
80
|
+
case 'plot':
|
|
81
|
+
data.plotType = readField(tag, 'plotType');
|
|
82
|
+
data.structure = readField(tag, 'structure');
|
|
83
|
+
data.tags = readField(tag, 'tags');
|
|
84
|
+
break;
|
|
85
|
+
case 'bond':
|
|
86
|
+
data.from = readRefText(tag, 'from');
|
|
87
|
+
data.to = readRefText(tag, 'to');
|
|
88
|
+
data.bondType = readField(tag, 'bondType');
|
|
89
|
+
data.status = readField(tag, 'status');
|
|
90
|
+
data.bidirectional = readField(tag, 'bidirectional');
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
return data;
|
|
94
|
+
}
|
|
95
|
+
export const storytellingPipelineHooks = {
|
|
96
|
+
register(pages, registry, ctx) {
|
|
97
|
+
for (const page of pages) {
|
|
98
|
+
walkTags(page.renderable, (tag) => {
|
|
99
|
+
const runeType = tag.attributes['data-rune'];
|
|
100
|
+
if (!STORYTELLING_ENTITY_TYPES.has(runeType))
|
|
101
|
+
return;
|
|
102
|
+
if (runeType === 'bond') {
|
|
103
|
+
const from = readRefText(tag, 'from');
|
|
104
|
+
const to = readRefText(tag, 'to');
|
|
105
|
+
if (!from || !to) {
|
|
106
|
+
ctx.warn(`Bond missing from or to attribute`, page.url);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const data = extractEntityData(tag, runeType);
|
|
110
|
+
data.name = `${from} → ${to}`;
|
|
111
|
+
registry.register({
|
|
112
|
+
type: 'bond',
|
|
113
|
+
id: `${from}→${to}`,
|
|
114
|
+
sourceUrl: page.url,
|
|
115
|
+
data,
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const name = extractEntityName(tag, runeType);
|
|
120
|
+
if (!name) {
|
|
121
|
+
ctx.warn(`Storytelling ${runeType} missing name/title`, page.url);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const data = extractEntityData(tag, runeType);
|
|
125
|
+
data.name = name;
|
|
126
|
+
registry.register({
|
|
127
|
+
type: runeType,
|
|
128
|
+
id: name,
|
|
129
|
+
sourceUrl: page.url,
|
|
130
|
+
data,
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
aggregate(registry, ctx) {
|
|
136
|
+
// Build entity lookup by name (for cross-link resolution)
|
|
137
|
+
const entityByName = new Map();
|
|
138
|
+
const entityTypes = ['character', 'realm', 'faction', 'lore', 'plot'];
|
|
139
|
+
for (const type of entityTypes) {
|
|
140
|
+
for (const entity of registry.getAll(type)) {
|
|
141
|
+
entityByName.set(entity.id, entity);
|
|
142
|
+
// Also register character aliases
|
|
143
|
+
if (type === 'character') {
|
|
144
|
+
const aliases = String(entity.data.aliases ?? '');
|
|
145
|
+
if (aliases) {
|
|
146
|
+
for (const alias of aliases.split(',').map(a => a.trim()).filter(Boolean)) {
|
|
147
|
+
if (!entityByName.has(alias)) {
|
|
148
|
+
entityByName.set(alias, entity);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Build relationship graph from bonds
|
|
156
|
+
const relationships = new Map();
|
|
157
|
+
const orphanedBonds = [];
|
|
158
|
+
function addRelationship(from, rel) {
|
|
159
|
+
if (!relationships.has(from))
|
|
160
|
+
relationships.set(from, []);
|
|
161
|
+
relationships.get(from).push(rel);
|
|
162
|
+
}
|
|
163
|
+
for (const bond of registry.getAll('bond')) {
|
|
164
|
+
const from = String(bond.data.from ?? '');
|
|
165
|
+
const to = String(bond.data.to ?? '');
|
|
166
|
+
const bondType = String(bond.data.bondType ?? '');
|
|
167
|
+
const status = String(bond.data.status ?? 'active');
|
|
168
|
+
const bidirectional = String(bond.data.bidirectional ?? 'true') === 'true';
|
|
169
|
+
// Validate references
|
|
170
|
+
const fromExists = entityByName.has(from);
|
|
171
|
+
const toExists = entityByName.has(to);
|
|
172
|
+
if (!fromExists) {
|
|
173
|
+
ctx.warn(`Bond references unknown entity "${from}"`, bond.sourceUrl);
|
|
174
|
+
orphanedBonds.push(`${from} → ${to}`);
|
|
175
|
+
}
|
|
176
|
+
if (!toExists) {
|
|
177
|
+
ctx.warn(`Bond references unknown entity "${to}"`, bond.sourceUrl);
|
|
178
|
+
if (!orphanedBonds.includes(`${from} → ${to}`)) {
|
|
179
|
+
orphanedBonds.push(`${from} → ${to}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
addRelationship(from, { target: to, bondType, status, bidirectional, sourceUrl: bond.sourceUrl });
|
|
183
|
+
if (bidirectional) {
|
|
184
|
+
addRelationship(to, { target: from, bondType, status, bidirectional, sourceUrl: bond.sourceUrl });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
entityByName,
|
|
189
|
+
relationships,
|
|
190
|
+
orphanedBonds,
|
|
191
|
+
};
|
|
192
|
+
},
|
|
193
|
+
postProcess(page, aggregated) {
|
|
194
|
+
const maybeStoryData = aggregated['storytelling'];
|
|
195
|
+
if (!maybeStoryData || !maybeStoryData.entityByName || maybeStoryData.entityByName.size === 0)
|
|
196
|
+
return page;
|
|
197
|
+
const storyData = maybeStoryData;
|
|
198
|
+
const linkedNames = new Set();
|
|
199
|
+
let modified = false;
|
|
200
|
+
function mapNode(node, insideRuneDepth) {
|
|
201
|
+
if (typeof node === 'string')
|
|
202
|
+
return node;
|
|
203
|
+
if (Array.isArray(node)) {
|
|
204
|
+
const mapped = node.map(n => mapNode(n, insideRuneDepth));
|
|
205
|
+
return mapped.some((n, i) => n !== node[i]) ? mapped : node;
|
|
206
|
+
}
|
|
207
|
+
if (!Markdoc.Tag.isTag(node))
|
|
208
|
+
return node;
|
|
209
|
+
// Skip headings and code blocks entirely
|
|
210
|
+
if (EXCLUDED_TAGS.has(node.name))
|
|
211
|
+
return node;
|
|
212
|
+
// Skip nested runes (allow the page's top-level rune through)
|
|
213
|
+
if (node.attributes['data-rune'] != null && insideRuneDepth > 0)
|
|
214
|
+
return node;
|
|
215
|
+
const newDepth = node.attributes['data-rune'] != null ? insideRuneDepth + 1 : insideRuneDepth;
|
|
216
|
+
// Check for strong tags to cross-link
|
|
217
|
+
if (node.name === 'strong') {
|
|
218
|
+
const text = extractTextContent(node).trim();
|
|
219
|
+
if (text && !linkedNames.has(text)) {
|
|
220
|
+
const entity = storyData.entityByName.get(text);
|
|
221
|
+
if (entity && entity.sourceUrl !== page.url) {
|
|
222
|
+
linkedNames.add(text);
|
|
223
|
+
modified = true;
|
|
224
|
+
return new Tag('a', { href: entity.sourceUrl }, [node]);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Recurse children
|
|
229
|
+
const newChildren = node.children.map((c) => mapNode(c, newDepth));
|
|
230
|
+
const changed = newChildren.some((c, i) => c !== node.children[i]);
|
|
231
|
+
if (changed) {
|
|
232
|
+
return new Tag(node.name, node.attributes, newChildren);
|
|
233
|
+
}
|
|
234
|
+
return node;
|
|
235
|
+
}
|
|
236
|
+
const newRenderable = mapNode(page.renderable, 0);
|
|
237
|
+
if (!modified)
|
|
238
|
+
return page;
|
|
239
|
+
return { ...page, renderable: newRenderable };
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character.d.ts","sourceRoot":"","sources":["../../src/tags/character.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAyBvC,eAAO,MAAM,gBAAgB,gBAAkC,CAAC;AAEhE,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"character.d.ts","sourceRoot":"","sources":["../../src/tags/character.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAyBvC,eAAO,MAAM,gBAAgB,gBAAkC,CAAC;AAEhE,eAAO,MAAM,SAAS,gBAgFpB,CAAC"}
|
package/dist/tags/character.js
CHANGED
|
@@ -72,56 +72,36 @@ export const character = createContentModelSchema({
|
|
|
72
72
|
const portraitDiv = hasPortrait ? portrait.wrap('div') : undefined;
|
|
73
73
|
const sections = sectionNodes.tag('div').typeof('CharacterSection');
|
|
74
74
|
const hasSections = sections.count() > 0;
|
|
75
|
-
|
|
75
|
+
// Portrait before name so the image appears between header and title in stacked layout.
|
|
76
|
+
const children = [];
|
|
76
77
|
if (portraitDiv)
|
|
77
78
|
children.push(portraitDiv.next());
|
|
79
|
+
children.push(nameTag, roleMeta, statusMeta, aliasesMeta, tagsMeta);
|
|
78
80
|
const schemaMap = {
|
|
79
81
|
name: nameTag,
|
|
80
82
|
jobTitle: roleMeta,
|
|
81
83
|
};
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
const body = sectionNodes.wrap('div');
|
|
106
|
-
children.push(body.next());
|
|
107
|
-
return createComponentRenderable(schema.Character, {
|
|
108
|
-
tag: 'article',
|
|
109
|
-
property: 'contentSection',
|
|
110
|
-
properties: {
|
|
111
|
-
role: roleMeta,
|
|
112
|
-
status: statusMeta,
|
|
113
|
-
aliases: aliasesMeta,
|
|
114
|
-
tags: tagsMeta,
|
|
115
|
-
},
|
|
116
|
-
refs: {
|
|
117
|
-
name: nameTag,
|
|
118
|
-
...(portraitDiv ? { portrait: portraitDiv } : {}),
|
|
119
|
-
body,
|
|
120
|
-
},
|
|
121
|
-
schema: schemaMap,
|
|
122
|
-
children,
|
|
123
|
-
});
|
|
124
|
-
}
|
|
84
|
+
const sectionsContainer = hasSections ? sections.wrap('div') : undefined;
|
|
85
|
+
const body = !hasSections ? sectionNodes.wrap('div') : undefined;
|
|
86
|
+
children.push(hasSections ? sectionsContainer.next() : body.next());
|
|
87
|
+
return createComponentRenderable(schema.Character, {
|
|
88
|
+
tag: 'article',
|
|
89
|
+
property: 'contentSection',
|
|
90
|
+
properties: {
|
|
91
|
+
role: roleMeta,
|
|
92
|
+
status: statusMeta,
|
|
93
|
+
aliases: aliasesMeta,
|
|
94
|
+
tags: tagsMeta,
|
|
95
|
+
...(hasSections ? { section: sections } : {}),
|
|
96
|
+
},
|
|
97
|
+
refs: {
|
|
98
|
+
name: nameTag,
|
|
99
|
+
...(portraitDiv ? { portrait: portraitDiv } : {}),
|
|
100
|
+
...(hasSections ? { sections: sectionsContainer } : { body: body }),
|
|
101
|
+
},
|
|
102
|
+
schema: schemaMap,
|
|
103
|
+
children,
|
|
104
|
+
});
|
|
125
105
|
},
|
|
126
106
|
});
|
|
127
107
|
//# sourceMappingURL=character.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character.js","sourceRoot":"","sources":["../../src/tags/character.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"character.js","sourceRoot":"","sources":["../../src/tags/character.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvJ,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,iBAAkB,SAAQ,KAAK;IAArC;;QAEC,SAAI,GAAW,EAAE,CAAC;IAYnB,CAAC;IAVA,SAAS;QACR,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,OAAO,yBAAyB,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACzD,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC9C,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SAChC,CAAC,CAAC;IACJ,CAAC;CACD;AAZA;IADC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CAC1B;AAcnB,MAAM,QAAQ,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAU,CAAC;AAC/E,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAEpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,SAAS,GAAG,wBAAwB,CAAC;IACjD,UAAU,EAAE;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,6CAA6C,EAAE;QAClG,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,sEAAsE,EAAE;QACvJ,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,4DAA4D,EAAE;QACjJ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,+DAA+D,EAAE;QACxH,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,+DAA+D,EAAE;KACrH;IACD,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,UAAmB;QACzB,cAAc,EAAE,SAAS;QACzB,OAAO,EAAE,mBAAmB;QAC5B,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QACpC,MAAM,EAAE;YACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YAC5E,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;SAC7D;QACD,YAAY,EAAE;YACb,IAAI,EAAE,UAAmB;YACzB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACtE;KACD,CAAC;IACF,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;QAChC,yEAAyE;QACzE,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAC5C,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAyB,CAC3D,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAEhE,uCAAuC;QACvC,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAC7C,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAyB,CAC7E,CAAC;QACF,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEzC,wFAAwF;QACxF,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,IAAI,WAAW;YAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEpE,MAAM,SAAS,GAAG;YACjB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,QAAQ;SAClB,CAAC;QAEF,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtE,OAAO,yBAAyB,CAAC,MAAM,CAAC,SAAS,EAAE;YAClD,GAAG,EAAE,SAAS;YACd,QAAQ,EAAE,gBAAgB;YAC1B,UAAU,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,QAAQ;gBACd,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C;YACD,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAK,EAAE,CAAC;aACrE;YACD,MAAM,EAAE,SAAS;YACjB,QAAQ;SACR,CAAC,CAAC;IACJ,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Markdoc from '@markdoc/markdoc';
|
|
2
|
+
import type { RenderableTreeNode } from '@markdoc/markdoc';
|
|
3
|
+
import { RenderableNodeCursor } from '@refrakt-md/runes';
|
|
4
|
+
/**
|
|
5
|
+
* Shared scene-image extraction for storytelling runes (realm, faction).
|
|
6
|
+
*
|
|
7
|
+
* Takes the resolved `scene` field, transforms it, and returns either:
|
|
8
|
+
* - A media div wrapping the extracted `<img>` tag (if the scene was an image)
|
|
9
|
+
* - Extra description nodes (if the scene was text, not an image)
|
|
10
|
+
*
|
|
11
|
+
* Also returns the raw `<img>` tag for SEO schema use.
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractScene(sceneResolved: unknown, config: Record<string, any>): {
|
|
14
|
+
sceneDiv: RenderableNodeCursor<Markdoc.Tag> | undefined;
|
|
15
|
+
sceneImgTag: Markdoc.Tag | undefined;
|
|
16
|
+
extraDescription: RenderableTreeNode[];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Shared content assembly for storytelling runes with sections (realm, faction).
|
|
20
|
+
*
|
|
21
|
+
* Takes the extra description nodes, resolved description field, section cursor,
|
|
22
|
+
* and section type name, and returns a wrapped content div.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildStoryContent(extraDescription: RenderableTreeNode[], descriptionResolved: unknown, sectionNodes: RenderableNodeCursor, sectionTypeName: string, config: Record<string, any>): {
|
|
25
|
+
mainContent: RenderableNodeCursor<Markdoc.Tag>;
|
|
26
|
+
sections: RenderableNodeCursor<Markdoc.Tag>;
|
|
27
|
+
hasSections: boolean;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +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,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAW,oBAAoB,EAAqB,MAAM,mBAAmB,CAAC;AAErF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC3B,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzB;IACF,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACxD,WAAW,EAAE,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IACrC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;CACvC,CAmBA;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,gBAAgB,EAAE,kBAAkB,EAAE,EACtC,mBAAmB,EAAE,OAAO,EAC5B,YAAY,EAAE,oBAAoB,EAClC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzB;IACF,WAAW,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,WAAW,EAAE,OAAO,CAAC;CACrB,CA8BA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import Markdoc from '@markdoc/markdoc';
|
|
2
|
+
const { Tag } = Markdoc;
|
|
3
|
+
import { asNodes, RenderableNodeCursor, extractMediaImage } from '@refrakt-md/runes';
|
|
4
|
+
/**
|
|
5
|
+
* Shared scene-image extraction for storytelling runes (realm, faction).
|
|
6
|
+
*
|
|
7
|
+
* Takes the resolved `scene` field, transforms it, and returns either:
|
|
8
|
+
* - A media div wrapping the extracted `<img>` tag (if the scene was an image)
|
|
9
|
+
* - Extra description nodes (if the scene was text, not an image)
|
|
10
|
+
*
|
|
11
|
+
* Also returns the raw `<img>` tag for SEO schema use.
|
|
12
|
+
*/
|
|
13
|
+
export function extractScene(sceneResolved, config) {
|
|
14
|
+
const sceneAstNodes = asNodes(sceneResolved);
|
|
15
|
+
const sceneRendered = new RenderableNodeCursor(Markdoc.transform(sceneAstNodes, config));
|
|
16
|
+
const sceneImgTag = extractMediaImage(sceneRendered);
|
|
17
|
+
let sceneDiv;
|
|
18
|
+
let extraDescription = [];
|
|
19
|
+
if (sceneImgTag) {
|
|
20
|
+
sceneDiv = new RenderableNodeCursor([sceneImgTag]).wrap('div');
|
|
21
|
+
}
|
|
22
|
+
else if (sceneRendered.count() > 0) {
|
|
23
|
+
// First paragraph was text, not an image — include as description
|
|
24
|
+
extraDescription = sceneRendered.toArray();
|
|
25
|
+
}
|
|
26
|
+
return { sceneDiv, sceneImgTag, extraDescription };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Shared content assembly for storytelling runes with sections (realm, faction).
|
|
30
|
+
*
|
|
31
|
+
* Takes the extra description nodes, resolved description field, section cursor,
|
|
32
|
+
* and section type name, and returns a wrapped content div.
|
|
33
|
+
*/
|
|
34
|
+
export function buildStoryContent(extraDescription, descriptionResolved, sectionNodes, sectionTypeName, config) {
|
|
35
|
+
// Transform description paragraphs
|
|
36
|
+
const descAstNodes = asNodes(descriptionResolved);
|
|
37
|
+
const descRendered = new RenderableNodeCursor(Markdoc.transform(descAstNodes, config));
|
|
38
|
+
const sections = sectionNodes.tag('div').typeof(sectionTypeName);
|
|
39
|
+
const hasSections = sections.count() > 0;
|
|
40
|
+
// Build content children (everything except scene)
|
|
41
|
+
const contentChildren = [];
|
|
42
|
+
const allDescNodes = [...extraDescription, ...descRendered.toArray()];
|
|
43
|
+
if (allDescNodes.length > 0) {
|
|
44
|
+
contentChildren.push(...allDescNodes);
|
|
45
|
+
}
|
|
46
|
+
if (hasSections) {
|
|
47
|
+
const sectionsContainer = sections.wrap('div');
|
|
48
|
+
contentChildren.push(sectionsContainer.next());
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const body = sectionNodes.wrap('div');
|
|
52
|
+
if (sectionNodes.count() > 0) {
|
|
53
|
+
contentChildren.push(body.next());
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const mainContent = new RenderableNodeCursor(contentChildren).wrap('div');
|
|
57
|
+
return { mainContent, sections, hasSections };
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tags/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAErF;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC3B,aAAsB,EACtB,MAA2B;IAM3B,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAC7C,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAyB,CAChE,CAAC;IAEF,MAAM,WAAW,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAErD,IAAI,QAAuD,CAAC;IAC5D,IAAI,gBAAgB,GAAyB,EAAE,CAAC;IAEhD,IAAI,WAAW,EAAE,CAAC;QACjB,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAsC,CAAC;IACrG,CAAC;SAAM,IAAI,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACtC,kEAAkE;QAClE,gBAAgB,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAChC,gBAAsC,EACtC,mBAA4B,EAC5B,YAAkC,EAClC,eAAuB,EACvB,MAA2B;IAM3B,mCAAmC;IACnC,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAC5C,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAyB,CAC/D,CAAC;IAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAsC,CAAC;IACtG,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEzC,mDAAmD;IACnD,MAAM,eAAe,GAAU,EAAE,CAAC;IAClC,MAAM,YAAY,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,eAAe,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QACjB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE1E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faction.d.ts","sourceRoot":"","sources":["../../src/tags/faction.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"faction.d.ts","sourceRoot":"","sources":["../../src/tags/faction.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAuBvC,eAAO,MAAM,cAAc,gBAAoC,CAAC;AAEhE,eAAO,MAAM,OAAO,gBA+FlB,CAAC"}
|
package/dist/tags/faction.js
CHANGED
|
@@ -9,8 +9,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import Markdoc from '@markdoc/markdoc';
|
|
11
11
|
const { Tag } = Markdoc;
|
|
12
|
-
import { attribute, Model, createComponentRenderable, createContentModelSchema, createSchema, asNodes, RenderableNodeCursor, SplitLayoutModel } from '@refrakt-md/runes';
|
|
12
|
+
import { attribute, Model, createComponentRenderable, createContentModelSchema, createSchema, asNodes, RenderableNodeCursor, SplitLayoutModel, buildLayoutMetas } from '@refrakt-md/runes';
|
|
13
13
|
import { schema } from '../types.js';
|
|
14
|
+
import { extractScene, buildStoryContent } from './common.js';
|
|
14
15
|
class FactionSectionModel extends Model {
|
|
15
16
|
constructor() {
|
|
16
17
|
super(...arguments);
|
|
@@ -59,80 +60,26 @@ export const faction = createContentModelSchema({
|
|
|
59
60
|
// Combine explicit child tags (preamble items) with emitted section tags
|
|
60
61
|
const allItems = [...asNodes(resolved.items), ...asNodes(resolved.sections)];
|
|
61
62
|
const sectionNodes = new RenderableNodeCursor(Markdoc.transform(allItems, config));
|
|
63
|
+
// Domain meta tags
|
|
62
64
|
const nameTag = new Tag('span', {}, [attrs.name ?? '']);
|
|
63
65
|
const factionTypeMeta = new Tag('meta', { content: attrs.type ?? '' });
|
|
64
66
|
const alignmentMeta = new Tag('meta', { content: attrs.alignment ?? '' });
|
|
65
67
|
const sizeMeta = new Tag('meta', { content: attrs.size ?? '' });
|
|
66
68
|
const tagsMeta = new Tag('meta', { content: attrs.tags ?? '' });
|
|
67
69
|
// Layout meta tags
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
const ratioMeta = layout !== 'stacked' ? new Tag('meta', { content: ratio }) : undefined;
|
|
75
|
-
const valignMeta = layout !== 'stacked' ? new Tag('meta', { content: valign }) : undefined;
|
|
76
|
-
const gapMeta = gap !== 'default' ? new Tag('meta', { content: gap }) : undefined;
|
|
77
|
-
const collapseMeta = collapse ? new Tag('meta', { content: collapse }) : undefined;
|
|
78
|
-
// Extract scene image from the first preamble paragraph
|
|
79
|
-
const sceneAstNodes = asNodes(resolved.scene);
|
|
80
|
-
const sceneRendered = new RenderableNodeCursor(Markdoc.transform(sceneAstNodes, config));
|
|
81
|
-
let sceneImgTag;
|
|
82
|
-
for (const node of sceneRendered.toArray()) {
|
|
83
|
-
if (Markdoc.Tag.isTag(node) && node.name === 'img') {
|
|
84
|
-
sceneImgTag = node;
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
if (Markdoc.Tag.isTag(node) && node.name === 'p') {
|
|
88
|
-
const img = node.children.find((c) => Markdoc.Tag.isTag(c) && c.name === 'img');
|
|
89
|
-
if (img) {
|
|
90
|
-
sceneImgTag = img;
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
let sceneDiv;
|
|
96
|
-
let extraDescription = [];
|
|
97
|
-
if (sceneImgTag) {
|
|
98
|
-
sceneDiv = new RenderableNodeCursor([sceneImgTag]).wrap('div');
|
|
99
|
-
}
|
|
100
|
-
else if (sceneRendered.count() > 0) {
|
|
101
|
-
extraDescription = sceneRendered.toArray();
|
|
102
|
-
}
|
|
103
|
-
// Transform description paragraphs
|
|
104
|
-
const descAstNodes = asNodes(resolved.description);
|
|
105
|
-
const descRendered = new RenderableNodeCursor(Markdoc.transform(descAstNodes, config));
|
|
106
|
-
const sections = sectionNodes.tag('div').typeof('FactionSection');
|
|
107
|
-
const hasSections = sections.count() > 0;
|
|
108
|
-
// Build content children (everything except scene)
|
|
109
|
-
const contentChildren = [];
|
|
110
|
-
const allDescNodes = [...extraDescription, ...descRendered.toArray()];
|
|
111
|
-
if (allDescNodes.length > 0) {
|
|
112
|
-
contentChildren.push(...allDescNodes);
|
|
113
|
-
}
|
|
114
|
-
if (hasSections) {
|
|
115
|
-
const sectionsContainer = sections.wrap('div');
|
|
116
|
-
contentChildren.push(sectionsContainer.next());
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
const body = sectionNodes.wrap('div');
|
|
120
|
-
if (sectionNodes.count() > 0) {
|
|
121
|
-
contentChildren.push(body.next());
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
const mainContent = new RenderableNodeCursor(contentChildren).wrap('div');
|
|
70
|
+
const { metas: layoutMetas, children: layoutChildren } = buildLayoutMetas(attrs);
|
|
71
|
+
const { layout: layoutMeta, ratio: ratioMeta, valign: valignMeta, gap: gapMeta, collapse: collapseMeta } = layoutMetas;
|
|
72
|
+
// Extract scene image (shared helper)
|
|
73
|
+
const { sceneDiv, sceneImgTag, extraDescription } = extractScene(resolved.scene, config);
|
|
74
|
+
// Build content div with sections (shared helper)
|
|
75
|
+
const { mainContent, sections, hasSections } = buildStoryContent(extraDescription, resolved.description, sectionNodes, 'FactionSection', config);
|
|
125
76
|
// Build children array
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
...(ratioMeta ? [ratioMeta] : []),
|
|
130
|
-
...(valignMeta ? [valignMeta] : []),
|
|
131
|
-
...(gapMeta ? [gapMeta] : []),
|
|
132
|
-
...(collapseMeta ? [collapseMeta] : []),
|
|
133
|
-
];
|
|
77
|
+
// Scene before name so the image appears between header and title in stacked layout.
|
|
78
|
+
// In split layouts, CSS grid explicit placement controls the visual order.
|
|
79
|
+
const children = [];
|
|
134
80
|
if (sceneDiv)
|
|
135
81
|
children.push(sceneDiv.next());
|
|
82
|
+
children.push(nameTag, factionTypeMeta, alignmentMeta, sizeMeta, tagsMeta, ...layoutChildren);
|
|
136
83
|
children.push(mainContent.next());
|
|
137
84
|
// SEO schema
|
|
138
85
|
const schemaMap = {
|
package/dist/tags/faction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faction.js","sourceRoot":"","sources":["../../src/tags/faction.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"faction.js","sourceRoot":"","sources":["../../src/tags/faction.ts"],"names":[],"mappings":"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"}
|
package/dist/tags/realm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realm.d.ts","sourceRoot":"","sources":["../../src/tags/realm.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"realm.d.ts","sourceRoot":"","sources":["../../src/tags/realm.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAuBvC,eAAO,MAAM,YAAY,gBAAkC,CAAC;AAE5D,eAAO,MAAM,KAAK,gBAgGhB,CAAC"}
|
package/dist/tags/realm.js
CHANGED
|
@@ -9,8 +9,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import Markdoc from '@markdoc/markdoc';
|
|
11
11
|
const { Tag } = Markdoc;
|
|
12
|
-
import { attribute, Model, createComponentRenderable, createContentModelSchema, createSchema, asNodes, RenderableNodeCursor, SplitLayoutModel } from '@refrakt-md/runes';
|
|
12
|
+
import { attribute, Model, createComponentRenderable, createContentModelSchema, createSchema, asNodes, RenderableNodeCursor, SplitLayoutModel, buildLayoutMetas } from '@refrakt-md/runes';
|
|
13
13
|
import { schema } from '../types.js';
|
|
14
|
+
import { extractScene, buildStoryContent } from './common.js';
|
|
14
15
|
class RealmSectionModel extends Model {
|
|
15
16
|
constructor() {
|
|
16
17
|
super(...arguments);
|
|
@@ -59,82 +60,26 @@ export const realm = createContentModelSchema({
|
|
|
59
60
|
// Combine explicit child tags (preamble items) with emitted section tags
|
|
60
61
|
const allItems = [...asNodes(resolved.items), ...asNodes(resolved.sections)];
|
|
61
62
|
const sectionNodes = new RenderableNodeCursor(Markdoc.transform(allItems, config));
|
|
63
|
+
// Domain meta tags
|
|
62
64
|
const nameTag = new Tag('span', {}, [attrs.name ?? '']);
|
|
63
65
|
const realmTypeMeta = new Tag('meta', { content: attrs.type ?? 'place' });
|
|
64
66
|
const scaleMeta = new Tag('meta', { content: attrs.scale ?? '' });
|
|
65
67
|
const tagsMeta = new Tag('meta', { content: attrs.tags ?? '' });
|
|
66
68
|
const parentMeta = new Tag('meta', { content: attrs.parent ?? '' });
|
|
67
|
-
// Layout meta tags
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
// Extract scene image from the first preamble paragraph (if it contains an image)
|
|
79
|
-
const sceneAstNodes = asNodes(resolved.scene);
|
|
80
|
-
const sceneRendered = new RenderableNodeCursor(Markdoc.transform(sceneAstNodes, config));
|
|
81
|
-
// The image is wrapped in a <p> by Markdoc — look inside paragraph children for <img>
|
|
82
|
-
let sceneImgTag;
|
|
83
|
-
for (const node of sceneRendered.toArray()) {
|
|
84
|
-
if (Markdoc.Tag.isTag(node) && node.name === 'img') {
|
|
85
|
-
sceneImgTag = node;
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
if (Markdoc.Tag.isTag(node) && node.name === 'p') {
|
|
89
|
-
const img = node.children.find((c) => Markdoc.Tag.isTag(c) && c.name === 'img');
|
|
90
|
-
if (img) {
|
|
91
|
-
sceneImgTag = img;
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
let sceneDiv;
|
|
97
|
-
let extraDescription = [];
|
|
98
|
-
if (sceneImgTag) {
|
|
99
|
-
sceneDiv = new RenderableNodeCursor([sceneImgTag]).wrap('div');
|
|
100
|
-
}
|
|
101
|
-
else if (sceneRendered.count() > 0) {
|
|
102
|
-
// First paragraph was text, not an image — include as description
|
|
103
|
-
extraDescription = sceneRendered.toArray();
|
|
104
|
-
}
|
|
105
|
-
// Transform description paragraphs
|
|
106
|
-
const descAstNodes = asNodes(resolved.description);
|
|
107
|
-
const descRendered = new RenderableNodeCursor(Markdoc.transform(descAstNodes, config));
|
|
108
|
-
const sections = sectionNodes.tag('div').typeof('RealmSection');
|
|
109
|
-
const hasSections = sections.count() > 0;
|
|
110
|
-
// Build content children (everything except scene)
|
|
111
|
-
const contentChildren = [];
|
|
112
|
-
const allDescNodes = [...extraDescription, ...descRendered.toArray()];
|
|
113
|
-
if (allDescNodes.length > 0) {
|
|
114
|
-
contentChildren.push(...allDescNodes);
|
|
115
|
-
}
|
|
116
|
-
if (hasSections) {
|
|
117
|
-
const sectionsContainer = sections.wrap('div');
|
|
118
|
-
contentChildren.push(sectionsContainer.next());
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
const body = sectionNodes.wrap('div');
|
|
122
|
-
if (sectionNodes.count() > 0) {
|
|
123
|
-
contentChildren.push(body.next());
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
const mainContent = new RenderableNodeCursor(contentChildren).wrap('div');
|
|
127
|
-
// Build children array: meta tags, then scene before content (image at top in stacked)
|
|
128
|
-
const children = [
|
|
129
|
-
nameTag, realmTypeMeta, scaleMeta, tagsMeta, parentMeta,
|
|
130
|
-
layoutMeta,
|
|
131
|
-
...(ratioMeta ? [ratioMeta] : []),
|
|
132
|
-
...(valignMeta ? [valignMeta] : []),
|
|
133
|
-
...(gapMeta ? [gapMeta] : []),
|
|
134
|
-
...(collapseMeta ? [collapseMeta] : []),
|
|
135
|
-
];
|
|
69
|
+
// Layout meta tags
|
|
70
|
+
const { metas: layoutMetas, children: layoutChildren } = buildLayoutMetas(attrs);
|
|
71
|
+
const { layout: layoutMeta, ratio: ratioMeta, valign: valignMeta, gap: gapMeta, collapse: collapseMeta } = layoutMetas;
|
|
72
|
+
// Extract scene image (shared helper)
|
|
73
|
+
const { sceneDiv, sceneImgTag, extraDescription } = extractScene(resolved.scene, config);
|
|
74
|
+
// Build content div with sections (shared helper)
|
|
75
|
+
const { mainContent, sections, hasSections } = buildStoryContent(extraDescription, resolved.description, sectionNodes, 'RealmSection', config);
|
|
76
|
+
// Build children array
|
|
77
|
+
// Scene before name so the image appears between header and title in stacked layout.
|
|
78
|
+
// In split layouts, CSS grid explicit placement controls the visual order.
|
|
79
|
+
const children = [];
|
|
136
80
|
if (sceneDiv)
|
|
137
81
|
children.push(sceneDiv.next());
|
|
82
|
+
children.push(nameTag, realmTypeMeta, scaleMeta, tagsMeta, parentMeta, ...layoutChildren);
|
|
138
83
|
children.push(mainContent.next());
|
|
139
84
|
// SEO schema
|
|
140
85
|
const schemaMap = {
|
package/dist/tags/realm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realm.js","sourceRoot":"","sources":["../../src/tags/realm.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"realm.js","sourceRoot":"","sources":["../../src/tags/realm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@refrakt-md/storytelling",
|
|
3
3
|
"description": "Storytelling runes for refrakt.md — characters, realms, factions, plots, and more",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.9.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"build": "tsc"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@refrakt-md/types": "0.
|
|
25
|
-
"@refrakt-md/transform": "0.
|
|
26
|
-
"@refrakt-md/runes": "0.
|
|
24
|
+
"@refrakt-md/types": "0.9.0",
|
|
25
|
+
"@refrakt-md/transform": "0.9.0",
|
|
26
|
+
"@refrakt-md/runes": "0.9.0",
|
|
27
27
|
"@markdoc/markdoc": "0.4.0",
|
|
28
28
|
"reflect-metadata": "^0.2.0"
|
|
29
29
|
}
|