@lofcz/pptist 2.0.9 → 2.0.10
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/embed/agentic-manifest.json +110 -116
- package/dist/embed/pptist-embed.css +1 -1
- package/dist/embed/pptist-embed.js +13689 -14692
- package/dist/types/embed/agentic/templates.d.ts +32 -0
- package/dist/types/embed/agentic/types.d.ts +33 -49
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@lofcz/pptist",
|
|
4
|
-
"packageVersion": "2.0.
|
|
5
|
-
"generatedAt": "2026-06-
|
|
6
|
-
"summary": "Authoring guidance for the PPTist agentic bridge. The fast, reliable way to build a deck: (1) pick ONE
|
|
4
|
+
"packageVersion": "2.0.10",
|
|
5
|
+
"generatedAt": "2026-06-02T05:17:27.619Z",
|
|
6
|
+
"summary": "Authoring guidance for the PPTist agentic bridge. The fast, reliable way to build a deck: (1) pick ONE built-in presentation template (the same styles as the template picker — template_1 … template_8) with deck.applyTemplate, (2) read templates.slidesCatalog for that template's slide slugs grouped by type (cover, contents, transition, content, end), then (3) insert slides with slides.insertFromTemplate and edit text via text.setMarkdown. Do NOT build decks from blank slides.create or hand-placed elements unless no template slide fits. Content is Markdown or plain text — never hand-written HTML. Pair this with the machine schema (command payload/return types) in the same manifest.",
|
|
7
7
|
"commandCount": 173,
|
|
8
8
|
"designSystem": {
|
|
9
|
-
"summary": "PPTist lays elements out in a fixed pixel coordinate space, not inches. Prefer
|
|
9
|
+
"summary": "PPTist lays elements out in a fixed pixel coordinate space, not inches. Prefer built-in templates (deck.applyTemplate + slides.insertFromTemplate) so colors, contrast, fonts and layout come from the official template library instead of being hand-picked. These tokens describe the *fallback* defaults for manual placement only.",
|
|
10
10
|
"coordinateSystem": {
|
|
11
11
|
"summary": "The default 16:9 canvas is 1000 x 562.5 px (viewport.size = 1000, viewport.ratio = 0.5625). Origin (0,0) is the top-left corner. Every element has left, top, width, height in px and rotate in degrees.",
|
|
12
12
|
"notes": [
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
"Keep a 40px safe margin from every edge (left/top >= 40, and left+width <= 960, top+height <= 522 on the default canvas).",
|
|
15
15
|
"Coordinates are absolute px, NOT inches/points. To port an inches-based layout, multiply inches by 100 (10in wide deck -> 1000px).",
|
|
16
16
|
"rotate is clockwise degrees about the element center. Lines use start/end points instead of width/height/rotate.",
|
|
17
|
-
"When you use slides.
|
|
17
|
+
"When you use slides.insertFromTemplate you do NOT compute coordinates or sizes — the template slide already has designed elements. The notes above only matter for manual element placement.",
|
|
18
18
|
"For manual text, write Markdown or plain text (text.create({ markdown }) / { content } as plain text). The engine stores text as HTML internally; you should not author raw HTML tags yourself (they are escaped and show as literal text). Per-run font sizing is an advanced manual concern — reach for a layout instead."
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
21
|
"tokens": {
|
|
22
|
-
"summary": "The neutral fallback palette/type scale (px) used when no
|
|
22
|
+
"summary": "The neutral fallback palette/type scale (px) used when no template theme is applied. PREFER deck.applyTemplate (see templates.catalog) — each built-in template ships a full theme and designed slides. Override individual tokens with deck.setTheme only when a template is not enough.",
|
|
23
23
|
"colors": {
|
|
24
24
|
"background": "#FFFFFF",
|
|
25
25
|
"primary": "#1F4E79",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"id": "deck",
|
|
51
51
|
"commandCount": 8,
|
|
52
52
|
"title": "Deck",
|
|
53
|
-
"summary": "Whole-document state: title, theme
|
|
54
|
-
"whenToUse": "Apply a
|
|
53
|
+
"summary": "Whole-document state: title, theme, viewport, templates, plus full get/set/patch.",
|
|
54
|
+
"whenToUse": "Apply a template theme with deck.applyTemplate up front; set the viewport once; use whole-document import/export at persistence boundaries."
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
"id": "import",
|
|
@@ -68,25 +68,18 @@
|
|
|
68
68
|
"whenToUse": "Persist/autosave from documentChanged events."
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
|
-
"id": "
|
|
72
|
-
"commandCount":
|
|
73
|
-
"title": "
|
|
74
|
-
"summary": "
|
|
75
|
-
"whenToUse": "FIRST. Pick exactly one
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"id": "layouts",
|
|
79
|
-
"commandCount": 1,
|
|
80
|
-
"title": "Layouts",
|
|
81
|
-
"summary": "Pre-composed slide recipes (title, section, bullets, twoColumn, imageText, bigStat, quote, chart, comparison, closing). layouts.catalog lists them with their content slots; slides.createFromLayout builds one.",
|
|
82
|
-
"whenToUse": "The default way to add a slide. Choose the layout that fits the content, fill its slots with text/bullets/data, and the engine places themed, contrast-safe elements. Only fall back to manual element placement for bespoke slides a layout can't express."
|
|
71
|
+
"id": "templates",
|
|
72
|
+
"commandCount": 2,
|
|
73
|
+
"title": "Templates",
|
|
74
|
+
"summary": "Built-in presentation templates (template_1 … template_8 — same as the UI template picker). templates.catalog lists them; templates.slidesCatalog lists insertable slide slugs by type; deck.applyTemplate sets the deck theme.",
|
|
75
|
+
"whenToUse": "FIRST. Pick exactly one template style for the whole deck, apply its theme, then insert slides by slug. Never invent custom slide layouts when a template slide fits."
|
|
83
76
|
},
|
|
84
77
|
{
|
|
85
78
|
"id": "slides",
|
|
86
79
|
"commandCount": 18,
|
|
87
80
|
"title": "Slides",
|
|
88
|
-
"summary": "
|
|
89
|
-
"whenToUse": "Prefer slides.
|
|
81
|
+
"summary": "Insert slides from built-in templates (slides.insertFromTemplate); read, update, delete, duplicate, move, select; set background, transition and speaker remark.",
|
|
82
|
+
"whenToUse": "Prefer slides.insertFromTemplate (one call per slide). After insert, use text.setMarkdown on the returned element ids. Avoid slides.create for deck building."
|
|
90
83
|
},
|
|
91
84
|
{
|
|
92
85
|
"id": "elements",
|
|
@@ -301,54 +294,74 @@
|
|
|
301
294
|
}
|
|
302
295
|
},
|
|
303
296
|
{
|
|
304
|
-
"name": "deck.
|
|
297
|
+
"name": "deck.applyTemplate",
|
|
305
298
|
"domain": "deck",
|
|
306
|
-
"payload": "{
|
|
307
|
-
"returns": "
|
|
308
|
-
"optional": true,
|
|
299
|
+
"payload": "{ templateId: string }",
|
|
300
|
+
"returns": "PptistApplyTemplateResult",
|
|
309
301
|
"doc": {
|
|
310
|
-
"summary": "Apply ONE
|
|
311
|
-
"details": "Do this once, up front, before
|
|
302
|
+
"summary": "Apply ONE built-in template theme to the whole deck (fonts, colors, background).",
|
|
303
|
+
"details": "Do this once, up front, before inserting slides. slides.insertFromTemplate also applies the theme automatically when the deck is still empty (default).",
|
|
312
304
|
"params": [
|
|
313
305
|
{
|
|
314
|
-
"name": "
|
|
306
|
+
"name": "templateId",
|
|
315
307
|
"type": "string",
|
|
316
308
|
"required": true,
|
|
317
|
-
"description": "A
|
|
318
|
-
},
|
|
319
|
-
{
|
|
320
|
-
"name": "applyToSlides",
|
|
321
|
-
"type": "boolean",
|
|
322
|
-
"required": false,
|
|
323
|
-
"description": "Also re-apply fonts/colors to existing slide content."
|
|
309
|
+
"description": "A built-in id from templates.catalog (e.g. 'template_1' for Crimson landscape)."
|
|
324
310
|
}
|
|
325
311
|
],
|
|
326
312
|
"examples": [
|
|
327
|
-
"await controller.deck.
|
|
313
|
+
"await controller.deck.applyTemplate('template_1')"
|
|
328
314
|
],
|
|
329
315
|
"tips": [
|
|
330
|
-
"
|
|
316
|
+
"Keep one template style for the whole deck. Do not hand-pick colors or fonts on top of a template."
|
|
331
317
|
],
|
|
332
318
|
"related": [
|
|
333
|
-
"
|
|
334
|
-
"
|
|
319
|
+
"templates.catalog",
|
|
320
|
+
"templates.slidesCatalog",
|
|
321
|
+
"slides.insertFromTemplate"
|
|
335
322
|
]
|
|
336
323
|
}
|
|
337
324
|
},
|
|
338
325
|
{
|
|
339
|
-
"name": "
|
|
340
|
-
"domain": "
|
|
326
|
+
"name": "templates.catalog",
|
|
327
|
+
"domain": "templates",
|
|
341
328
|
"payload": "undefined",
|
|
342
|
-
"returns": "
|
|
329
|
+
"returns": "PptistTemplateSummary[]",
|
|
330
|
+
"doc": {
|
|
331
|
+
"summary": "List built-in presentation templates (template_1 … template_8) with human-readable names — the same catalog as the template picker UI.",
|
|
332
|
+
"details": "Read this first. Each entry is a full designed theme (e.g. template_1 = Crimson landscape). Pick exactly one whose tone fits the audience, then apply it with deck.applyTemplate before inserting any slides.",
|
|
333
|
+
"examples": [
|
|
334
|
+
"const templates = controller.templates.catalog() // -> [{ id:'template_1', name:'Crimson landscape', ... }, ...]"
|
|
335
|
+
],
|
|
336
|
+
"related": [
|
|
337
|
+
"deck.applyTemplate",
|
|
338
|
+
"templates.slidesCatalog"
|
|
339
|
+
]
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"name": "templates.slidesCatalog",
|
|
344
|
+
"domain": "templates",
|
|
345
|
+
"payload": "{ templateId: string }",
|
|
346
|
+
"returns": "PptistTemplateSlidesCatalogResult",
|
|
343
347
|
"doc": {
|
|
344
|
-
"summary": "List
|
|
345
|
-
"details": "
|
|
348
|
+
"summary": "List insertable slides for a template, grouped by type (cover, contents, transition, content, end) with slug + description.",
|
|
349
|
+
"details": "Call after choosing a templateId. Each slug (e.g. cover_1, content_2) maps to one designed slide in that template. Pick the slug whose description best matches the slide you need, then call slides.insertFromTemplate.",
|
|
350
|
+
"params": [
|
|
351
|
+
{
|
|
352
|
+
"name": "templateId",
|
|
353
|
+
"type": "string",
|
|
354
|
+
"required": true,
|
|
355
|
+
"description": "Built-in template id from templates.catalog."
|
|
356
|
+
}
|
|
357
|
+
],
|
|
346
358
|
"examples": [
|
|
347
|
-
"const
|
|
359
|
+
"const catalog = await controller.templates.slidesCatalog('template_1')",
|
|
360
|
+
"// catalog.byType.cover -> [{ slug:'cover_1', description:'...', ... }, ...]"
|
|
348
361
|
],
|
|
349
362
|
"related": [
|
|
350
|
-
"
|
|
351
|
-
"
|
|
363
|
+
"slides.insertFromTemplate",
|
|
364
|
+
"templates.catalog"
|
|
352
365
|
]
|
|
353
366
|
}
|
|
354
367
|
},
|
|
@@ -374,23 +387,6 @@
|
|
|
374
387
|
"payload": "{ templates: Parameters<typeof stores.slides.setTemplates>[0] }",
|
|
375
388
|
"returns": "SlideTemplate[]"
|
|
376
389
|
},
|
|
377
|
-
{
|
|
378
|
-
"name": "layouts.catalog",
|
|
379
|
-
"domain": "layouts",
|
|
380
|
-
"payload": "undefined",
|
|
381
|
-
"returns": "PptistLayout[]",
|
|
382
|
-
"doc": {
|
|
383
|
-
"summary": "List the compositional slide layouts with their content slots (name, type, required, description).",
|
|
384
|
-
"details": "Each layout is a pre-composed, themed recipe. Read the slots to see what content it needs, then call slides.createFromLayout with that layout id and a slots object.",
|
|
385
|
-
"examples": [
|
|
386
|
-
"const layouts = controller.layouts.catalog() // -> [{ id:'bullets', slots:[{ name:'title', ... }, { name:'bullets', ... }] }, ...]"
|
|
387
|
-
],
|
|
388
|
-
"related": [
|
|
389
|
-
"slides.createFromLayout",
|
|
390
|
-
"styles.catalog"
|
|
391
|
-
]
|
|
392
|
-
}
|
|
393
|
-
},
|
|
394
390
|
{
|
|
395
391
|
"name": "slides.list",
|
|
396
392
|
"domain": "slides",
|
|
@@ -463,31 +459,25 @@
|
|
|
463
459
|
}
|
|
464
460
|
},
|
|
465
461
|
{
|
|
466
|
-
"name": "slides.
|
|
462
|
+
"name": "slides.insertFromTemplate",
|
|
467
463
|
"domain": "slides",
|
|
468
|
-
"payload": "
|
|
469
|
-
"returns": "
|
|
464
|
+
"payload": "PptistInsertFromTemplateInput",
|
|
465
|
+
"returns": "PptistInsertFromTemplateResult",
|
|
470
466
|
"doc": {
|
|
471
|
-
"summary": "
|
|
472
|
-
"details": "
|
|
467
|
+
"summary": "Insert a designed slide from a built-in template by slug. The PREFERRED way to add a slide.",
|
|
468
|
+
"details": "Clones the template slide (layout, decor, placeholder text boxes) into the deck. You do NOT pick coordinates or sizes. After insert, fill placeholders with text.setMarkdown on the returned elementIds. Do not use slides.create for normal deck building.",
|
|
473
469
|
"params": [
|
|
474
470
|
{
|
|
475
|
-
"name": "
|
|
471
|
+
"name": "templateId",
|
|
476
472
|
"type": "string",
|
|
477
473
|
"required": true,
|
|
478
|
-
"description": "
|
|
474
|
+
"description": "Built-in template id (same as deck.applyTemplate)."
|
|
479
475
|
},
|
|
480
476
|
{
|
|
481
|
-
"name": "
|
|
482
|
-
"type": "Record<string, unknown>",
|
|
483
|
-
"required": true,
|
|
484
|
-
"description": "Content for the layout's slots. Strings are Markdown/plain text; bullets accept string arrays; chart/comparison take labels/series/rows."
|
|
485
|
-
},
|
|
486
|
-
{
|
|
487
|
-
"name": "style",
|
|
477
|
+
"name": "slug",
|
|
488
478
|
"type": "string",
|
|
489
|
-
"required":
|
|
490
|
-
"description": "
|
|
479
|
+
"required": true,
|
|
480
|
+
"description": "Slide slug from templates.slidesCatalog (e.g. 'cover_1', 'contents_1', 'content_3')."
|
|
491
481
|
},
|
|
492
482
|
{
|
|
493
483
|
"name": "index",
|
|
@@ -496,25 +486,30 @@
|
|
|
496
486
|
"description": "Insert position; appends when omitted."
|
|
497
487
|
},
|
|
498
488
|
{
|
|
499
|
-
"name": "
|
|
500
|
-
"type": "
|
|
489
|
+
"name": "select",
|
|
490
|
+
"type": "boolean",
|
|
491
|
+
"required": false,
|
|
492
|
+
"description": "Select the new slide after insert (default true)."
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"name": "applyTemplateTheme",
|
|
496
|
+
"type": "boolean",
|
|
501
497
|
"required": false,
|
|
502
|
-
"description": "
|
|
498
|
+
"description": "Apply template theme when deck is empty (default true)."
|
|
503
499
|
}
|
|
504
500
|
],
|
|
505
501
|
"examples": [
|
|
506
|
-
"await controller.slides.
|
|
507
|
-
"await controller.slides.
|
|
508
|
-
"await controller.slides.createFromLayout({ layout:'chart', slots:{ title:'ATP yield by stage', chartType:'column', labels:['Glycolysis','Krebs','ETC'], series:[2, 2, 34] } })"
|
|
502
|
+
"await controller.slides.insertFromTemplate({ templateId:'template_1', slug:'cover_1' })",
|
|
503
|
+
"await controller.slides.insertFromTemplate({ templateId:'template_1', slug:'content_2', index:2 })"
|
|
509
504
|
],
|
|
510
505
|
"tips": [
|
|
511
|
-
"
|
|
512
|
-
"
|
|
506
|
+
"Plan slide flow: cover → contents → content slides → end. Match slug descriptions from slidesCatalog.",
|
|
507
|
+
"After insert, batch text.setMarkdown calls for each placeholder element id returned."
|
|
513
508
|
],
|
|
514
509
|
"related": [
|
|
515
|
-
"
|
|
516
|
-
"deck.
|
|
517
|
-
"
|
|
510
|
+
"templates.slidesCatalog",
|
|
511
|
+
"deck.applyTemplate",
|
|
512
|
+
"text.setMarkdown"
|
|
518
513
|
]
|
|
519
514
|
}
|
|
520
515
|
},
|
|
@@ -639,7 +634,7 @@
|
|
|
639
634
|
"returns": "PPTElement",
|
|
640
635
|
"doc": {
|
|
641
636
|
"summary": "Create any element type on a slide (manual placement). payload.element.type is required.",
|
|
642
|
-
"details": "Generic creator across all element types, for bespoke slides a
|
|
637
|
+
"details": "Generic creator across all element types, for bespoke slides a template can't express. Prefer slides.insertFromTemplate for whole slides, or the typed creators (text.create, shapes.create, charts.create, tables.create) for single elements. Provide left/top/width/height in canvas px and rotate in degrees. For text, pass Markdown via text.create instead of hand-writing HTML here.",
|
|
643
638
|
"params": [
|
|
644
639
|
{
|
|
645
640
|
"name": "slideId",
|
|
@@ -924,13 +919,13 @@
|
|
|
924
919
|
"controller.text.create({ slideId, markdown: '- First point\\n- Second point\\n- Third point', element:{ left:40, top:140, width:920, height:300, rotate:0 } })"
|
|
925
920
|
],
|
|
926
921
|
"tips": [
|
|
927
|
-
"Prefer slides.
|
|
922
|
+
"Prefer slides.insertFromTemplate for whole slides. Markdown flavor: markdown-it + markdown-it-texmath (KaTeX). Write Markdown, not HTML."
|
|
928
923
|
],
|
|
929
924
|
"related": [
|
|
930
925
|
"text.setMarkdown",
|
|
931
926
|
"text.setContent",
|
|
932
927
|
"richText.setContent",
|
|
933
|
-
"slides.
|
|
928
|
+
"slides.insertFromTemplate"
|
|
934
929
|
]
|
|
935
930
|
}
|
|
936
931
|
},
|
|
@@ -1632,17 +1627,17 @@
|
|
|
1632
1627
|
],
|
|
1633
1628
|
"guides": [
|
|
1634
1629
|
{
|
|
1635
|
-
"id": "
|
|
1636
|
-
"title": "How to build a deck (
|
|
1637
|
-
"summary": "The recommended flow:
|
|
1630
|
+
"id": "templates-flow",
|
|
1631
|
+
"title": "How to build a deck (built-in templates)",
|
|
1632
|
+
"summary": "The recommended flow: pick one template style, apply its theme, insert slides by slug, then edit text.",
|
|
1638
1633
|
"body": [
|
|
1639
|
-
"1. Read
|
|
1640
|
-
"2. Apply it once: deck.
|
|
1641
|
-
"3. Read
|
|
1642
|
-
"4. For each slide, call slides.
|
|
1643
|
-
"5.
|
|
1644
|
-
"6. After creating or editing a slide, look at
|
|
1645
|
-
"7. Only
|
|
1634
|
+
"1. Read templates.catalog and pick exactly ONE template (template_1 … template_8) whose tone fits the audience (e.g. template_1 Crimson landscape for bold keynotes, template_5 Minimal green for crisp lessons).",
|
|
1635
|
+
"2. Apply it once: deck.applyTemplate({ templateId:'template_1' }). This sets the deck theme. Do not hand-pick colors or fonts after this.",
|
|
1636
|
+
"3. Read templates.slidesCatalog({ templateId }) — slides are grouped by type: cover, contents, transition, content, end. Each entry has a slug and description.",
|
|
1637
|
+
"4. For each slide in your outline, call slides.insertFromTemplate({ templateId, slug }) with the slug that best matches (e.g. cover_1 for title, contents_1 for agenda, content_2 for a text+image slide).",
|
|
1638
|
+
"5. Use the returned elementIds: batch text.setMarkdown (or text.update) to replace placeholder copy. Author Markdown/plain text only — never HTML.",
|
|
1639
|
+
"6. After creating or editing a slide, look at the auto-screenshot. Fix overflow and literal markup before moving on.",
|
|
1640
|
+
"7. Only use slides.create + manual elements when no template slide in the catalog fits."
|
|
1646
1641
|
]
|
|
1647
1642
|
},
|
|
1648
1643
|
{
|
|
@@ -1654,7 +1649,7 @@
|
|
|
1654
1649
|
"Do NOT write raw HTML tags (<div>, <span style>, <br>, <b>, ...) into Markdown/plain-text inputs. They are ESCAPED and appear as literal angle-bracket text on the slide. The bridge attaches a warning when it detects this — treat that warning as a must-fix.",
|
|
1655
1650
|
"Use Markdown syntax for emphasis: **bold**, _italic_, `code`, and - / 1. for lists. Math uses $...$ / $$...$$ (KaTeX).",
|
|
1656
1651
|
"The only place literal HTML is appropriate is the explicit literal path (text.setContent / element.content) when you intentionally want to render markup — for example, displaying an HTML code snippet as content. Even then, prefer a fenced code block in Markdown when you just want code to look like code.",
|
|
1657
|
-
"If a screenshot shows literal tags or markup characters on a slide, you used the wrong path: re-author the text as Markdown via text.setMarkdown
|
|
1652
|
+
"If a screenshot shows literal tags or markup characters on a slide, you used the wrong path: re-author the text as Markdown via text.setMarkdown."
|
|
1658
1653
|
]
|
|
1659
1654
|
},
|
|
1660
1655
|
{
|
|
@@ -1662,8 +1657,8 @@
|
|
|
1662
1657
|
"title": "Manual placement (fallback)",
|
|
1663
1658
|
"summary": "For bespoke slides a layout can't express: the read -> style -> per-slide batch -> review loop.",
|
|
1664
1659
|
"body": [
|
|
1665
|
-
"Prefer
|
|
1666
|
-
"1. Read the current deck (controller.export.json() or deck.get) and apply a
|
|
1660
|
+
"Prefer built-in templates (see the templates-flow guide). Use manual placement only when no template slide fits.",
|
|
1661
|
+
"1. Read the current deck (controller.export.json() or deck.get) and apply a template theme (deck.applyTemplate) so element defaults inherit a coherent palette and font.",
|
|
1667
1662
|
"2. For each slide: create the slide, capture result.data.id, then add its elements in a single executeBatch so the slide is one undo step.",
|
|
1668
1663
|
"3. Place elements in canvas px (default 1000 x 562.5). Keep a 40px margin and a clear visual hierarchy: title row, content area, footer/citation.",
|
|
1669
1664
|
"4. Author body text in Markdown (text.create({ markdown }) / text.setMarkdown), never raw HTML.",
|
|
@@ -1798,7 +1793,7 @@
|
|
|
1798
1793
|
"PptistAnimationPreset": "export interface PptistAnimationPreset { name: string; value: string }",
|
|
1799
1794
|
"PptistAnimationPresetGroup": "export interface PptistAnimationPresetGroup { type: string; name: string; children: PptistAnimationPreset[] }",
|
|
1800
1795
|
"PptistAnimationSequenceStep": "export interface PptistAnimationSequenceStep { index: number; animations: PPTAnimation[]; autoNext: boolean }",
|
|
1801
|
-
"
|
|
1796
|
+
"PptistApplyTemplateResult": "export interface PptistApplyTemplateResult { templateId: string; theme: SlideTheme }",
|
|
1802
1797
|
"PptistAudioElementPatch": "export type PptistAudioElementPatch = Partial<Pick<PPTAudioElement, 'src' | 'ext' | 'autoplay' | 'loop' | 'color' | 'fixedRatio' | 'link' | 'name' | 'lock' | 'groupId'>> & { transform?: PptistAudioTransformPatch }",
|
|
1803
1798
|
"PptistAudioSourceInput": "export type PptistAudioSourceInput = PptistMediaAssetInput",
|
|
1804
1799
|
"PptistAudioTransformPatch": "export type PptistAudioTransformPatch = Pick<PptistElementTransformPatch, 'left' | 'top' | 'width' | 'height' | 'rotate'>",
|
|
@@ -1806,8 +1801,6 @@
|
|
|
1806
1801
|
"PptistChartElementPatch": "export interface PptistChartElementPatch { chartType?: ChartType; data?: ChartData; options?: ChartOptions; fill?: PPTChartElement['fill']; outline?: Partial<NonNullable<PPTChartElement['outline']>>; themeColors?: string[]; textColor?: string; lineColor?: string }",
|
|
1807
1802
|
"PptistCreateAudioInput": "export interface PptistCreateAudioInput extends PptistAudioElementPatch { id?: string; source?: PptistAudioSourceInput; slideId?: string; index?: number; select?: boolean }",
|
|
1808
1803
|
"PptistCreateChartInput": "export type PptistCreateChartInput = PptistChartElementPatch & Partial<Pick<PPTChartElement, 'id' | 'left' | 'top' | 'width' | 'height' | 'rotate'>> & { slideId?: string; index?: number; select?: boolean }",
|
|
1809
|
-
"PptistCreateFromLayoutInput": "export interface PptistCreateFromLayoutInput { layout: string; slots?: Record<string, unknown>; style?: string; index?: number; select?: boolean; background?: PptistLayoutBackgroundMode }",
|
|
1810
|
-
"PptistCreateFromLayoutResult": "export interface PptistCreateFromLayoutResult { slideId: string; elementIds: string[]; layout: string; styleId: string }",
|
|
1811
1804
|
"PptistCreateLatexElementInput": "export interface PptistCreateLatexElementInput { slideId?: string; index?: number; element: PptistLatexElementInput; select?: boolean }",
|
|
1812
1805
|
"PptistCreateLineElementInput": "export interface PptistCreateLineElementInput { slideId?: string; index?: number; element: PptistLineElementInput; select?: boolean }",
|
|
1813
1806
|
"PptistCreateTableInput": "export type PptistCreateTableInput = PptistTableElementPatch & { id?: string; slideId?: string; index?: number; select?: boolean; element?: Partial<PPTTableElement> }",
|
|
@@ -1827,6 +1820,8 @@
|
|
|
1827
1820
|
"PptistIdRemap": "export interface PptistIdRemap { slideIds: PptistIdMap; elementIds: PptistIdMap; groupIds: PptistIdMap; animationIds: PptistIdMap }",
|
|
1828
1821
|
"PptistInsertElementsInput": "export interface PptistInsertElementsInput { slideId?: string; index?: number; elements: PPTElement | PPTElement[]; animations?: PPTAnimation[]; offset?: number | { left?: number; top?: number }; select?: boolean; preserveExternalSlideLinks?: boolean; slideIdMap?: PptistIdMap }",
|
|
1829
1822
|
"PptistInsertElementsResult": "export interface PptistInsertElementsResult { slideId: string; elements: PPTElement[]; animations: PPTAnimation[]; remap: Omit<PptistIdRemap, 'slideIds'> & { slideIds?: PptistIdMap } }",
|
|
1823
|
+
"PptistInsertFromTemplateInput": "export interface PptistInsertFromTemplateInput { templateId: string; slug: string; index?: number; select?: boolean; applyTemplateTheme?: boolean }",
|
|
1824
|
+
"PptistInsertFromTemplateResult": "export interface PptistInsertFromTemplateResult { slideId: string; templateId: string; slug: string; elementIds: string[] }",
|
|
1830
1825
|
"PptistInsertSlidesInput": "export interface PptistInsertSlidesInput { slides: Slide | Slide[]; index?: number; select?: boolean; preserveExternalSlideLinks?: boolean }",
|
|
1831
1826
|
"PptistInsertSlidesResult": "export interface PptistInsertSlidesResult { slides: Slide[]; remap: PptistIdRemap }",
|
|
1832
1827
|
"PptistJsonPrimitive": "export type PptistJsonPrimitive = string | number | boolean | null",
|
|
@@ -1834,9 +1829,6 @@
|
|
|
1834
1829
|
"PptistLatexElementInput": "export type PptistLatexElementInput = PptistLatexElementSizing & Pick<PPTLatexElement, 'latex' | 'path'> & Partial<Pick<PPTLatexElement, 'id' | 'color' | 'strokeWidth' | 'viewBox' | 'fixedRatio' | 'link' | 'name' | 'lock' | 'groupId'>>",
|
|
1835
1830
|
"PptistLatexElementPatch": "export type PptistLatexElementPatch = Partial<PptistLatexElementSizing & Pick<PPTLatexElement, 'latex' | 'path' | 'color' | 'strokeWidth' | 'viewBox' | 'fixedRatio' | 'link' | 'name' | 'lock' | 'groupId'>>",
|
|
1836
1831
|
"PptistLatexElementSizing": "export interface PptistLatexElementSizing { left?: number; top?: number; width?: number; height?: number; rotate?: number }",
|
|
1837
|
-
"PptistLayout": "export interface PptistLayout { id: string; label: string; summary: string; bestFor: string; feature: boolean; slots: PptistLayoutSlotDef[] }",
|
|
1838
|
-
"PptistLayoutBackgroundMode": "export type PptistLayoutBackgroundMode = 'auto' | 'feature' | 'plain'",
|
|
1839
|
-
"PptistLayoutSlotDef": "export interface PptistLayoutSlotDef { name: string; type: 'text' | 'bullets' | 'image' | 'chart' | 'stats' | 'rows'; required: boolean; description: string }",
|
|
1840
1832
|
"PptistLineDirectionInput": "export type PptistLineDirectionInput = Broken2LineDirection | 'auto'",
|
|
1841
1833
|
"PptistLineElementInput": "export type PptistLineElementInput = Partial<Pick<PPTLineElement, 'id' | 'left' | 'top' | 'width' | 'style' | 'color' | 'points' | 'shadow' | 'broken' | 'broken2' | 'broken2Direction' | 'curve' | 'cubic' | 'link' | 'name' | 'lock' | 'groupId'>> & Pick<PPTLineElement, 'start' | 'end'>",
|
|
1842
1834
|
"PptistLineElementPatch": "export type PptistLineElementPatch = Partial<Pick<PPTLineElement, 'left' | 'top' | 'width' | 'start' | 'end' | 'style' | 'color' | 'points' | 'shadow' | 'broken' | 'broken2' | 'broken2Direction' | 'curve' | 'cubic' | 'link' | 'name' | 'lock' | 'groupId'>>",
|
|
@@ -1860,9 +1852,11 @@
|
|
|
1860
1852
|
"PptistSlideReference": "export type PptistSlideReference = string | number",
|
|
1861
1853
|
"PptistSlideThemePatch": "export type PptistSlideThemePatch = Omit<Partial<SlideTheme>, 'outline' | 'shadow'> & { outline?: Partial<SlideTheme['outline']>; shadow?: Partial<SlideTheme['shadow']> }",
|
|
1862
1854
|
"PptistSlideTransition": "export interface PptistSlideTransition { slideId: string; turningMode?: TurningMode }",
|
|
1863
|
-
"PptistStyleFonts": "export interface PptistStyleFonts { heading: string; body: string }",
|
|
1864
|
-
"PptistStyleSummary": "export interface PptistStyleSummary { id: string; label: string; description: string; fonts: PptistStyleFonts; preview: { background: string; title: string; body: string; accent: string; featureBackground: string } }",
|
|
1865
1855
|
"PptistTableElementPatch": "export type PptistTableElementPatch = Partial<Omit<PPTTableElement, 'type' | 'id' | 'outline' | 'theme'>> & { outline?: Partial<PPTTableElement['outline']>; theme?: Partial<NonNullable<PPTTableElement['theme']>> }",
|
|
1856
|
+
"PptistTemplateSlideEntry": "export interface PptistTemplateSlideEntry { slug: string; type: SlideType; description: string; elementCount: number }",
|
|
1857
|
+
"PptistTemplateSlidesCatalog": "export type PptistTemplateSlidesCatalog = Record<SlideType, PptistTemplateSlideEntry[]>",
|
|
1858
|
+
"PptistTemplateSlidesCatalogResult": "export interface PptistTemplateSlidesCatalogResult { templateId: string; templateName: string; slideCount: number; byType: PptistTemplateSlidesCatalog }",
|
|
1859
|
+
"PptistTemplateSummary": "export interface PptistTemplateSummary { id: BuiltInTemplateId | string; name: string; cover: string; origin?: string }",
|
|
1866
1860
|
"PptistVideoPatch": "export type PptistVideoPatch = PptistVideoPlaybackPatch & PptistVideoSizePatch & PptistVideoPositionPatch & PptistVideoStylePatch",
|
|
1867
1861
|
"PptistVideoPlaybackPatch": "export interface PptistVideoPlaybackPatch { src?: string; ext?: string; autoplay?: boolean; poster?: string }",
|
|
1868
1862
|
"PptistVideoPositionPatch": "export interface PptistVideoPositionPatch { left?: number; top?: number; rotate?: number }",
|