@refrakt-md/storytelling 0.7.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 (73) hide show
  1. package/dist/config.d.ts +3 -0
  2. package/dist/config.d.ts.map +1 -0
  3. package/dist/config.js +118 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/index.d.ts +4 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +159 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/schema/bond.d.ts +23 -0
  10. package/dist/schema/bond.d.ts.map +1 -0
  11. package/dist/schema/bond.js +10 -0
  12. package/dist/schema/bond.js.map +1 -0
  13. package/dist/schema/character.d.ts +27 -0
  14. package/dist/schema/character.d.ts.map +1 -0
  15. package/dist/schema/character.js +11 -0
  16. package/dist/schema/character.js.map +1 -0
  17. package/dist/schema/faction.d.ts +26 -0
  18. package/dist/schema/faction.d.ts.map +1 -0
  19. package/dist/schema/faction.js +11 -0
  20. package/dist/schema/faction.js.map +1 -0
  21. package/dist/schema/lore.d.ts +20 -0
  22. package/dist/schema/lore.d.ts.map +1 -0
  23. package/dist/schema/lore.js +9 -0
  24. package/dist/schema/lore.js.map +1 -0
  25. package/dist/schema/plot.d.ts +42 -0
  26. package/dist/schema/plot.d.ts.map +1 -0
  27. package/dist/schema/plot.js +19 -0
  28. package/dist/schema/plot.js.map +1 -0
  29. package/dist/schema/realm.d.ts +27 -0
  30. package/dist/schema/realm.d.ts.map +1 -0
  31. package/dist/schema/realm.js +11 -0
  32. package/dist/schema/realm.js.map +1 -0
  33. package/dist/schema/story-section.d.ts +14 -0
  34. package/dist/schema/story-section.d.ts.map +1 -0
  35. package/dist/schema/story-section.js +6 -0
  36. package/dist/schema/story-section.js.map +1 -0
  37. package/dist/schema/storyboard.d.ts +30 -0
  38. package/dist/schema/storyboard.d.ts.map +1 -0
  39. package/dist/schema/storyboard.js +10 -0
  40. package/dist/schema/storyboard.js.map +1 -0
  41. package/dist/tags/bond.d.ts +3 -0
  42. package/dist/tags/bond.d.ts.map +1 -0
  43. package/dist/tags/bond.js +71 -0
  44. package/dist/tags/bond.js.map +1 -0
  45. package/dist/tags/character.d.ts +4 -0
  46. package/dist/tags/character.d.ts.map +1 -0
  47. package/dist/tags/character.js +162 -0
  48. package/dist/tags/character.js.map +1 -0
  49. package/dist/tags/faction.d.ts +4 -0
  50. package/dist/tags/faction.d.ts.map +1 -0
  51. package/dist/tags/faction.js +148 -0
  52. package/dist/tags/faction.js.map +1 -0
  53. package/dist/tags/lore.d.ts +3 -0
  54. package/dist/tags/lore.d.ts.map +1 -0
  55. package/dist/tags/lore.js +61 -0
  56. package/dist/tags/lore.js.map +1 -0
  57. package/dist/tags/plot.d.ts +4 -0
  58. package/dist/tags/plot.d.ts.map +1 -0
  59. package/dist/tags/plot.js +189 -0
  60. package/dist/tags/plot.js.map +1 -0
  61. package/dist/tags/realm.d.ts +4 -0
  62. package/dist/tags/realm.d.ts.map +1 -0
  63. package/dist/tags/realm.js +160 -0
  64. package/dist/tags/realm.js.map +1 -0
  65. package/dist/tags/storyboard.d.ts +4 -0
  66. package/dist/tags/storyboard.d.ts.map +1 -0
  67. package/dist/tags/storyboard.js +100 -0
  68. package/dist/tags/storyboard.js.map +1 -0
  69. package/dist/types.d.ts +23 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +24 -0
  72. package/dist/types.js.map +1 -0
  73. package/package.json +30 -0
