@openpresentation/opf 0.16.0 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +16 -2
  2. package/dist/browser.js +38 -0
  3. package/dist/{catalog-refs-_anZs-Qz.d.ts → catalog-refs-BSfGELpt.d.ts} +1 -1
  4. package/dist/{catalog-schemas-BZCjgAxu.d.ts → catalog-schemas-CinPh5WA.d.ts} +1 -1
  5. package/dist/catalog.d.ts +2 -2
  6. package/dist/catalog.js +3 -23712
  7. package/dist/{chunk-BSYQDWT4.js → chunk-64YSJZDH.js} +28 -15
  8. package/dist/{chunk-WEDGVC5W.js → chunk-6WW2EDUW.js} +108 -108
  9. package/dist/{chunk-5UEUAW57.js → chunk-CJPDTLGD.js} +1 -1
  10. package/dist/{chunk-FQSIIADJ.js → chunk-DBYZI75U.js} +30 -5
  11. package/dist/{chunk-PX5AWL7Y.js → chunk-JT3QXA22.js} +99 -29
  12. package/dist/{chunk-6OR326EA.js → chunk-JXVS7BJK.js} +1 -1
  13. package/dist/chunk-KXBZ6ZSB.js +991 -0
  14. package/dist/{chunk-5PDN7BN6.js → chunk-MBU42S5Y.js} +427 -167
  15. package/dist/{chunk-K4DQQIT4.js → chunk-NS3VYB57.js} +5 -5
  16. package/dist/chunk-QLFWWHRF.js +919 -0
  17. package/dist/{chunk-5TO6I3GB.js → chunk-RAKEVM52.js} +1 -1
  18. package/dist/{chunk-NAWQR7MN.js → chunk-VCGRMNY2.js} +1 -1
  19. package/dist/chunk-WCG3THTD.js +23712 -0
  20. package/dist/{chunk-UM24JFUE.js → chunk-YWXB4XAT.js} +2 -2
  21. package/dist/{chunk-3XDRQYWZ.js → chunk-YZXTXX2D.js} +1 -1
  22. package/dist/{chunk-SMLMI6IZ.js → chunk-ZCFSDSUX.js} +3 -3
  23. package/dist/{chunk-KINQFU6X.js → chunk-ZOHFLP3O.js} +19 -12
  24. package/dist/{composition-D4ADF5c-.d.ts → composition-C-OoqvAr.d.ts} +227 -167
  25. package/dist/composition.d.ts +2 -2
  26. package/dist/composition.js +1 -1
  27. package/dist/conversion-C5foedh6.d.ts +502 -0
  28. package/dist/conversion-KGDVJM75.js +21 -0
  29. package/dist/convert.d.ts +3 -3
  30. package/dist/convert.js +7 -7
  31. package/dist/data.d.ts +6 -6
  32. package/dist/data.js +2 -2
  33. package/dist/deck-report-wszX7uo8.d.ts +40 -0
  34. package/dist/deck.d.ts +21 -51
  35. package/dist/deck.js +10 -10
  36. package/dist/diff.js +5 -5
  37. package/dist/docs.js +33 -27
  38. package/dist/examples.d.ts +1 -1
  39. package/dist/examples.js +418 -451
  40. package/dist/format.js +2 -2
  41. package/dist/index.d.ts +179 -16
  42. package/dist/index.js +51 -796
  43. package/dist/markdown.d.ts +10 -6
  44. package/dist/markdown.js +7 -7
  45. package/dist/node-engine.d.ts +114 -0
  46. package/dist/node-engine.js +44 -0
  47. package/dist/{pagination-DzZPFheM.d.ts → pagination-BaUjDrTz.d.ts} +25 -8
  48. package/dist/pagination.d.ts +3 -3
  49. package/dist/pagination.js +4 -4
  50. package/dist/patch.js +4 -4
  51. package/dist/{presentation-COrFuj2g.d.ts → presentation-HondgJ3l.d.ts} +278 -454
  52. package/dist/repo-readme.js +1 -1
  53. package/dist/schemas.d.ts +4 -2
  54. package/dist/schemas.js +1 -1
  55. package/dist/spec/catalogs/manifest.json +1 -1
  56. package/dist/spec/schemas/opf.schema.json +74 -100
  57. package/dist/types.d.ts +2 -2
  58. package/dist/{validation-types-HxIgJfKx.d.ts → validation-types-PbGDrNUr.d.ts} +23 -7
  59. package/dist/validator.d.ts +6 -6
  60. package/dist/validator.js +3 -3
  61. package/dist/yaml.d.ts +4 -4
  62. package/dist/yaml.js +7 -7
  63. package/package.json +37 -2
@@ -1,5 +1,5 @@
1
- import { jsonEqual, formatPointer } from './chunk-3XDRQYWZ.js';
2
- import { annotationText } from './chunk-5PDN7BN6.js';
1
+ import { jsonEqual, formatPointer } from './chunk-YZXTXX2D.js';
2
+ import { annotationText } from './chunk-MBU42S5Y.js';
3
3
 
4
4
  // src/diff-match.ts
5
5
  var DEFAULT_MATCH_THRESHOLD = 0.5;
@@ -1,4 +1,4 @@
1
- import { validate } from './chunk-PX5AWL7Y.js';
1
+ import { validate } from './chunk-JT3QXA22.js';
2
2
 
3
3
  // src/patch.ts
