slotdeck 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -6
- package/dist/deck/alternatives.d.ts +34 -0
- package/dist/deck/alternatives.js +370 -0
- package/dist/deck/alternatives.js.map +1 -0
- package/dist/deck/design.d.ts +40 -0
- package/dist/deck/design.js +112 -0
- package/dist/deck/design.js.map +1 -0
- package/dist/deck/validate.d.ts +18 -0
- package/dist/deck/validate.js +38 -2
- package/dist/deck/validate.js.map +1 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +7 -0
- package/dist/node.js +29 -0
- package/dist/node.js.map +1 -1
- package/dist/plan/catalog.js +3 -1
- package/dist/plan/catalog.js.map +1 -1
- package/dist/plan/edit.js +6 -2
- package/dist/plan/edit.js.map +1 -1
- package/dist/plan/plan.d.ts +10 -0
- package/dist/plan/plan.js +8 -0
- package/dist/plan/plan.js.map +1 -1
- package/dist/plan/review.d.ts +43 -0
- package/dist/plan/review.js +141 -0
- package/dist/plan/review.js.map +1 -0
- package/dist/plan/write.d.ts +5 -0
- package/dist/plan/write.js +11 -4
- package/dist/plan/write.js.map +1 -1
- package/dist/preview/pagus.d.ts +30 -0
- package/dist/preview/pagus.js +45 -0
- package/dist/preview/pagus.js.map +1 -0
- package/dist/preview/patterns.d.ts +27 -0
- package/dist/preview/patterns.js +35 -0
- package/dist/preview/patterns.js.map +1 -0
- package/dist/preview/provider.d.ts +30 -0
- package/dist/preview/provider.js +11 -0
- package/dist/preview/provider.js.map +1 -0
- package/dist/render/render.d.ts +18 -1
- package/dist/render/render.js +28 -8
- package/dist/render/render.js.map +1 -1
- package/dist/render/repeat.d.ts +17 -2
- package/dist/render/repeat.js +150 -4
- package/dist/render/repeat.js.map +1 -1
- package/dist/render/text.d.ts +6 -0
- package/dist/render/text.js +24 -0
- package/dist/render/text.js.map +1 -1
- package/dist/template/budgets.d.ts +33 -0
- package/dist/template/budgets.js +38 -0
- package/dist/template/budgets.js.map +1 -0
- package/dist/template/change.d.ts +18 -1
- package/dist/template/change.js +33 -3
- package/dist/template/change.js.map +1 -1
- package/dist/template/check.d.ts +3 -0
- package/dist/template/check.js +53 -3
- package/dist/template/check.js.map +1 -1
- package/dist/template/derive.d.ts +54 -0
- package/dist/template/derive.js +402 -0
- package/dist/template/derive.js.map +1 -0
- package/dist/template/draft.d.ts +7 -0
- package/dist/template/draft.js +17 -1
- package/dist/template/draft.js.map +1 -1
- package/dist/template/instruct.js +11 -5
- package/dist/template/instruct.js.map +1 -1
- package/dist/template/manifest.d.ts +22 -0
- package/dist/template/manifest.js +17 -1
- package/dist/template/manifest.js.map +1 -1
- package/dist/template/sample.d.ts +17 -0
- package/dist/template/sample.js +27 -2
- package/dist/template/sample.js.map +1 -1
- package/dist/text/fontkit.d.ts +18 -0
- package/dist/text/fontkit.js +91 -0
- package/dist/text/fontkit.js.map +1 -0
- package/dist/text/fonts.d.ts +45 -0
- package/dist/text/fonts.js +59 -0
- package/dist/text/fonts.js.map +1 -0
- package/dist/text/layout.d.ts +12 -0
- package/dist/text/layout.js +104 -0
- package/dist/text/layout.js.map +1 -0
- package/dist/text/measure.d.ts +85 -0
- package/dist/text/measure.js +369 -0
- package/dist/text/measure.js.map +1 -0
- package/dist/text/styles.d.ts +123 -0
- package/dist/text/styles.js +417 -0
- package/dist/text/styles.js.map +1 -0
- package/dist/tools.d.ts +12 -0
- package/dist/tools.js +32 -6
- package/dist/tools.js.map +1 -1
- package/docs/README.md +15 -5
- package/docs/api-reference.md +278 -8
- package/docs/changelog.md +135 -0
- package/docs/chat-tools.md +22 -5
- package/docs/deck-format.md +6 -0
- package/docs/design-checks.md +216 -0
- package/docs/generating.md +4 -1
- package/docs/layout-freedom.md +255 -3
- package/docs/manifest-format.md +19 -3
- package/docs/preview.md +217 -0
- package/docs/providers.md +1 -1
- package/docs/rendering.md +8 -0
- package/docs/template-studio.md +110 -11
- package/docs/text-fit.md +456 -0
- package/docs/troubleshooting.md +13 -2
- package/package.json +7 -1
package/dist/tools.js
CHANGED
|
@@ -4,6 +4,7 @@ import { isImageRef } from './deck/spec.js';
|
|
|
4
4
|
import { resolveAssets } from './plan/assets.js';
|
|
5
5
|
import { planEdit } from './plan/edit.js';
|
|
6
6
|
import { editPlan, planOutline, writeDeck } from './plan/plan.js';
|
|
7
|
+
import { previewExtension } from './preview/provider.js';
|
|
7
8
|
import { renderDeck } from './render/render.js';
|
|
8
9
|
import { readJson, writeJson } from './store.js';
|
|
9
10
|
export const TOOL_NAMES = {
|
|
@@ -18,6 +19,8 @@ export const storeKeys = {
|
|
|
18
19
|
deck: (id) => `deck/${id}.json`,
|
|
19
20
|
pptx: (id) => `pptx/${id}.pptx`,
|
|
20
21
|
asset: (id) => `asset/${id}`,
|
|
22
|
+
/** A slide's picture: `extension` is `svg` or `png`, as the preview provider made it. */
|
|
23
|
+
preview: (id, slide, extension) => `preview/${id}/slide-${String(slide).padStart(2, '0')}.${extension}`,
|
|
21
24
|
};
|
|
22
25
|
const definitions = [
|
|
23
26
|
{
|
|
@@ -112,6 +115,8 @@ export function presentationTools(options) {
|
|
|
112
115
|
plan.assets = options.assets;
|
|
113
116
|
if (options.numberPatterns)
|
|
114
117
|
plan.numberPatterns = options.numberPatterns;
|
|
118
|
+
if (options.review)
|
|
119
|
+
plan.review = options.review;
|
|
115
120
|
if (options.onProgress)
|
|
116
121
|
plan.onProgress = (event) => options.onProgress?.(event, tool);
|
|
117
122
|
if (signal)
|
|
@@ -180,7 +185,23 @@ export function presentationTools(options) {
|
|
|
180
185
|
if (warnings.length > 0) {
|
|
181
186
|
output.warnings = warnings.map((issue) => `slide ${issue.slide}${issue.slot ? ` ${issue.slot}` : ''}: ${issue.message}`);
|
|
182
187
|
}
|
|
183
|
-
|
|
188
|
+
// Pictures of the slides are an extra: the presentation stands when they cannot be made.
|
|
189
|
+
let previews;
|
|
190
|
+
if (options.preview) {
|
|
191
|
+
try {
|
|
192
|
+
previews = await options.preview.renderSlides(signal ? { pptx, signal } : { pptx });
|
|
193
|
+
const keys = previews.map((picture) => storeKeys.preview(id, picture.slide, previewExtension(picture)));
|
|
194
|
+
await Promise.all(previews.map((picture, index) => store.set(keys[index], picture.data)));
|
|
195
|
+
output.previews = keys;
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
if (signal?.aborted)
|
|
199
|
+
throw error;
|
|
200
|
+
previews = undefined;
|
|
201
|
+
output.preview_error = error instanceof Error ? error.message : String(error);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return { id, output, pptx, previews };
|
|
184
205
|
};
|
|
185
206
|
const text = (args, name) => {
|
|
186
207
|
const value = args[name];
|
|
@@ -231,8 +252,8 @@ export function presentationTools(options) {
|
|
|
231
252
|
if (!plan)
|
|
232
253
|
throw new ToolInputError(`There is no plan with id "${planId}"`);
|
|
233
254
|
const written = await writeDeck(template, plan, planOptions(TOOL_NAMES.create, signal));
|
|
234
|
-
const { output, pptx } = await finish(TOOL_NAMES.create, written.deck, written.warnings, signal);
|
|
235
|
-
return { output: { ...output, plan_id: planId }, deck: written.deck, pptx };
|
|
255
|
+
const { output, pptx, previews } = await finish(TOOL_NAMES.create, written.deck, written.warnings, signal);
|
|
256
|
+
return withPreviews({ output: { ...output, plan_id: planId }, deck: written.deck, pptx }, previews);
|
|
236
257
|
},
|
|
237
258
|
async [TOOL_NAMES.edit](args, signal) {
|
|
238
259
|
const deckId = text(args, 'presentation_id');
|
|
@@ -241,12 +262,12 @@ export function presentationTools(options) {
|
|
|
241
262
|
throw new ToolInputError(`There is no presentation with id "${deckId}"`);
|
|
242
263
|
const editOptions = { ...planOptions(TOOL_NAMES.edit, signal), ...(canMakePhotos ? {} : { imageDensity: 'none' }) };
|
|
243
264
|
const edited = await planEdit(template, deck, text(args, 'instruction'), editOptions);
|
|
244
|
-
const { output, pptx } = await finish(TOOL_NAMES.edit, edited.deck, edited.warnings, signal);
|
|
245
|
-
return {
|
|
265
|
+
const { output, pptx, previews } = await finish(TOOL_NAMES.edit, edited.deck, edited.warnings, signal);
|
|
266
|
+
return withPreviews({
|
|
246
267
|
output: { ...output, summary: edited.summary, rewritten_slides: edited.rewritten, previous_presentation_id: deckId },
|
|
247
268
|
deck: edited.deck,
|
|
248
269
|
pptx,
|
|
249
|
-
};
|
|
270
|
+
}, previews);
|
|
250
271
|
},
|
|
251
272
|
};
|
|
252
273
|
return {
|
|
@@ -267,6 +288,11 @@ export function presentationTools(options) {
|
|
|
267
288
|
},
|
|
268
289
|
};
|
|
269
290
|
}
|
|
291
|
+
function withPreviews(result, previews) {
|
|
292
|
+
if (previews)
|
|
293
|
+
result.previews = previews;
|
|
294
|
+
return result;
|
|
295
|
+
}
|
|
270
296
|
class ToolInputError extends Error {
|
|
271
297
|
}
|
|
272
298
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/docs/README.md
CHANGED
|
@@ -37,8 +37,11 @@ slotdeck makes new PowerPoint files from an existing PowerPoint template.
|
|
|
37
37
|
| [generating.md](generating.md) | Make a deck from a brief, or change one by instruction, with a language model |
|
|
38
38
|
| [chat-tools.md](chat-tools.md) | Give a chat model the four presentation tools and store what they produce |
|
|
39
39
|
| [providers.md](providers.md) | Connect your own language model or image source, including an internal gateway |
|
|
40
|
-
| [layout-freedom.md](layout-freedom.md) | Vary the number of cards, enlarge text,
|
|
40
|
+
| [layout-freedom.md](layout-freedom.md) | Vary the number of cards, enlarge text, derive several patterns from one slide, and find other layouts for a slide |
|
|
41
41
|
| [languages.md](languages.md) | Make right-to-left decks from a left-to-right template, or the reverse |
|
|
42
|
+
| [text-fit.md](text-fit.md) | Measure text with the template's fonts: overflow in lines, shrinking to fit, budgets from measurement |
|
|
43
|
+
| [preview.md](preview.md) | Get a picture of each slide without PowerPoint, and know how close it is |
|
|
44
|
+
| [design-checks.md](design-checks.md) | Find empty boxes, uneven cards and orphan words by measurement, and have drafts reviewed while a deck is written |
|
|
42
45
|
| [template-studio.md](template-studio.md) | Draft a manifest with a model, check it, change it by hand or by instruction |
|
|
43
46
|
| [api-reference.md](api-reference.md) | Look up any export: its signature and what it does |
|
|
44
47
|
| [troubleshooting.md](troubleshooting.md) | Find the meaning of an error or warning, and the known limits |
|
|
@@ -50,6 +53,7 @@ slotdeck makes new PowerPoint files from an existing PowerPoint template.
|
|
|
50
53
|
| --- | --- | --- |
|
|
51
54
|
| Turn deck JSON into a pptx | `renderDeck` | none |
|
|
52
55
|
| Check deck JSON before rendering | `validateDeck` | none |
|
|
56
|
+
| See which other layouts a slide's content fits | `slideAlternatives` | none |
|
|
53
57
|
| Brief in, pptx out | `generateDeck` | text: 2 plus repairs; images: one per photo |
|
|
54
58
|
| Brief in, deck JSON out | `planDeck` | 2 plus repairs |
|
|
55
59
|
| Show a plan first, write later | `planOutline`, `editPlan`, `writeDeck` | 1 each, `writeDeck` plus repairs |
|
|
@@ -58,19 +62,25 @@ slotdeck makes new PowerPoint files from an existing PowerPoint template.
|
|
|
58
62
|
| Describe a new template | `draftManifest` | 1 per slide, plus 1 |
|
|
59
63
|
| Verify a manifest against its pptx | `checkManifest` | none |
|
|
60
64
|
| See whether a manifest's budgets hold | `sampleDeck` then `renderDeck` | none |
|
|
65
|
+
| Know whether a text fits its box, in lines | `loadTemplate` with `fonts`, or `textMeasurer` | none |
|
|
66
|
+
| Set budgets from what the boxes hold | `measuredBudgets` | none |
|
|
67
|
+
| Show a deck or a template's layouts as pictures | `previewDeck`, `patternPreviews` with a `PreviewProvider` | none |
|
|
68
|
+
| List design problems of a deck | `checkDesign` | none |
|
|
69
|
+
| Have drafts checked for design while a deck is written | `review: designReview(template)` on the planner | none of its own; each repair is one writing call |
|
|
61
70
|
| Change a manifest by operations | `changeManifest` | none |
|
|
71
|
+
| Add a mirrored or text-only variant of a pattern | `changeManifest` with `derivePattern`; `patternVariants` lists what is possible | none |
|
|
62
72
|
| Change a manifest by instruction | `editManifest` | 1 or 2 |
|
|
63
73
|
| List the shapes of a template | `inspectTemplate`, `studioView` | none |
|
|
64
74
|
|
|
65
75
|
## Facts worth knowing before writing code
|
|
66
76
|
|
|
67
77
|
- The package is ESM only (`import`, not `require`) and needs Node 22.18 or later.
|
|
68
|
-
- Entry points: `slotdeck` (everything that runs anywhere) and `slotdeck/node` (`directoryStore
|
|
69
|
-
the file system).
|
|
78
|
+
- Entry points: `slotdeck` (everything that runs anywhere) and `slotdeck/node` (`directoryStore` and
|
|
79
|
+
`fontFiles`, which use the file system).
|
|
70
80
|
- All binary data is `Uint8Array`. In Node a `Buffer` is a `Uint8Array`, so `fs.readFileSync(path)` can be
|
|
71
81
|
passed directly.
|
|
72
|
-
- Functions that call a model are `async`. `renderDeck`, `validateDeck`, `
|
|
73
|
-
`changeManifest`, `inspectTemplate` and `studioView` are synchronous.
|
|
82
|
+
- Functions that call a model are `async`. `renderDeck`, `validateDeck`, `slideAlternatives`, `checkManifest`,
|
|
83
|
+
`sampleDeck`, `changeManifest`, `patternVariants`, `inspectTemplate` and `studioView` are synchronous.
|
|
74
84
|
- A deck never contains binary data. Pictures are referenced by an **asset id** and passed to the renderer as
|
|
75
85
|
a map from id to bytes.
|
|
76
86
|
- Nothing is written to disk and nothing is sent anywhere by slotdeck itself, except what your own provider
|
package/docs/api-reference.md
CHANGED
|
@@ -16,10 +16,11 @@ every field.
|
|
|
16
16
|
### `loadTemplate`
|
|
17
17
|
|
|
18
18
|
```ts
|
|
19
|
-
function loadTemplate(pptx: Uint8Array, manifest: TemplateManifest): Template;
|
|
19
|
+
function loadTemplate(pptx: Uint8Array, manifest: TemplateManifest, options?: TemplateOptions): Template;
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
Unzips a template once. Reuse the result.
|
|
22
|
+
Unzips a template once. Reuse the result. `options.fonts` gives it font metrics, which turns on text measuring
|
|
23
|
+
everywhere the template is used (see "Measuring text" below).
|
|
23
24
|
|
|
24
25
|
### `renderDeck`
|
|
25
26
|
|
|
@@ -45,6 +46,26 @@ function extractAssets(template: Template, deck: DeckSpec, pptx: Uint8Array): Re
|
|
|
45
46
|
|
|
46
47
|
Reads a deck's pictures back from a pptx rendered from it, by asset id.
|
|
47
48
|
|
|
49
|
+
### `slideAlternatives`
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
function slideAlternatives(manifest: TemplateManifest, deck: DeckSpec, slide: number, options?: AlternativesOptions): SlideAlternative[];
|
|
53
|
+
|
|
54
|
+
interface AlternativesOptions { layout?: LayoutMode; patterns?: string[] }
|
|
55
|
+
interface SlideAlternative {
|
|
56
|
+
pattern: string; // a pattern that has a place for everything the slide says
|
|
57
|
+
description: string; // what that pattern is for
|
|
58
|
+
slide: SlideSpec; // the slide written for that pattern
|
|
59
|
+
changes: string[]; // what was done where the content was not copied slot for slot
|
|
60
|
+
dropped: string[]; // slots of the original whose photo or icon has no place
|
|
61
|
+
warnings: Issue[]; // what validateDeck says about the new slide
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The other patterns that can hold what slide number `slide` (from 1) of a deck says, with the slide written for
|
|
66
|
+
each. Synchronous, no model, no words changed. Throws a `RangeError` when the deck has no such slide. See
|
|
67
|
+
"Another layout for the same slide" in [layout-freedom.md](layout-freedom.md).
|
|
68
|
+
|
|
48
69
|
### `DeckValidationError`
|
|
49
70
|
|
|
50
71
|
```ts
|
|
@@ -66,13 +87,18 @@ Tell the kinds of slot value apart when walking a deck.
|
|
|
66
87
|
### Types
|
|
67
88
|
|
|
68
89
|
```ts
|
|
69
|
-
interface Template { pkg: PptxPackage; manifest: TemplateManifest }
|
|
90
|
+
interface Template { pkg: PptxPackage; manifest: TemplateManifest; fonts?: FontMetrics }
|
|
91
|
+
interface TemplateOptions { fonts?: FontMetrics }
|
|
70
92
|
|
|
71
93
|
interface RenderOptions { assets?: Record<string, Uint8Array>; layout?: LayoutMode }
|
|
72
|
-
interface RenderResult {
|
|
94
|
+
interface RenderResult {
|
|
95
|
+
pptx: Uint8Array;
|
|
96
|
+
warnings: Issue[];
|
|
97
|
+
shrunk: Array<{ slide: number; slot: string; size: number; scale: number }>; // texts set smaller to fit; empty without shrinkText
|
|
98
|
+
}
|
|
73
99
|
|
|
74
100
|
type LayoutMode = 'strict' | 'adaptive';
|
|
75
|
-
interface ValidateOptions { layout?: LayoutMode; assets?: Iterable<string
|
|
101
|
+
interface ValidateOptions { layout?: LayoutMode; assets?: Iterable<string>; measure?: TextMeasurer }
|
|
76
102
|
interface Issue { severity: 'error' | 'warning'; slide?: number; slot?: string; message: string }
|
|
77
103
|
|
|
78
104
|
interface DeckSpec {
|
|
@@ -219,6 +245,7 @@ interface PlanOptions {
|
|
|
219
245
|
patterns?: string[];
|
|
220
246
|
numberPatterns?: 'from-brief' | 'always' | 'never';
|
|
221
247
|
maxRepairs?: number;
|
|
248
|
+
review?: DeckReview; // a second look at every draft; see "Design checks and reviews"
|
|
222
249
|
onProgress?: (event: PlanProgress) => void;
|
|
223
250
|
signal?: AbortSignal;
|
|
224
251
|
}
|
|
@@ -296,6 +323,7 @@ const storeKeys: {
|
|
|
296
323
|
deck(id: string): string; // 'deck/<id>.json'
|
|
297
324
|
pptx(id: string): string; // 'pptx/<id>.pptx'
|
|
298
325
|
asset(id: string): string; // 'asset/<id>'
|
|
326
|
+
preview(id: string, slide: number, extension: string): string; // 'preview/<id>/slide-03.svg'
|
|
299
327
|
};
|
|
300
328
|
```
|
|
301
329
|
|
|
@@ -331,7 +359,9 @@ interface PresentationToolsOptions {
|
|
|
331
359
|
layout?: LayoutMode;
|
|
332
360
|
fields?: Record<string, string>;
|
|
333
361
|
numberPatterns?: 'from-brief' | 'always' | 'never';
|
|
362
|
+
review?: DeckReview; // a second look at every draft the tools write
|
|
334
363
|
thumbnail?: (patternId: string) => string | undefined;
|
|
364
|
+
preview?: PreviewProvider; // draws every presentation the tools create or change
|
|
335
365
|
newId?: (kind: 'plan' | 'deck') => string;
|
|
336
366
|
onProgress?: (event: GenerateProgress, tool: string) => void;
|
|
337
367
|
}
|
|
@@ -340,7 +370,7 @@ interface PresentationTools {
|
|
|
340
370
|
call(name: string, args: unknown, context?: { signal?: AbortSignal }): Promise<ToolResult>;
|
|
341
371
|
}
|
|
342
372
|
interface ToolDefinition { name: string; description: string; parameters: JsonSchema }
|
|
343
|
-
interface ToolResult { output: Record<string, unknown>; plan?: DeckPlan; deck?: DeckSpec; pptx?: Uint8Array }
|
|
373
|
+
interface ToolResult { output: Record<string, unknown>; plan?: DeckPlan; deck?: DeckSpec; pptx?: Uint8Array; previews?: SlidePreview[] }
|
|
344
374
|
```
|
|
345
375
|
|
|
346
376
|
## Providers
|
|
@@ -439,6 +469,17 @@ function changeManifest(template: Template, changes: ManifestChange[]): ChangeRe
|
|
|
439
469
|
function editManifest(template: Template, instruction: string, options: ManifestEditOptions): Promise<ManifestEditResult>;
|
|
440
470
|
```
|
|
441
471
|
|
|
472
|
+
### `patternVariants`, `VARIANTS`
|
|
473
|
+
|
|
474
|
+
```ts
|
|
475
|
+
function patternVariants(template: Template, pattern: string): VariantOption[];
|
|
476
|
+
const VARIANTS: readonly ['mirror', 'text-only', 'without'];
|
|
477
|
+
type PatternVariant = (typeof VARIANTS)[number];
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
The variants of a pattern that `changeManifest` can derive with `{ op: 'derivePattern' }`, each with whether
|
|
481
|
+
the pattern's slide allows it. See [template-studio.md](template-studio.md).
|
|
482
|
+
|
|
442
483
|
### `describeManifest`, `describeSlot`
|
|
443
484
|
|
|
444
485
|
```ts
|
|
@@ -493,6 +534,7 @@ interface DraftOptions {
|
|
|
493
534
|
name?: string;
|
|
494
535
|
slideImage?: (slide: number) => SlidePicture | undefined | Promise<SlidePicture | undefined>;
|
|
495
536
|
slides?: number[];
|
|
537
|
+
variants?: Array<'mirror' | 'text-only'>; // also add these variants of every pattern that allows them
|
|
496
538
|
concurrency?: number;
|
|
497
539
|
onProgress?: (event: { done: number; total: number; slide: number }) => void;
|
|
498
540
|
signal?: AbortSignal;
|
|
@@ -500,18 +542,19 @@ interface DraftOptions {
|
|
|
500
542
|
interface DraftResult { manifest: TemplateManifest; skipped: Array<{ slide: number; reason: string }>; issues: ManifestIssue[] }
|
|
501
543
|
|
|
502
544
|
interface ManifestIssue { severity: 'error' | 'warning'; pattern?: string; slot?: string; message: string }
|
|
503
|
-
interface SampleOptions { fill?: number; items?: 'drawn' | 'max' | 'min' }
|
|
545
|
+
interface SampleOptions { fill?: number; items?: 'drawn' | 'max' | 'min'; fit?: 'budget' | 'box' }
|
|
504
546
|
|
|
505
547
|
type ManifestChange =
|
|
506
548
|
| { op: 'setManifest'; name?: string; language?: string; direction?: Direction; alignOnDirectionChange?: AlignPolicy; textScale?: number | null }
|
|
507
549
|
| { op: 'addPattern'; slide: number; id: string; description?: string }
|
|
508
550
|
| { op: 'copyPattern'; pattern: string; id: string; description?: string }
|
|
551
|
+
| { op: 'derivePattern'; pattern: string; variant: PatternVariant; slot?: string; id?: string; description?: string }
|
|
509
552
|
| { op: 'removePattern'; pattern: string }
|
|
510
553
|
| { op: 'setPattern'; pattern: string; id?: string; description?: string; figures?: boolean }
|
|
511
554
|
| { op: 'addSlot'; pattern: string; shape: string; role: Role; name?: string; optional?: boolean }
|
|
512
555
|
| { op: 'removeSlot'; pattern: string; slot: string }
|
|
513
556
|
| ({ op: 'setSlot'; pattern: string; slot: string } & SlotPatch)
|
|
514
|
-
| { op: 'setRepeat'; pattern: string; min?: number; max?: number; item?: string; span?: { left: number; right: number } | null }
|
|
557
|
+
| { op: 'setRepeat'; pattern: string; min?: number; max?: number; item?: string; span?: { left: number; right: number } | null; widen?: number | null }
|
|
515
558
|
| { op: 'removeRepeat'; pattern: string };
|
|
516
559
|
|
|
517
560
|
interface SlotPatch {
|
|
@@ -547,6 +590,7 @@ interface ChangeResult {
|
|
|
547
590
|
rejected: Array<{ index: number; change: ManifestChange; reason: string }>;
|
|
548
591
|
issues: ManifestIssue[];
|
|
549
592
|
}
|
|
593
|
+
interface VariantOption { variant: PatternVariant; slot?: string; available: boolean; note: string }
|
|
550
594
|
interface ManifestEditOptions { llm: LlmProvider; signal?: AbortSignal }
|
|
551
595
|
interface ManifestEditResult extends ChangeResult { note: string }
|
|
552
596
|
|
|
@@ -582,6 +626,230 @@ interface SlideInfo { number: number; part: string; layout: string; shapes: Shap
|
|
|
582
626
|
interface TemplateInfo { slideWidth: number; slideHeight: number; defaultFontSize: number; slides: SlideInfo[] }
|
|
583
627
|
```
|
|
584
628
|
|
|
629
|
+
## Design checks and reviews
|
|
630
|
+
|
|
631
|
+
Explained in [design-checks.md](design-checks.md). Both need a template loaded with fonts.
|
|
632
|
+
|
|
633
|
+
### `checkDesign`
|
|
634
|
+
|
|
635
|
+
```ts
|
|
636
|
+
function checkDesign(template: Template, deck: DeckSpec, options?: DesignOptions): DesignIssue[];
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
Lists design problems that follow from measurement alone: text that runs over its box, boxes and cards left
|
|
640
|
+
mostly empty, headings that end in a lone word. Synchronous, no model, no picture.
|
|
641
|
+
|
|
642
|
+
### `designReview`
|
|
643
|
+
|
|
644
|
+
```ts
|
|
645
|
+
function designReview(template: Template, options?: DesignOptions): DeckReview;
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
The design checks as a review for the planner's `review` option. Reports `empty`, `uneven` and `orphan`.
|
|
649
|
+
|
|
650
|
+
### `visionReview`
|
|
651
|
+
|
|
652
|
+
```ts
|
|
653
|
+
function visionReview(options: VisionReviewOptions): DeckReview;
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
A review by a model that looks at pictures of the draft's slides, drawn by a `PreviewProvider` that gives
|
|
657
|
+
bitmap pictures. Not run against a live model; see the cautions in [design-checks.md](design-checks.md).
|
|
658
|
+
|
|
659
|
+
### Types
|
|
660
|
+
|
|
661
|
+
```ts
|
|
662
|
+
type DesignKind = 'overflow' | 'empty' | 'uneven' | 'orphan';
|
|
663
|
+
interface DesignIssue { severity: 'warning'; slide: number; slot: string; kind: DesignKind; message: string } // an Issue with a kind
|
|
664
|
+
interface DesignOptions {
|
|
665
|
+
layout?: LayoutMode;
|
|
666
|
+
kinds?: DesignKind[]; // default: all four
|
|
667
|
+
emptyBelow?: number; // default 1/3
|
|
668
|
+
headingSize?: number; // points; default 20
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
// A second look at a draft deck: problems to send back to the writing model.
|
|
672
|
+
type DeckReview = (deck: DeckSpec, context: { signal?: AbortSignal }) => Issue[] | Promise<Issue[]>;
|
|
673
|
+
|
|
674
|
+
interface VisionReviewOptions {
|
|
675
|
+
template: Template;
|
|
676
|
+
llm: LlmProvider; // a model that accepts pictures
|
|
677
|
+
preview: PreviewProvider; // must give PNG, JPEG, WebP or GIF
|
|
678
|
+
icons?: IconDef[];
|
|
679
|
+
assets?: AssetDef[];
|
|
680
|
+
layout?: LayoutMode; // default 'adaptive'
|
|
681
|
+
slidesPerRequest?: number; // default 6
|
|
682
|
+
}
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
## Slide previews
|
|
686
|
+
|
|
687
|
+
Explained in [preview.md](preview.md). slotdeck draws nothing itself: a `PreviewProvider` is a renderer you plug in.
|
|
688
|
+
|
|
689
|
+
### `pagusPreviews`
|
|
690
|
+
|
|
691
|
+
```ts
|
|
692
|
+
function pagusPreviews(core: PagusCore, renderer: PagusRenderer, options?: PagusOptions): PreviewProvider;
|
|
693
|
+
|
|
694
|
+
interface PagusCore { parse(data: ArrayBuffer): Promise<{ slides: readonly unknown[]; slideSize: unknown }> } // the `@pagus-kit/core` module
|
|
695
|
+
interface PagusRenderer { renderSlide(slide: never, slideSize: never, options?: never): { svg: string; width: number; height: number } } // the `@pagus-kit/renderer` module
|
|
696
|
+
interface PagusOptions { scale?: number; fontSubstitutes?: Record<string, string>; fontCss?: string }
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
A provider that draws slides with the Pagus library, which you install and pass in:
|
|
700
|
+
`pagusPreviews(pagusCore, pagusRenderer)` after `import * as pagusCore from '@pagus-kit/core'` and
|
|
701
|
+
`import * as pagusRenderer from '@pagus-kit/renderer'`. One SVG for each slide, with the text as real text for a
|
|
702
|
+
browser to set. Paragraphs that start with a right-to-left letter are marked as running right to left.
|
|
703
|
+
|
|
704
|
+
### `previewDeck`
|
|
705
|
+
|
|
706
|
+
```ts
|
|
707
|
+
function previewDeck(template: Template, deck: DeckSpec, preview: PreviewProvider, options?: PreviewDeckOptions): Promise<{ pptx: Uint8Array; previews: SlidePreview[] }>;
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
`renderDeck`, then the provider: the pptx and a picture of each of its slides.
|
|
711
|
+
|
|
712
|
+
### `patternPreviews`
|
|
713
|
+
|
|
714
|
+
```ts
|
|
715
|
+
function patternPreviews(template: Template, preview: PreviewProvider, options?: SampleOptions & { signal?: AbortSignal }): Promise<Record<string, SlidePreview>>;
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
A picture of every pattern, by pattern id: each pattern's slide of the template's sample deck.
|
|
719
|
+
|
|
720
|
+
### `previewExtension`
|
|
721
|
+
|
|
722
|
+
```ts
|
|
723
|
+
function previewExtension(preview: { mimeType: string }): string; // 'svg', 'png', 'jpg', ...
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
The file extension for a preview's type, for naming it in a store or on disk.
|
|
727
|
+
|
|
728
|
+
### Types
|
|
729
|
+
|
|
730
|
+
```ts
|
|
731
|
+
// What slotdeck needs from a slide renderer. Implement it to plug in any renderer.
|
|
732
|
+
interface PreviewProvider {
|
|
733
|
+
renderSlides(request: PreviewRequest): Promise<SlidePreview[]>; // one picture for each slide asked for, in slide order
|
|
734
|
+
}
|
|
735
|
+
interface PreviewRequest {
|
|
736
|
+
pptx: Uint8Array;
|
|
737
|
+
slides?: number[]; // 1-based; every slide when left out
|
|
738
|
+
signal?: AbortSignal;
|
|
739
|
+
}
|
|
740
|
+
interface SlidePreview {
|
|
741
|
+
slide: number; // 1-based
|
|
742
|
+
mimeType: string; // 'image/svg+xml', 'image/png'
|
|
743
|
+
data: Uint8Array; // SVG as UTF-8 text, or the bitmap's bytes
|
|
744
|
+
width?: number; // pixels
|
|
745
|
+
height?: number;
|
|
746
|
+
}
|
|
747
|
+
interface PreviewDeckOptions { assets?: Record<string, Uint8Array>; layout?: LayoutMode; signal?: AbortSignal }
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
## Measuring text
|
|
751
|
+
|
|
752
|
+
Explained in [text-fit.md](text-fit.md). All of it is optional: without fonts nothing here is used.
|
|
753
|
+
|
|
754
|
+
### `fontkitMetrics`
|
|
755
|
+
|
|
756
|
+
```ts
|
|
757
|
+
function fontkitMetrics(fontkit: FontkitModule, files: FontFiles): FontMetrics;
|
|
758
|
+
|
|
759
|
+
type FontFiles = Record<string, Uint8Array | Uint8Array[]>; // typeface name as the template states it -> its font files
|
|
760
|
+
interface FontkitModule { create(buffer: never, postscriptName?: string): unknown } // the `fontkit` module itself
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
Font metrics from font files, read with the `fontkit` library, which you install and pass in:
|
|
764
|
+
`fontkitMetrics(fontkit, { Calibri: [regularBytes, boldBytes] })` after `import * as fontkit from 'fontkit'`.
|
|
765
|
+
Reads TrueType, OpenType, collections, WOFF and WOFF2.
|
|
766
|
+
|
|
767
|
+
### `fontFiles` (from `slotdeck/node`)
|
|
768
|
+
|
|
769
|
+
```ts
|
|
770
|
+
function fontFiles(fontkit: FontkitModule, directory: string, typefaces: Iterable<string>): FontFiles;
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
Finds the font files of the given typefaces in a folder, such as the system's font folder, by the family name
|
|
774
|
+
each file states. Typefaces with no file there are left out.
|
|
775
|
+
|
|
776
|
+
### `templateFonts`
|
|
777
|
+
|
|
778
|
+
```ts
|
|
779
|
+
function templateFonts(template: Template, language?: string): TemplateFont[];
|
|
780
|
+
```
|
|
781
|
+
|
|
782
|
+
The typefaces a template's text slots are set in, with the weights and slants used: the font files to supply.
|
|
783
|
+
`language` (default: the manifest's) adds the typeface that text of that language is set in.
|
|
784
|
+
|
|
785
|
+
### `textMeasurer`
|
|
786
|
+
|
|
787
|
+
```ts
|
|
788
|
+
function textMeasurer(template: Template, fonts?: FontMetrics): TextMeasurer;
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
A measurer for a template. `fonts` defaults to the fonts the template was loaded with; it throws when there
|
|
792
|
+
are none. Pass the result to `validateDeck` as `measure`, or call `fit` yourself.
|
|
793
|
+
|
|
794
|
+
### `measuredBudgets`
|
|
795
|
+
|
|
796
|
+
```ts
|
|
797
|
+
function measuredBudgets(template: Template, options?: BudgetOptions): MeasuredBudget[];
|
|
798
|
+
```
|
|
799
|
+
|
|
800
|
+
How many characters each text slot's box holds, as measured, with a budget to set. The template must have
|
|
801
|
+
fonts.
|
|
802
|
+
|
|
803
|
+
### Types
|
|
804
|
+
|
|
805
|
+
```ts
|
|
806
|
+
// What slotdeck needs from a font library. Implement it to use a library other than fontkit.
|
|
807
|
+
interface FontMetrics {
|
|
808
|
+
face(typeface: string, style: FontStyle): FontFace | undefined; // undefined: the typeface was not supplied
|
|
809
|
+
fallback?(codePoint: number, style: FontStyle): FontFace | undefined; // a face for a character the chosen one lacks
|
|
810
|
+
}
|
|
811
|
+
interface FontStyle { bold: boolean; italic: boolean }
|
|
812
|
+
interface FontFace {
|
|
813
|
+
has(codePoint: number): boolean;
|
|
814
|
+
advances(text: string, kerning: boolean): number[]; // the advance of each glyph after shaping, in ems
|
|
815
|
+
substitute?: boolean; // stands in for a weight or slant that was not supplied
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
interface TemplateFont { typeface: string; bold: boolean; italic: boolean }
|
|
819
|
+
|
|
820
|
+
interface TextMeasurer {
|
|
821
|
+
fit(pattern: string | PatternDef, slot: string | TextSlotDef, text: string | string[], options?: FitOptions): TextFit | undefined;
|
|
822
|
+
missingFonts(): TemplateFont[];
|
|
823
|
+
}
|
|
824
|
+
interface FitOptions {
|
|
825
|
+
textScale?: number; // the factor on body text the deck is rendered with; default 1
|
|
826
|
+
shrink?: ShrinkLimit; // allow the text to be set smaller when it does not fit
|
|
827
|
+
items?: number; // for a slot of a row of items: how many items the slide has
|
|
828
|
+
}
|
|
829
|
+
interface ShrinkLimit { to: number; minSize?: number } // the shape of the manifest's shrinkText
|
|
830
|
+
interface TextFit {
|
|
831
|
+
fits: boolean;
|
|
832
|
+
lines: number; // lines the text takes
|
|
833
|
+
capacity: number; // lines of this text the box holds
|
|
834
|
+
overflow: number; // lines that do not fit
|
|
835
|
+
height: number; // points the text takes
|
|
836
|
+
room: number; // points the box gives
|
|
837
|
+
widthRatio: number; // for a box that does not wrap: longest line / box width
|
|
838
|
+
size: number; // font size of the first paragraph, in points
|
|
839
|
+
sizes: number[]; // font size of each paragraph
|
|
840
|
+
scale: number; // the factor the text was shrunk by; 1 when it was not
|
|
841
|
+
fitsChars: number; // about how many characters of such text the box holds
|
|
842
|
+
paragraphs: string[][]; // the lines of each paragraph
|
|
843
|
+
widths: number[][]; // the width of each of those lines, in points
|
|
844
|
+
lineRoom: number[]; // the width a line of each paragraph may take, in points
|
|
845
|
+
sampleLines: number; // lines the template's own sample text takes in the slot; 0 when there is none to compare with
|
|
846
|
+
approximate: boolean; // a typeface, weight or outline was stood in for
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
interface BudgetOptions { sample?: string; margin?: number } // margin defaults to 0.9
|
|
850
|
+
interface MeasuredBudget { pattern: string; slot: string; maxChars?: number; fits: number; suggested: number }
|
|
851
|
+
```
|
|
852
|
+
|
|
585
853
|
## Manifest types
|
|
586
854
|
|
|
587
855
|
Described field by field in [manifest-format.md](manifest-format.md).
|
|
@@ -601,6 +869,7 @@ interface TemplateManifest {
|
|
|
601
869
|
direction: Direction;
|
|
602
870
|
alignOnDirectionChange?: AlignPolicy;
|
|
603
871
|
textScale?: number; // enlarges body text in every deck made from the template
|
|
872
|
+
shrinkText?: { to: number; minSize?: number }; // lets text that does not fit be set smaller; needs fonts
|
|
604
873
|
patterns: PatternDef[];
|
|
605
874
|
}
|
|
606
875
|
interface PatternDef {
|
|
@@ -620,6 +889,7 @@ interface RepeatDef {
|
|
|
620
889
|
max?: number;
|
|
621
890
|
span?: { left: number; right: number };
|
|
622
891
|
columns?: number;
|
|
892
|
+
widen?: number; // fewer items on a line than drawn grow up to this factor to fill the row
|
|
623
893
|
}
|
|
624
894
|
type SlotDef = TextSlotDef | ImageSlotDef | TableSlotDef | ChartSlotDef;
|
|
625
895
|
|