@@ -0,0 +1,189 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import Markdoc from '@markdoc/markdoc';
11
+ const { Ast, Tag } = Markdoc;
12
+ import { NodeStream, attribute, group, Model, createComponentRenderable, createSchema } from '@refrakt-md/runes';
13
+ import { schema } from '../types.js';
14
+ // Parse status marker from list item text: [x]=complete, [>]=active, [ ]=planned, [-]=abandoned
15
+ const MARKER_PATTERN = /^\[(x|>|\s|-)\]\s*/;
16
+ class BeatModel extends Model {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.label = '';
20
+ this.status = 'planned';
21
+ this.id = '';
22
+ this.track = '';
23
+ this.follows = '';
24
+ }
25
+ transform() {
26
+ const labelTag = new Tag('span', {}, [this.label]);
27
+ const statusMeta = new Tag('meta', { content: this.status });
28
+ const idMeta = new Tag('meta', { content: this.id });
29
+ const trackMeta = new Tag('meta', { content: this.track });
30
+ const followsMeta = new Tag('meta', { content: this.follows });
31
+ const body = this.transformChildren().wrap('div');
32
+ return createComponentRenderable(schema.Beat, {
33
+ tag: 'li',
34
+ properties: {
35
+ label: labelTag,
36
+ status: statusMeta,
37
+ id: idMeta,
38
+ track: trackMeta,
39
+ follows: followsMeta,
40
+ },
41
+ refs: { body: body.tag('div') },
42
+ children: [labelTag, statusMeta, idMeta, trackMeta, followsMeta, body.next()],
43
+ });
44
+ }
45
+ }
46
+ __decorate([
47
+ attribute({ type: String, required: true }),
48
+ __metadata("design:type", String)
49
+ ], BeatModel.prototype, "label", void 0);
50
+ __decorate([
51
+ attribute({ type: String, required: false }),
52
+ __metadata("design:type", String)
53
+ ], BeatModel.prototype, "status", void 0);
54
+ __decorate([
55
+ attribute({ type: String, required: false }),
56
+ __metadata("design:type", String)
57
+ ], BeatModel.prototype, "id", void 0);
58
+ __decorate([
59
+ attribute({ type: String, required: false }),
60
+ __metadata("design:type", String)
61
+ ], BeatModel.prototype, "track", void 0);
62
+ __decorate([
63
+ attribute({ type: String, required: false }),
64
+ __metadata("design:type", String)
65
+ ], BeatModel.prototype, "follows", void 0);
66
+ const plotType = ['arc', 'quest', 'subplot', 'campaign', 'episode', 'act', 'chapter'];
67
+ const structureType = ['linear', 'parallel', 'branching', 'web'];
68
+ class PlotModel extends Model {
69
+ constructor() {
70
+ super(...arguments);
71
+ this.title = '';
72
+ this.type = 'arc';
73
+ this.structure = 'linear';
74
+ this.tags = '';
75
+ }
76
+ processChildren(nodes) {
77
+ const converted = [];
78
+ for (const node of nodes) {
79
+ if (node.type === 'list') {
80
+ for (const item of node.children) {
81
+ // Extract text content to find marker and label
82
+ const firstParagraph = item.children[0];
83
+ if (!firstParagraph)
84
+ continue;
85
+ const textParts = [];
86
+ for (const child of firstParagraph.walk()) {
87
+ if (child.type === 'text' && child.attributes.content) {
88
+ textParts.push(child.attributes.content);
89
+ }
90
+ }
91
+ const text = textParts.join('').trim();
92
+ // Parse status marker
93
+ let status = 'planned';
94
+ const markerMatch = text.match(MARKER_PATTERN);
95
+ if (markerMatch) {
96
+ const marker = markerMatch[1];
97
+ status = marker === 'x' ? 'complete'
98
+ : marker === '>' ? 'active'
99
+ : marker === '-' ? 'abandoned'
100
+ : 'planned';
101
+ }
102
+ // Extract label from first strong node, or fall back to text
103
+ let label = '';
104
+ for (const child of firstParagraph.walk()) {
105
+ if (child.type === 'strong') {
106
+ const strongParts = [];
107
+ for (const sc of child.walk()) {
108
+ if (sc.type === 'text' && sc.attributes.content) {
109
+ strongParts.push(sc.attributes.content);
110
+ }
111
+ }
112
+ label = strongParts.join('').trim();
113
+ break;
114
+ }
115
+ }
116
+ if (!label) {
117
+ // No bold label — use full text minus marker
118
+ label = markerMatch ? text.slice(markerMatch[0].length).trim() : text;
119
+ // Strip leading dash separator if present
120
+ label = label.replace(/^[-–—]\s*/, '');
121
+ }
122
+ converted.push(new Ast.Node('tag', {
123
+ label,
124
+ status,
125
+ }, item.children.slice(1), 'beat'));
126
+ }
127
+ }
128
+ else {
129
+ converted.push(node);
130
+ }
131
+ }
132
+ return super.processChildren(converted);
133
+ }
134
+ transform() {
135
+ const header = this.header.transform();
136
+ const itemStream = this.itemgroup.transform();
137
+ const titleTag = new Tag('span', {}, [this.title]);
138
+ const plotTypeMeta = new Tag('meta', { content: this.type });
139
+ const structureMeta = new Tag('meta', { content: this.structure });
140
+ const tagsMeta = new Tag('meta', { content: this.tags });
141
+ const beats = itemStream.tag('li').typeof('Beat');
142
+ const beatsList = new Tag('ol', {}, beats.toArray());
143
+ const children = [titleTag, plotTypeMeta, structureMeta, tagsMeta];
144
+ if (header.count() > 0) {
145
+ children.push(header.wrap('header').next());
146
+ }
147
+ children.push(beatsList);
148
+ return createComponentRenderable(schema.Plot, {
149
+ tag: 'section',
150
+ property: 'contentSection',
151
+ properties: {
152
+ title: titleTag,
153
+ plotType: plotTypeMeta,
154
+ structure: structureMeta,
155
+ tags: tagsMeta,
156
+ beat: beats,
157
+ },
158
+ refs: { beats: beatsList },
159
+ children,
160
+ });
161
+ }
162
+ }
163
+ __decorate([
164
+ attribute({ type: String, required: true }),
165
+ __metadata("design:type", String)
166
+ ], PlotModel.prototype, "title", void 0);
167
+ __decorate([
168
+ attribute({ type: String, required: false, matches: plotType.slice() }),
169
+ __metadata("design:type", Object)
170
+ ], PlotModel.prototype, "type", void 0);
171
+ __decorate([
172
+ attribute({ type: String, required: false, matches: structureType.slice() }),
173
+ __metadata("design:type", Object)
174
+ ], PlotModel.prototype, "structure", void 0);
175
+ __decorate([
176
+ attribute({ type: String, required: false }),
177
+ __metadata("design:type", String)
178
+ ], PlotModel.prototype, "tags", void 0);
179
+ __decorate([
180
+ group({ include: ['heading', 'paragraph'] }),
181
+ __metadata("design:type", NodeStream)
182
+ ], PlotModel.prototype, "header", void 0);
183
+ __decorate([
184
+ group({ include: ['tag'] }),
185
+ __metadata("design:type", NodeStream)
186
+ ], PlotModel.prototype, "itemgroup", void 0);
187
+ export const beat = createSchema(BeatModel);
188
+ export const plot = createSchema(PlotModel);
189
+ //# sourceMappingURL=plot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plot.js","sourceRoot":"","sources":["../../src/tags/plot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import Markdoc from '@markdoc/markdoc';
2
+ export declare const realmSection: Markdoc.Schema;
3
+ export declare const realm: Markdoc.Schema;
4
+ //# sourceMappingURL=realm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realm.d.ts","sourceRoot":"","sources":["../../src/tags/realm.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AA4IvC,eAAO,MAAM,YAAY,gBAAkC,CAAC;AAC5D,eAAO,MAAM,KAAK,gBAA2B,CAAC"}
@@ -0,0 +1,160 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import Markdoc from '@markdoc/markdoc';
11
+ const { Ast, Tag } = Markdoc;
12
+ import { NodeStream, attribute, group, Model, createComponentRenderable, createSchema, headingsToList } from '@refrakt-md/runes';
13
+ import { schema } from '../types.js';
14
+ class RealmSectionModel extends Model {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.name = '';
18
+ }
19
+ transform() {
20
+ const nameTag = new Tag('span', {}, [this.name]);
21
+ const body = this.transformChildren().wrap('div');
22
+ return createComponentRenderable(schema.RealmSection, {
23
+ tag: 'div',
24
+ properties: { name: nameTag },
25
+ refs: { body: body.tag('div') },
26
+ children: [nameTag, body.next()],
27
+ });
28
+ }
29
+ }
30
+ __decorate([
31
+ attribute({ type: String, required: true }),
32
+ __metadata("design:type", String)
33
+ ], RealmSectionModel.prototype, "name", void 0);
34
+ class RealmModel extends Model {
35
+ constructor() {
36
+ super(...arguments);
37
+ this.headingLevel = undefined;
38
+ this.name = '';
39
+ this.type = 'place';
40
+ this.scale = '';
41
+ this.tags = '';
42
+ this.parent = '';
43
+ }
44
+ convertHeadings(nodes) {
45
+ const level = this.headingLevel ?? nodes.find(n => n.type === 'heading')?.attributes.level;
46
+ if (!level)
47
+ return nodes;
48
+ const converted = headingsToList({ level })(nodes);
49
+ const n = converted.length - 1;
50
+ if (!converted[n] || converted[n].type !== 'list')
51
+ return nodes;
52
+ const tags = converted[n].children.map(item => {
53
+ const heading = item.children[0];
54
+ const name = Array.from(heading.walk())
55
+ .filter(n => n.type === 'text')
56
+ .map(t => t.attributes.content)
57
+ .join(' ');
58
+ return new Ast.Node('tag', { name }, item.children.slice(1), 'realm-section');
59
+ });
60
+ converted.splice(n, 1, ...tags);
61
+ return converted;
62
+ }
63
+ processChildren(nodes) {
64
+ return super.processChildren(this.convertHeadings(nodes));
65
+ }
66
+ transform() {
67
+ const header = this.header.transform();
68
+ const itemStream = this.itemgroup.transform();
69
+ const nameTag = new Tag('span', {}, [this.name]);
70
+ const realmTypeMeta = new Tag('meta', { content: this.type });
71
+ const scaleMeta = new Tag('meta', { content: this.scale });
72
+ const tagsMeta = new Tag('meta', { content: this.tags });
73
+ const parentMeta = new Tag('meta', { content: this.parent });
74
+ // Extract scene image from header
75
+ const scene = header.tag('img').limit(1);
76
+ const hasScene = scene.count() > 0;
77
+ const sceneDiv = hasScene ? scene.wrap('div') : undefined;
78
+ const sections = itemStream.tag('div').typeof('RealmSection');
79
+ const hasSections = sections.count() > 0;
80
+ const children = [nameTag, realmTypeMeta, scaleMeta, tagsMeta, parentMeta];
81
+ if (sceneDiv)
82
+ children.push(sceneDiv.next());
83
+ if (hasSections) {
84
+ const sectionsContainer = sections.wrap('div');
85
+ children.push(sectionsContainer.next());
86
+ return createComponentRenderable(schema.Realm, {
87
+ tag: 'article',
88
+ property: 'contentSection',
89
+ properties: {
90
+ name: nameTag,
91
+ realmType: realmTypeMeta,
92
+ scale: scaleMeta,
93
+ tags: tagsMeta,
94
+ parent: parentMeta,
95
+ section: sections,
96
+ },
97
+ refs: {
98
+ ...(sceneDiv ? { scene: sceneDiv } : {}),
99
+ sections: sectionsContainer,
100
+ },
101
+ children,
102
+ });
103
+ }
104
+ else {
105
+ const body = itemStream.wrap('div');
106
+ children.push(body.next());
107
+ return createComponentRenderable(schema.Realm, {
108
+ tag: 'article',
109
+ property: 'contentSection',
110
+ properties: {
111
+ name: nameTag,
112
+ realmType: realmTypeMeta,
113
+ scale: scaleMeta,
114
+ tags: tagsMeta,
115
+ parent: parentMeta,
116
+ },
117
+ refs: {
118
+ ...(sceneDiv ? { scene: sceneDiv } : {}),
119
+ body,
120
+ },
121
+ children,
122
+ });
123
+ }
124
+ }
125
+ }
126
+ __decorate([
127
+ attribute({ type: Number, required: false }),
128
+ __metadata("design:type", Object)
129
+ ], RealmModel.prototype, "headingLevel", void 0);
130
+ __decorate([
131
+ attribute({ type: String, required: true }),
132
+ __metadata("design:type", String)
133
+ ], RealmModel.prototype, "name", void 0);
134
+ __decorate([
135
+ attribute({ type: String, required: false }),
136
+ __metadata("design:type", String)
137
+ ], RealmModel.prototype, "type", void 0);
138
+ __decorate([
139
+ attribute({ type: String, required: false }),
140
+ __metadata("design:type", String)
141
+ ], RealmModel.prototype, "scale", void 0);
142
+ __decorate([
143
+ attribute({ type: String, required: false }),
144
+ __metadata("design:type", String)
145
+ ], RealmModel.prototype, "tags", void 0);
146
+ __decorate([
147
+ attribute({ type: String, required: false }),
148
+ __metadata("design:type", String)
149
+ ], RealmModel.prototype, "parent", void 0);
150
+ __decorate([
151
+ group({ include: ['heading', 'paragraph', 'image'] }),
152
+ __metadata("design:type", NodeStream)
153
+ ], RealmModel.prototype, "header", void 0);
154
+ __decorate([
155
+ group({ include: ['tag'] }),
156
+ __metadata("design:type", NodeStream)
157
+ ], RealmModel.prototype, "itemgroup", void 0);
158
+ export const realmSection = createSchema(RealmSectionModel);
159
+ export const realm = createSchema(RealmModel);
160
+ //# sourceMappingURL=realm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realm.js","sourceRoot":"","sources":["../../src/tags/realm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import Markdoc from '@markdoc/markdoc';
2
+ export declare const storyboardPanel: Markdoc.Schema;
3
+ export declare const storyboard: Markdoc.Schema;
4
+ //# sourceMappingURL=storyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storyboard.d.ts","sourceRoot":"","sources":["../../src/tags/storyboard.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AA2FvC,eAAO,MAAM,eAAe,gBAAqC,CAAC;AAClE,eAAO,MAAM,UAAU,gBAAgC,CAAC"}
@@ -0,0 +1,100 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import Markdoc from '@markdoc/markdoc';
11
+ const { Ast, Tag } = Markdoc;
12
+ import { NodeStream, attribute, group, Model, createComponentRenderable, createSchema } from '@refrakt-md/runes';
13
+ import { schema } from '../types.js';
14
+ const styleType = ['comic', 'clean', 'polaroid'];
15
+ class StoryboardPanelModel extends Model {
16
+ transform() {
17
+ const children = this.transformChildren();
18
+ const image = children.tag('img').limit(1);
19
+ const caption = children.tag('p').limit(1);
20
+ const body = children.wrap('div');
21
+ return createComponentRenderable(schema.StoryboardPanel, {
22
+ tag: 'div',
23
+ properties: {
24
+ image,
25
+ caption,
26
+ },
27
+ refs: {
28
+ body: body.tag('div'),
29
+ },
30
+ children: [body.next()],
31
+ });
32
+ }
33
+ }
34
+ class StoryboardModel extends Model {
35
+ constructor() {
36
+ super(...arguments);
37
+ this.columns = 3;
38
+ this.style = 'clean';
39
+ }
40
+ processChildren(nodes) {
41
+ // Group nodes into panels: each image starts a new panel
42
+ const converted = [];
43
+ let currentPanelChildren = [];
44
+ const flushPanel = () => {
45
+ if (currentPanelChildren.length > 0) {
46
+ converted.push(new Ast.Node('tag', {}, currentPanelChildren, 'storyboard-panel'));
47
+ currentPanelChildren = [];
48
+ }
49
+ };
50
+ for (const node of nodes) {
51
+ if (node.type === 'image' || (node.type === 'paragraph' && Array.from(node.walk()).some(n => n.type === 'image'))) {
52
+ // Image starts a new panel
53
+ flushPanel();
54
+ currentPanelChildren.push(node);
55
+ }
56
+ else if (currentPanelChildren.length > 0) {
57
+ // Non-image after an image: add to current panel as caption
58
+ currentPanelChildren.push(node);
59
+ }
60
+ else {
61
+ // Content before first image: start a panel anyway
62
+ currentPanelChildren.push(node);
63
+ }
64
+ }
65
+ flushPanel();
66
+ return super.processChildren(converted);
67
+ }
68
+ transform() {
69
+ const body = this.body.transform();
70
+ const styleMeta = new Tag('meta', { content: this.style });
71
+ const columnsMeta = new Tag('meta', { content: String(this.columns) });
72
+ const panels = body.tag('div').typeof('StoryboardPanel');
73
+ const panelsContainer = panels.wrap('div');
74
+ return createComponentRenderable(schema.Storyboard, {
75
+ tag: 'div',
76
+ properties: {
77
+ panel: panels,
78
+ style: styleMeta,
79
+ columns: columnsMeta,
80
+ },
81
+ refs: { panels: panelsContainer },
82
+ children: [styleMeta, columnsMeta, panelsContainer.next()],
83
+ });
84
+ }
85
+ }
86
+ __decorate([
87
+ attribute({ type: Number, required: false }),
88
+ __metadata("design:type", Number)
89
+ ], StoryboardModel.prototype, "columns", void 0);
90
+ __decorate([
91
+ attribute({ type: String, required: false, matches: styleType.slice() }),
92
+ __metadata("design:type", Object)
93
+ ], StoryboardModel.prototype, "style", void 0);
94
+ __decorate([
95
+ group({ include: ['tag'] }),
96
+ __metadata("design:type", NodeStream)
97
+ ], StoryboardModel.prototype, "body", void 0);
98
+ export const storyboardPanel = createSchema(StoryboardPanelModel);
99
+ export const storyboard = createSchema(StoryboardModel);
100
+ //# sourceMappingURL=storyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storyboard.js","sourceRoot":"","sources":["../../src/tags/storyboard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AAE1D,MAAM,oBAAqB,SAAQ,KAAK;IACvC,SAAS;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE1C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElC,OAAO,yBAAyB,CAAC,MAAM,CAAC,eAAe,EAAE;YACxD,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,KAAK;gBACL,OAAO;aACP;YACD,IAAI,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;aACrB;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACvB,CAAC,CAAC;IACJ,CAAC;CACD;AAED,MAAM,eAAgB,SAAQ,KAAK;IAAnC;;QAEC,YAAO,GAAW,CAAC,CAAC;QAGpB,UAAK,GAA6B,OAAO,CAAC;IAsD3C,CAAC;IAjDA,eAAe,CAAC,KAAa;QAC5B,yDAAyD;QACzD,MAAM,SAAS,GAAW,EAAE,CAAC;QAC7B,IAAI,oBAAoB,GAAW,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,GAAG,EAAE;YACvB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBAClF,oBAAoB,GAAG,EAAE,CAAC;YAC3B,CAAC;QACF,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC;gBACnH,2BAA2B;gBAC3B,UAAU,EAAE,CAAC;gBACb,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,4DAA4D;gBAC5D,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACP,mDAAmD;gBACnD,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;QACD,UAAU,EAAE,CAAC;QAEb,OAAO,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,SAAS;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEvE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACzD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,OAAO,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE;YACnD,GAAG,EAAE,KAAK;YACV,UAAU,EAAE;gBACX,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,WAAW;aACpB;YACD,IAAI,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE;YACjC,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC;SAC1D,CAAC,CAAC;IACJ,CAAC;CACD;AAzDA;IADC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;gDACzB;AAGpB;IADC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;;8CAC/B;AAG1C;IADC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;8BACtB,UAAU;6CAAC;AAqDlB,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { StorySectionComponent } from './schema/story-section.js';
2
+ import { CharacterComponent } from './schema/character.js';
3
+ import { RealmComponent } from './schema/realm.js';
4
+ import { FactionComponent } from './schema/faction.js';
5
+ import { LoreComponent } from './schema/lore.js';
6
+ import { PlotComponent, BeatComponent } from './schema/plot.js';
7
+ import { BondComponent } from './schema/bond.js';
8
+ import { StoryboardComponent, StoryboardPanelComponent } from './schema/storyboard.js';
9
+ export declare const schema: {
10
+ Character: import("@refrakt-md/types").Type<CharacterComponent>;
11
+ CharacterSection: import("@refrakt-md/types").Type<StorySectionComponent>;
12
+ Realm: import("@refrakt-md/types").Type<RealmComponent>;
13
+ RealmSection: import("@refrakt-md/types").Type<StorySectionComponent>;
14
+ Faction: import("@refrakt-md/types").Type<FactionComponent>;
15
+ FactionSection: import("@refrakt-md/types").Type<StorySectionComponent>;
16
+ Lore: import("@refrakt-md/types").Type<LoreComponent>;
17
+ Plot: import("@refrakt-md/types").Type<PlotComponent>;
18
+ Beat: import("@refrakt-md/types").Type<BeatComponent>;
19
+ Bond: import("@refrakt-md/types").Type<BondComponent>;
20
+ Storyboard: import("@refrakt-md/types").Type<StoryboardComponent>;
21
+ StoryboardPanel: import("@refrakt-md/types").Type<StoryboardPanelComponent>;
22
+ };
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAa,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAS,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAW,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAQ,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAQ,aAAa,EAAQ,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAQ,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAc,mBAAmB,EAAmB,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEpH,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAalB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,24 @@
1
+ import { useSchema } from '@refrakt-md/types';
2
+ import { StorySection } from './schema/story-section.js';
3
+ import { Character } from './schema/character.js';
4
+ import { Realm } from './schema/realm.js';
5
+ import { Faction } from './schema/faction.js';
6
+ import { Lore } from './schema/lore.js';
7
+ import { Plot, Beat } from './schema/plot.js';
8
+ import { Bond } from './schema/bond.js';
9
+ import { Storyboard, StoryboardPanel } from './schema/storyboard.js';
10
+ export const schema = {
11
+ Character: useSchema(Character).defineType('Character'),
12
+ CharacterSection: useSchema(StorySection).defineType('CharacterSection'),
13
+ Realm: useSchema(Realm).defineType('Realm'),
14
+ RealmSection: useSchema(StorySection).defineType('RealmSection'),
15
+ Faction: useSchema(Faction).defineType('Faction'),
16
+ FactionSection: useSchema(StorySection).defineType('FactionSection'),
17
+ Lore: useSchema(Lore).defineType('Lore'),
18
+ Plot: useSchema(Plot).defineType('Plot'),
19
+ Beat: useSchema(Beat).defineType('Beat'),
20
+ Bond: useSchema(Bond).defineType('Bond'),
21
+ Storyboard: useSchema(Storyboard).defineType('Storyboard'),
22
+ StoryboardPanel: useSchema(StoryboardPanel).defineType('StoryboardPanel'),
23
+ };
24
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAyB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,SAAS,EAAsB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAkB,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAoB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAiB,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAiB,IAAI,EAAiB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAiB,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAuB,eAAe,EAA4B,MAAM,wBAAwB,CAAC;AAEpH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,UAAU,CAAqB,WAAW,CAAC;IAC3E,gBAAgB,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,UAAU,CAAwB,kBAAkB,CAAC;IAC/F,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAiB,OAAO,CAAC;IAC3D,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,UAAU,CAAwB,cAAc,CAAC;IACvF,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,UAAU,CAAmB,SAAS,CAAC;IACnE,cAAc,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,UAAU,CAAwB,gBAAgB,CAAC;IAC3F,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAgB,MAAM,CAAC;IACvD,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAgB,MAAM,CAAC;IACvD,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAgB,MAAM,CAAC;IACvD,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAgB,MAAM,CAAC;IACvD,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,UAAU,CAAsB,YAAY,CAAC;IAC/E,eAAe,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC,UAAU,CAA2B,iBAAiB,CAAC;CACpG,CAAC"}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@refrakt-md/storytelling",
3
+ "description": "Storytelling runes for refrakt.md — characters, realms, factions, plots, and more",
4
+ "version": "0.7.0",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/refrakt-md/refrakt.git",
10
+ "directory": "runes/storytelling"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "main": "dist/index.js",
16
+ "types": "dist/index.d.ts",
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc"
22
+ },
23
+ "dependencies": {
24
+ "@refrakt-md/types": "0.7.0",
25
+ "@refrakt-md/transform": "0.7.0",
26
+ "@refrakt-md/runes": "0.7.0",
27
+ "@markdoc/markdoc": "0.4.0",
28
+ "reflect-metadata": "^0.2.0"
29
+ }
30
+ }