4
4
  var OPFPatchError = class extends Error {
@@ -1,4 +1,4 @@
1
- import { chartNumber } from './chunk-5PDN7BN6.js';
1
+ import { chartNumber } from './chunk-MBU42S5Y.js';
2
2
 
3
3
  // src/data.ts
4
4
  var OPFDataImportError = class extends Error {
@@ -114,7 +114,7 @@ function measure(value, location) {
114
114
  if (number !== null) return number;
115
115
  return fail(`${location}: expected a numeric chart value; found ${JSON.stringify(value)}. Clean the value or select another series.`);
116
116
  }
117
- function importData(input, options) {
117
+ function ingest(input, options) {
118
118
  const data = parseTabularData(input, options);
119
119
  if (options.as === "table") return { table: data };
120
120
  if (options.as !== "chart") return fail("Choose table or chart.");
@@ -144,4 +144,4 @@ function importData(input, options) {
144
144
  } } };
145
145
  }
146
146
 
147
- export { OPFDataImportError, importData, parseTabularData };
147
+ export { OPFDataImportError, ingest, parseTabularData };
@@ -1,10 +1,10 @@
1
- import { fromMarkdown, toMarkdown } from './chunk-FQSIIADJ.js';
2
- import { fromYaml, toYaml } from './chunk-K4DQQIT4.js';
3
- import { NOT_CHECKED } from './chunk-5UEUAW57.js';
4
- import { parseSource, validate } from './chunk-PX5AWL7Y.js';
1
+ import { fromMarkdown, toMarkdown } from './chunk-DBYZI75U.js';
2
+ import { fromYaml, toYaml } from './chunk-NS3VYB57.js';
3
+ import { NOT_CHECKED } from './chunk-CJPDTLGD.js';
4
+ import { parseSource, validate, OPFValidationError } from './chunk-JT3QXA22.js';
5
5
  import { checkCatalogsOption } from './chunk-SPFV27O5.js';
6
6
 
7
- // src/deck.ts
7
+ // src/deck-report.ts
8
8
  var DECK_FORMATS = ["json", "yaml", "markdown"];
9
9
  function deckFormatOf(filename) {
10
10
  if (filename === void 0) return "json";
@@ -17,10 +17,10 @@ function resolveFormat(caller, options) {
17
17
  if (!DECK_FORMATS.includes(options.format)) throw new TypeError(`${caller}: unknown format ${JSON.stringify(options.format)}. Formats: ${DECK_FORMATS.join(", ")}.`);
18
18
  return options.format;
19
19
  }
20
- function readDeck(text, options = {}) {
21
- if (typeof text !== "string") throw new TypeError("readDeck expects a string.");
22
- checkCatalogsOption(options.catalogs, "readDeck");
23
- const format = resolveFormat("readDeck", options);
20
+ function readDeckReport(text, options = {}, caller = "parse") {
21
+ if (typeof text !== "string") throw new TypeError(`${caller} expects a string.`);
22
+ checkCatalogsOption(options.catalogs, caller);
23
+ const format = resolveFormat(caller, options);
24
24
  const { catalogs } = options;
25
25
  const check = options.validate ?? true;
26
26
  const validateOptions = typeof check === "object" ? { ...catalogs && check.catalogs === void 0 ? { catalogs } : {}, ...check } : { only: ["format", "references"], ...catalogs ? { catalogs } : {} };
@@ -40,12 +40,19 @@ function report(findings) {
40
40
  for (const found of findings) counts[found.severity]++;
41
41
  return { valid: counts.error === 0, schemaValid: null, findings, counts, checks: NOT_CHECKED };
42
42
  }
43
- function writeDeck(presentation, options = {}) {
44
- const format = resolveFormat("writeDeck", options);
43
+
44
+ // src/deck.ts
45
+ function parse(text, options = {}) {
46
+ const { presentation, format: _format, ...result } = readDeckReport(text, { ...options, validate: true }, "parse");
47
+ if (!result.valid) throw new OPFValidationError(result);
48
+ return presentation;
49
+ }
50
+ function stringify(presentation, options = {}) {
51
+ const format = resolveFormat("stringify", options);
45
52
  if (format === "yaml") return toYaml(presentation, { schemaComment: options.schemaComment === true }).yaml;
46
53
  if (format === "markdown") return toMarkdown(presentation).markdown;
47
54
  return `${JSON.stringify(presentation, null, 2)}
48
55
  `;
49
56
  }
50
57
 
51
- export { DECK_FORMATS, deckFormatOf, readDeck, writeDeck };
58
+ export { DECK_FORMATS, deckFormatOf, parse, readDeckReport, stringify };
@@ -1,4 +1,4 @@
1
- import { b as CatalogOptions } from './catalog-refs-_anZs-Qz.js';
1
+ import { b as CatalogOptions } from './catalog-refs-BSfGELpt.js';
2
2
  import './chart-data-BnNqgnC-.js';
3
3
 
4
4
  /** Canonical table grid. No renderer, fonts, DOM or network dependencies. */
@@ -232,6 +232,141 @@ declare function physicalAlignment(alignment: PhysicalAlignment | undefined, dir
232
232
  */
233
233
  declare function paragraphDirectionAt(text: string, deckDirection: TextDirection | string | undefined): (offset: number) => TextDirection;
234
234
 
235
+ /**
236
+ * Language/script font model (font-fidelity-everywhere FF-18).
237
+ *
238
+ * Resolves, for a presentation's language and effective font scheme, the font
239
+ * family for each OOXML script slot (`a:latin`, `a:ea`, `a:cs`) of the major
240
+ * (heading) and minor (body) theme fonts, plus the language tags and base
241
+ * direction. Pure: no DOM, fonts, network or mutation. Font-scheme references
242
+ * resolve like every content reference (the document's catalogs groups, then the
243
+ * registered catalogs); nothing is fetched.
244
+ *
245
+ * The language is an engine vocabulary: tags the vocabulary knows resolve
246
+ * deterministically from vendored tables. Only a tag outside it may consult the
247
+ * runtime's ICU likely subtags (`Intl.Locale#maximize`) to find its script.
248
+ *
249
+ * Design: docs/programs/font-fidelity-everywhere/script-font-model.md.
250
+ */
251
+ /** OOXML script slot a writing system uses: `a:latin`, `a:ea` or `a:cs`. */
252
+ type ScriptRole = "latin" | "eastAsian" | "complexScript";
253
+ /** FontScheme.languageFamily as written: the short OOXML names and the long slot names are one value. */
254
+ type LanguageFamilyName = "latin" | "ea" | "cs" | "eastAsian" | "complexScript";
255
+ /**
256
+ * Read a FontScheme `languageFamily` as one of three values. `eastAsian` is `ea` and `complexScript` is
257
+ * `cs`; anything that is not one of the five names returns undefined.
258
+ */
259
+ declare function normalizeLanguageFamily(value: unknown): "latin" | "ea" | "cs" | undefined;
260
+ /** Target application whose language font-scheme defaults apply. */
261
+ type ScriptFontApp = "powerpoint" | "google-slides";
262
+ /** Font family per OOXML script slot for one theme font (major or minor). */
263
+ interface ScriptFontSlots {
264
+ latin: string;
265
+ eastAsian: string;
266
+ complexScript: string;
267
+ }
268
+ /**
269
+ * Where a resolved eastAsian/complexScript family came from:
270
+ * - `fontScheme`: an explicit `eastAsian`/`complexScript` slot on the effective design font scheme.
271
+ * - `schemeFamily`: the design font scheme's own major/minor, because its `languageFamily` names this
272
+ * slot and its `languages` list is empty or names the presentation language.
273
+ * - `language`: the presentation language's font scheme (`fontScheme`, or `googleFontScheme` for Google Slides).
274
+ * - `latin`: no script-specific choice exists, so the slot repeats the latin family.
275
+ */
276
+ type ScriptFontSource = "fontScheme" | "schemeFamily" | "language" | "latin";
277
+ /** A per-script supplemental theme font, as in OOXML `<a:font script="Jpan" typeface="..."/>`. */
278
+ interface ScriptFontSupplement {
279
+ /** OOXML theme script tag (ISO 15924, except Korean uses `Hang`). */
280
+ script: string;
281
+ heading: string;
282
+ body: string;
283
+ }
284
+ interface ResolveScriptFontsOptions extends CatalogOptions {
285
+ /** Which language font default applies. Defaults to `powerpoint` (`language.fontScheme`, else the vocabulary default); `google-slides` prefers `language.googleFontScheme`. */
286
+ app?: ScriptFontApp;
287
+ /** Merge `slides[slideIndex].design` over the deck design, per field, before resolving the font scheme. */
288
+ slideIndex?: number;
289
+ /** Language to resolve instead of the document's `language` (a BCP-47 tag or a Language object). */
290
+ language?: unknown;
291
+ /** Language tag used when neither the document nor `options.language` names a resolvable language. Defaults to `en-US`. */
292
+ defaultLanguage?: string;
293
+ }
294
+ interface ResolvedScriptFonts extends ScriptFontSlots {
295
+ /**
296
+ * Tag for OOXML `a:rPr/@lang` (and `a:endParaRPr/@lang`): an authored tag that carries a region,
297
+ * else the curated `ooxmlLang` of the language vocabulary, else the canonical BCP-47 tag.
298
+ */
299
+ lang: string;
300
+ /** Canonically cased BCP-47 tag for HTML/SVG `lang`: the authored tag. */
301
+ bcp47: string;
302
+ /** `default` when the tag came from `defaultLanguage` because no language resolved. */
303
+ languageSource: "document" | "option" | "default";
304
+ /** ISO 15924 script (`Zzzz` when it cannot be determined). */
305
+ script: string;
306
+ /** Script slot the language's own text uses. */
307
+ scriptRole: ScriptRole;
308
+ direction: "ltr" | "rtl";
309
+ rtl: boolean;
310
+ /** Major (heading) theme font slots. */
311
+ heading: ScriptFontSlots;
312
+ /** Minor (body) theme font slots. The top-level latin/eastAsian/complexScript repeat these. */
313
+ body: ScriptFontSlots;
314
+ /**
315
+ * Supplemental theme font for the language's script. Present only when an explicit slot, the
316
+ * design scheme's own script family or the language's font scheme supplies one; absent for
317
+ * Latin, Cyrillic, Greek and for scripts with no script font. For Armenian, Georgian and
318
+ * Ethiopic (latin slot) an explicit `complexScript` slot or a design `cs` scheme that serves the
319
+ * language replaces the language's own font scheme.
320
+ */
321
+ supplement?: ScriptFontSupplement;
322
+ sources: {
323
+ eastAsian: ScriptFontSource;
324
+ complexScript: ScriptFontSource;
325
+ };
326
+ }
327
+ /**
328
+ * One slide's script profile, as a host's script planner reads it (`TextMeasurement.forScripts`): the heading and
329
+ * body families per script slot, where a slot whose `resolveScriptFonts` source is `latin` or `schemeFamily` names
330
+ * the slide's latin role family, and the language fields of `resolveScriptFonts`. Without a resolvable language
331
+ * only the slots (all latin), `script: "Zzzz"`, `rtl` and `serif` are present.
332
+ */
333
+ interface ScriptMeasurementProfile {
334
+ heading: ScriptFontSlots;
335
+ body: ScriptFontSlots;
336
+ supplement?: ScriptFontSupplement;
337
+ script: string;
338
+ scriptRole?: ScriptRole;
339
+ bcp47?: string;
340
+ lang?: string;
341
+ languageSource?: ResolvedScriptFonts["languageSource"];
342
+ direction?: "ltr" | "rtl";
343
+ rtl: boolean;
344
+ /** The slide's font scheme is a serif scheme (`type: "serif"`): script runs prefer serif replacements. */
345
+ serif: boolean;
346
+ }
347
+
348
+ /** The OOXML script slot for an ISO 15924 script code. Unknown scripts use the latin slot. */
349
+ declare function scriptFontRole(script: string): ScriptRole;
350
+ /**
351
+ * Resolve the per-script theme fonts, language tags and direction for a
352
+ * presentation (or a `{ design, language, catalogs }` subset of one).
353
+ *
354
+ * The latin slot follows the effective design font scheme exactly as
355
+ * `resolveFontFamilies` does; when nothing names a font scheme it falls back to
356
+ * the engine default font scheme. Each of the eastAsian and complexScript slots
357
+ * takes, in order: the design font scheme's explicit slot; the scheme's own
358
+ * families when its `languageFamily` names the slot and its `languages` list
359
+ * is empty or names the language; the language's font scheme when the
360
+ * language's script uses the slot; otherwise the latin family.
361
+ */
362
+ declare function resolveScriptFonts(input: unknown, options?: ResolveScriptFontsOptions): ResolvedScriptFonts;
363
+ /**
364
+ * The deck base direction composition lays a slide out in: the direction of the presentation language's script
365
+ * (`rtl` for Arabic, Hebrew and the other right-to-left scripts), `ltr` when the document names no language or
366
+ * the language does not resolve. Layout, preview and export all read this one value (RR-05).
367
+ */
368
+ declare function resolveSlideDirection(presentation: unknown, slideIndex?: number): "ltr" | "rtl";
369
+
235
370
  /**
236
371
  * Engine defaults and engine vocabularies (OPF 0.15, FA-20/21). Small tables of values every engine must know to
237
372
  * draw, compiled from spec/reference/engine-defaults.json and spec/reference/engine-vocabularies.json. None of
@@ -381,20 +516,67 @@ interface FurnitureField {
381
516
  }
382
517
  /** PowerPoint's first Insert > Date and Time choice for en-US (`datetime1`). */
383
518
  declare const DEFAULT_FURNITURE_DATE_FORMAT = "M/d/yyyy";
384
- declare const DEFAULT_SLIDE_NUMBER_FORMAT = "{current}";
385
519
  /** Format an ISO calendar date with an LDML-style pattern. Returns an error message when either input is unsupported. */
386
520
  declare function formatFurnitureDate(iso: string, pattern: string): {
387
521
  text: string;
388
522
  } | {
389
523
  error: string;
390
524
  };
391
- /** Resolve a slide-number template. `{current}` becomes a live field; `{total}` is fixed text. */
392
- declare function formatSlideNumber(format: string, current: number, total: number | undefined): {
393
- text: string;
394
- fields: FurnitureField[];
395
- } | {
396
- error: string;
397
- };
525
+
526
+ /**
527
+ * Organization logos (RR-71, OPF 0.18): every logo lives on an organization, in up to four shapes, each optionally
528
+ * split by the background it is drawn on. One resolution rule for every consumer: the cover and section logo, picture
529
+ * bullets, and the slide-scoped built-in references `var:organization.logo[.<shape>]` and
530
+ * `var:organization.<id>.logo[.<shape>]` in any image field (zone `image`, image blocks, slide `image`).
531
+ * Pure: no I/O; colors are never inspected (the host's dark-background test picks `onDark`).
532
+ * See docs/templates-and-variables.md and docs/design-resolution.md.
533
+ */
534
+ /** The logo shapes an organization can provide, in picker order. */
535
+ declare const LOGO_SHAPES: readonly ["full", "stacked", "icon", "wordmark"];
536
+ type LogoShape = (typeof LOGO_SHAPES)[number];
537
+ /** Which value of a shape was drawn: `onLight` or `onDark` from a split shape, `default` for a single asset. */
538
+ type LogoVariant = "onLight" | "onDark" | "default";
539
+ /** A logo asset chosen by resolveLogo. */
540
+ interface ResolvedLogo {
541
+ /** The asset as authored (a string or an Asset object). */
542
+ source: unknown;
543
+ /** OPF path of the chosen value: `organization.logo`, `organization.1.logo.icon`, `organization.logo.full.onDark`. */
544
+ path: string;
545
+ /** The shape that was asked for (after a `design.logo` override); `path` shows the shape that supplied it. */
546
+ shape: LogoShape;
547
+ variant: LogoVariant;
548
+ /** The canonical slide-scoped reference for this logo: `var:organization.logo`, `var:organization.beta.logo.icon`. */
549
+ reference: string;
550
+ /** The `design.logo` override that chose the organization or shape (`design.logo`, `slides.3.design.logo`), when one did. */
551
+ designPath?: string;
552
+ }
553
+ interface ResolveLogoOptions {
554
+ /** The shape the consumer draws when no override names one; defaults to `full` (covers). Picture bullets ask for `icon`. */
555
+ shape?: LogoShape;
556
+ /** True on a dark background (host luminance test): `onDark` values first, then `onLight`. */
557
+ onDark?: boolean;
558
+ /** Index used in the `slides.N.design.logo` path of a slide-level override; defaults to 0. */
559
+ slideIndex?: number;
560
+ /** Resolve this reference (`var:organization.beta.logo.icon`, with or without `var:`) instead of the design.logo chain. */
561
+ reference?: string;
562
+ }
563
+ /**
564
+ * Resolve the logo a slide should draw, the same way in every engine (OPF 0.18, RR-71). Logos live on the
565
+ * organization (`Organization.logo`: one asset, or `{ full, stacked, icon, wordmark }`, each an asset or
566
+ * `{ onLight, onDark }`). Which one:
567
+ *
568
+ * 1. `options.reference`, when given (`var:organization.beta.logo.icon`);
569
+ * 2. else the slide's `design.logo`, then the deck's: `false` draws no logo, and a logo reference
570
+ * (`var:organization.beta.logo`, `var:organization.logo.wordmark`) picks the organization and, when it names one,
571
+ * the shape (a named shape wins over `options.shape`);
572
+ * 3. else the primary organization (`role: 'primary'`, else the first).
573
+ *
574
+ * The shape is `options.shape` (default `full`) unless the reference names one; a missing shape falls back to `full`,
575
+ * and `full` to the first defined of `wordmark`, `stacked`, `icon`. Within a shape, `onDark` is preferred on a dark
576
+ * background and `onLight` otherwise, and a missing one uses the other. Returns null when no logo resolves (including
577
+ * an override that names an organization without a logo: the override never falls back to another organization).
578
+ */
579
+ declare function resolveLogo(presentation: unknown, slide: unknown, options?: ResolveLogoOptions): ResolvedLogo | null;
398
580
 
399
581
  /** Normalize a literal hex color to uppercase #RRGGBB. */
400
582
  declare function normalizeHexColor(value: unknown): string | undefined;
@@ -537,121 +719,6 @@ declare const SURFACE_ALT_MIN_CONTRAST = 1.1;
537
719
  */
538
720
  declare function surfaceAltColor(surface: string, text: string): string;
539
721
 
540
- /**
541
- * Language/script font model (font-fidelity-everywhere FF-18).
542
- *
543
- * Resolves, for a presentation's language and effective font scheme, the font
544
- * family for each OOXML script slot (`a:latin`, `a:ea`, `a:cs`) of the major
545
- * (heading) and minor (body) theme fonts, plus the language tags and base
546
- * direction. Pure: no DOM, fonts, network or mutation. Font-scheme references
547
- * resolve like every content reference (the document's catalogs groups, then the
548
- * registered catalogs); nothing is fetched.
549
- *
550
- * The language is an engine vocabulary: tags the vocabulary knows resolve
551
- * deterministically from vendored tables. Only a tag outside it may consult the
552
- * runtime's ICU likely subtags (`Intl.Locale#maximize`) to find its script.
553
- *
554
- * Design: docs/programs/font-fidelity-everywhere/script-font-model.md.
555
- */
556
- /** OOXML script slot a writing system uses: `a:latin`, `a:ea` or `a:cs`. */
557
- type ScriptRole = "latin" | "eastAsian" | "complexScript";
558
- /** FontScheme.languageFamily as written: the short OOXML names and the long slot names are one value. */
559
- type LanguageFamilyName = "latin" | "ea" | "cs" | "eastAsian" | "complexScript";
560
- /**
561
- * Read a FontScheme `languageFamily` as one of three values. `eastAsian` is `ea` and `complexScript` is
562
- * `cs`; anything that is not one of the five names returns undefined.
563
- */
564
- declare function normalizeLanguageFamily(value: unknown): "latin" | "ea" | "cs" | undefined;
565
- /** Target application whose language font-scheme defaults apply. */
566
- type ScriptFontApp = "powerpoint" | "google-slides";
567
- /** Font family per OOXML script slot for one theme font (major or minor). */
568
- interface ScriptFontSlots {
569
- latin: string;
570
- eastAsian: string;
571
- complexScript: string;
572
- }
573
- /**
574
- * Where a resolved eastAsian/complexScript family came from:
575
- * - `fontScheme`: an explicit `eastAsian`/`complexScript` slot on the effective design font scheme.
576
- * - `schemeFamily`: the design font scheme's own major/minor, because its `languageFamily` names this
577
- * slot and its `languages` list is empty or names the presentation language.
578
- * - `language`: the presentation language's font scheme (`fontScheme`, or `googleFontScheme` for Google Slides).
579
- * - `latin`: no script-specific choice exists, so the slot repeats the latin family.
580
- */
581
- type ScriptFontSource = "fontScheme" | "schemeFamily" | "language" | "latin";
582
- /** A per-script supplemental theme font, as in OOXML `<a:font script="Jpan" typeface="..."/>`. */
583
- interface ScriptFontSupplement {
584
- /** OOXML theme script tag (ISO 15924, except Korean uses `Hang`). */
585
- script: string;
586
- heading: string;
587
- body: string;
588
- }
589
- interface ResolveScriptFontsOptions extends CatalogOptions {
590
- /** Which language font default applies. Defaults to `powerpoint` (`language.fontScheme`, else the vocabulary default); `google-slides` prefers `language.googleFontScheme`. */
591
- app?: ScriptFontApp;
592
- /** Merge `slides[slideIndex].design` over the deck design, per field, before resolving the font scheme. */
593
- slideIndex?: number;
594
- /** Language to resolve instead of the document's `language` (a BCP-47 tag or a Language object). */
595
- language?: unknown;
596
- /** Language tag used when neither the document nor `options.language` names a resolvable language. Defaults to `en-US`. */
597
- defaultLanguage?: string;
598
- }
599
- interface ResolvedScriptFonts extends ScriptFontSlots {
600
- /**
601
- * Tag for OOXML `a:rPr/@lang` (and `a:endParaRPr/@lang`): an authored tag that carries a region,
602
- * else the curated `ooxmlLang` of the language vocabulary, else the canonical BCP-47 tag.
603
- */
604
- lang: string;
605
- /** Canonically cased BCP-47 tag for HTML/SVG `lang`: the authored tag. */
606
- bcp47: string;
607
- /** `default` when the tag came from `defaultLanguage` because no language resolved. */
608
- languageSource: "document" | "option" | "default";
609
- /** ISO 15924 script (`Zzzz` when it cannot be determined). */
610
- script: string;
611
- /** Script slot the language's own text uses. */
612
- scriptRole: ScriptRole;
613
- direction: "ltr" | "rtl";
614
- rtl: boolean;
615
- /** Major (heading) theme font slots. */
616
- heading: ScriptFontSlots;
617
- /** Minor (body) theme font slots. The top-level latin/eastAsian/complexScript repeat these. */
618
- body: ScriptFontSlots;
619
- /**
620
- * Supplemental theme font for the language's script. Present only when an explicit slot, the
621
- * design scheme's own script family or the language's font scheme supplies one; absent for
622
- * Latin, Cyrillic, Greek and for scripts with no script font. For Armenian, Georgian and
623
- * Ethiopic (latin slot) an explicit `complexScript` slot or a design `cs` scheme that serves the
624
- * language replaces the language's own font scheme.
625
- */
626
- supplement?: ScriptFontSupplement;
627
- sources: {
628
- eastAsian: ScriptFontSource;
629
- complexScript: ScriptFontSource;
630
- };
631
- }
632
-
633
- /** The OOXML script slot for an ISO 15924 script code. Unknown scripts use the latin slot. */
634
- declare function scriptFontRole(script: string): ScriptRole;
635
- /**
636
- * Resolve the per-script theme fonts, language tags and direction for a
637
- * presentation (or a `{ design, language, catalogs }` subset of one).
638
- *
639
- * The latin slot follows the effective design font scheme exactly as
640
- * `resolveFontFamilies` does; when nothing names a font scheme it falls back to
641
- * the engine default font scheme. Each of the eastAsian and complexScript slots
642
- * takes, in order: the design font scheme's explicit slot; the scheme's own
643
- * families when its `languageFamily` names the slot and its `languages` list
644
- * is empty or names the language; the language's font scheme when the
645
- * language's script uses the slot; otherwise the latin family.
646
- */
647
- declare function resolveScriptFonts(input: unknown, options?: ResolveScriptFontsOptions): ResolvedScriptFonts;
648
- /**
649
- * The deck base direction composition lays a slide out in: the direction of the presentation language's script
650
- * (`rtl` for Arabic, Hebrew and the other right-to-left scripts), `ltr` when the document names no language or
651
- * the language does not resolve. Layout, preview and export all read this one value (RR-05).
652
- */
653
- declare function resolveSlideDirection(presentation: unknown, slideIndex?: number): "ltr" | "rtl";
654
-
655
722
  /**
656
723
  * Deterministic syntax highlighting shared by the SVG preview and the PPTX export (RR-07).
657
724
  *
@@ -1380,6 +1447,13 @@ interface TextMeasurement {
1380
1447
  /** Shaped vector ink relative to the left baseline origin (positive y down).
1381
1448
  * Null means no outline. These are not hinted/antialiased raster bounds. */
1382
1449
  outlineBounds?: (text: string, fontSize: number, style: TextStyle) => LayoutBox | null;
1450
+ /**
1451
+ * Script planning: a measurement that measures each script run of a string with the face of its script slot in
1452
+ * `profile` (and the host's glyph fallback), as the host's engines draw it. The renderer's `loadFonts()` measurement
1453
+ * provides it with its script planner. `validate` and `paginate` call it with each slide's profile, and with a run language's own
1454
+ * profile for a run that names one, so they measure script text the way preview and export do.
1455
+ */
1456
+ forScripts?: (profile: ScriptMeasurementProfile) => TextMeasurement;
1383
1457
  }
1384
1458
  /**
1385
1459
  * The fonts handle every deck-level verb takes as `{ fonts }`. Core reads only `textMeasurement`: how wide the
@@ -1598,26 +1672,19 @@ interface ComposedBackgroundImage {
1598
1672
  /** Present when core reads the picture's aspect ratio and the fit is not tile; otherwise call `fitImage` with the host's. */
1599
1673
  picture?: ImageFitPlacement;
1600
1674
  }
1601
- /** Which logo variant family a consumer asks for: the full lockup, a square mark, or a stacked lockup. */
1602
- type LogoSlot = 'lockup' | 'icon' | 'stacked';
1603
- /** A logo asset chosen by resolveLogo, with its source value, OPF path, LogoSet variant key and the slot it serves. */
1604
- interface ResolvedLogo {
1605
- source: unknown;
1606
- path: string;
1607
- variant: string;
1608
- slot: LogoSlot;
1609
- }
1610
1675
  /**
1611
1676
  * The deck logo drawn on a cover or section slide, at the top-left of the free area and above the
1612
- * centered heading group. Consumers fit the image inside `box` preserving its aspect ratio,
1613
- * anchored left and vertically centered; content slides never carry one.
1677
+ * centered heading group: the primary organization's full logo, or the `design.logo` override. Consumers fit the
1678
+ * image inside `box` preserving its aspect ratio, anchored left and vertically centered; content slides never carry one.
1679
+ * `shape`, `variant` and `reference` are those of `resolveLogo`.
1614
1680
  */
1615
1681
  interface ComposedLogo {
1616
1682
  box: LayoutBox;
1617
- slot: 'lockup';
1683
+ shape: LogoShape;
1618
1684
  path: string;
1619
1685
  source: unknown;
1620
- variant: string;
1686
+ variant: LogoVariant;
1687
+ reference: string;
1621
1688
  anchor: 'left' | 'right';
1622
1689
  }
1623
1690
  /** Picture bullet source for list markers: the deck's icon logo and the OPF path it was read from. */
@@ -1766,8 +1833,8 @@ interface ComposeSlideOptions {
1766
1833
  datasets?: unknown;
1767
1834
  };
1768
1835
  /**
1769
- * Whether the slide background is dark, by the host's own luminance test. Selects the light logo
1770
- * variants (cover logo, furniture `logo: true`, picture bullets). Core never inspects colors.
1836
+ * Whether the slide background is dark, by the host's own luminance test. Selects each logo's
1837
+ * `onDark` value (cover logo, `var:organization.logo.*` in zone images, picture bullets). Core never inspects colors.
1771
1838
  */
1772
1839
  darkBackground?: boolean;
1773
1840
  /**
@@ -1776,9 +1843,9 @@ interface ComposeSlideOptions {
1776
1843
  * `resolveSlideContext` passes it.
1777
1844
  */
1778
1845
  themeBackground?: unknown;
1779
- /** One-based displayed number; source paths still use slideIndex. */
1846
+ /** One-based displayed number for `{{slide.number}}` in header/footer text; source paths still use slideIndex. */
1780
1847
  slideNumber?: number;
1781
- /** Displayed slide count for `{total}` in slideNumberFormat. Defaults to `presentation.slides.length`. */
1848
+ /** Displayed slide count for `{{deck.slideCount}}` in header/footer text. Defaults to `presentation.slides.length`. */
1782
1849
  slideCount?: number;
1783
1850
  /**
1784
1851
  * Host-supplied current calendar date (ISO YYYY-MM-DD) for `date: true` furniture. Core never
@@ -1837,35 +1904,20 @@ declare function imageBackground(value: unknown): {
1837
1904
  recolor?: unknown;
1838
1905
  overlay?: unknown;
1839
1906
  } | undefined;
1840
- interface ResolveLogoOptions {
1841
- /** Variant family to prefer; defaults to the full lockup. */
1842
- slot?: LogoSlot;
1843
- /** True on a dark background (host luminance test): light variants are preferred, dark ones come last. */
1844
- onDark?: boolean;
1845
- /** Index used in the `slides.N.design.logo` path of a slide-level logo; defaults to 0. */
1846
- slideIndex?: number;
1847
- }
1848
- /**
1849
- * Resolve the logo a slide should draw, the same way in every engine. Source precedence:
1850
- * `slides[i].design.logo`, then `design.logo`, then the primary organization's `logo` (`role: 'primary'`,
1851
- * else the first organization; `organization` may be an object or an array). Absence inherits; a source
1852
- * that yields no usable asset falls through to the next. A string or Asset object is the `default`
1853
- * variant. A LogoSet picks by slot and tone: `icon` tries iconLight/iconDark (tone), then icon, then the
1854
- * lockup chain; `stacked` tries stackedLight/stackedDark (tone), then stacked, then the lockup chain; the
1855
- * lockup chain prefers same-tone variants, then neutral ones, then the opposite tone. `path` is the OPF
1856
- * path of the chosen value (`design.logo`, `design.logo.light`, `organization.2.logo`,
1857
- * `slides.3.design.logo.icon`) and `variant` the LogoSet key or `default`. Returns null without a logo.
1858
- */
1859
- declare function resolveLogo(presentation: unknown, slide: unknown, options?: ResolveLogoOptions): ResolvedLogo | null;
1860
1907
  interface FurniturePartBase {
1861
1908
  kind: 'header' | 'footer';
1862
1909
  zone: 'left' | 'center' | 'right';
1863
- field: 'text' | 'image' | 'logo' | 'organization' | 'speaker' | 'socials' | 'section' | 'slideNumber' | 'date';
1910
+ field: 'text' | 'image' | 'socials' | 'date';
1864
1911
  /** Literal field or controlling flag, with the actual inherited/local path. */
1865
1912
  path: string;
1866
- /** String/asset source, when different from a generated field's flag. */
1913
+ /** String/asset source, when different from a generated field's flag; for a logo reference, the organization logo value drawn. */
1867
1914
  sourcePath?: string;
1868
1915
  generated: boolean;
1916
+ /**
1917
+ * The part's own box. A zone lays its parts out in one row, in the order image, text, socials, date (mirrored in a
1918
+ * right-to-left deck), aligned to the zone's edge with FURNITURE_GAP between parts and each part vertically centered
1919
+ * in the row. A zone with one part keeps the full zone width for text.
1920
+ */
1869
1921
  box: LayoutBox;
1870
1922
  alignment: 'left' | 'center' | 'right';
1871
1923
  }
@@ -1877,9 +1929,10 @@ interface FurnitureTextPart extends FurniturePartBase {
1877
1929
  minFontSize: number;
1878
1930
  fit: SourceTextFit;
1879
1931
  /**
1880
- * Live values inside `text`: every `{current}` slide number, and a whole current
1881
- * (`date: true`) date. Hosts such as PPTX may emit them as native fields; all other
1882
- * text, including `{total}` and formatted fixed dates, is fixed.
1932
+ * Live values inside `text`: every substituted `{{slide.number}}` of a `text` part (type
1933
+ * `slideNumber`), and a whole current (`date: true`) date (type `date`), as half-open UTF-16
1934
+ * offsets into `text`. Hosts such as PPTX may emit them as native fields; all other text,
1935
+ * including `{{deck.slideCount}}`, `{{slide.section}}` and formatted fixed dates, is fixed.
1883
1936
  */
1884
1937
  fields?: FurnitureField[];
1885
1938
  /**
@@ -1916,7 +1969,10 @@ interface FurnitureSocialLink extends SocialProfile {
1916
1969
  declare function resolveSocialProfile(platform: string, value: string, owner?: 'organization' | 'speaker'): SocialProfile;
1917
1970
  interface FurnitureImagePart extends FurniturePartBase {
1918
1971
  type: 'image';
1972
+ /** The asset to draw: the zone `image` as written, or the organization logo a logo reference resolved to for this slide. */
1919
1973
  image: unknown;
1974
+ /** The slide-scoped logo reference the zone wrote (`var:organization.logo.icon`), when `image` came from one. */
1975
+ reference?: string;
1920
1976
  }
1921
1977
  type FurniturePart = FurnitureTextPart | FurnitureImagePart;
1922
1978
  interface FurnitureLayout {
@@ -1932,6 +1988,10 @@ interface FurnitureLayout {
1932
1988
  diagnostics: LayoutDiagnostic[];
1933
1989
  overflow: boolean;
1934
1990
  }
1991
+ /** Gap between the parts of one header/footer zone row, in reference pixels (scaled with the canvas's short edge). */
1992
+ declare const FURNITURE_GAP = 12;
1993
+ /** In a zone with other parts, an image is at most this share of the zone's width, so a wide logo cannot starve the text. */
1994
+ declare const FURNITURE_IMAGE_SHARE = 0.4;
1935
1995
  /** Resolve and measure repeated fields without mutating metadata or consulting a clock. */
1936
1996
  declare function layoutFurniture(input: unknown, options?: ComposeSlideOptions): FurnitureLayout;
1937
1997
  /** Deterministic estimate, not a font shaping engine. Preserves explicit line breaks. */
@@ -2442,4 +2502,4 @@ declare function resolveCanvasDimensions(input: unknown): {
2442
2502
  height: number;
2443
2503
  };
2444
2504
 
2445
- export { type CodeHighlightColors as $, type AnnotatedRun as A, type BackgroundImageFit as B, type ComposeSlideOptions as C, CODE_SYNTAX_MIN_CONTRAST as D, ENGINE_DEFAULT_CHART_TYPES as E, type Fonts as F, type Caption as G, type CaptionAlignment as H, type CaptionObject as I, type CaptionPosition as J, type CaptionSettings as K, type LayoutDiagnostic as L, type MeasureTextWidth as M, type ChartHighlightMarks as N, type ChartLabelContent as O, type ChartLabelPosition as P, type ChartLegendPosition as Q, type ChartOptionDiagnostic as R, SOCIAL_PLATFORMS as S, type TextMeasurement as T, type ChartOptionKind as U, type ChartOptionSupport as V, type ChartOptionTarget as W, type CitationMarker as X, type CitationNote as Y, type CodeContent as Z, type CodeHighlightBand as _, CHART_TYPES as a, type LayoutContent as a$, type CodeHighlightEntry as a0, type CodeHighlightIssue as a1, type CodeHighlightLines as a2, type CodeLayout as a3, type CodeLayoutDiagnostic as a4, type CodeLayoutOptions as a5, type CodeLineSegment as a6, type CodeLineSource as a7, type CodeRun as a8, type CodeSyntaxPalette as a9, DEFAULT_FURNITURE_DATE_FORMAT as aA, DEFAULT_SLIDE_NUMBER_FORMAT as aB, DESIGN_HINT_KEYS as aC, type DeckCitations as aD, type DesignHintKey as aE, type DesignHintSource as aF, type DesignHints as aG, FONT_SIZE_GRID_PER_PX as aH, FOOTNOTE_MAX_RATIO as aI, type FontFaceSelection as aJ, type FootnoteLayoutOptions as aK, type FurnitureField as aL, type FurnitureImagePart as aM, type FurnitureLayout as aN, type FurniturePart as aO, type FurniturePartBase as aP, type FurnitureSocialLink as aQ, type FurnitureTextExtras as aR, type FurnitureTextPart as aS, type ImageEdge as aT, type ImageFit as aU, type ImageFitPlacement as aV, type ImageFocus as aW, type ImageShape as aX, LAYOUT_BODY_KINDS as aY, type LayoutBodyKind as aZ, type LayoutBox as a_, type CodeSyntaxPaletteOptions as aa, type CodeSyntaxPaletteTheme as ab, type CodeTextFit as ac, type CodeTextPart as ad, type CodeToken as ae, type CodeTokenKind as af, type ComposedBackgroundImage as ag, type ComposedCaption as ah, type ComposedFlow as ai, type ComposedFootnoteEntry as aj, type ComposedFootnotes as ak, type ComposedGroup as al, type ComposedImage as am, type ComposedItem as an, type ComposedLogo as ao, type ComposedOverlay as ap, type ComposedPlacement as aq, type ComposedSlot as ar, type Composition as as, type CompositionCandidate as at, type CompositionDecision as au, type CompositionExplanation as av, type CompositionPenalties as aw, type CompositionTrack as ax, DARK_BACKGROUND_LUMINANCE as ay, DEFAULT_CHART_LABEL_SEPARATOR as az, ENGINE_DEFAULT_COLOR_SCHEME as b, type RichText as b$, type LayoutLeaf as b0, type LayoutSlot as b1, type ListBulletImage as b2, type ListEntryLayout as b3, type ListFit as b4, type ListFitOptions as b5, type ListNumber as b6, type ListText as b7, type ListValue as b8, type LogoSlot as b9, PATTERN_TILE_SIZE as bA, PICTURE_BULLET_SCALE as bB, type PhysicalAlignment as bC, type QuoteContent as bD, type QuoteLayout as bE, type QuoteLayoutDiagnostic as bF, type QuoteLayoutOptions as bG, type QuotePhoto as bH, type QuoteTextPart as bI, type QuoteTextSource as bJ, type ReadingBox as bK, type Reference as bL, type ReferencesSlideOptions as bM, type ResolveColorRefOptions as bN, type ResolveColorRefRoles as bO, type ResolveColorRolesOptions as bP, type ResolveDesignHintsOptions as bQ, type ResolveLogoOptions as bR, type ResolveScriptFontsOptions as bS, type ResolvedChartDataLabels as bT, type ResolvedChartHighlight as bU, type ResolvedChartOptions as bV, type ResolvedColorRoles as bW, type ResolvedDesignHints as bX, type ResolvedLogo as bY, type ResolvedNumbering as bZ, type ResolvedScriptFonts as b_, MAX_COMPOSITION_DEPTH as ba, MAX_NUMBERING_LEVELS as bb, MAX_NUMBERING_VALUE as bc, MAX_PLACEHOLDER_GROUP_DEPTH as bd, MAX_ROMAN_VALUE as be, METRIC_TREND_MIN_CONTRAST as bf, METRIC_TREND_SHAPES as bg, type MetricContent as bh, type MetricLayout as bi, type MetricLayoutDiagnostic as bj, type MetricLayoutOptions as bk, type MetricSentiment as bl, type MetricTextPart as bm, type MetricTextSource as bn, type MetricTrend as bo, type MetricTrendColorOptions as bp, type MetricTrendMark as bq, NUMBERING_STYLES as br, NUMBERING_SUFFIXES as bs, type Numbering as bt, type NumberingInput as bu, type NumberingStyleName as bv, type NumberingSuffix as bw, OPFCompositionError as bx, PATTERN_PRESETS as by, PATTERN_PRESET_ALIASES as bz, ENGINE_DEFAULT_FONT_SCHEME as c, codeSyntaxPaletteForScheme as c$, type RichTextFit as c0, type RichTextFragment as c1, type RichTextLine as c2, type RichTextOptions as c3, type RichTextRun as c4, SURFACE_ALT_MIN_CONTRAST as c5, SURFACE_ALT_MIX as c6, type ScriptFontApp as c7, type ScriptFontSlots as c8, type ScriptFontSource as c9, type TimelineEvent as cA, type TimelineLayout as cB, type TimelineLayoutDiagnostic as cC, type TimelineLayoutOptions as cD, type TimelineMarkerShape as cE, type TimelineStatus as cF, type TimelineStatusColors as cG, type TimelineTextPart as cH, type WatermarkTextLayout as cI, type WatermarkTextOptions as cJ, annotationText as cK, captionSettings as cL, chartColorForFill as cM, chartHighlightColors as cN, chartHighlightMarks as cO, chartLabelText as cP, chartOptionSupport as cQ, chartOptionTarget as cR, chartPaletteForFill as cS, chartPrimaryLayout as cT, citationMarkerText as cU, codeHighlightBands as cV, codeHighlightColors as cW, codeHighlightLines as cX, codeLineNumbers as cY, codeLineRuns as cZ, codeSyntaxPalette as c_, type ScriptFontSupplement as ca, type ScriptRole as cb, type SlideCitations as cc, type SlideComposition as cd, type SocialProfile as ce, type SourceTextFit as cf, TIMELINE_OUTLINE_MIN_CONTRAST as cg, TIMELINE_STATUSES as ch, TIMELINE_TEXT_MIN_CONTRAST as ci, type TableBorder as cj, type TableCellLayout as ck, type TableCellStyle as cl, type TableGrid as cm, type TableGridCell as cn, type TableGridIssue as co, type TableLayout as cp, type TableLayoutOptions as cq, type TableRowLayout as cr, type TextDirection as cs, type TextFit as ct, type TextLineInk as cu, type TextLineSegment as cv, type TextLineSource as cw, type TextPlacement as cx, type TextPlacementLine as cy, type TimelineContent as cz, ENGINE_DEFAULT_THEME as d, resolveTextStyle as d$, collectCitations as d0, colorContrast as d1, composeSlide as d2, defaultSlideBackground as d3, fitImage as d4, fitList as d5, fitRichText as d6, fitText as d7, formatChartLabelNumber as d8, formatChartLabelPercent as d9, measureTextOutline as dA, metricTrendColor as dB, metricTrendMark as dC, metricTrendPoints as dD, normalizeHexColor as dE, numberingAtLevel as dF, numberingStyleDraws as dG, paragraphDirection as dH, paragraphDirectionAt as dI, patternBitmap as dJ, patternRuns as dK, physicalAlignment as dL, placeTextLines as dM, referencesSlide as dN, resolveCanvasDimensions as dO, resolveChartOptions as dP, resolveCodeLanguage as dQ, resolveColorRef as dR, resolveColorRoles as dS, resolveDesignHints as dT, resolveFontFamilies as dU, resolveLogo as dV, resolveNumbering as dW, resolvePatternPreset as dX, resolveScriptFonts as dY, resolveSlideDirection as dZ, resolveSocialProfile as d_, formatFurnitureDate as da, formatListNumber as db, formatSlideNumber as dc, hasPlaceholderGroups as dd, imageBackground as de, imageShape as df, intrinsicImageAspect as dg, intrinsicImageSize as dh, isDarkColor as di, isPlaceholderGroup as dj, layoutCaption as dk, layoutCode as dl, layoutContent as dm, layoutFootnotes as dn, layoutFurniture as dp, layoutLeaves as dq, layoutMetric as dr, layoutQuote as ds, layoutSlots as dt, layoutStructure as du, layoutTable as dv, layoutTimeline as dw, layoutWatermark as dx, listNumbers as dy, measureText as dz, type FontFamilies as e, scriptFontRole as e0, sliceNumberedItems as e1, slideCitations as e2, snapFontSizeDown as e3, snapFontSizeUp as e4, surfaceAltColor as e5, tableGrid as e6, tableRowBoundaries as e7, textColorForFill as e8, textWidthMeasurer as e9, timelineMarkerShapes as ea, timelineTextColor as eb, tokenizeCode as ec, visualReadingOrder as ed, walkCitationRuns as ee, wrapText as ef, LANGUAGES as f, type LanguageFamilyName as g, type LanguageVocabulary as h, type SocialPlatformVocabulary as i, type TextStyle as j, type AnnotationFitter as k, type AnnotationLayoutOptions as l, CAPTIONABLE_FIELDS as m, normalizeLanguageFamily as n, CAPTION_FONT_RATIO as o, CAPTION_MAX_RATIO as p, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST as q, CHART_HIGHLIGHT_MUTED_MIX as r, CHART_SERIES_MIN_DIFFERENCE as s, CHART_SERIES_MIN_LIGHTNESS_STEP as t, CITATION_MARKER_RAISE as u, CITATION_MARKER_SCALE as v, CODE_HIGHLIGHT_LANGUAGES as w, CODE_HIGHLIGHT_MAX_LENGTH as x, CODE_PANEL_BACKGROUND as y, CODE_PANEL_FOREGROUND as z };
2505
+ export { type ChartOptionTarget as $, type AnnotatedRun as A, type BackgroundImageFit as B, type ComposeSlideOptions as C, CODE_HIGHLIGHT_LANGUAGES as D, ENGINE_DEFAULT_CHART_TYPES as E, type Fonts as F, CODE_HIGHLIGHT_MAX_LENGTH as G, CODE_PANEL_BACKGROUND as H, CODE_PANEL_FOREGROUND as I, CODE_SYNTAX_MIN_CONTRAST as J, type Caption as K, type LayoutDiagnostic as L, type MeasureTextWidth as M, type CaptionAlignment as N, type CaptionObject as O, type CaptionPosition as P, type CaptionSettings as Q, type ResolveLogoOptions as R, SOCIAL_PLATFORMS as S, type TextMeasurement as T, type ChartHighlightMarks as U, type ChartLabelContent as V, type ChartLabelPosition as W, type ChartLegendPosition as X, type ChartOptionDiagnostic as Y, type ChartOptionKind as Z, type ChartOptionSupport as _, CHART_TYPES as a, type ImageFitPlacement as a$, type CitationMarker as a0, type CitationNote as a1, type CodeContent as a2, type CodeHighlightBand as a3, type CodeHighlightColors as a4, type CodeHighlightEntry as a5, type CodeHighlightIssue as a6, type CodeHighlightLines as a7, type CodeLayout as a8, type CodeLayoutDiagnostic as a9, type CompositionExplanation as aA, type CompositionPenalties as aB, type CompositionTrack as aC, DARK_BACKGROUND_LUMINANCE as aD, DEFAULT_CHART_LABEL_SEPARATOR as aE, DEFAULT_FURNITURE_DATE_FORMAT as aF, DESIGN_HINT_KEYS as aG, type DeckCitations as aH, type DesignHintKey as aI, type DesignHintSource as aJ, type DesignHints as aK, FONT_SIZE_GRID_PER_PX as aL, FOOTNOTE_MAX_RATIO as aM, FURNITURE_GAP as aN, FURNITURE_IMAGE_SHARE as aO, type FontFaceSelection as aP, type FootnoteLayoutOptions as aQ, type FurnitureField as aR, type FurnitureImagePart as aS, type FurnitureLayout as aT, type FurniturePart as aU, type FurniturePartBase as aV, type FurnitureSocialLink as aW, type FurnitureTextExtras as aX, type FurnitureTextPart as aY, type ImageEdge as aZ, type ImageFit as a_, type CodeLayoutOptions as aa, type CodeLineSegment as ab, type CodeLineSource as ac, type CodeRun as ad, type CodeSyntaxPalette as ae, type CodeSyntaxPaletteOptions as af, type CodeSyntaxPaletteTheme as ag, type CodeTextFit as ah, type CodeTextPart as ai, type CodeToken as aj, type CodeTokenKind as ak, type ComposedBackgroundImage as al, type ComposedCaption as am, type ComposedFlow as an, type ComposedFootnoteEntry as ao, type ComposedFootnotes as ap, type ComposedGroup as aq, type ComposedImage as ar, type ComposedItem as as, type ComposedLogo as at, type ComposedOverlay as au, type ComposedPlacement as av, type ComposedSlot as aw, type Composition as ax, type CompositionCandidate as ay, type CompositionDecision as az, ENGINE_DEFAULT_COLOR_SCHEME as b, type ResolvedDesignHints as b$, type ImageFocus as b0, type ImageShape as b1, LAYOUT_BODY_KINDS as b2, type LayoutBodyKind as b3, type LayoutBox as b4, type LayoutContent as b5, type LayoutLeaf as b6, type LayoutSlot as b7, type ListBulletImage as b8, type ListEntryLayout as b9, type NumberingStyleName as bA, type NumberingSuffix as bB, OPFCompositionError as bC, PATTERN_PRESETS as bD, PATTERN_PRESET_ALIASES as bE, PATTERN_TILE_SIZE as bF, PICTURE_BULLET_SCALE as bG, type PhysicalAlignment as bH, type QuoteContent as bI, type QuoteLayout as bJ, type QuoteLayoutDiagnostic as bK, type QuoteLayoutOptions as bL, type QuotePhoto as bM, type QuoteTextPart as bN, type QuoteTextSource as bO, type ReadingBox as bP, type Reference as bQ, type ReferencesSlideOptions as bR, type ResolveColorRefOptions as bS, type ResolveColorRefRoles as bT, type ResolveColorRolesOptions as bU, type ResolveDesignHintsOptions as bV, type ResolveScriptFontsOptions as bW, type ResolvedChartDataLabels as bX, type ResolvedChartHighlight as bY, type ResolvedChartOptions as bZ, type ResolvedColorRoles as b_, type ListFit as ba, type ListFitOptions as bb, type ListNumber as bc, type ListText as bd, type ListValue as be, MAX_COMPOSITION_DEPTH as bf, MAX_NUMBERING_LEVELS as bg, MAX_NUMBERING_VALUE as bh, MAX_PLACEHOLDER_GROUP_DEPTH as bi, MAX_ROMAN_VALUE as bj, METRIC_TREND_MIN_CONTRAST as bk, METRIC_TREND_SHAPES as bl, type MetricContent as bm, type MetricLayout as bn, type MetricLayoutDiagnostic as bo, type MetricLayoutOptions as bp, type MetricSentiment as bq, type MetricTextPart as br, type MetricTextSource as bs, type MetricTrend as bt, type MetricTrendColorOptions as bu, type MetricTrendMark as bv, NUMBERING_STYLES as bw, NUMBERING_SUFFIXES as bx, type Numbering as by, type NumberingInput as bz, ENGINE_DEFAULT_FONT_SCHEME as c, codeHighlightLines as c$, type ResolvedNumbering as c0, type ResolvedScriptFonts as c1, type RichText as c2, type RichTextFit as c3, type RichTextFragment as c4, type RichTextLine as c5, type RichTextOptions as c6, type RichTextRun as c7, SURFACE_ALT_MIN_CONTRAST as c8, SURFACE_ALT_MIX as c9, type TextLineSource as cA, type TextPlacement as cB, type TextPlacementLine as cC, type TimelineContent as cD, type TimelineEvent as cE, type TimelineLayout as cF, type TimelineLayoutDiagnostic as cG, type TimelineLayoutOptions as cH, type TimelineMarkerShape as cI, type TimelineStatus as cJ, type TimelineStatusColors as cK, type TimelineTextPart as cL, type WatermarkTextLayout as cM, type WatermarkTextOptions as cN, annotationText as cO, captionSettings as cP, chartColorForFill as cQ, chartHighlightColors as cR, chartHighlightMarks as cS, chartLabelText as cT, chartOptionSupport as cU, chartOptionTarget as cV, chartPaletteForFill as cW, chartPrimaryLayout as cX, citationMarkerText as cY, codeHighlightBands as cZ, codeHighlightColors as c_, type ScriptFontApp as ca, type ScriptFontSlots as cb, type ScriptFontSource as cc, type ScriptFontSupplement as cd, type ScriptMeasurementProfile as ce, type ScriptRole as cf, type SlideCitations as cg, type SlideComposition as ch, type SocialProfile as ci, type SourceTextFit as cj, TIMELINE_OUTLINE_MIN_CONTRAST as ck, TIMELINE_STATUSES as cl, TIMELINE_TEXT_MIN_CONTRAST as cm, type TableBorder as cn, type TableCellLayout as co, type TableCellStyle as cp, type TableGrid as cq, type TableGridCell as cr, type TableGridIssue as cs, type TableLayout as ct, type TableLayoutOptions as cu, type TableRowLayout as cv, type TextDirection as cw, type TextFit as cx, type TextLineInk as cy, type TextLineSegment as cz, ENGINE_DEFAULT_THEME as d, resolveScriptFonts as d$, codeLineNumbers as d0, codeLineRuns as d1, codeSyntaxPalette as d2, codeSyntaxPaletteForScheme as d3, collectCitations as d4, colorContrast as d5, composeSlide as d6, defaultSlideBackground as d7, fitImage as d8, fitList as d9, layoutWatermark as dA, listNumbers as dB, measureText as dC, measureTextOutline as dD, metricTrendColor as dE, metricTrendMark as dF, metricTrendPoints as dG, normalizeHexColor as dH, numberingAtLevel as dI, numberingStyleDraws as dJ, paragraphDirection as dK, paragraphDirectionAt as dL, patternBitmap as dM, patternRuns as dN, physicalAlignment as dO, placeTextLines as dP, referencesSlide as dQ, resolveCanvasDimensions as dR, resolveChartOptions as dS, resolveCodeLanguage as dT, resolveColorRef as dU, resolveColorRoles as dV, resolveDesignHints as dW, resolveFontFamilies as dX, resolveLogo as dY, resolveNumbering as dZ, resolvePatternPreset as d_, fitRichText as da, fitText as db, formatChartLabelNumber as dc, formatChartLabelPercent as dd, formatFurnitureDate as de, formatListNumber as df, hasPlaceholderGroups as dg, imageBackground as dh, imageShape as di, intrinsicImageAspect as dj, intrinsicImageSize as dk, isDarkColor as dl, isPlaceholderGroup as dm, layoutCaption as dn, layoutCode as dp, layoutContent as dq, layoutFootnotes as dr, layoutFurniture as ds, layoutLeaves as dt, layoutMetric as du, layoutQuote as dv, layoutSlots as dw, layoutStructure as dx, layoutTable as dy, layoutTimeline as dz, type FontFamilies as e, resolveSlideDirection as e0, resolveSocialProfile as e1, resolveTextStyle as e2, scriptFontRole as e3, sliceNumberedItems as e4, slideCitations as e5, snapFontSizeDown as e6, snapFontSizeUp as e7, surfaceAltColor as e8, tableGrid as e9, tableRowBoundaries as ea, textColorForFill as eb, textWidthMeasurer as ec, timelineMarkerShapes as ed, timelineTextColor as ee, tokenizeCode as ef, visualReadingOrder as eg, walkCitationRuns as eh, wrapText as ei, LANGUAGES as f, LOGO_SHAPES as g, type LanguageFamilyName as h, type LanguageVocabulary as i, type LogoShape as j, type LogoVariant as k, type ResolvedLogo as l, type SocialPlatformVocabulary as m, type TextStyle as n, normalizeLanguageFamily as o, type AnnotationFitter as p, type AnnotationLayoutOptions as q, CAPTIONABLE_FIELDS as r, CAPTION_FONT_RATIO as s, CAPTION_MAX_RATIO as t, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST as u, CHART_HIGHLIGHT_MUTED_MIX as v, CHART_SERIES_MIN_DIFFERENCE as w, CHART_SERIES_MIN_LIGHTNESS_STEP as x, CITATION_MARKER_RAISE as y, CITATION_MARKER_SCALE as z };