@openpresentation/opf 0.11.3 → 0.12.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 +16 -0
- package/dist/audit.d.ts +156 -0
- package/dist/audit.js +7 -0
- package/dist/{catalogs-CUClB3nl.d.ts → catalogs-u6TEeMcz.d.ts} +1 -1
- package/dist/catalogs.d.ts +2 -2
- package/dist/catalogs.js +2 -1
- package/dist/{chunk-UDPSGTZI.js → chunk-32DIB5BN.js} +12 -9
- package/dist/chunk-4FWCY4ZV.js +198 -0
- package/dist/chunk-6TSDIPSH.js +3624 -0
- package/dist/chunk-FYLJVF7X.js +18448 -0
- package/dist/{chunk-HJL64ETN.js → chunk-GJKJL4YY.js} +14 -0
- package/dist/chunk-JENJZR3F.js +1690 -0
- package/dist/{chunk-57NWIYX3.js → chunk-JVTN3HPP.js} +18 -4
- package/dist/{chunk-JTXCMVVP.js → chunk-RVN5C2FX.js} +754 -39
- package/dist/chunk-S5W34SIJ.js +1 -0
- package/dist/chunk-S667QI3M.js +261 -0
- package/dist/chunk-UQKJWHSS.js +1332 -0
- package/dist/{chunk-RXNFDGPC.js → chunk-WXSPETQ6.js} +311 -40
- package/dist/composition-DWbCiMwF.d.ts +1523 -0
- package/dist/composition.d.ts +1 -1
- package/dist/composition.js +2 -1
- package/dist/convert.d.ts +261 -0
- package/dist/convert.js +1107 -0
- package/dist/diff.d.ts +145 -0
- package/dist/diff.js +604 -0
- package/dist/docs.js +69 -15
- package/dist/examples.d.ts +1 -1
- package/dist/font-policy.d.ts +15 -0
- package/dist/font-policy.js +1 -1
- package/dist/format.d.ts +20 -0
- package/dist/format.js +83 -0
- package/dist/index.d.ts +173 -24
- package/dist/index.js +926 -262
- package/dist/lint.d.ts +4 -4
- package/dist/lint.js +6 -5
- package/dist/markdown.d.ts +74 -0
- package/dist/markdown.js +1941 -0
- package/dist/pagination.d.ts +1 -1
- package/dist/pagination.js +6 -5
- package/dist/patch.d.ts +99 -0
- package/dist/patch.js +6 -0
- package/dist/{presentation-Cn6vTOCP.d.ts → presentation-DRx4hpNZ.d.ts} +479 -32
- package/dist/repo-readme.js +1 -1
- package/dist/{schemas-X_NniU4A.d.ts → schemas-BSjlG8-R.d.ts} +28 -0
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.js +1 -1
- package/dist/spec/reference/font-policy.json +311 -40
- package/dist/spec/reference/font-policy.schema.json +40 -0
- package/dist/spec/reference/symbol-font-encodings.json +18354 -0
- package/dist/spec/reference/symbol-font-encodings.schema.json +156 -0
- package/dist/spec/schemas/opf.schema.json +608 -35
- package/dist/spec-files.d.ts +1 -1
- package/dist/spec-files.js +1 -1
- package/dist/symbol-font-encodings.d.ts +128 -0
- package/dist/symbol-font-encodings.js +1 -0
- package/dist/types.d.ts +4 -4
- package/dist/validator-bu396ffT.d.ts +172 -0
- package/dist/validator.d.ts +4 -36
- package/dist/validator.js +5 -4
- package/package.json +31 -2
- package/dist/chunk-BVLWFMDX.js +0 -1812
- package/dist/chunk-JCXHSTSM.js +0 -1366
- package/dist/composition-DzLwY-Mi.d.ts +0 -887
- /package/dist/{chunk-AEUSVEUY.js → chunk-3ZGSWEHK.js} +0 -0
|
@@ -286,7 +286,12 @@ var presentation = {
|
|
|
286
286
|
},
|
|
287
287
|
"variables": {
|
|
288
288
|
"$ref": "#/$defs/Variables",
|
|
289
|
-
"description": "Optional named
|
|
289
|
+
"description": "Optional named variables: deck colors referenced as 'var:<id>' (the original use), and typed content variables (text, number, date, image, url, list) referenced inline as '{{<id>}}' or whole as 'var:<id>'. Variables are what makes a deck a fillable template when combined with 'template': true. Color variables complement the color scheme: scheme slots and roles stay the primary vocabulary; variables cover deck-specific named colors that have no scheme slot."
|
|
290
|
+
},
|
|
291
|
+
"template": {
|
|
292
|
+
"type": "boolean",
|
|
293
|
+
"description": "Marks this document as a template: an incomplete OPF file. A template declares variables (top-level 'variables') and references them from content, and may leave required variables unfilled; validation then reports the unfilled variables instead of failing, and previews and exports use each variable's 'example'. Filling a template (resolveVariables, or 'opf fill') returns a normal deck with this marker removed. Absent or false: a normal deck, where an unfilled required variable is an error. See docs/templates-and-variables.md.",
|
|
294
|
+
"default": false
|
|
290
295
|
},
|
|
291
296
|
"narrative": {
|
|
292
297
|
"oneOf": [
|
|
@@ -337,6 +342,22 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
337
342
|
"minItems": 1,
|
|
338
343
|
"description": "Ordered array of slides that make up the presentation."
|
|
339
344
|
},
|
|
345
|
+
"references": {
|
|
346
|
+
"type": "array",
|
|
347
|
+
"items": {
|
|
348
|
+
"$ref": "#/$defs/Reference"
|
|
349
|
+
},
|
|
350
|
+
"description": "Sources that text runs cite with 'cite'. Ids are unique. A cited reference is listed in the footnote area of every slide that cites it, with a marker number assigned per deck in order of first use; a reference no run cites is a lint warning (opf/unused-reference). referencesSlide() turns the cited references into an ordinary list slide.",
|
|
351
|
+
"examples": [
|
|
352
|
+
[
|
|
353
|
+
{
|
|
354
|
+
"id": "gartner-2026",
|
|
355
|
+
"text": "Gartner, Market Guide for Presentation Tooling, 2026",
|
|
356
|
+
"url": "https://www.gartner.com"
|
|
357
|
+
}
|
|
358
|
+
]
|
|
359
|
+
]
|
|
360
|
+
},
|
|
340
361
|
"assets": {
|
|
341
362
|
"$ref": "#/$defs/Assets",
|
|
342
363
|
"description": "Optional reusable asset registry for images, data files, videos, documents, fonts, and other resources referenced elsewhere in the deck via 'asset:<id>' strings."
|
|
@@ -847,7 +868,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
847
868
|
},
|
|
848
869
|
"logo": {
|
|
849
870
|
"$ref": "#/$defs/Asset",
|
|
850
|
-
"description": "Source for the organization's logo image. Accepts an HTTPS URL, data URI, relative path (resolved against the OPF file location), local path, or 'asset:<id>' reference. Common formats are SVG (preferred for vector logos), PNG (with transparency), or JPG. The primary organization's logo is
|
|
871
|
+
"description": "Source for the organization's logo image. Accepts an HTTPS URL, data URI, relative path (resolved against the OPF file location), local path, or 'asset:<id>' reference. Common formats are SVG (preferred for vector logos), PNG (with transparency), or JPG. The primary organization's logo (role 'primary', else the first organization) is the fallback source wherever the deck logo is drawn: a slide's design.logo, then design.logo, then this value. It is therefore drawn on cover and section slides and by header/footer zones with logo: true, exactly as design.logo would be (see design.logo and docs/design-resolution.md).",
|
|
851
872
|
"examples": [
|
|
852
873
|
"https://cdn.acme.com/logo.svg",
|
|
853
874
|
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9V3iWggAAAAASUVORK5CYII=",
|
|
@@ -947,7 +968,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
947
968
|
},
|
|
948
969
|
"photo": {
|
|
949
970
|
"$ref": "#/$defs/Asset",
|
|
950
|
-
"description": "Source for the speaker's headshot image. Accepts an HTTPS URL, data URI, relative path (resolved against the OPF file location), local path, or 'asset:<id>' reference. Common formats are JPG or PNG; SVG is not appropriate for photographic content.
|
|
971
|
+
"description": "Source for the speaker's headshot image. Accepts an HTTPS URL, data URI, relative path (resolved against the OPF file location), local path, or 'asset:<id>' reference. Common formats are JPG or PNG; SVG is not appropriate for photographic content. Authoring metadata for hosts and layouts (cover and bio slides built by a host): the reference renderer and exporter do not draw it, because no slide field or layout slot places a speaker; it round-trips through PPTX provenance.",
|
|
951
972
|
"examples": [
|
|
952
973
|
"https://cdn.acme.com/headshots/alice.jpg",
|
|
953
974
|
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAr/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJ//2Q==",
|
|
@@ -1355,7 +1376,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1355
1376
|
"$ref": "#/$defs/LogoSet"
|
|
1356
1377
|
}
|
|
1357
1378
|
],
|
|
1358
|
-
"description": "Deck logo assets used by
|
|
1379
|
+
"description": "Deck logo assets used by covers, section dividers, headers, footers and picture bullets. A string or Asset object is the default logo source; the LogoSet object form provides light/dark, stacked, icon, and wordmark variants (see LogoSet for the selection order). Source precedence: a slide's design.logo, then this value, then the primary organization's logo; absence inherits. Placement (reference engines, vetoable): on a cover or section slide (no body payload on a heading-only layout such as title, title-subtitle or section-divider, or no layout) the lockup variant is drawn at the top-left of the free area, inside the slide padding and below any header furniture, in a box 56 reference pixels tall and at most four times as wide; the tag/title/subtitle group then centers in the remaining span. Content slides never get an automatic logo. Header and footer zones draw the icon variant when they set logo: true, and design.listBullet 'image' draws it as the picture bullet. composeSlide returns the cover box as geometry.logo.",
|
|
1359
1380
|
"examples": [
|
|
1360
1381
|
"asset:acme-logo",
|
|
1361
1382
|
{
|
|
@@ -1634,7 +1655,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1634
1655
|
"horizontal",
|
|
1635
1656
|
"vertical"
|
|
1636
1657
|
],
|
|
1637
|
-
"description": "Axis along which parallel body
|
|
1658
|
+
"description": "Axis along which parallel body content is arranged. Sets the root arrangement mode of blocks and root payloads when no composition.mode is set on the slide or on its layout record: 'vertical' is column, 'horizontal' is row. Precedence: composition.mode (the slide's own, else the layout record's geometry contract), then this value (slide design, then deck design), then the layout record's slideLayoutDirection, then automatic selection. A layout that carries a composition.mode keeps its grid or direction whatever this value says. Promoted regions (left, top:left, ...) keep their explicit geometry and nested groups keep their own composition."
|
|
1638
1659
|
},
|
|
1639
1660
|
"chartPrimary": {
|
|
1640
1661
|
"type": "string",
|
|
@@ -1645,7 +1666,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1645
1666
|
"left",
|
|
1646
1667
|
"right"
|
|
1647
1668
|
],
|
|
1648
|
-
"description": "
|
|
1669
|
+
"description": "Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's contentTypeChartPrimary. When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight."
|
|
1649
1670
|
},
|
|
1650
1671
|
"imageFill": {
|
|
1651
1672
|
"type": "string",
|
|
@@ -1661,7 +1682,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1661
1682
|
"character",
|
|
1662
1683
|
"image"
|
|
1663
1684
|
],
|
|
1664
|
-
"description": "
|
|
1685
|
+
"description": "Marker style for items and bullets lists. 'character' (the default) draws the glyph marker. 'image' draws the deck's icon logo (a slide's design.logo, then design.logo, then the primary organization's logo; light variants on dark backgrounds) as a picture bullet: a square of the marker's font size whose bottom sits on the marker baseline, so list geometry does not change. Without a logo the glyph is drawn and the engine reports unresolved-content at this field."
|
|
1665
1686
|
}
|
|
1666
1687
|
}
|
|
1667
1688
|
},
|
|
@@ -2098,7 +2119,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2098
2119
|
},
|
|
2099
2120
|
"accent": {
|
|
2100
2121
|
"$ref": "#/$defs/Font",
|
|
2101
|
-
"description": "Abstract role: font used for accent text
|
|
2122
|
+
"description": "Abstract role: font used for accent text. When set, the slide tag (eyebrow) and the quote body use this family instead of the body and heading families; nothing else changes. resolveFontFamilies() returns it as accent only when the scheme defines it. No direct OOXML slot: PPTX export writes it on those runs, and the theme fonts stay major/minor."
|
|
2102
2123
|
},
|
|
2103
2124
|
"code": {
|
|
2104
2125
|
"$ref": "#/$defs/Font",
|
|
@@ -2243,7 +2264,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2243
2264
|
"additionalProperties": {
|
|
2244
2265
|
"$ref": "#/$defs/Variable"
|
|
2245
2266
|
},
|
|
2246
|
-
"description": "Named
|
|
2267
|
+
"description": "Named variables, keyed by stable kebab-case id. A variable is a typed, named value the deck declares once and uses in many places: a color ('var:<id>' in color fields, the original use), or content that fills a template (text, number, date, image, url, list). Content is referenced inline as '{{<id>}}' inside any string, or whole as 'var:<id>' in a field of the matching type; '\\{{' writes a literal '{{'. A hex string is shorthand for a color variable. A variable with no 'value' is unfilled: expected in a template (root 'template': true), an error in a normal deck. Engines resolve variables with resolveVariables() before composing, rendering or exporting, so a template plus its values previews and exports exactly like the equivalent hand-written deck. See docs/templates-and-variables.md.",
|
|
2247
2268
|
"examples": [
|
|
2248
2269
|
{
|
|
2249
2270
|
"risk": "#B42318",
|
|
@@ -2252,6 +2273,22 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2252
2273
|
"value": "#0F4C81",
|
|
2253
2274
|
"description": "Brand highlight for emphasized runs."
|
|
2254
2275
|
}
|
|
2276
|
+
},
|
|
2277
|
+
{
|
|
2278
|
+
"client-name": {
|
|
2279
|
+
"type": "text",
|
|
2280
|
+
"example": "Acme Corp",
|
|
2281
|
+
"description": "Customer the deck is for."
|
|
2282
|
+
},
|
|
2283
|
+
"revenue": {
|
|
2284
|
+
"type": "number",
|
|
2285
|
+
"example": 125e4,
|
|
2286
|
+
"format": "$#,##0"
|
|
2287
|
+
},
|
|
2288
|
+
"review-date": {
|
|
2289
|
+
"type": "date",
|
|
2290
|
+
"example": "2026-10-01"
|
|
2291
|
+
}
|
|
2255
2292
|
}
|
|
2256
2293
|
]
|
|
2257
2294
|
},
|
|
@@ -2261,41 +2298,351 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2261
2298
|
"$ref": "#/$defs/HexColor"
|
|
2262
2299
|
},
|
|
2263
2300
|
{
|
|
2264
|
-
"
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
"
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
"type": "string",
|
|
2284
|
-
"description": "Optional prose describing what the variable is for, surfaced by pickers and agents."
|
|
2285
|
-
}
|
|
2286
|
-
}
|
|
2301
|
+
"$ref": "#/$defs/ColorVariable"
|
|
2302
|
+
},
|
|
2303
|
+
{
|
|
2304
|
+
"$ref": "#/$defs/TextVariable"
|
|
2305
|
+
},
|
|
2306
|
+
{
|
|
2307
|
+
"$ref": "#/$defs/NumberVariable"
|
|
2308
|
+
},
|
|
2309
|
+
{
|
|
2310
|
+
"$ref": "#/$defs/DateVariable"
|
|
2311
|
+
},
|
|
2312
|
+
{
|
|
2313
|
+
"$ref": "#/$defs/ImageVariable"
|
|
2314
|
+
},
|
|
2315
|
+
{
|
|
2316
|
+
"$ref": "#/$defs/UrlVariable"
|
|
2317
|
+
},
|
|
2318
|
+
{
|
|
2319
|
+
"$ref": "#/$defs/ListVariable"
|
|
2287
2320
|
}
|
|
2288
2321
|
],
|
|
2289
|
-
"description":
|
|
2322
|
+
"description": "A single named variable: a hex string (shorthand for a color variable) or an object whose 'type' is color, text, number, date, image, url or list. 'value' is the current value and is optional: a variable with no value is unfilled, which a template allows and a normal deck does not. 'example' only illustrates the slot (fill forms, template previews) and never reaches output.",
|
|
2290
2323
|
"examples": [
|
|
2291
2324
|
"#B42318",
|
|
2292
2325
|
{
|
|
2293
2326
|
"type": "color",
|
|
2294
2327
|
"value": "#B42318",
|
|
2295
2328
|
"description": "Risk emphasis."
|
|
2329
|
+
},
|
|
2330
|
+
{
|
|
2331
|
+
"type": "text",
|
|
2332
|
+
"example": "Acme Corp"
|
|
2333
|
+
},
|
|
2334
|
+
{
|
|
2335
|
+
"type": "list",
|
|
2336
|
+
"value": [
|
|
2337
|
+
"Faster",
|
|
2338
|
+
"Cheaper"
|
|
2339
|
+
]
|
|
2296
2340
|
}
|
|
2297
2341
|
]
|
|
2298
2342
|
},
|
|
2343
|
+
"ColorVariable": {
|
|
2344
|
+
"type": "object",
|
|
2345
|
+
"required": [
|
|
2346
|
+
"type"
|
|
2347
|
+
],
|
|
2348
|
+
"additionalProperties": false,
|
|
2349
|
+
"properties": {
|
|
2350
|
+
"type": {
|
|
2351
|
+
"type": "string",
|
|
2352
|
+
"const": "color",
|
|
2353
|
+
"description": "Variable kind. One of color, text, number, date, image, url or list."
|
|
2354
|
+
},
|
|
2355
|
+
"value": {
|
|
2356
|
+
"$ref": "#/$defs/HexColor",
|
|
2357
|
+
"description": "Hex color this variable resolves to."
|
|
2358
|
+
},
|
|
2359
|
+
"required": {
|
|
2360
|
+
"type": "boolean",
|
|
2361
|
+
"default": true,
|
|
2362
|
+
"description": "Whether the variable must be filled. Defaults to true: a variable with no 'value' is unfilled, and an unfilled required variable is an error in a normal deck and expected in a template. Set false for an optional slot: an unfilled optional variable resolves to empty text (inline tokens) or the field that references it is omitted."
|
|
2363
|
+
},
|
|
2364
|
+
"label": {
|
|
2365
|
+
"type": "string",
|
|
2366
|
+
"description": "Optional short human label for forms and fill panels."
|
|
2367
|
+
},
|
|
2368
|
+
"description": {
|
|
2369
|
+
"type": "string",
|
|
2370
|
+
"description": "Optional prose describing what the variable is for, surfaced by pickers, fill forms and agents."
|
|
2371
|
+
},
|
|
2372
|
+
"example": {
|
|
2373
|
+
"$ref": "#/$defs/HexColor",
|
|
2374
|
+
"description": "Illustrative color shown in fill forms and used when a template is previewed with examples. Never written to output."
|
|
2375
|
+
}
|
|
2376
|
+
},
|
|
2377
|
+
"description": "A named color. Content color fields reference it as 'var:<id>'. Colors resolve at render time through the ordinary color-reference path, so a color variable keeps working as before."
|
|
2378
|
+
},
|
|
2379
|
+
"TextVariable": {
|
|
2380
|
+
"type": "object",
|
|
2381
|
+
"required": [
|
|
2382
|
+
"type"
|
|
2383
|
+
],
|
|
2384
|
+
"additionalProperties": false,
|
|
2385
|
+
"properties": {
|
|
2386
|
+
"type": {
|
|
2387
|
+
"type": "string",
|
|
2388
|
+
"const": "text",
|
|
2389
|
+
"description": "Variable kind. One of color, text, number, date, image, url or list."
|
|
2390
|
+
},
|
|
2391
|
+
"value": {
|
|
2392
|
+
"oneOf": [
|
|
2393
|
+
{
|
|
2394
|
+
"type": "string"
|
|
2395
|
+
},
|
|
2396
|
+
{
|
|
2397
|
+
"type": "array",
|
|
2398
|
+
"items": {
|
|
2399
|
+
"$ref": "#/$defs/TextRun"
|
|
2400
|
+
}
|
|
2401
|
+
}
|
|
2402
|
+
],
|
|
2403
|
+
"description": "Text this variable resolves to: a plain string, or TextRun[] for rich text."
|
|
2404
|
+
},
|
|
2405
|
+
"required": {
|
|
2406
|
+
"type": "boolean",
|
|
2407
|
+
"default": true,
|
|
2408
|
+
"description": "Whether the variable must be filled. Defaults to true: a variable with no 'value' is unfilled, and an unfilled required variable is an error in a normal deck and expected in a template. Set false for an optional slot: an unfilled optional variable resolves to empty text (inline tokens) or the field that references it is omitted."
|
|
2409
|
+
},
|
|
2410
|
+
"label": {
|
|
2411
|
+
"type": "string",
|
|
2412
|
+
"description": "Optional short human label for forms and fill panels."
|
|
2413
|
+
},
|
|
2414
|
+
"description": {
|
|
2415
|
+
"type": "string",
|
|
2416
|
+
"description": "Optional prose describing what the variable is for, surfaced by pickers, fill forms and agents."
|
|
2417
|
+
},
|
|
2418
|
+
"example": {
|
|
2419
|
+
"oneOf": [
|
|
2420
|
+
{
|
|
2421
|
+
"type": "string"
|
|
2422
|
+
},
|
|
2423
|
+
{
|
|
2424
|
+
"type": "array",
|
|
2425
|
+
"items": {
|
|
2426
|
+
"$ref": "#/$defs/TextRun"
|
|
2427
|
+
}
|
|
2428
|
+
}
|
|
2429
|
+
],
|
|
2430
|
+
"description": "Illustrative text shown in fill forms and used when a template is previewed with examples. Never written to output."
|
|
2431
|
+
}
|
|
2432
|
+
},
|
|
2433
|
+
"description": "Text content. Plain string or rich TextRun[]. Insert it inline as '{{<id>}}' inside any string (rich text is flattened to plain text there), or reference it whole as 'var:<id>' in a field that accepts string or TextRun[] (the rich runs are kept)."
|
|
2434
|
+
},
|
|
2435
|
+
"NumberVariable": {
|
|
2436
|
+
"type": "object",
|
|
2437
|
+
"required": [
|
|
2438
|
+
"type"
|
|
2439
|
+
],
|
|
2440
|
+
"additionalProperties": false,
|
|
2441
|
+
"properties": {
|
|
2442
|
+
"type": {
|
|
2443
|
+
"type": "string",
|
|
2444
|
+
"const": "number",
|
|
2445
|
+
"description": "Variable kind. One of color, text, number, date, image, url or list."
|
|
2446
|
+
},
|
|
2447
|
+
"value": {
|
|
2448
|
+
"type": "number",
|
|
2449
|
+
"description": "Number this variable resolves to."
|
|
2450
|
+
},
|
|
2451
|
+
"required": {
|
|
2452
|
+
"type": "boolean",
|
|
2453
|
+
"default": true,
|
|
2454
|
+
"description": "Whether the variable must be filled. Defaults to true: a variable with no 'value' is unfilled, and an unfilled required variable is an error in a normal deck and expected in a template. Set false for an optional slot: an unfilled optional variable resolves to empty text (inline tokens) or the field that references it is omitted."
|
|
2455
|
+
},
|
|
2456
|
+
"label": {
|
|
2457
|
+
"type": "string",
|
|
2458
|
+
"description": "Optional short human label for forms and fill panels."
|
|
2459
|
+
},
|
|
2460
|
+
"description": {
|
|
2461
|
+
"type": "string",
|
|
2462
|
+
"description": "Optional prose describing what the variable is for, surfaced by pickers, fill forms and agents."
|
|
2463
|
+
},
|
|
2464
|
+
"example": {
|
|
2465
|
+
"type": "number",
|
|
2466
|
+
"description": "Illustrative number shown in fill forms and used when a template is previewed with examples. Never written to output."
|
|
2467
|
+
},
|
|
2468
|
+
"format": {
|
|
2469
|
+
"type": "string",
|
|
2470
|
+
"description": "Display pattern used by '{{<id>}}'. A literal prefix, a numeric part of '#', '0', ',' and '.', and a literal suffix. '0' pads digits, '#' is optional, ',' groups thousands, digits after '.' fix the decimals ('0' required, '#' optional), and a '%' in the suffix scales by 100. English separators only. Absent: the shortest decimal form.",
|
|
2471
|
+
"examples": [
|
|
2472
|
+
"#,##0",
|
|
2473
|
+
"0.0",
|
|
2474
|
+
"$#,##0.00",
|
|
2475
|
+
"0.#%",
|
|
2476
|
+
"#,##0.0M"
|
|
2477
|
+
]
|
|
2478
|
+
}
|
|
2479
|
+
},
|
|
2480
|
+
"description": "A number. '{{<id>}}' inserts it as text using 'format'; 'var:<id>' as a whole field supplies the number itself (chart values, font sizes)."
|
|
2481
|
+
},
|
|
2482
|
+
"DateVariable": {
|
|
2483
|
+
"type": "object",
|
|
2484
|
+
"required": [
|
|
2485
|
+
"type"
|
|
2486
|
+
],
|
|
2487
|
+
"additionalProperties": false,
|
|
2488
|
+
"properties": {
|
|
2489
|
+
"type": {
|
|
2490
|
+
"type": "string",
|
|
2491
|
+
"const": "date",
|
|
2492
|
+
"description": "Variable kind. One of color, text, number, date, image, url or list."
|
|
2493
|
+
},
|
|
2494
|
+
"value": {
|
|
2495
|
+
"type": "string",
|
|
2496
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
2497
|
+
"description": "ISO calendar date (YYYY-MM-DD) this variable resolves to."
|
|
2498
|
+
},
|
|
2499
|
+
"required": {
|
|
2500
|
+
"type": "boolean",
|
|
2501
|
+
"default": true,
|
|
2502
|
+
"description": "Whether the variable must be filled. Defaults to true: a variable with no 'value' is unfilled, and an unfilled required variable is an error in a normal deck and expected in a template. Set false for an optional slot: an unfilled optional variable resolves to empty text (inline tokens) or the field that references it is omitted."
|
|
2503
|
+
},
|
|
2504
|
+
"label": {
|
|
2505
|
+
"type": "string",
|
|
2506
|
+
"description": "Optional short human label for forms and fill panels."
|
|
2507
|
+
},
|
|
2508
|
+
"description": {
|
|
2509
|
+
"type": "string",
|
|
2510
|
+
"description": "Optional prose describing what the variable is for, surfaced by pickers, fill forms and agents."
|
|
2511
|
+
},
|
|
2512
|
+
"example": {
|
|
2513
|
+
"type": "string",
|
|
2514
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
2515
|
+
"description": "Illustrative ISO date shown in fill forms and used when a template is previewed with examples. Never written to output."
|
|
2516
|
+
},
|
|
2517
|
+
"format": {
|
|
2518
|
+
"type": "string",
|
|
2519
|
+
"description": "Date display pattern, the same LDML-style tokens as header/footer dateFormat: yyyy, yy, MMMM, MMM, MM, M, dd, d, EEEE, EEE and quoted literals. English names. Default 'MMMM d, yyyy'.",
|
|
2520
|
+
"examples": [
|
|
2521
|
+
"MMMM d, yyyy",
|
|
2522
|
+
"dd MMM yyyy",
|
|
2523
|
+
"M/d/yyyy",
|
|
2524
|
+
"EEEE, MMMM d"
|
|
2525
|
+
]
|
|
2526
|
+
}
|
|
2527
|
+
},
|
|
2528
|
+
"description": "A calendar date as an ISO YYYY-MM-DD string. No time zone and no clock are involved. '{{<id>}}' inserts it formatted with 'format'."
|
|
2529
|
+
},
|
|
2530
|
+
"ImageVariable": {
|
|
2531
|
+
"type": "object",
|
|
2532
|
+
"required": [
|
|
2533
|
+
"type"
|
|
2534
|
+
],
|
|
2535
|
+
"additionalProperties": false,
|
|
2536
|
+
"properties": {
|
|
2537
|
+
"type": {
|
|
2538
|
+
"type": "string",
|
|
2539
|
+
"const": "image",
|
|
2540
|
+
"description": "Variable kind. One of color, text, number, date, image, url or list."
|
|
2541
|
+
},
|
|
2542
|
+
"value": {
|
|
2543
|
+
"$ref": "#/$defs/Asset",
|
|
2544
|
+
"description": "Image source this variable resolves to."
|
|
2545
|
+
},
|
|
2546
|
+
"required": {
|
|
2547
|
+
"type": "boolean",
|
|
2548
|
+
"default": true,
|
|
2549
|
+
"description": "Whether the variable must be filled. Defaults to true: a variable with no 'value' is unfilled, and an unfilled required variable is an error in a normal deck and expected in a template. Set false for an optional slot: an unfilled optional variable resolves to empty text (inline tokens) or the field that references it is omitted."
|
|
2550
|
+
},
|
|
2551
|
+
"label": {
|
|
2552
|
+
"type": "string",
|
|
2553
|
+
"description": "Optional short human label for forms and fill panels."
|
|
2554
|
+
},
|
|
2555
|
+
"description": {
|
|
2556
|
+
"type": "string",
|
|
2557
|
+
"description": "Optional prose describing what the variable is for, surfaced by pickers, fill forms and agents."
|
|
2558
|
+
},
|
|
2559
|
+
"example": {
|
|
2560
|
+
"$ref": "#/$defs/Asset",
|
|
2561
|
+
"description": "Illustrative image source shown in fill forms and used when a template is previewed with examples. Never written to output."
|
|
2562
|
+
}
|
|
2563
|
+
},
|
|
2564
|
+
"description": "An image source: any Asset (an 'asset:<id>' reference, HTTPS URL, data URI, relative or local path, or an object with src, alt and metadata). Reference it whole as 'var:<id>' in an image, asset or src field; '{{<id>}}' inserts the source string."
|
|
2565
|
+
},
|
|
2566
|
+
"UrlVariable": {
|
|
2567
|
+
"type": "object",
|
|
2568
|
+
"required": [
|
|
2569
|
+
"type"
|
|
2570
|
+
],
|
|
2571
|
+
"additionalProperties": false,
|
|
2572
|
+
"properties": {
|
|
2573
|
+
"type": {
|
|
2574
|
+
"type": "string",
|
|
2575
|
+
"const": "url",
|
|
2576
|
+
"description": "Variable kind. One of color, text, number, date, image, url or list."
|
|
2577
|
+
},
|
|
2578
|
+
"value": {
|
|
2579
|
+
"type": "string",
|
|
2580
|
+
"pattern": "^(?:https?://|mailto:|tel:)\\S+$",
|
|
2581
|
+
"description": "Link target this variable resolves to."
|
|
2582
|
+
},
|
|
2583
|
+
"required": {
|
|
2584
|
+
"type": "boolean",
|
|
2585
|
+
"default": true,
|
|
2586
|
+
"description": "Whether the variable must be filled. Defaults to true: a variable with no 'value' is unfilled, and an unfilled required variable is an error in a normal deck and expected in a template. Set false for an optional slot: an unfilled optional variable resolves to empty text (inline tokens) or the field that references it is omitted."
|
|
2587
|
+
},
|
|
2588
|
+
"label": {
|
|
2589
|
+
"type": "string",
|
|
2590
|
+
"description": "Optional short human label for forms and fill panels."
|
|
2591
|
+
},
|
|
2592
|
+
"description": {
|
|
2593
|
+
"type": "string",
|
|
2594
|
+
"description": "Optional prose describing what the variable is for, surfaced by pickers, fill forms and agents."
|
|
2595
|
+
},
|
|
2596
|
+
"example": {
|
|
2597
|
+
"type": "string",
|
|
2598
|
+
"pattern": "^(?:https?://|mailto:|tel:)\\S+$",
|
|
2599
|
+
"description": "Illustrative link shown in fill forms and used when a template is previewed with examples. Never written to output."
|
|
2600
|
+
}
|
|
2601
|
+
},
|
|
2602
|
+
"description": "A link target (http, https, mailto or tel). Use it as '{{<id>}}' inside a link string or reference it whole as 'var:<id>' in a link field."
|
|
2603
|
+
},
|
|
2604
|
+
"ListVariable": {
|
|
2605
|
+
"type": "object",
|
|
2606
|
+
"required": [
|
|
2607
|
+
"type"
|
|
2608
|
+
],
|
|
2609
|
+
"additionalProperties": false,
|
|
2610
|
+
"properties": {
|
|
2611
|
+
"type": {
|
|
2612
|
+
"type": "string",
|
|
2613
|
+
"const": "list",
|
|
2614
|
+
"description": "Variable kind. One of color, text, number, date, image, url or list."
|
|
2615
|
+
},
|
|
2616
|
+
"value": {
|
|
2617
|
+
"type": "array",
|
|
2618
|
+
"items": {
|
|
2619
|
+
"type": "string"
|
|
2620
|
+
},
|
|
2621
|
+
"description": "Entries this variable resolves to."
|
|
2622
|
+
},
|
|
2623
|
+
"required": {
|
|
2624
|
+
"type": "boolean",
|
|
2625
|
+
"default": true,
|
|
2626
|
+
"description": "Whether the variable must be filled. Defaults to true: a variable with no 'value' is unfilled, and an unfilled required variable is an error in a normal deck and expected in a template. Set false for an optional slot: an unfilled optional variable resolves to empty text (inline tokens) or the field that references it is omitted."
|
|
2627
|
+
},
|
|
2628
|
+
"label": {
|
|
2629
|
+
"type": "string",
|
|
2630
|
+
"description": "Optional short human label for forms and fill panels."
|
|
2631
|
+
},
|
|
2632
|
+
"description": {
|
|
2633
|
+
"type": "string",
|
|
2634
|
+
"description": "Optional prose describing what the variable is for, surfaced by pickers, fill forms and agents."
|
|
2635
|
+
},
|
|
2636
|
+
"example": {
|
|
2637
|
+
"type": "array",
|
|
2638
|
+
"items": {
|
|
2639
|
+
"type": "string"
|
|
2640
|
+
},
|
|
2641
|
+
"description": "Illustrative entries shown in fill forms and used when a template is previewed with examples. Never written to output."
|
|
2642
|
+
}
|
|
2643
|
+
},
|
|
2644
|
+
"description": "A list of strings, for bullets and list items. A whole-string array element 'var:<id>' splices every entry into the array in place; a whole field 'var:<id>' becomes the array; '{{<id>}}' joins the entries with ', ' (or the separator after a pipe: '{{<id>|; }}')."
|
|
2645
|
+
},
|
|
2299
2646
|
"BackgroundShortcut": {
|
|
2300
2647
|
"oneOf": [
|
|
2301
2648
|
{
|
|
@@ -2365,7 +2712,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2365
2712
|
},
|
|
2366
2713
|
"color": {
|
|
2367
2714
|
"type": "string",
|
|
2368
|
-
"description": "Fixed solid fill color,
|
|
2715
|
+
"description": "Fixed solid fill color: a hex string, a color-scheme slot or role name, or a var:<id> variable reference (a ColorRef, resolved against the effective color scheme and the deck variables). Use { type: 'theme', slot: ... } for PowerPoint's four theme-controlled background choices.",
|
|
2369
2716
|
"examples": [
|
|
2370
2717
|
"#FFFFFF",
|
|
2371
2718
|
"#0F172A",
|
|
@@ -2414,7 +2761,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2414
2761
|
"properties": {
|
|
2415
2762
|
"color": {
|
|
2416
2763
|
"type": "string",
|
|
2417
|
-
"description": "Stop color
|
|
2764
|
+
"description": "Stop color: a hex string, a color-scheme slot or role name, or a var:<id> variable reference (a ColorRef).",
|
|
2418
2765
|
"examples": [
|
|
2419
2766
|
"#1E40AF",
|
|
2420
2767
|
"#22D3EE"
|
|
@@ -2519,14 +2866,14 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2519
2866
|
},
|
|
2520
2867
|
"foregroundColor": {
|
|
2521
2868
|
"type": "string",
|
|
2522
|
-
"description": "Foreground color for the pattern,
|
|
2869
|
+
"description": "Foreground color for the pattern: a hex string, a color-scheme slot or role name, or a var:<id> variable reference (a ColorRef).",
|
|
2523
2870
|
"examples": [
|
|
2524
2871
|
"#0F172A"
|
|
2525
2872
|
]
|
|
2526
2873
|
},
|
|
2527
2874
|
"backgroundColor": {
|
|
2528
2875
|
"type": "string",
|
|
2529
|
-
"description": "Background color behind the pattern,
|
|
2876
|
+
"description": "Background color behind the pattern: a hex string, a color-scheme slot or role name, or a var:<id> variable reference (a ColorRef).",
|
|
2530
2877
|
"examples": [
|
|
2531
2878
|
"#FFFFFF"
|
|
2532
2879
|
]
|
|
@@ -2543,7 +2890,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2543
2890
|
},
|
|
2544
2891
|
"LogoSet": {
|
|
2545
2892
|
"type": "object",
|
|
2546
|
-
"description": "Deck logo variants surfaced by
|
|
2893
|
+
"description": "Deck logo variants surfaced by covers, section dividers, headers, footers and picture bullets. Organization identity lives in organization; this object only controls visual rendering assets. Engines select one variant per slot and background tone (resolveLogo in @openpresentation/opf): same-tone variants first, neutral ones next, the opposite tone last. Lockup on a dark background: light, default, stackedLight, stacked, wordmarkLight, wordmark, iconLight, icon, then dark, stackedDark, wordmarkDark, iconDark; on a light background: dark, default, stackedDark, stacked, wordmarkDark, wordmark, iconDark, icon, then light, stackedLight, wordmarkLight, iconLight. The icon slot (headers, footers, picture bullets) tries iconLight or iconDark for the tone, then icon, then the lockup chain; the stacked slot tries stackedLight or stackedDark, then stacked, then the lockup chain.",
|
|
2547
2894
|
"additionalProperties": false,
|
|
2548
2895
|
"properties": {
|
|
2549
2896
|
"default": {
|
|
@@ -2636,8 +2983,12 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2636
2983
|
},
|
|
2637
2984
|
"HeaderFooterItem": {
|
|
2638
2985
|
"type": "object",
|
|
2639
|
-
"description": "One header/footer zone. Every configured field renders; fields in one zone stack top to bottom in the order image, text, organization, section, slide number, date. Put a date and a slide number in different zones to keep each on the zone's single line.",
|
|
2986
|
+
"description": "One header/footer zone. Every configured field renders; fields in one zone stack top to bottom in the order logo, image, text, organization, socials, section, slide number, date. Put a date and a slide number in different zones to keep each on the zone's single line.",
|
|
2640
2987
|
"properties": {
|
|
2988
|
+
"logo": {
|
|
2989
|
+
"type": "boolean",
|
|
2990
|
+
"description": "Whether to render the deck's icon logo in this zone: a slide's design.logo, then design.logo, then the primary organization's logo (LogoSet icon variants first, light ones on dark backgrounds). It is a generated image part in the same box as image; without a logo the engine reports unresolved-content at this field. Use image for a literal picture that is not the deck logo."
|
|
2991
|
+
},
|
|
2641
2992
|
"text": {
|
|
2642
2993
|
"type": "string",
|
|
2643
2994
|
"description": "Literal text rendered in this zone.",
|
|
@@ -2823,6 +3174,27 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2823
3174
|
},
|
|
2824
3175
|
"description": "Full-slide text-style bullet payload. Presence of this field infers type 'text'."
|
|
2825
3176
|
},
|
|
3177
|
+
"numbering": {
|
|
3178
|
+
"$ref": "#/$defs/NumberingSpec",
|
|
3179
|
+
"description": "Number the full-slide `items` or `bullets` instead of bulleting them. A style name (arabic, roman-upper, roman-lower, alpha-upper, alpha-lower) or a Numbering object applies to every list level; an array gives one entry per level (index = level, the last entry repeats for deeper levels). Counting follows PowerPoint: consecutive entries of one level count up from its start, and an entry of a shallower level restarts the deeper levels. Absent = bullets. Valid only with `items` or `bullets`. Native PowerPoint export writes a:buAutoNum with the matching scheme and startAt; the preview draws the same numbers at the same marker geometry.",
|
|
3180
|
+
"examples": [
|
|
3181
|
+
"arabic",
|
|
3182
|
+
"roman-lower",
|
|
3183
|
+
{
|
|
3184
|
+
"style": "alpha-upper",
|
|
3185
|
+
"start": 3,
|
|
3186
|
+
"suffix": "paren"
|
|
3187
|
+
},
|
|
3188
|
+
[
|
|
3189
|
+
"arabic",
|
|
3190
|
+
"alpha-lower",
|
|
3191
|
+
{
|
|
3192
|
+
"style": "roman-lower",
|
|
3193
|
+
"suffix": "paren-both"
|
|
3194
|
+
}
|
|
3195
|
+
]
|
|
3196
|
+
]
|
|
3197
|
+
},
|
|
2826
3198
|
"image": {
|
|
2827
3199
|
"$ref": "#/$defs/Asset",
|
|
2828
3200
|
"description": "Full-slide image source. Presence of this field infers type 'image'."
|
|
@@ -2879,6 +3251,10 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2879
3251
|
"$ref": "#/$defs/Timeline",
|
|
2880
3252
|
"description": `Full-slide timeline payload. An array is shorthand for { "events": value }; object form carries optional name and description metadata. Presence of this field infers type 'timeline'.`
|
|
2881
3253
|
},
|
|
3254
|
+
"caption": {
|
|
3255
|
+
"$ref": "#/$defs/Caption",
|
|
3256
|
+
"description": "Caption for the slide's root image, chart, table or video payload. Valid only when the slide root holds exactly one of those payloads."
|
|
3257
|
+
},
|
|
2882
3258
|
"blocks": {
|
|
2883
3259
|
"type": "array",
|
|
2884
3260
|
"items": {
|
|
@@ -3162,6 +3538,27 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
3162
3538
|
]
|
|
3163
3539
|
]
|
|
3164
3540
|
},
|
|
3541
|
+
"numbering": {
|
|
3542
|
+
"$ref": "#/$defs/NumberingSpec",
|
|
3543
|
+
"description": "Number the payload's `items` or `bullets` instead of bulleting them. A style name (arabic, roman-upper, roman-lower, alpha-upper, alpha-lower) or a Numbering object applies to every list level; an array gives one entry per level (index = level, the last entry repeats for deeper levels). Counting follows PowerPoint: consecutive entries of one level count up from its start, and an entry of a shallower level restarts the deeper levels. Absent = bullets. Valid only with `items` or `bullets`. Native PowerPoint export writes a:buAutoNum with the matching scheme and startAt; the preview draws the same numbers at the same marker geometry.",
|
|
3544
|
+
"examples": [
|
|
3545
|
+
"arabic",
|
|
3546
|
+
"roman-lower",
|
|
3547
|
+
{
|
|
3548
|
+
"style": "alpha-upper",
|
|
3549
|
+
"start": 3,
|
|
3550
|
+
"suffix": "paren"
|
|
3551
|
+
},
|
|
3552
|
+
[
|
|
3553
|
+
"arabic",
|
|
3554
|
+
"alpha-lower",
|
|
3555
|
+
{
|
|
3556
|
+
"style": "roman-lower",
|
|
3557
|
+
"suffix": "paren-both"
|
|
3558
|
+
}
|
|
3559
|
+
]
|
|
3560
|
+
]
|
|
3561
|
+
},
|
|
3165
3562
|
"image": {
|
|
3166
3563
|
"$ref": "#/$defs/Asset",
|
|
3167
3564
|
"description": "Source for an image item.",
|
|
@@ -3283,6 +3680,10 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
3283
3680
|
}
|
|
3284
3681
|
]
|
|
3285
3682
|
},
|
|
3683
|
+
"caption": {
|
|
3684
|
+
"$ref": "#/$defs/Caption",
|
|
3685
|
+
"description": "Caption for an image, chart, table or video payload, composed inside the block's region (below the media by default). Invalid on other payload kinds and on groups."
|
|
3686
|
+
},
|
|
3286
3687
|
"blocks": {
|
|
3287
3688
|
"type": "array",
|
|
3288
3689
|
"minItems": 1,
|
|
@@ -3853,6 +4254,12 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
3853
4254
|
"type": "integer",
|
|
3854
4255
|
"minimum": 0,
|
|
3855
4256
|
"description": "Zero-based nesting level for the list item."
|
|
4257
|
+
},
|
|
4258
|
+
"start": {
|
|
4259
|
+
"type": "integer",
|
|
4260
|
+
"minimum": 1,
|
|
4261
|
+
"maximum": 32767,
|
|
4262
|
+
"description": "Restart the list's numbering at this number for this item (counted at its level); the entries after it continue from it. Only meaningful when the payload has `numbering`. Paginated continuation pages use it to keep the numbers of the whole list."
|
|
3856
4263
|
}
|
|
3857
4264
|
}
|
|
3858
4265
|
}
|
|
@@ -3905,11 +4312,80 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
3905
4312
|
"type": "integer",
|
|
3906
4313
|
"minimum": 0,
|
|
3907
4314
|
"description": "Zero-based nesting level for the bullet."
|
|
4315
|
+
},
|
|
4316
|
+
"start": {
|
|
4317
|
+
"type": "integer",
|
|
4318
|
+
"minimum": 1,
|
|
4319
|
+
"maximum": 32767,
|
|
4320
|
+
"description": "Restart the list's numbering at this number for this bullet (counted at its level); the entries after it continue from it. Only meaningful when the payload has `numbering`. Paginated continuation pages use it to keep the numbers of the whole list."
|
|
3908
4321
|
}
|
|
3909
4322
|
}
|
|
3910
4323
|
}
|
|
3911
4324
|
]
|
|
3912
4325
|
},
|
|
4326
|
+
"NumberingStyle": {
|
|
4327
|
+
"type": "string",
|
|
4328
|
+
"enum": [
|
|
4329
|
+
"arabic",
|
|
4330
|
+
"roman-upper",
|
|
4331
|
+
"roman-lower",
|
|
4332
|
+
"alpha-upper",
|
|
4333
|
+
"alpha-lower"
|
|
4334
|
+
],
|
|
4335
|
+
"description": "A list number style: 1, 2, 3; I, II, III; i, ii, iii; A, B, C; a, b, c. Alphabetic numbering past 26 repeats the letter as PowerPoint does (aa, bb, cc). Roman numerals stop at 3999; larger values are drawn in arabic with a numbering-adapted diagnostic."
|
|
4336
|
+
},
|
|
4337
|
+
"Numbering": {
|
|
4338
|
+
"type": "object",
|
|
4339
|
+
"additionalProperties": false,
|
|
4340
|
+
"description": "Numbering of one list level.",
|
|
4341
|
+
"properties": {
|
|
4342
|
+
"style": {
|
|
4343
|
+
"$ref": "#/$defs/NumberingStyle",
|
|
4344
|
+
"description": "Number style. Default arabic."
|
|
4345
|
+
},
|
|
4346
|
+
"start": {
|
|
4347
|
+
"type": "integer",
|
|
4348
|
+
"minimum": 1,
|
|
4349
|
+
"maximum": 32767,
|
|
4350
|
+
"description": "First number counted at this level. Default 1. Native PowerPoint accepts 1 to 32767."
|
|
4351
|
+
},
|
|
4352
|
+
"suffix": {
|
|
4353
|
+
"type": "string",
|
|
4354
|
+
"enum": [
|
|
4355
|
+
"period",
|
|
4356
|
+
"paren",
|
|
4357
|
+
"paren-both"
|
|
4358
|
+
],
|
|
4359
|
+
"description": "Text after the number: period (1.), paren (1)) or paren-both ((1)). Default period."
|
|
4360
|
+
}
|
|
4361
|
+
}
|
|
4362
|
+
},
|
|
4363
|
+
"NumberingSpec": {
|
|
4364
|
+
"description": "The value of a numbering field: a style name or Numbering object for every level, or an array with one entry per level (at most 9, the native depth).",
|
|
4365
|
+
"oneOf": [
|
|
4366
|
+
{
|
|
4367
|
+
"$ref": "#/$defs/NumberingStyle"
|
|
4368
|
+
},
|
|
4369
|
+
{
|
|
4370
|
+
"$ref": "#/$defs/Numbering"
|
|
4371
|
+
},
|
|
4372
|
+
{
|
|
4373
|
+
"type": "array",
|
|
4374
|
+
"minItems": 1,
|
|
4375
|
+
"maxItems": 9,
|
|
4376
|
+
"items": {
|
|
4377
|
+
"oneOf": [
|
|
4378
|
+
{
|
|
4379
|
+
"$ref": "#/$defs/NumberingStyle"
|
|
4380
|
+
},
|
|
4381
|
+
{
|
|
4382
|
+
"$ref": "#/$defs/Numbering"
|
|
4383
|
+
}
|
|
4384
|
+
]
|
|
4385
|
+
}
|
|
4386
|
+
}
|
|
4387
|
+
]
|
|
4388
|
+
},
|
|
3913
4389
|
"TextRun": {
|
|
3914
4390
|
"description": "A contiguous run of text. Strings cover unformatted spans; object form adds character formatting.",
|
|
3915
4391
|
"oneOf": [
|
|
@@ -3984,11 +4460,157 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
3984
4460
|
"subscript": {
|
|
3985
4461
|
"type": "boolean",
|
|
3986
4462
|
"description": "Whether the run is rendered as subscript."
|
|
4463
|
+
},
|
|
4464
|
+
"cite": {
|
|
4465
|
+
"oneOf": [
|
|
4466
|
+
{
|
|
4467
|
+
"type": "string",
|
|
4468
|
+
"minLength": 1
|
|
4469
|
+
},
|
|
4470
|
+
{
|
|
4471
|
+
"type": "array",
|
|
4472
|
+
"minItems": 1,
|
|
4473
|
+
"items": {
|
|
4474
|
+
"type": "string",
|
|
4475
|
+
"minLength": 1
|
|
4476
|
+
}
|
|
4477
|
+
}
|
|
4478
|
+
],
|
|
4479
|
+
"description": "One or more ids from the top-level references list that this run cites. Engines draw a superscript marker ('1', or '1,2' for several ids) directly after the run and list '<n> <reference text>' in the slide's footnote area; markers are numbered per deck in order of first use, and the same id keeps its number. An id missing from references is a validation error (cite-unknown-reference). Supported in text, bullets and list item runs.",
|
|
4480
|
+
"examples": [
|
|
4481
|
+
"gartner-2026",
|
|
4482
|
+
[
|
|
4483
|
+
"gartner-2026",
|
|
4484
|
+
"annual-report"
|
|
4485
|
+
]
|
|
4486
|
+
]
|
|
4487
|
+
},
|
|
4488
|
+
"footnote": {
|
|
4489
|
+
"oneOf": [
|
|
4490
|
+
{
|
|
4491
|
+
"type": "string",
|
|
4492
|
+
"minLength": 1
|
|
4493
|
+
},
|
|
4494
|
+
{
|
|
4495
|
+
"type": "array",
|
|
4496
|
+
"minItems": 1,
|
|
4497
|
+
"items": {
|
|
4498
|
+
"$ref": "#/$defs/TextRun"
|
|
4499
|
+
}
|
|
4500
|
+
}
|
|
4501
|
+
],
|
|
4502
|
+
"description": "An inline note for this run, without a references entry. Engines draw a superscript marker after the run and list the note in the slide's footnote area; every footnote takes a new number in the deck's marker sequence. Supported in text, bullets and list item runs.",
|
|
4503
|
+
"examples": [
|
|
4504
|
+
"Excludes the discontinued hardware line."
|
|
4505
|
+
]
|
|
4506
|
+
}
|
|
4507
|
+
}
|
|
4508
|
+
}
|
|
4509
|
+
]
|
|
4510
|
+
},
|
|
4511
|
+
"Caption": {
|
|
4512
|
+
"description": "A caption for an image, chart, table or video payload. A string or TextRun[] is the caption text placed below the media; object form adds the position and alignment.",
|
|
4513
|
+
"oneOf": [
|
|
4514
|
+
{
|
|
4515
|
+
"type": "string"
|
|
4516
|
+
},
|
|
4517
|
+
{
|
|
4518
|
+
"type": "array",
|
|
4519
|
+
"items": {
|
|
4520
|
+
"$ref": "#/$defs/TextRun"
|
|
4521
|
+
}
|
|
4522
|
+
},
|
|
4523
|
+
{
|
|
4524
|
+
"type": "object",
|
|
4525
|
+
"required": [
|
|
4526
|
+
"text"
|
|
4527
|
+
],
|
|
4528
|
+
"additionalProperties": false,
|
|
4529
|
+
"properties": {
|
|
4530
|
+
"text": {
|
|
4531
|
+
"oneOf": [
|
|
4532
|
+
{
|
|
4533
|
+
"type": "string"
|
|
4534
|
+
},
|
|
4535
|
+
{
|
|
4536
|
+
"type": "array",
|
|
4537
|
+
"items": {
|
|
4538
|
+
"$ref": "#/$defs/TextRun"
|
|
4539
|
+
}
|
|
4540
|
+
}
|
|
4541
|
+
],
|
|
4542
|
+
"description": "Caption text: a string or TextRun[] for inline rich text."
|
|
4543
|
+
},
|
|
4544
|
+
"position": {
|
|
4545
|
+
"type": "string",
|
|
4546
|
+
"enum": [
|
|
4547
|
+
"below",
|
|
4548
|
+
"above"
|
|
4549
|
+
],
|
|
4550
|
+
"description": "Where the caption band sits inside the block's region: below the media (default) or above it. Core composition reserves the band and shrinks the media by its height."
|
|
4551
|
+
},
|
|
4552
|
+
"align": {
|
|
4553
|
+
"type": "string",
|
|
4554
|
+
"enum": [
|
|
4555
|
+
"left",
|
|
4556
|
+
"center",
|
|
4557
|
+
"right"
|
|
4558
|
+
],
|
|
4559
|
+
"description": "Horizontal alignment of the caption text within the block. Defaults to left."
|
|
3987
4560
|
}
|
|
3988
4561
|
}
|
|
3989
4562
|
}
|
|
4563
|
+
],
|
|
4564
|
+
"examples": [
|
|
4565
|
+
"Figure 1. Quarterly revenue by region",
|
|
4566
|
+
{
|
|
4567
|
+
"text": "Source: internal reporting",
|
|
4568
|
+
"position": "above",
|
|
4569
|
+
"align": "center"
|
|
4570
|
+
}
|
|
3990
4571
|
]
|
|
3991
4572
|
},
|
|
4573
|
+
"Reference": {
|
|
4574
|
+
"type": "object",
|
|
4575
|
+
"description": "A source that runs cite with 'cite'. Cited references are listed in the footnote area of the slides that cite them, numbered per deck in order of first use; referencesSlide() builds an ordinary list slide of them.",
|
|
4576
|
+
"additionalProperties": false,
|
|
4577
|
+
"required": [
|
|
4578
|
+
"id",
|
|
4579
|
+
"text"
|
|
4580
|
+
],
|
|
4581
|
+
"properties": {
|
|
4582
|
+
"id": {
|
|
4583
|
+
"type": "string",
|
|
4584
|
+
"minLength": 1,
|
|
4585
|
+
"description": "Identifier runs cite. Unique within the references list.",
|
|
4586
|
+
"examples": [
|
|
4587
|
+
"gartner-2026",
|
|
4588
|
+
"annual-report"
|
|
4589
|
+
]
|
|
4590
|
+
},
|
|
4591
|
+
"text": {
|
|
4592
|
+
"oneOf": [
|
|
4593
|
+
{
|
|
4594
|
+
"type": "string"
|
|
4595
|
+
},
|
|
4596
|
+
{
|
|
4597
|
+
"type": "array",
|
|
4598
|
+
"items": {
|
|
4599
|
+
"$ref": "#/$defs/TextRun"
|
|
4600
|
+
}
|
|
4601
|
+
}
|
|
4602
|
+
],
|
|
4603
|
+
"description": "The reference as it is listed: a string or TextRun[] for inline rich text."
|
|
4604
|
+
},
|
|
4605
|
+
"url": {
|
|
4606
|
+
"type": "string",
|
|
4607
|
+
"description": "Optional link for the reference; a references slide links its entry to it.",
|
|
4608
|
+
"examples": [
|
|
4609
|
+
"https://acme.com/reports/2026"
|
|
4610
|
+
]
|
|
4611
|
+
}
|
|
4612
|
+
}
|
|
4613
|
+
},
|
|
3992
4614
|
"Chart": {
|
|
3993
4615
|
"type": "object",
|
|
3994
4616
|
"description": "Chart content. The chart object keeps chart-specific fields together so slides and regions do not expose loose chart fields.",
|
|
@@ -4026,6 +4648,99 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
4026
4648
|
}
|
|
4027
4649
|
],
|
|
4028
4650
|
"description": "Chart data. Inline data uses a tabular columns/rows shape; renderers convert rows to chart series internally."
|
|
4651
|
+
},
|
|
4652
|
+
"axisTitles": {
|
|
4653
|
+
"$ref": "#/$defs/ChartAxisTitles",
|
|
4654
|
+
"description": "Optional axis titles. Absent keeps today's untitled axes. Supported on the chart types that have a category/value (or X/Y) axis pair (column, bar, line, area, scatter, and the histogram, pareto, waterfall and box-and-whisker constructs; the funnel construct takes a category title only); a title on a type without that axis (pie, doughnut, radar, treemap, map) is dropped with a 'chart-option-adapted' diagnostic by renderers and exporters."
|
|
4655
|
+
},
|
|
4656
|
+
"legend": {
|
|
4657
|
+
"type": "string",
|
|
4658
|
+
"enum": [
|
|
4659
|
+
"none",
|
|
4660
|
+
"top",
|
|
4661
|
+
"bottom",
|
|
4662
|
+
"left",
|
|
4663
|
+
"right"
|
|
4664
|
+
],
|
|
4665
|
+
"description": "Optional legend position. 'none' hides the legend. Absent keeps today's behaviour exactly (a legend at the right of multi-series charts and of pie and doughnut charts, none for single-series charts). A named position shows the legend there even for a single-series chart. Of the Office 2016 constructs only box-and-whisker takes a legend; histogram, pareto, waterfall, funnel, treemap and map drop the option with a 'chart-option-adapted' diagnostic."
|
|
4666
|
+
},
|
|
4667
|
+
"dataLabels": {
|
|
4668
|
+
"oneOf": [
|
|
4669
|
+
{
|
|
4670
|
+
"type": "boolean"
|
|
4671
|
+
},
|
|
4672
|
+
{
|
|
4673
|
+
"$ref": "#/$defs/ChartDataLabels"
|
|
4674
|
+
}
|
|
4675
|
+
],
|
|
4676
|
+
"description": "Optional data labels. true shows value labels at each type's default position, false (or absent) shows none, which is today's behaviour. Use the object form for the label content, position and separator."
|
|
4677
|
+
}
|
|
4678
|
+
}
|
|
4679
|
+
},
|
|
4680
|
+
"ChartAxisTitles": {
|
|
4681
|
+
"type": "object",
|
|
4682
|
+
"additionalProperties": false,
|
|
4683
|
+
"description": "Titles for the two axes of a chart. 'category' is the axis that carries the row labels (the horizontal axis of a column or line chart, the vertical axis of a bar chart, the X axis of a scatter chart); 'value' is the other axis.",
|
|
4684
|
+
"properties": {
|
|
4685
|
+
"category": {
|
|
4686
|
+
"type": "string",
|
|
4687
|
+
"description": "Title of the category (X) axis.",
|
|
4688
|
+
"examples": [
|
|
4689
|
+
"Quarter",
|
|
4690
|
+
"Region"
|
|
4691
|
+
]
|
|
4692
|
+
},
|
|
4693
|
+
"value": {
|
|
4694
|
+
"type": "string",
|
|
4695
|
+
"description": "Title of the value (Y) axis.",
|
|
4696
|
+
"examples": [
|
|
4697
|
+
"Revenue ($M)",
|
|
4698
|
+
"Customers"
|
|
4699
|
+
]
|
|
4700
|
+
}
|
|
4701
|
+
}
|
|
4702
|
+
},
|
|
4703
|
+
"ChartDataLabels": {
|
|
4704
|
+
"type": "object",
|
|
4705
|
+
"additionalProperties": false,
|
|
4706
|
+
"description": "Data label settings. A label shows the selected content parts in the fixed order category, value, percent, joined by the separator.",
|
|
4707
|
+
"properties": {
|
|
4708
|
+
"content": {
|
|
4709
|
+
"type": "array",
|
|
4710
|
+
"items": {
|
|
4711
|
+
"type": "string",
|
|
4712
|
+
"enum": [
|
|
4713
|
+
"value",
|
|
4714
|
+
"percent",
|
|
4715
|
+
"category"
|
|
4716
|
+
]
|
|
4717
|
+
},
|
|
4718
|
+
"minItems": 1,
|
|
4719
|
+
"uniqueItems": true,
|
|
4720
|
+
"description": "Which parts a label shows. Defaults to ['value']. 'percent' is the share of the total and exists only on pie and doughnut charts; 'category' shows the category name (the X value on a scatter chart). A part a chart type cannot show is dropped with a 'chart-option-adapted' diagnostic."
|
|
4721
|
+
},
|
|
4722
|
+
"position": {
|
|
4723
|
+
"type": "string",
|
|
4724
|
+
"enum": [
|
|
4725
|
+
"auto",
|
|
4726
|
+
"center",
|
|
4727
|
+
"inside-end",
|
|
4728
|
+
"inside-base",
|
|
4729
|
+
"outside-end",
|
|
4730
|
+
"above",
|
|
4731
|
+
"below",
|
|
4732
|
+
"left",
|
|
4733
|
+
"right"
|
|
4734
|
+
],
|
|
4735
|
+
"description": "Where a label sits relative to its mark. 'auto' (the default) is the type's default: outside-end for clustered columns and bars, pie slices and the histogram, pareto and waterfall constructs; center for stacked columns and bars; above for line and scatter points. Clustered columns and bars and the histogram, pareto and waterfall constructs take center, inside-end, inside-base and outside-end; stacked columns and bars take center, inside-end and inside-base; pie takes center, inside-end and outside-end; line and scatter points take above, below, left, right and center. Area, doughnut and radar charts and the funnel and treemap constructs take only 'auto' (the box-and-whisker and map constructs have no data labels). An unsupported position falls back to 'auto' with a 'chart-option-adapted' diagnostic."
|
|
4736
|
+
},
|
|
4737
|
+
"separator": {
|
|
4738
|
+
"type": "string",
|
|
4739
|
+
"description": "Text between the parts of a label that shows more than one. Defaults to ', '.",
|
|
4740
|
+
"examples": [
|
|
4741
|
+
", ",
|
|
4742
|
+
"; "
|
|
4743
|
+
]
|
|
4029
4744
|
}
|
|
4030
4745
|
}
|
|
4031
4746
|
},
|