@blockslides/ai-context 0.1.3 → 0.1.5
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/index.cjs +132 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +103 -10
- package/dist/index.d.ts +103 -10
- package/dist/index.js +132 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/contexts/v1/column.ts +5 -0
- package/src/contexts/v1/editingRules.ts +11 -0
- package/src/contexts/v1/row.ts +6 -0
- package/src/contexts/v1/slide.ts +6 -0
- package/src/schemas/v1/column.schema.json +8 -1
- package/src/schemas/v1/row.schema.json +8 -1
- package/src/schemas/v1/slide.schema.json +8 -1
package/dist/index.cjs
CHANGED
|
@@ -53,6 +53,7 @@ __export(v1_exports, {
|
|
|
53
53
|
|
|
54
54
|
// src/contexts/v1/core.ts
|
|
55
55
|
var core = `
|
|
56
|
+
<core>
|
|
56
57
|
You are given a BlockSlides document to CREATE or EDIT.
|
|
57
58
|
|
|
58
59
|
Document shape:
|
|
@@ -66,6 +67,7 @@ Rules:
|
|
|
66
67
|
- Use only known node types and valid attrs. Do not invent attributes.
|
|
67
68
|
- Prefer stable references: preserve slide.attrs.id if present.
|
|
68
69
|
- Slides and flyers share the same JSON; flyers are slides sized via attrs and theme.
|
|
70
|
+
</core>
|
|
69
71
|
`.trim();
|
|
70
72
|
|
|
71
73
|
// src/contexts/v1/output.fullDocument.ts
|
|
@@ -78,6 +80,7 @@ Output contract:
|
|
|
78
80
|
|
|
79
81
|
// src/contexts/v1/imageBlock.ts
|
|
80
82
|
var imageBlock = `
|
|
83
|
+
<imageBlock>
|
|
81
84
|
Node: imageBlock
|
|
82
85
|
Attrs:
|
|
83
86
|
- src (required): string (URL)
|
|
@@ -101,14 +104,21 @@ Behavior:
|
|
|
101
104
|
- focus: Cover + radial spotlight at focalX/focalY.
|
|
102
105
|
- pattern: Hide <img>; use tiled background (from src).
|
|
103
106
|
- Do not set unknown attributes. Preserve existing valid attrs.
|
|
107
|
+
</imageBlock>
|
|
104
108
|
`.trim();
|
|
105
109
|
|
|
106
110
|
// src/contexts/v1/row.ts
|
|
107
111
|
var row = `
|
|
112
|
+
<row>
|
|
108
113
|
Node: row
|
|
109
114
|
Attrs:
|
|
110
115
|
- layout (optional): "", "1", "1-1", "2-1", "1-2", "1-1-1", "2-1-1", "1-2-1", "1-1-2", "1-1-1-1"
|
|
111
116
|
- className (optional): string (CSS classes)
|
|
117
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
118
|
+
- backgroundColor (optional): string (CSS color for row background)
|
|
119
|
+
- backgroundImage (optional): string (URL for row-level background image)
|
|
120
|
+
- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)
|
|
121
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, overlay opacity)
|
|
112
122
|
|
|
113
123
|
Semantics:
|
|
114
124
|
- Fractions determine relative column flex:
|
|
@@ -118,10 +128,13 @@ Semantics:
|
|
|
118
128
|
- 1-1-1: three equal columns
|
|
119
129
|
- 1-1-1-1: four equal columns
|
|
120
130
|
- Empty layout ("", "1") acts as a single full-width column.
|
|
131
|
+
- Use row backgrounds for horizontal bands (e.g., header strip) instead of attaching everything to the slide.
|
|
132
|
+
</row>
|
|
121
133
|
`.trim();
|
|
122
134
|
|
|
123
135
|
// src/contexts/v1/column.ts
|
|
124
136
|
var column = `
|
|
137
|
+
<column>
|
|
125
138
|
Node: column
|
|
126
139
|
Attrs:
|
|
127
140
|
- className (optional): string
|
|
@@ -129,19 +142,31 @@ Attrs:
|
|
|
129
142
|
- verticalAlign (optional): "top" | "center" | "bottom" (default "top")
|
|
130
143
|
- horizontalAlign (optional): "left" | "center" | "right" | "stretch" (default "left")
|
|
131
144
|
- padding (optional): "none" (future-friendly)
|
|
145
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
146
|
+
- backgroundColor (optional): string (CSS color for the column background)
|
|
147
|
+
- backgroundImage (optional): string (URL for column-level background image)
|
|
148
|
+
- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)
|
|
149
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, overlay opacity)
|
|
132
150
|
|
|
133
151
|
Notes:
|
|
134
152
|
- Use className for spacing, colors, typography (e.g., Tailwind).
|
|
135
153
|
- Keep nesting shallow; columns can contain rows or blocks as needed.
|
|
154
|
+
</column>
|
|
136
155
|
`.trim();
|
|
137
156
|
|
|
138
157
|
// src/contexts/v1/slide.ts
|
|
139
158
|
var slide = `
|
|
159
|
+
<slide>
|
|
140
160
|
Node: slide
|
|
141
161
|
Attrs:
|
|
142
162
|
- id (optional): string (stable identifier; preserve if present)
|
|
143
163
|
- className (optional): string (styling)
|
|
144
164
|
- size (optional): "16x9" | "4x3" | "a4-portrait" | "a4-landscape" | "letter-portrait" | "letter-landscape" | "linkedin-banner"
|
|
165
|
+
- backgroundMode (optional): "none" | "color" | "image" | "imageOverlay"
|
|
166
|
+
- backgroundColor (optional): string (CSS color for solid backgrounds)
|
|
167
|
+
- backgroundImage (optional): string (URL for slide-level background image)
|
|
168
|
+
- backgroundOverlayColor (optional): string (color for the overlay when using imageOverlay)
|
|
169
|
+
- backgroundOverlayOpacity (optional): number (0\u20131, opacity for the overlay)
|
|
145
170
|
|
|
146
171
|
Content:
|
|
147
172
|
- slide contains one or more rows.
|
|
@@ -149,35 +174,84 @@ Content:
|
|
|
149
174
|
Notes:
|
|
150
175
|
- Flyers are slides sized for paper (e.g., size: "a4-portrait").
|
|
151
176
|
- Set size to control canvas dimensions; theme applies the exact width/height.
|
|
177
|
+
- For background images, prefer backgroundMode/backgroundImage over Tailwind bg-[url(...)]; the extension will inject the correct CSS.
|
|
178
|
+
</slide>
|
|
152
179
|
`.trim();
|
|
153
180
|
|
|
154
181
|
// src/contexts/v1/style.ts
|
|
155
182
|
var style = `
|
|
183
|
+
<style>
|
|
156
184
|
Styling
|
|
157
185
|
- Prefer using attrs.className for styling (e.g., Tailwind classes).
|
|
158
186
|
- Use enums for canonical behaviors (e.g., imageBlock.layout).
|
|
159
187
|
- When enums are insufficient (spacing, backgrounds), use className.
|
|
188
|
+
</style>
|
|
160
189
|
`.trim();
|
|
161
190
|
|
|
162
191
|
// src/contexts/v1/editingRules.ts
|
|
163
192
|
var editingRules = `
|
|
164
|
-
|
|
193
|
+
<General editing rules>
|
|
165
194
|
- Preserve existing ids and valid attributes. Do not remove or rename known attrs.
|
|
166
195
|
- Use only allowed enum values. Do not invent new enum values.
|
|
167
|
-
- Avoid introducing new
|
|
196
|
+
- Avoid introducing new attributes that are not documented. If styling is needed, prefer className.
|
|
168
197
|
- Keep the document valid: slide > row > column > blocks.
|
|
198
|
+
</General editing rules>
|
|
199
|
+
|
|
200
|
+
<Centering content in a column>
|
|
201
|
+
- Columns are flex containers. Use their alignment attrs instead of per-block hacks.
|
|
202
|
+
- To center all content vertically and horizontally inside a column:
|
|
203
|
+
- Set column.attrs.verticalAlign = "center".
|
|
204
|
+
- Set column.attrs.horizontalAlign = "center".
|
|
205
|
+
- This will apply to headings, paragraphs, imageBlocks, and other blocks inside that column.
|
|
206
|
+
- Example:
|
|
207
|
+
- Before: column.attrs = { verticalAlign: "top", horizontalAlign: "left", padding: "none" }
|
|
208
|
+
- After: column.attrs = { verticalAlign: "center", horizontalAlign: "center", padding: "none" }
|
|
209
|
+
</Centering content in a column>
|
|
210
|
+
|
|
211
|
+
<Backgrounds (slides, rows, columns)>
|
|
212
|
+
- Prefer structured background attrs over raw Tailwind bg-[url(...)] when setting background images.
|
|
213
|
+
- For slide-level backgrounds (hero/flyer):
|
|
214
|
+
- Use slide.attrs.backgroundMode = "color" | "image" | "imageOverlay".
|
|
215
|
+
- For images, set slide.attrs.backgroundImage to the image URL.
|
|
216
|
+
- For overlays, set slide.attrs.backgroundOverlayColor (e.g., "rgba(0,0,0,0.8)") and slide.attrs.backgroundOverlayOpacity (0\u20131).
|
|
217
|
+
- For horizontal bands, use row-level backgrounds (row.attrs.background*).
|
|
218
|
+
- For panel-style sections, use column-level backgrounds (column.attrs.background*).
|
|
219
|
+
- Do not mix multiple background images on the same node; prefer one backgroundMode per slide/row/column and layer additional visuals as imageBlock nodes.
|
|
220
|
+
</Backgrounds (slides, rows, columns)>
|
|
221
|
+
|
|
222
|
+
<Text editing (headings and paragraphs)>
|
|
223
|
+
- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.
|
|
224
|
+
- To change heading level, update heading.attrs.level (1\u20136) without changing its id.
|
|
225
|
+
- To change the text, edit the text nodes inside content, keeping marks and structure when possible.
|
|
226
|
+
- For alignment of text itself, prefer using the textAlign extension (textAlign: "left" | "center" | "right" | "justify") if configured.
|
|
227
|
+
- Do not introduce inline HTML; represent formatting via marks (bold, italic, underline, etc.).
|
|
228
|
+
</Text editing (headings and paragraphs)>
|
|
229
|
+
|
|
230
|
+
<Image blocks>
|
|
231
|
+
- Use imageBlock for rich images; preserve src, assetId, and metadata unless the user explicitly asks to change them.
|
|
232
|
+
- To change the alignment of an imageBlock within its column, set imageBlock.attrs.align to "left", "center", "right", or "stretch".
|
|
233
|
+
- To change how the image is fit, adjust imageBlock.attrs.layout (for example: "cover", "contain", "fill", "focus", or a configured layout key).
|
|
234
|
+
- When centering both text and image in a column, combine:
|
|
235
|
+
- column verticalAlign/horizontalAlign for layout, and
|
|
236
|
+
- imageBlock align for how the image itself sits in the column.
|
|
237
|
+
- Do not invent new layout or align values that are not documented in the schema.
|
|
238
|
+
</Image blocks>
|
|
239
|
+
|
|
169
240
|
`.trim();
|
|
170
241
|
|
|
171
242
|
// src/contexts/v1/sizing.ts
|
|
172
243
|
var sizing = `
|
|
244
|
+
<sizing>
|
|
173
245
|
Sizing
|
|
174
246
|
- Slides and flyers share the same JSON. Flyers are slides sized via slide.attrs.size and theme rules.
|
|
175
247
|
- Allowed sizes: "16x9" | "4x3" | "a4-portrait" | "a4-landscape" | "letter-portrait" | "letter-landscape" | "linkedin-banner".
|
|
176
248
|
- Editors may render with fixed canvases or dynamic mode. The default is fixed; dynamic stretches to container with preserved aspect.
|
|
249
|
+
</sizing>
|
|
177
250
|
`.trim();
|
|
178
251
|
|
|
179
252
|
// src/contexts/v1/blockquote.ts
|
|
180
253
|
var blockquote = `
|
|
254
|
+
<blockquote>
|
|
181
255
|
Node: blockquote
|
|
182
256
|
Attrs:
|
|
183
257
|
- HTML-only; no required JSON attrs beyond optional styling such as className.
|
|
@@ -188,10 +262,12 @@ Content:
|
|
|
188
262
|
Semantics:
|
|
189
263
|
- Use for quoted text or callouts inside a column or row.
|
|
190
264
|
- Styling should be applied via className on the surrounding column/slide, not by inventing new attrs here.
|
|
265
|
+
</blockquote>
|
|
191
266
|
`.trim();
|
|
192
267
|
|
|
193
268
|
// src/contexts/v1/bulletList.ts
|
|
194
269
|
var bulletList = `
|
|
270
|
+
<bulletList>
|
|
195
271
|
Node: bulletList
|
|
196
272
|
Attrs:
|
|
197
273
|
- HTML-only; no required JSON attrs beyond optional styling such as className.
|
|
@@ -203,10 +279,12 @@ Semantics:
|
|
|
203
279
|
- Represents an unordered list rendered as <ul>.
|
|
204
280
|
- Use when you need bullet points inside a column or blockquote.
|
|
205
281
|
- Do not use bulletList as a top-level child of doc; it belongs inside a column/row structure.
|
|
282
|
+
</bulletList>
|
|
206
283
|
`.trim();
|
|
207
284
|
|
|
208
285
|
// src/contexts/v1/codeBlock.ts
|
|
209
286
|
var codeBlock = `
|
|
287
|
+
<codeBlock>
|
|
210
288
|
Node: codeBlock
|
|
211
289
|
Attrs:
|
|
212
290
|
- language (optional): string | null (e.g., "js", "ts", "python").
|
|
@@ -218,10 +296,12 @@ Semantics:
|
|
|
218
296
|
- Renders as <pre><code>\u2026</code></pre>.
|
|
219
297
|
- language controls a CSS class (e.g., "language-js") for syntax highlighting.
|
|
220
298
|
- Use when the user explicitly wants a fenced code block, not inline code in a paragraph.
|
|
299
|
+
</codeBlock>
|
|
221
300
|
`.trim();
|
|
222
301
|
|
|
223
302
|
// src/contexts/v1/hardBreak.ts
|
|
224
303
|
var hardBreak = `
|
|
304
|
+
<hardBreak>
|
|
225
305
|
Node: hardBreak
|
|
226
306
|
Attrs:
|
|
227
307
|
- None (HTML-only); behaves like a manual line break.
|
|
@@ -232,10 +312,12 @@ Content:
|
|
|
232
312
|
Semantics:
|
|
233
313
|
- Renders as <br> and as a newline in plain text exports.
|
|
234
314
|
- Use when the user requests a line break without starting a new paragraph.
|
|
315
|
+
</hardBreak>
|
|
235
316
|
`.trim();
|
|
236
317
|
|
|
237
318
|
// src/contexts/v1/horizontalRule.ts
|
|
238
319
|
var horizontalRule = `
|
|
320
|
+
<horizontalRule>
|
|
239
321
|
Node: horizontalRule
|
|
240
322
|
Attrs:
|
|
241
323
|
- HTML-only; no JSON attrs beyond optional styling via surrounding layout.
|
|
@@ -246,10 +328,12 @@ Content:
|
|
|
246
328
|
Semantics:
|
|
247
329
|
- Renders as <hr>.
|
|
248
330
|
- Use to visually separate sections within a slide (for example, between rows of text).
|
|
331
|
+
</horizontalRule>
|
|
249
332
|
`.trim();
|
|
250
333
|
|
|
251
334
|
// src/contexts/v1/image.ts
|
|
252
335
|
var image = `
|
|
336
|
+
<image>
|
|
253
337
|
Node: image
|
|
254
338
|
Attrs:
|
|
255
339
|
- src (required): string (URL to the image).
|
|
@@ -263,10 +347,12 @@ Content:
|
|
|
263
347
|
Semantics:
|
|
264
348
|
- Renders as a simple <img>, unlike imageBlock which adds rich framing/caption UI.
|
|
265
349
|
- Prefer imageBlock for designed layouts; use image for simple inline images in paragraphs.
|
|
350
|
+
</image>
|
|
266
351
|
`.trim();
|
|
267
352
|
|
|
268
353
|
// src/contexts/v1/heading.ts
|
|
269
354
|
var heading = `
|
|
355
|
+
<heading>
|
|
270
356
|
Node: heading
|
|
271
357
|
Attrs:
|
|
272
358
|
- level (required): 1 | 2 | 3 | 4 | 5 | 6.
|
|
@@ -278,10 +364,12 @@ Semantics:
|
|
|
278
364
|
- Renders as <h1>\u2026<h6> depending on level.
|
|
279
365
|
- Use level 1\u20132 for main slide titles, 3\u20134 for section headings, 5\u20136 for subtle labels.
|
|
280
366
|
- Do not invent other attrs; typography/styling should come from className on columns/slides.
|
|
367
|
+
</heading>
|
|
281
368
|
`.trim();
|
|
282
369
|
|
|
283
370
|
// src/contexts/v1/paragraph.ts
|
|
284
371
|
var paragraph = `
|
|
372
|
+
<paragraph>
|
|
285
373
|
Node: paragraph
|
|
286
374
|
Attrs:
|
|
287
375
|
- HTML-only; no structured JSON attrs beyond optional styling such as className.
|
|
@@ -292,10 +380,12 @@ Content:
|
|
|
292
380
|
Semantics:
|
|
293
381
|
- Default text block inside columns and rows.
|
|
294
382
|
- Multiple paragraphs can be stacked within the same column to create vertical rhythm.
|
|
383
|
+
</paragraph>
|
|
295
384
|
`.trim();
|
|
296
385
|
|
|
297
386
|
// src/contexts/v1/youtube.ts
|
|
298
387
|
var youtube = `
|
|
388
|
+
<youtube>
|
|
299
389
|
Node: youtube
|
|
300
390
|
Attrs:
|
|
301
391
|
- src (required): string (public YouTube URL).
|
|
@@ -310,6 +400,7 @@ Semantics:
|
|
|
310
400
|
- Renders as an embedded YouTube iframe wrapped in a container <div>.
|
|
311
401
|
- Use for video embeds inside a column or row; keep other text in separate paragraphs/columns.
|
|
312
402
|
- Do not embed raw <iframe> HTML directly; always use the youtube node with attrs.
|
|
403
|
+
</youtube>
|
|
313
404
|
`.trim();
|
|
314
405
|
|
|
315
406
|
// src/examples/v1/index.ts
|
|
@@ -480,7 +571,14 @@ var row_schema_default = {
|
|
|
480
571
|
layout: {
|
|
481
572
|
enum: ["", "1", "1-1", "2-1", "1-2", "1-1-1", "2-1-1", "1-2-1", "1-1-2", "1-1-1-1", null]
|
|
482
573
|
},
|
|
483
|
-
className: { type: ["string", "null"] }
|
|
574
|
+
className: { type: ["string", "null"] },
|
|
575
|
+
backgroundMode: {
|
|
576
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
577
|
+
},
|
|
578
|
+
backgroundColor: { type: ["string", "null"] },
|
|
579
|
+
backgroundImage: { type: ["string", "null"] },
|
|
580
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
581
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
484
582
|
},
|
|
485
583
|
additionalProperties: true
|
|
486
584
|
}
|
|
@@ -503,7 +601,14 @@ var column_schema_default = {
|
|
|
503
601
|
contentMode: { enum: ["default", null] },
|
|
504
602
|
verticalAlign: { enum: ["top", "center", "bottom", null] },
|
|
505
603
|
horizontalAlign: { enum: ["left", "center", "right", "stretch", null] },
|
|
506
|
-
padding: { enum: ["none", null] }
|
|
604
|
+
padding: { enum: ["none", null] },
|
|
605
|
+
backgroundMode: {
|
|
606
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
607
|
+
},
|
|
608
|
+
backgroundColor: { type: ["string", "null"] },
|
|
609
|
+
backgroundImage: { type: ["string", "null"] },
|
|
610
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
611
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
507
612
|
},
|
|
508
613
|
additionalProperties: true
|
|
509
614
|
}
|
|
@@ -535,7 +640,14 @@ var slide_schema_default = {
|
|
|
535
640
|
"linkedin-banner",
|
|
536
641
|
null
|
|
537
642
|
]
|
|
538
|
-
}
|
|
643
|
+
},
|
|
644
|
+
backgroundMode: {
|
|
645
|
+
enum: ["none", "color", "image", "imageOverlay", null]
|
|
646
|
+
},
|
|
647
|
+
backgroundColor: { type: ["string", "null"] },
|
|
648
|
+
backgroundImage: { type: ["string", "null"] },
|
|
649
|
+
backgroundOverlayColor: { type: ["string", "null"] },
|
|
650
|
+
backgroundOverlayOpacity: { type: ["number", "null"] }
|
|
539
651
|
},
|
|
540
652
|
additionalProperties: true
|
|
541
653
|
}
|
|
@@ -712,13 +824,20 @@ var youtube_schema_default = {
|
|
|
712
824
|
};
|
|
713
825
|
|
|
714
826
|
// src/bundles/v1/allSchemas.ts
|
|
715
|
-
var allSchemas =
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
827
|
+
var allSchemas = `
|
|
828
|
+
<Schemas>
|
|
829
|
+
${Object.entries(v1_exports3).map(
|
|
830
|
+
([name, schema]) => `<${name}Schema>
|
|
831
|
+
` + JSON.stringify(schema, null, 2) + `
|
|
832
|
+
</${name}Schema>`
|
|
833
|
+
).join("\n\n")}
|
|
834
|
+
</Schemas>
|
|
835
|
+
`.trim();
|
|
719
836
|
|
|
720
837
|
// src/bundles/v1/allContexts.ts
|
|
721
|
-
var allContexts =
|
|
838
|
+
var allContexts = `
|
|
839
|
+
<Context>
|
|
840
|
+
${[
|
|
722
841
|
core,
|
|
723
842
|
fullDocument,
|
|
724
843
|
slide,
|
|
@@ -737,7 +856,9 @@ var allContexts = [
|
|
|
737
856
|
horizontalRule,
|
|
738
857
|
youtube,
|
|
739
858
|
editingRules
|
|
740
|
-
].join("\n\n")
|
|
859
|
+
].join("\n\n")}
|
|
860
|
+
</Context>
|
|
861
|
+
`.trim();
|
|
741
862
|
|
|
742
863
|
// src/recipes/v1/index.ts
|
|
743
864
|
var v1_exports5 = {};
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/contexts/v1/index.ts","../src/contexts/v1/core.ts","../src/contexts/v1/output.fullDocument.ts","../src/contexts/v1/imageBlock.ts","../src/contexts/v1/row.ts","../src/contexts/v1/column.ts","../src/contexts/v1/slide.ts","../src/contexts/v1/style.ts","../src/contexts/v1/editingRules.ts","../src/contexts/v1/sizing.ts","../src/contexts/v1/blockquote.ts","../src/contexts/v1/bulletList.ts","../src/contexts/v1/codeBlock.ts","../src/contexts/v1/hardBreak.ts","../src/contexts/v1/horizontalRule.ts","../src/contexts/v1/image.ts","../src/contexts/v1/heading.ts","../src/contexts/v1/paragraph.ts","../src/contexts/v1/youtube.ts","../src/examples/v1/index.ts","../src/examples/v1/slides.ts","../src/examples/v1/flyers.ts","../src/bundles/v1/index.ts","../src/bundles/v1/minimalCreate.ts","../src/bundles/v1/imageEditing.ts","../src/bundles/v1/all.ts","../src/schemas/v1/index.ts","../src/schemas/v1/imageBlock.schema.json","../src/schemas/v1/row.schema.json","../src/schemas/v1/column.schema.json","../src/schemas/v1/slide.schema.json","../src/schemas/v1/blockquote.schema.json","../src/schemas/v1/bulletList.schema.json","../src/schemas/v1/codeBlock.schema.json","../src/schemas/v1/hardBreak.schema.json","../src/schemas/v1/horizontalRule.schema.json","../src/schemas/v1/image.schema.json","../src/schemas/v1/heading.schema.json","../src/schemas/v1/paragraph.schema.json","../src/schemas/v1/youtube.schema.json","../src/bundles/v1/allSchemas.ts","../src/bundles/v1/allContexts.ts","../src/recipes/v1/index.ts","../src/recipes/v1/createSlide.ts","../src/recipes/v1/addTwoColumns.ts","../src/recipes/v1/editImageToCover.ts"],"sourcesContent":["export * as contextsV1 from \"./contexts/v1\";\nexport * as examplesV1 from \"./examples/v1\";\nexport * as bundlesV1 from \"./bundles/v1\";\nexport * as recipesV1 from \"./recipes/v1\";\nexport * as schemasV1 from \"./schemas/v1\";\nexport * from \"./types/v1\";\n\n","export { core } from \"./core\";\nexport { fullDocument } from \"./output.fullDocument\";\nexport { imageBlock } from \"./imageBlock\";\nexport { row } from \"./row\";\nexport { column } from \"./column\";\nexport { slide } from \"./slide\";\nexport { style } from \"./style\";\nexport { editingRules } from \"./editingRules\";\nexport { sizing } from \"./sizing\";\nexport { blockquote } from \"./blockquote\";\nexport { bulletList } from \"./bulletList\";\nexport { codeBlock } from \"./codeBlock\";\nexport { hardBreak } from \"./hardBreak\";\nexport { horizontalRule } from \"./horizontalRule\";\nexport { image } from \"./image\";\nexport { heading } from \"./heading\";\nexport { paragraph } from \"./paragraph\";\nexport { youtube } from \"./youtube\";\n\n","export const core = `\nYou are given a BlockSlides document to CREATE or EDIT.\n\nDocument shape:\n- doc: { type: \"doc\", content: slide[] }\n- slide: { type: \"slide\", attrs?, content: row[] }\n- row: { type: \"row\", attrs?, content: column[] | block[] }\n- column: { type: \"column\", attrs?, content: (block | row)[] }\n- block: includes nodes like paragraph, heading, imageBlock, etc.\n\nRules:\n- Use only known node types and valid attrs. Do not invent attributes.\n- Prefer stable references: preserve slide.attrs.id if present.\n- Slides and flyers share the same JSON; flyers are slides sized via attrs and theme.\n`.trim();\n\n\n","export const fullDocument = `\nOutput contract:\n- Return exactly one JSON object representing the ENTIRE document.\n- No prose, no markdown, no code fences, no comments. JSON only.\n- Include all required attrs. Use allowed enum values only.\n`.trim();\n\n\n","export const imageBlock = `\nNode: imageBlock\nAttrs:\n- src (required): string (URL)\n- alt (optional): string\n- caption (optional): string\n- credit (optional): string\n- layout (optional): \"cover\" | \"contain\" | \"fill\" | \"focus\" | \"pattern\"\n- align (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"center\")\n- width (optional): number (px) or string (\"%\"/\"px\")\n- height (optional): number (px) or string (\"%\"/\"px\")\n- fullBleed (optional): boolean (removes radius; stretches width)\n- assetId (optional): string\n- focalX, focalY (optional): 0–100; spotlight position (when relevant)\n\nBehavior:\n- Numbers for width/height are interpreted as pixels.\n- layout:\n - cover: Fill container; crop edges as needed.\n - contain: Fit entirely; may letterbox.\n - fill: Stretch to container (may distort).\n - focus: Cover + radial spotlight at focalX/focalY.\n - pattern: Hide <img>; use tiled background (from src).\n- Do not set unknown attributes. Preserve existing valid attrs.\n`.trim();\n\n\n","export const row = `\nNode: row\nAttrs:\n- layout (optional): \"\", \"1\", \"1-1\", \"2-1\", \"1-2\", \"1-1-1\", \"2-1-1\", \"1-2-1\", \"1-1-2\", \"1-1-1-1\"\n- className (optional): string (CSS classes)\n\nSemantics:\n- Fractions determine relative column flex:\n - 1-1: two equal columns\n - 2-1: first column is double width\n - 1-2: second column is double width\n - 1-1-1: three equal columns\n - 1-1-1-1: four equal columns\n- Empty layout (\"\", \"1\") acts as a single full-width column.\n`.trim();\n\n\n","export const column = `\nNode: column\nAttrs:\n- className (optional): string\n- contentMode (optional): \"default\" (future-friendly)\n- verticalAlign (optional): \"top\" | \"center\" | \"bottom\" (default \"top\")\n- horizontalAlign (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"left\")\n- padding (optional): \"none\" (future-friendly)\n\nNotes:\n- Use className for spacing, colors, typography (e.g., Tailwind).\n- Keep nesting shallow; columns can contain rows or blocks as needed.\n`.trim();\n\n\n","export const slide = `\nNode: slide\nAttrs:\n- id (optional): string (stable identifier; preserve if present)\n- className (optional): string (styling)\n- size (optional): \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\"\n\nContent:\n- slide contains one or more rows.\n\nNotes:\n- Flyers are slides sized for paper (e.g., size: \"a4-portrait\").\n- Set size to control canvas dimensions; theme applies the exact width/height.\n`.trim();\n\n\n","export const style = `\nStyling\n- Prefer using attrs.className for styling (e.g., Tailwind classes).\n- Use enums for canonical behaviors (e.g., imageBlock.layout).\n- When enums are insufficient (spacing, backgrounds), use className.\n`.trim();\n\n\n","export const editingRules = `\nEditing rules\n- Preserve existing ids and valid attributes. Do not remove or rename known attrs.\n- Use only allowed enum values. Do not invent new enum values.\n- Avoid introducing new attrs. If styling is needed, prefer className.\n- Keep the document valid: slide > row > column > blocks.\n`.trim();\n\n\n","export const sizing = `\nSizing\n- Slides and flyers share the same JSON. Flyers are slides sized via slide.attrs.size and theme rules.\n- Allowed sizes: \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\".\n- Editors may render with fixed canvases or dynamic mode. The default is fixed; dynamic stretches to container with preserved aspect.\n`.trim();\n\n\n","export const blockquote = `\nNode: blockquote\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more block nodes (typically paragraphs, headings, lists).\n\nSemantics:\n- Use for quoted text or callouts inside a column or row.\n- Styling should be applied via className on the surrounding column/slide, not by inventing new attrs here.\n`.trim();\n\n\n","export const bulletList = `\nNode: bulletList\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more list item nodes (listItem) that contain paragraphs or inline content.\n\nSemantics:\n- Represents an unordered list rendered as <ul>.\n- Use when you need bullet points inside a column or blockquote.\n- Do not use bulletList as a top-level child of doc; it belongs inside a column/row structure.\n`.trim();\n\n\n","export const codeBlock = `\nNode: codeBlock\nAttrs:\n- language (optional): string | null (e.g., \"js\", \"ts\", \"python\").\n\nContent:\n- Plain text only (no child nodes); used for preformatted code samples.\n\nSemantics:\n- Renders as <pre><code>…</code></pre>.\n- language controls a CSS class (e.g., \"language-js\") for syntax highlighting.\n- Use when the user explicitly wants a fenced code block, not inline code in a paragraph.\n`.trim();\n\n\n","export const hardBreak = `\nNode: hardBreak\nAttrs:\n- None (HTML-only); behaves like a manual line break.\n\nContent:\n- Inline-only; used within paragraphs or headings.\n\nSemantics:\n- Renders as <br> and as a newline in plain text exports.\n- Use when the user requests a line break without starting a new paragraph.\n`.trim();\n\n\n","export const horizontalRule = `\nNode: horizontalRule\nAttrs:\n- HTML-only; no JSON attrs beyond optional styling via surrounding layout.\n\nContent:\n- No children; this is a self-contained separator.\n\nSemantics:\n- Renders as <hr>.\n- Use to visually separate sections within a slide (for example, between rows of text).\n`.trim();\n\n\n","export const image = `\nNode: image\nAttrs:\n- src (required): string (URL to the image).\n- alt (optional): string (accessibility text).\n- title (optional): string (tooltip / caption).\n- width, height (optional): numbers (px) used as hints for rendering.\n\nContent:\n- No children; this is an atomic inline or block-level image node depending on editor configuration.\n\nSemantics:\n- Renders as a simple <img>, unlike imageBlock which adds rich framing/caption UI.\n- Prefer imageBlock for designed layouts; use image for simple inline images in paragraphs.\n`.trim();\n\n\n","export const heading = `\nNode: heading\nAttrs:\n- level (required): 1 | 2 | 3 | 4 | 5 | 6.\n\nContent:\n- Inline content (text, marks, inline nodes).\n\nSemantics:\n- Renders as <h1>…<h6> depending on level.\n- Use level 1–2 for main slide titles, 3–4 for section headings, 5–6 for subtle labels.\n- Do not invent other attrs; typography/styling should come from className on columns/slides.\n`.trim();\n\n\n","export const paragraph = `\nNode: paragraph\nAttrs:\n- HTML-only; no structured JSON attrs beyond optional styling such as className.\n\nContent:\n- Inline content (text with marks, inline nodes such as image or hardBreak).\n\nSemantics:\n- Default text block inside columns and rows.\n- Multiple paragraphs can be stacked within the same column to create vertical rhythm.\n`.trim();\n\n\n","export const youtube = `\nNode: youtube\nAttrs:\n- src (required): string (public YouTube URL).\n- start (optional): number (start time in seconds).\n- width (optional): number (frame width in px).\n- height (optional): number (frame height in px).\n\nContent:\n- No children; this is an atomic embed node.\n\nSemantics:\n- Renders as an embedded YouTube iframe wrapped in a container <div>.\n- Use for video embeds inside a column or row; keep other text in separate paragraphs/columns.\n- Do not embed raw <iframe> HTML directly; always use the youtube node with attrs.\n`.trim();\n\n\n","export { slides } from \"./slides\";\nexport { flyers } from \"./flyers\";\n\n\n","export const slides = `\nExamples: Slides (full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"intro\", \"size\": \"16x9\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1-1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Welcome\" }] }\n ]},\n { \"type\": \"column\", \"content\": [\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/welcome/1200/800\", \"layout\": \"cover\", \"align\": \"center\" } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-slide-examples to be added here */\n`.trim();\n\n\n","export const flyers = `\nExamples: Flyers (A4 slides; full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"a4-flyer\", \"size\": \"a4-portrait\", \"className\": \"bg-white text-slate-900\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Event Title\" }] },\n { \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Date · Location\" }] },\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/a4/1600/1000\", \"layout\": \"contain\", \"align\": \"center\", \"height\": 320 } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-flyer-examples to be added here */\n`.trim();\n\n\n","export { minimalCreate } from \"./minimalCreate\";\nexport { imageEditing } from \"./imageEditing\";\nexport { all } from \"./all\";\nexport { allSchemas } from \"./allSchemas\";\nexport { allContexts } from \"./allContexts\";\n\n","import { core, fullDocument, slide, row, column, style } from \"../../contexts/v1\";\n\nexport const minimalCreate = [core, fullDocument, slide, row, column, style].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const imageEditing = [core, fullDocument, imageBlock, editingRules].join(\"\\n\\n\");\n\n\n","import * as ctx from \"../../contexts/v1\";\n\nexport const all = [\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n // Core content blocks and media\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n // Editing behavior\n ctx.editingRules,\n].join(\"\\n\\n\");\n\n\n","export { default as imageBlock } from \"./imageBlock.schema.json\";\nexport { default as row } from \"./row.schema.json\";\nexport { default as column } from \"./column.schema.json\";\nexport { default as slide } from \"./slide.schema.json\";\nexport { default as blockquote } from \"./blockquote.schema.json\";\nexport { default as bulletList } from \"./bulletList.schema.json\";\nexport { default as codeBlock } from \"./codeBlock.schema.json\";\nexport { default as hardBreak } from \"./hardBreak.schema.json\";\nexport { default as horizontalRule } from \"./horizontalRule.schema.json\";\nexport { default as image } from \"./image.schema.json\";\nexport { default as heading } from \"./heading.schema.json\";\nexport { default as paragraph } from \"./paragraph.schema.json\";\nexport { default as youtube } from \"./youtube.schema.json\";\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"imageBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"imageBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": \"string\", \"minLength\": 1 },\n \"alt\": { \"type\": \"string\" },\n \"caption\": { \"type\": \"string\" },\n \"credit\": { \"type\": \"string\" },\n \"layout\": { \"enum\": [\"cover\", \"contain\", \"fill\", \"focus\", \"pattern\", null] },\n \"align\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"width\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"fullBleed\": { \"type\": \"boolean\" },\n \"assetId\": { \"type\": [\"string\", \"null\"] },\n \"focalX\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 },\n \"focalY\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 }\n },\n \"required\": [\"src\"],\n \"additionalProperties\": false\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"row\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"row\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"layout\": {\n \"enum\": [\"\", \"1\", \"1-1\", \"2-1\", \"1-2\", \"1-1-1\", \"2-1-1\", \"1-2-1\", \"1-1-2\", \"1-1-1-1\", null]\n },\n \"className\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"column\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"column\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"contentMode\": { \"enum\": [\"default\", null] },\n \"verticalAlign\": { \"enum\": [\"top\", \"center\", \"bottom\", null] },\n \"horizontalAlign\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"padding\": { \"enum\": [\"none\", null] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"slide\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"slide\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": { \"type\": [\"string\", \"null\"] },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"size\": {\n \"enum\": [\n \"16x9\",\n \"4x3\",\n \"a4-portrait\",\n \"a4-landscape\",\n \"letter-portrait\",\n \"letter-landscape\",\n \"linkedin-banner\",\n null\n ]\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"blockquote\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"blockquote\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"bulletList\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"bulletList\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"codeBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"codeBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"language\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"hardBreak\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"hardBreak\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"horizontalRule\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"horizontalRule\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"image\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"image\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"alt\": { \"type\": [\"string\", \"null\"] },\n \"title\": { \"type\": [\"string\", \"null\"] },\n \"width\": { \"type\": [\"number\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"heading\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"heading\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 6\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"paragraph\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"paragraph\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"youtube\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"youtube\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"start\": { \"type\": \"number\" },\n \"width\": { \"type\": \"number\" },\n \"height\": { \"type\": \"number\" }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","import * as schemas from \"../../schemas/v1\";\n\n/**\n * Human- and AI-readable bundle of all v1 JSON Schemas.\n *\n * This is intended for:\n * - LLMs that want to see the exact JSON Schema contracts\n * - Tools that want a single text blob containing every schema\n *\n * Each schema is pretty-printed and prefixed with its key name.\n */\nexport const allSchemas = Object.entries(schemas)\n .map(\n ([name, schema]) =>\n `Schema \"${name}\":\\n` + JSON.stringify(schema as unknown, null, 2)\n )\n .join(\"\\n\\n\");\n\n\n\n","import * as ctx from \"../../contexts/v1\";\n\n/**\n * All v1 context atoms concatenated into a single string.\n *\n * Intended for:\n * - LLMs that should know about every supported node type and layout primitive\n * - Power users who want a “maximal” context (structure + nodes + editing rules + sizing)\n */\nexport const allContexts = [\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n ctx.editingRules,\n].join(\"\\n\\n\");\n\n\n\n","export { createSlide } from \"./createSlide\";\nexport { addTwoColumns } from \"./addTwoColumns\";\nexport { editImageToCover } from \"./editImageToCover\";\n\n\n","import { core, fullDocument, slide, row, column } from \"../../contexts/v1\";\n\nexport const createSlide = [\n core,\n fullDocument,\n slide,\n row,\n column,\n `\nReturn a single JSON document that creates one 16x9 slide with a 1-1 row:\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"size\": \"16x9\" },\n \"content\": [\n { \"type\": \"row\", \"attrs\": { \"layout\": \"1-1\" }, \"content\": [\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Left\" }] }] },\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Right\" }] }] }\n ] }\n ]\n }\n ]\n}\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, row, column } from \"../../contexts/v1\";\n\nexport const addTwoColumns = [\n core,\n fullDocument,\n row,\n column,\n `\nReturn a full document where the first slide contains a row with layout \"1-1\" and two columns with simple text paragraphs.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const editImageToCover = [\n core,\n fullDocument,\n imageBlock,\n editingRules,\n `\nUpdate an existing imageBlock on the first slide so it uses layout \"cover\" and align \"center\". Preserve all other attributes.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n"],"mappings":"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","names":["v1_exports","v1_exports","v1_exports","v1_exports","v1_exports","v1_exports"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/contexts/v1/index.ts","../src/contexts/v1/core.ts","../src/contexts/v1/output.fullDocument.ts","../src/contexts/v1/imageBlock.ts","../src/contexts/v1/row.ts","../src/contexts/v1/column.ts","../src/contexts/v1/slide.ts","../src/contexts/v1/style.ts","../src/contexts/v1/editingRules.ts","../src/contexts/v1/sizing.ts","../src/contexts/v1/blockquote.ts","../src/contexts/v1/bulletList.ts","../src/contexts/v1/codeBlock.ts","../src/contexts/v1/hardBreak.ts","../src/contexts/v1/horizontalRule.ts","../src/contexts/v1/image.ts","../src/contexts/v1/heading.ts","../src/contexts/v1/paragraph.ts","../src/contexts/v1/youtube.ts","../src/examples/v1/index.ts","../src/examples/v1/slides.ts","../src/examples/v1/flyers.ts","../src/bundles/v1/index.ts","../src/bundles/v1/minimalCreate.ts","../src/bundles/v1/imageEditing.ts","../src/bundles/v1/all.ts","../src/schemas/v1/index.ts","../src/schemas/v1/imageBlock.schema.json","../src/schemas/v1/row.schema.json","../src/schemas/v1/column.schema.json","../src/schemas/v1/slide.schema.json","../src/schemas/v1/blockquote.schema.json","../src/schemas/v1/bulletList.schema.json","../src/schemas/v1/codeBlock.schema.json","../src/schemas/v1/hardBreak.schema.json","../src/schemas/v1/horizontalRule.schema.json","../src/schemas/v1/image.schema.json","../src/schemas/v1/heading.schema.json","../src/schemas/v1/paragraph.schema.json","../src/schemas/v1/youtube.schema.json","../src/bundles/v1/allSchemas.ts","../src/bundles/v1/allContexts.ts","../src/recipes/v1/index.ts","../src/recipes/v1/createSlide.ts","../src/recipes/v1/addTwoColumns.ts","../src/recipes/v1/editImageToCover.ts"],"sourcesContent":["export * as contextsV1 from \"./contexts/v1\";\nexport * as examplesV1 from \"./examples/v1\";\nexport * as bundlesV1 from \"./bundles/v1\";\nexport * as recipesV1 from \"./recipes/v1\";\nexport * as schemasV1 from \"./schemas/v1\";\nexport * from \"./types/v1\";\n\n","export { core } from \"./core\";\nexport { fullDocument } from \"./output.fullDocument\";\nexport { imageBlock } from \"./imageBlock\";\nexport { row } from \"./row\";\nexport { column } from \"./column\";\nexport { slide } from \"./slide\";\nexport { style } from \"./style\";\nexport { editingRules } from \"./editingRules\";\nexport { sizing } from \"./sizing\";\nexport { blockquote } from \"./blockquote\";\nexport { bulletList } from \"./bulletList\";\nexport { codeBlock } from \"./codeBlock\";\nexport { hardBreak } from \"./hardBreak\";\nexport { horizontalRule } from \"./horizontalRule\";\nexport { image } from \"./image\";\nexport { heading } from \"./heading\";\nexport { paragraph } from \"./paragraph\";\nexport { youtube } from \"./youtube\";\n\n","export const core = `\n<core>\nYou are given a BlockSlides document to CREATE or EDIT.\n\nDocument shape:\n- doc: { type: \"doc\", content: slide[] }\n- slide: { type: \"slide\", attrs?, content: row[] }\n- row: { type: \"row\", attrs?, content: column[] | block[] }\n- column: { type: \"column\", attrs?, content: (block | row)[] }\n- block: includes nodes like paragraph, heading, imageBlock, etc.\n\nRules:\n- Use only known node types and valid attrs. Do not invent attributes.\n- Prefer stable references: preserve slide.attrs.id if present.\n- Slides and flyers share the same JSON; flyers are slides sized via attrs and theme.\n</core>\n`.trim();\n\n\n","export const fullDocument = `\nOutput contract:\n- Return exactly one JSON object representing the ENTIRE document.\n- No prose, no markdown, no code fences, no comments. JSON only.\n- Include all required attrs. Use allowed enum values only.\n`.trim();\n\n\n","export const imageBlock = `\n<imageBlock>\nNode: imageBlock\nAttrs:\n- src (required): string (URL)\n- alt (optional): string\n- caption (optional): string\n- credit (optional): string\n- layout (optional): \"cover\" | \"contain\" | \"fill\" | \"focus\" | \"pattern\"\n- align (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"center\")\n- width (optional): number (px) or string (\"%\"/\"px\")\n- height (optional): number (px) or string (\"%\"/\"px\")\n- fullBleed (optional): boolean (removes radius; stretches width)\n- assetId (optional): string\n- focalX, focalY (optional): 0–100; spotlight position (when relevant)\n\nBehavior:\n- Numbers for width/height are interpreted as pixels.\n- layout:\n - cover: Fill container; crop edges as needed.\n - contain: Fit entirely; may letterbox.\n - fill: Stretch to container (may distort).\n - focus: Cover + radial spotlight at focalX/focalY.\n - pattern: Hide <img>; use tiled background (from src).\n- Do not set unknown attributes. Preserve existing valid attrs.\n</imageBlock>\n`.trim();\n\n\n","export const row = `\n<row>\nNode: row\nAttrs:\n- layout (optional): \"\", \"1\", \"1-1\", \"2-1\", \"1-2\", \"1-1-1\", \"2-1-1\", \"1-2-1\", \"1-1-2\", \"1-1-1-1\"\n- className (optional): string (CSS classes)\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for row background)\n- backgroundImage (optional): string (URL for row-level background image)\n- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, overlay opacity)\n\nSemantics:\n- Fractions determine relative column flex:\n - 1-1: two equal columns\n - 2-1: first column is double width\n - 1-2: second column is double width\n - 1-1-1: three equal columns\n - 1-1-1-1: four equal columns\n- Empty layout (\"\", \"1\") acts as a single full-width column.\n- Use row backgrounds for horizontal bands (e.g., header strip) instead of attaching everything to the slide.\n</row>\n`.trim();\n\n\n","export const column = `\n<column>\nNode: column\nAttrs:\n- className (optional): string\n- contentMode (optional): \"default\" (future-friendly)\n- verticalAlign (optional): \"top\" | \"center\" | \"bottom\" (default \"top\")\n- horizontalAlign (optional): \"left\" | \"center\" | \"right\" | \"stretch\" (default \"left\")\n- padding (optional): \"none\" (future-friendly)\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for the column background)\n- backgroundImage (optional): string (URL for column-level background image)\n- backgroundOverlayColor (optional): string (overlay color when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, overlay opacity)\n\nNotes:\n- Use className for spacing, colors, typography (e.g., Tailwind).\n- Keep nesting shallow; columns can contain rows or blocks as needed.\n</column>\n`.trim();\n\n\n","export const slide = `\n<slide>\nNode: slide\nAttrs:\n- id (optional): string (stable identifier; preserve if present)\n- className (optional): string (styling)\n- size (optional): \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\"\n- backgroundMode (optional): \"none\" | \"color\" | \"image\" | \"imageOverlay\"\n- backgroundColor (optional): string (CSS color for solid backgrounds)\n- backgroundImage (optional): string (URL for slide-level background image)\n- backgroundOverlayColor (optional): string (color for the overlay when using imageOverlay)\n- backgroundOverlayOpacity (optional): number (0–1, opacity for the overlay)\n\nContent:\n- slide contains one or more rows.\n\nNotes:\n- Flyers are slides sized for paper (e.g., size: \"a4-portrait\").\n- Set size to control canvas dimensions; theme applies the exact width/height.\n- For background images, prefer backgroundMode/backgroundImage over Tailwind bg-[url(...)]; the extension will inject the correct CSS.\n</slide>\n`.trim();\n\n\n","export const style = `\n<style>\nStyling\n- Prefer using attrs.className for styling (e.g., Tailwind classes).\n- Use enums for canonical behaviors (e.g., imageBlock.layout).\n- When enums are insufficient (spacing, backgrounds), use className.\n</style>\n`.trim();\n\n\n","export const editingRules = `\n<General editing rules>\n- Preserve existing ids and valid attributes. Do not remove or rename known attrs.\n- Use only allowed enum values. Do not invent new enum values.\n- Avoid introducing new attributes that are not documented. If styling is needed, prefer className.\n- Keep the document valid: slide > row > column > blocks.\n</General editing rules>\n\n<Centering content in a column>\n- Columns are flex containers. Use their alignment attrs instead of per-block hacks.\n- To center all content vertically and horizontally inside a column:\n - Set column.attrs.verticalAlign = \"center\".\n - Set column.attrs.horizontalAlign = \"center\".\n- This will apply to headings, paragraphs, imageBlocks, and other blocks inside that column.\n- Example:\n - Before: column.attrs = { verticalAlign: \"top\", horizontalAlign: \"left\", padding: \"none\" }\n - After: column.attrs = { verticalAlign: \"center\", horizontalAlign: \"center\", padding: \"none\" }\n</Centering content in a column>\n\n<Backgrounds (slides, rows, columns)>\n- Prefer structured background attrs over raw Tailwind bg-[url(...)] when setting background images.\n- For slide-level backgrounds (hero/flyer):\n - Use slide.attrs.backgroundMode = \"color\" | \"image\" | \"imageOverlay\".\n - For images, set slide.attrs.backgroundImage to the image URL.\n - For overlays, set slide.attrs.backgroundOverlayColor (e.g., \"rgba(0,0,0,0.8)\") and slide.attrs.backgroundOverlayOpacity (0–1).\n- For horizontal bands, use row-level backgrounds (row.attrs.background*).\n- For panel-style sections, use column-level backgrounds (column.attrs.background*).\n- Do not mix multiple background images on the same node; prefer one backgroundMode per slide/row/column and layer additional visuals as imageBlock nodes.\n</Backgrounds (slides, rows, columns)>\n\n<Text editing (headings and paragraphs)>\n- Preserve semantic types: do not turn headings into paragraphs or vice versa unless explicitly asked.\n- To change heading level, update heading.attrs.level (1–6) without changing its id.\n- To change the text, edit the text nodes inside content, keeping marks and structure when possible.\n- For alignment of text itself, prefer using the textAlign extension (textAlign: \"left\" | \"center\" | \"right\" | \"justify\") if configured.\n- Do not introduce inline HTML; represent formatting via marks (bold, italic, underline, etc.).\n</Text editing (headings and paragraphs)>\n\n<Image blocks>\n- Use imageBlock for rich images; preserve src, assetId, and metadata unless the user explicitly asks to change them.\n- To change the alignment of an imageBlock within its column, set imageBlock.attrs.align to \"left\", \"center\", \"right\", or \"stretch\".\n- To change how the image is fit, adjust imageBlock.attrs.layout (for example: \"cover\", \"contain\", \"fill\", \"focus\", or a configured layout key).\n- When centering both text and image in a column, combine:\n - column verticalAlign/horizontalAlign for layout, and\n - imageBlock align for how the image itself sits in the column.\n- Do not invent new layout or align values that are not documented in the schema.\n</Image blocks>\n\n`.trim();\n\n\n","export const sizing = `\n<sizing>\nSizing\n- Slides and flyers share the same JSON. Flyers are slides sized via slide.attrs.size and theme rules.\n- Allowed sizes: \"16x9\" | \"4x3\" | \"a4-portrait\" | \"a4-landscape\" | \"letter-portrait\" | \"letter-landscape\" | \"linkedin-banner\".\n- Editors may render with fixed canvases or dynamic mode. The default is fixed; dynamic stretches to container with preserved aspect.\n</sizing>\n`.trim();\n\n\n","export const blockquote = `\n<blockquote>\nNode: blockquote\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more block nodes (typically paragraphs, headings, lists).\n\nSemantics:\n- Use for quoted text or callouts inside a column or row.\n- Styling should be applied via className on the surrounding column/slide, not by inventing new attrs here.\n</blockquote>\n`.trim();\n\n\n","export const bulletList = `\n<bulletList>\nNode: bulletList\nAttrs:\n- HTML-only; no required JSON attrs beyond optional styling such as className.\n\nContent:\n- One or more list item nodes (listItem) that contain paragraphs or inline content.\n\nSemantics:\n- Represents an unordered list rendered as <ul>.\n- Use when you need bullet points inside a column or blockquote.\n- Do not use bulletList as a top-level child of doc; it belongs inside a column/row structure.\n</bulletList>\n`.trim();\n\n\n","export const codeBlock = `\n<codeBlock>\nNode: codeBlock\nAttrs:\n- language (optional): string | null (e.g., \"js\", \"ts\", \"python\").\n\nContent:\n- Plain text only (no child nodes); used for preformatted code samples.\n\nSemantics:\n- Renders as <pre><code>…</code></pre>.\n- language controls a CSS class (e.g., \"language-js\") for syntax highlighting.\n- Use when the user explicitly wants a fenced code block, not inline code in a paragraph.\n</codeBlock>\n`.trim();\n\n\n","export const hardBreak = `\n<hardBreak>\nNode: hardBreak\nAttrs:\n- None (HTML-only); behaves like a manual line break.\n\nContent:\n- Inline-only; used within paragraphs or headings.\n\nSemantics:\n- Renders as <br> and as a newline in plain text exports.\n- Use when the user requests a line break without starting a new paragraph.\n</hardBreak>\n`.trim();\n\n\n","export const horizontalRule = `\n<horizontalRule>\nNode: horizontalRule\nAttrs:\n- HTML-only; no JSON attrs beyond optional styling via surrounding layout.\n\nContent:\n- No children; this is a self-contained separator.\n\nSemantics:\n- Renders as <hr>.\n- Use to visually separate sections within a slide (for example, between rows of text).\n</horizontalRule>\n`.trim();\n\n\n","export const image = `\n<image>\nNode: image\nAttrs:\n- src (required): string (URL to the image).\n- alt (optional): string (accessibility text).\n- title (optional): string (tooltip / caption).\n- width, height (optional): numbers (px) used as hints for rendering.\n\nContent:\n- No children; this is an atomic inline or block-level image node depending on editor configuration.\n\nSemantics:\n- Renders as a simple <img>, unlike imageBlock which adds rich framing/caption UI.\n- Prefer imageBlock for designed layouts; use image for simple inline images in paragraphs.\n</image>\n`.trim();\n\n\n","export const heading = `\n<heading>\nNode: heading\nAttrs:\n- level (required): 1 | 2 | 3 | 4 | 5 | 6.\n\nContent:\n- Inline content (text, marks, inline nodes).\n\nSemantics:\n- Renders as <h1>…<h6> depending on level.\n- Use level 1–2 for main slide titles, 3–4 for section headings, 5–6 for subtle labels.\n- Do not invent other attrs; typography/styling should come from className on columns/slides.\n</heading>\n`.trim();\n\n\n","export const paragraph = `\n<paragraph>\nNode: paragraph\nAttrs:\n- HTML-only; no structured JSON attrs beyond optional styling such as className.\n\nContent:\n- Inline content (text with marks, inline nodes such as image or hardBreak).\n\nSemantics:\n- Default text block inside columns and rows.\n- Multiple paragraphs can be stacked within the same column to create vertical rhythm.\n</paragraph>\n`.trim();\n\n\n","export const youtube = `\n<youtube>\nNode: youtube\nAttrs:\n- src (required): string (public YouTube URL).\n- start (optional): number (start time in seconds).\n- width (optional): number (frame width in px).\n- height (optional): number (frame height in px).\n\nContent:\n- No children; this is an atomic embed node.\n\nSemantics:\n- Renders as an embedded YouTube iframe wrapped in a container <div>.\n- Use for video embeds inside a column or row; keep other text in separate paragraphs/columns.\n- Do not embed raw <iframe> HTML directly; always use the youtube node with attrs.\n</youtube>\n`.trim();\n\n\n","export { slides } from \"./slides\";\nexport { flyers } from \"./flyers\";\n\n\n","export const slides = `\nExamples: Slides (full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"intro\", \"size\": \"16x9\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1-1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Welcome\" }] }\n ]},\n { \"type\": \"column\", \"content\": [\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/welcome/1200/800\", \"layout\": \"cover\", \"align\": \"center\" } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-slide-examples to be added here */\n`.trim();\n\n\n","export const flyers = `\nExamples: Flyers (A4 slides; full-document output)\n\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"id\": \"a4-flyer\", \"size\": \"a4-portrait\", \"className\": \"bg-white text-slate-900\" },\n \"content\": [\n {\n \"type\": \"row\",\n \"attrs\": { \"layout\": \"1\" },\n \"content\": [\n { \"type\": \"column\", \"content\": [\n { \"type\": \"heading\", \"attrs\": { \"level\": 2 }, \"content\": [{ \"type\": \"text\", \"text\": \"Event Title\" }] },\n { \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Date · Location\" }] },\n { \"type\": \"imageBlock\", \"attrs\": { \"src\": \"https://picsum.photos/seed/a4/1600/1000\", \"layout\": \"contain\", \"align\": \"center\", \"height\": 320 } }\n ]}\n ]\n }\n ]\n }\n ]\n}\n\n/* more-flyer-examples to be added here */\n`.trim();\n\n\n","export { minimalCreate } from \"./minimalCreate\";\nexport { imageEditing } from \"./imageEditing\";\nexport { all } from \"./all\";\nexport { allSchemas } from \"./allSchemas\";\nexport { allContexts } from \"./allContexts\";\n\n","import { core, fullDocument, slide, row, column, style } from \"../../contexts/v1\";\n\nexport const minimalCreate = [core, fullDocument, slide, row, column, style].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const imageEditing = [core, fullDocument, imageBlock, editingRules].join(\"\\n\\n\");\n\n\n","import * as ctx from \"../../contexts/v1\";\n\nexport const all = [\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n // Core content blocks and media\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n // Editing behavior\n ctx.editingRules,\n].join(\"\\n\\n\");\n\n\n","export { default as imageBlock } from \"./imageBlock.schema.json\";\nexport { default as row } from \"./row.schema.json\";\nexport { default as column } from \"./column.schema.json\";\nexport { default as slide } from \"./slide.schema.json\";\nexport { default as blockquote } from \"./blockquote.schema.json\";\nexport { default as bulletList } from \"./bulletList.schema.json\";\nexport { default as codeBlock } from \"./codeBlock.schema.json\";\nexport { default as hardBreak } from \"./hardBreak.schema.json\";\nexport { default as horizontalRule } from \"./horizontalRule.schema.json\";\nexport { default as image } from \"./image.schema.json\";\nexport { default as heading } from \"./heading.schema.json\";\nexport { default as paragraph } from \"./paragraph.schema.json\";\nexport { default as youtube } from \"./youtube.schema.json\";\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"imageBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"imageBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": \"string\", \"minLength\": 1 },\n \"alt\": { \"type\": \"string\" },\n \"caption\": { \"type\": \"string\" },\n \"credit\": { \"type\": \"string\" },\n \"layout\": { \"enum\": [\"cover\", \"contain\", \"fill\", \"focus\", \"pattern\", null] },\n \"align\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"width\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"string\", \"null\"] },\n \"fullBleed\": { \"type\": \"boolean\" },\n \"assetId\": { \"type\": [\"string\", \"null\"] },\n \"focalX\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 },\n \"focalY\": { \"type\": [\"number\", \"null\"], \"minimum\": 0, \"maximum\": 100 }\n },\n \"required\": [\"src\"],\n \"additionalProperties\": false\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"row\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"row\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"layout\": {\n \"enum\": [\"\", \"1\", \"1-1\", \"2-1\", \"1-2\", \"1-1-1\", \"2-1-1\", \"1-2-1\", \"1-1-2\", \"1-1-1-1\", null]\n },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"column\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"column\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"contentMode\": { \"enum\": [\"default\", null] },\n \"verticalAlign\": { \"enum\": [\"top\", \"center\", \"bottom\", null] },\n \"horizontalAlign\": { \"enum\": [\"left\", \"center\", \"right\", \"stretch\", null] },\n \"padding\": { \"enum\": [\"none\", null] },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"slide\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"slide\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": { \"type\": [\"string\", \"null\"] },\n \"className\": { \"type\": [\"string\", \"null\"] },\n \"size\": {\n \"enum\": [\n \"16x9\",\n \"4x3\",\n \"a4-portrait\",\n \"a4-landscape\",\n \"letter-portrait\",\n \"letter-landscape\",\n \"linkedin-banner\",\n null\n ]\n },\n \"backgroundMode\": {\n \"enum\": [\"none\", \"color\", \"image\", \"imageOverlay\", null]\n },\n \"backgroundColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundImage\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayColor\": { \"type\": [\"string\", \"null\"] },\n \"backgroundOverlayOpacity\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"blockquote\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"blockquote\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"bulletList\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"bulletList\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"codeBlock\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"codeBlock\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"language\": { \"type\": [\"string\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"hardBreak\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"hardBreak\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"horizontalRule\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"horizontalRule\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"image\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"image\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"alt\": { \"type\": [\"string\", \"null\"] },\n \"title\": { \"type\": [\"string\", \"null\"] },\n \"width\": { \"type\": [\"number\", \"null\"] },\n \"height\": { \"type\": [\"number\", \"null\"] }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"heading\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"heading\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 6\n }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"paragraph\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"paragraph\" },\n \"attrs\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"youtube\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"const\": \"youtube\" },\n \"attrs\": {\n \"type\": \"object\",\n \"properties\": {\n \"src\": { \"type\": [\"string\", \"null\"] },\n \"start\": { \"type\": \"number\" },\n \"width\": { \"type\": \"number\" },\n \"height\": { \"type\": \"number\" }\n },\n \"additionalProperties\": true\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": false\n}\n\n\n","import * as schemas from \"../../schemas/v1\";\n\n/**\n * Human- and AI-readable bundle of all v1 JSON Schemas.\n *\n * Wrapped in a top-level <Schemas>…</Schemas> tag, with each schema\n * enclosed in its own <{name}Schema>…</{name}Schema> block.\n */\nexport const allSchemas = `\n<Schemas>\n${Object.entries(schemas)\n .map(\n ([name, schema]) =>\n `<${name}Schema>\\n` +\n JSON.stringify(schema as unknown, null, 2) +\n `\\n</${name}Schema>`\n )\n .join(\"\\n\\n\")}\n</Schemas>\n`.trim();\n\n\n\n","import * as ctx from \"../../contexts/v1\";\n\n/**\n * All v1 context atoms concatenated into a single string,\n * wrapped in a top-level <Context>…</Context> block.\n */\nexport const allContexts = `\n<Context>\n${[\n ctx.core,\n ctx.fullDocument,\n ctx.slide,\n ctx.row,\n ctx.column,\n ctx.style,\n ctx.sizing,\n ctx.imageBlock,\n ctx.blockquote,\n ctx.bulletList,\n ctx.heading,\n ctx.paragraph,\n ctx.image,\n ctx.codeBlock,\n ctx.hardBreak,\n ctx.horizontalRule,\n ctx.youtube,\n ctx.editingRules,\n].join(\"\\n\\n\")}\n</Context>\n`.trim();\n\n\n\n","export { createSlide } from \"./createSlide\";\nexport { addTwoColumns } from \"./addTwoColumns\";\nexport { editImageToCover } from \"./editImageToCover\";\n\n\n","import { core, fullDocument, slide, row, column } from \"../../contexts/v1\";\n\nexport const createSlide = [\n core,\n fullDocument,\n slide,\n row,\n column,\n `\nReturn a single JSON document that creates one 16x9 slide with a 1-1 row:\n{\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"slide\",\n \"attrs\": { \"size\": \"16x9\" },\n \"content\": [\n { \"type\": \"row\", \"attrs\": { \"layout\": \"1-1\" }, \"content\": [\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Left\" }] }] },\n { \"type\": \"column\", \"content\": [{ \"type\": \"paragraph\", \"content\": [{ \"type\": \"text\", \"text\": \"Right\" }] }] }\n ] }\n ]\n }\n ]\n}\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, row, column } from \"../../contexts/v1\";\n\nexport const addTwoColumns = [\n core,\n fullDocument,\n row,\n column,\n `\nReturn a full document where the first slide contains a row with layout \"1-1\" and two columns with simple text paragraphs.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n","import { core, fullDocument, imageBlock, editingRules } from \"../../contexts/v1\";\n\nexport const editImageToCover = [\n core,\n fullDocument,\n imageBlock,\n editingRules,\n `\nUpdate an existing imageBlock on the first slide so it uses layout \"cover\" and align \"center\". Preserve all other attributes.\n`.trim(),\n].join(\"\\n\\n\");\n\n\n"],"mappings":"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","names":["v1_exports","v1_exports","v1_exports","v1_exports","v1_exports","v1_exports"]}
|