@openpresentation/opf 0.21.0 → 0.22.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 (57) hide show
  1. package/dist/browser.js +16 -16
  2. package/dist/{chunk-XQARTOZJ.js → chunk-23MOKE4B.js} +34 -2
  3. package/dist/{chunk-YZ7RZ4MU.js → chunk-2SENTA2R.js} +1 -1
  4. package/dist/{chunk-ARLOTG23.js → chunk-3T7MNRBY.js} +1 -1
  5. package/dist/{chunk-BWWGYOOG.js → chunk-3UAVON3O.js} +6 -2
  6. package/dist/{chunk-D2XIDBUB.js → chunk-7XNAMCGT.js} +6 -6
  7. package/dist/{chunk-WZPFIPOO.js → chunk-BULGAKBY.js} +2 -2
  8. package/dist/{chunk-VLFDWV7L.js → chunk-KUNXFN7B.js} +1 -1
  9. package/dist/{chunk-6UBIR2U3.js → chunk-LKMR3OLD.js} +6 -6
  10. package/dist/{chunk-W62CX2WG.js → chunk-MAJHCGOW.js} +4 -4
  11. package/dist/{chunk-EFICNDGV.js → chunk-MG34DCDB.js} +2 -2
  12. package/dist/{chunk-D7WZVSNV.js → chunk-MLMTXXM4.js} +5 -5
  13. package/dist/{chunk-2X4ZG2CN.js → chunk-SBWIZSPB.js} +5 -5
  14. package/dist/{chunk-YD44KIRA.js → chunk-SPCONMIY.js} +1 -1
  15. package/dist/{chunk-X6SB52RP.js → chunk-VKNFZEMG.js} +71 -41
  16. package/dist/{chunk-U55BQQKU.js → chunk-X3PQMMAY.js} +1 -1
  17. package/dist/{chunk-THEUCQZZ.js → chunk-YSJRBRHB.js} +1 -1
  18. package/dist/{chunk-7YFMWEPQ.js → chunk-YUIEWE5B.js} +2 -2
  19. package/dist/{composition-DzAV0cfU.d.ts → composition-CkHn6JrM.d.ts} +7 -3
  20. package/dist/composition.d.ts +1 -1
  21. package/dist/composition.js +1 -1
  22. package/dist/{conversion-CtTg2ivR.d.ts → conversion-CSD65VLi.d.ts} +5 -5
  23. package/dist/conversion-JDFXRXTK.js +19 -0
  24. package/dist/convert.d.ts +2 -2
  25. package/dist/convert.js +7 -7
  26. package/dist/data.d.ts +1 -1
  27. package/dist/data.js +2 -2
  28. package/dist/{deck-report-971nEzTY.d.ts → deck-report-vnWmXBjq.d.ts} +2 -2
  29. package/dist/deck.d.ts +5 -5
  30. package/dist/deck.js +10 -10
  31. package/dist/diff.js +5 -5
  32. package/dist/docs.js +11 -11
  33. package/dist/examples.d.ts +1 -1
  34. package/dist/examples.js +282 -1
  35. package/dist/format.js +2 -2
  36. package/dist/index.d.ts +11 -11
  37. package/dist/index.js +20 -20
  38. package/dist/markdown.d.ts +3 -3
  39. package/dist/markdown.js +7 -7
  40. package/dist/node-engine.d.ts +7 -7
  41. package/dist/node-engine.js +20 -20
  42. package/dist/{pagination-BTqRj7dM.d.ts → pagination-C4jzAtFy.d.ts} +1 -1
  43. package/dist/pagination.d.ts +2 -2
  44. package/dist/pagination.js +4 -4
  45. package/dist/patch.js +4 -4
  46. package/dist/{presentation-ZNcXSpvm.d.ts → presentation-fN6tORPZ.d.ts} +8 -4
  47. package/dist/schemas.js +1 -1
  48. package/dist/spec/schemas/opf.schema.json +6 -2
  49. package/dist/types.d.ts +1 -1
  50. package/dist/{validation-types-uLDSrJgM.d.ts → validation-types-B21fZfb2.d.ts} +1 -1
  51. package/dist/{validator-DxAjRPmE.d.ts → validator-Cflv4F9e.d.ts} +2 -2
  52. package/dist/validator.d.ts +4 -4
  53. package/dist/validator.js +3 -3
  54. package/dist/yaml.d.ts +3 -3
  55. package/dist/yaml.js +7 -7
  56. package/package.json +3 -3
  57. package/dist/conversion-524P44NX.js +0 -19
package/dist/browser.js CHANGED
@@ -1,20 +1,20 @@
1
- import { OPFApiError } from './chunk-W62CX2WG.js';
2
- export { OPFApiError, OPFExportError, OPFImportError, OPFMoveToCustomError, copySlides, edit, embed, fill, fillRecords, localAssetSources, moveToCustom, parseSlideSelection, sameRecord, stats, updateFromCatalog } from './chunk-W62CX2WG.js';
1
+ import { OPFApiError } from './chunk-MAJHCGOW.js';
2
+ export { OPFApiError, OPFExportError, OPFImportError, OPFMoveToCustomError, copySlides, edit, embed, fill, fillRecords, localAssetSources, moveToCustom, parseSlideSelection, sameRecord, stats, updateFromCatalog } from './chunk-MAJHCGOW.js';
3
3
  export { specFileEntries, specFileKinds, specFilePaths } from './chunk-UJSAR6GF.js';
4
- export { OPFDataImportError, ingest, parseTabularData } from './chunk-YD44KIRA.js';
5
- export { DECK_FORMATS, deckFormatOf, parse, stringify } from './chunk-D7WZVSNV.js';
6
- export { fromMarkdown, toMarkdown } from './chunk-2X4ZG2CN.js';
7
- import './chunk-D2XIDBUB.js';
8
- export { OPFMarkdownError } from './chunk-ARLOTG23.js';
9
- export { diff, merge } from './chunk-WZPFIPOO.js';
10
- export { OPFPatchError, OPFPatchValidationError, applyPatch } from './chunk-THEUCQZZ.js';
11
- export { OPFFormatError, format } from './chunk-U55BQQKU.js';
12
- export { OPFPaginationError, paginate, paginateSlide } from './chunk-7YFMWEPQ.js';
13
- import './chunk-VLFDWV7L.js';
14
- import './chunk-YZ7RZ4MU.js';
15
- export { CATALOG_SCHEMA, DEFAULT_VALIDATION_THRESHOLDS, OPFValidationError, assertValid, assertValidCatalogRecord, catalogDisplayKinds, catalogSchemaNames, findValidationRule, resolveSlideContext, validate, validateCatalogRecord, validationCategories, validationRules } from './chunk-XQARTOZJ.js';
16
- export { CATALOG_GROUP_PATTERN, CATALOG_REFERENCE_PATTERN, CHART_TYPES, DEFAULT_VARIABLE_DATE_FORMAT, ENGINE_DEFAULT_CHART_TYPES, ENGINE_DEFAULT_COLOR_SCHEME, ENGINE_DEFAULT_FONT_SCHEME, ENGINE_DEFAULT_THEME, LANGUAGES, LOGO_SHAPES, OPFCatalogsOptionError, OPFUnresolvedReferenceError, OPFVariableError, SLIDE_SCOPED_BUILTINS, SOCIAL_PLATFORMS, VARIABLE_KINDS, catalogGroupSource, catalogKinds, catalogRecords, catalogReferenceSites, chartNumber, coerceVariableValue, datasetDiagnostics, formatDataNumber, formatVariableNumber, fromExcelNumberFormat, hasContentVariables, inlineChartData, inlineDatasets, inlineTableData, isDatasetRef, isTemplate, isXYChartType, listBuiltinVariables, listVariables, normalizeLanguageFamily, numberFormatError, parseReference, resolveChartData, resolveDesignRecords, resolveFontScheme, resolveReference, resolveSlideVariables, resolveTableData, resolveVariables, suggestChartNumberFix, tableCellDisplayValue, toExcelNumberFormat, unresolvedReference, unusedDatasets, variableDeclarations } from './chunk-X6SB52RP.js';
17
- export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-BWWGYOOG.js';
4
+ export { OPFDataImportError, ingest, parseTabularData } from './chunk-SPCONMIY.js';
5
+ export { DECK_FORMATS, deckFormatOf, parse, stringify } from './chunk-MLMTXXM4.js';
6
+ export { fromMarkdown, toMarkdown } from './chunk-SBWIZSPB.js';
7
+ import './chunk-7XNAMCGT.js';
8
+ export { OPFMarkdownError } from './chunk-3T7MNRBY.js';
9
+ export { diff, merge } from './chunk-BULGAKBY.js';
10
+ export { OPFPatchError, OPFPatchValidationError, applyPatch } from './chunk-YSJRBRHB.js';
11
+ export { OPFFormatError, format } from './chunk-X3PQMMAY.js';
12
+ export { OPFPaginationError, paginate, paginateSlide } from './chunk-YUIEWE5B.js';
13
+ import './chunk-KUNXFN7B.js';
14
+ import './chunk-2SENTA2R.js';
15
+ export { CATALOG_SCHEMA, DEFAULT_VALIDATION_THRESHOLDS, OPFValidationError, assertValid, assertValidCatalogRecord, catalogDisplayKinds, catalogSchemaNames, findValidationRule, resolveSlideContext, validate, validateCatalogRecord, validationCategories, validationRules } from './chunk-23MOKE4B.js';
16
+ export { CATALOG_GROUP_PATTERN, CATALOG_REFERENCE_PATTERN, CHART_TYPES, DEFAULT_VARIABLE_DATE_FORMAT, ENGINE_DEFAULT_CHART_TYPES, ENGINE_DEFAULT_COLOR_SCHEME, ENGINE_DEFAULT_FONT_SCHEME, ENGINE_DEFAULT_THEME, LANGUAGES, LOGO_SHAPES, OPFCatalogsOptionError, OPFUnresolvedReferenceError, OPFVariableError, SLIDE_SCOPED_BUILTINS, SOCIAL_PLATFORMS, VARIABLE_KINDS, catalogGroupSource, catalogKinds, catalogRecords, catalogReferenceSites, chartNumber, coerceVariableValue, datasetDiagnostics, formatDataNumber, formatVariableNumber, fromExcelNumberFormat, hasContentVariables, inlineChartData, inlineDatasets, inlineTableData, isDatasetRef, isTemplate, isXYChartType, listBuiltinVariables, listVariables, normalizeLanguageFamily, numberFormatError, parseReference, resolveChartData, resolveDesignRecords, resolveFontScheme, resolveReference, resolveSlideVariables, resolveTableData, resolveVariables, suggestChartNumberFix, tableCellDisplayValue, toExcelNumberFormat, unresolvedReference, unusedDatasets, variableDeclarations } from './chunk-VKNFZEMG.js';
17
+ export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-3UAVON3O.js';
18
18
  export { FONT_POLICY, applyFontPolicyDecisions, fontAvailabilityDiagnostics, fontPolicyFor } from './chunk-F7PLNWHQ.js';
19
19
 
20
20
  // src/browser.ts
@@ -1,5 +1,5 @@
1
- import { promotedRegionKeys, VARIABLE_KINDS, resolveChartData, chartPaletteForFill, chartSeriesPalette, normalizeHexColor, resolveChartColors, colorContrast, imageBackground, tableGrid, timelineTextColor, LOGO_SHAPES, visitContentPayloads, readingRows, visualReadingOrder, intrinsicImageSize, resolveReference, textWidthMeasurer, resolveColorRef, resolveDesignRecords, resolveFontFamilies, checkCatalogsOption, provenanceOf, unresolvedReference, OPFUnresolvedReferenceError, resolveColorRoles, resolveCanvasDimensions, resolveSlideVariables, defaultSlideBackground, isRecord, hasContentVariables, isTemplate, instantiateForValidation, layoutTemplateIssues, resolveScriptFonts, catalogReferenceSites, parseReference, catalogGroupDeclared, pointerPath, unusedDatasets, MAX_COMPOSITION_DEPTH, datasetDiagnostics, pathFor, catalogRecords, collectCitations, numberingFindings, walkCitationRuns, resolveTableData, resolveChartOptions, chartOptionTarget, codeHighlightLines, chartNumberFixesByCell, catalogKinds, catalogGroupSource, registeredCatalog, OPFCompositionError, composeSlide } from './chunk-X6SB52RP.js';
2
- import { schemas, schemaEntries } from './chunk-BWWGYOOG.js';
1
+ import { promotedRegionKeys, VARIABLE_KINDS, resolveChartData, chartPaletteForFill, chartSeriesPalette, normalizeHexColor, resolveChartColors, colorContrast, imageBackground, tableGrid, timelineTextColor, LOGO_SHAPES, visitContentPayloads, readingRows, visualReadingOrder, intrinsicImageSize, resolveReference, textWidthMeasurer, resolveColorRef, resolveDesignRecords, resolveFontFamilies, checkCatalogsOption, provenanceOf, unresolvedReference, OPFUnresolvedReferenceError, resolveColorRoles, resolveCanvasDimensions, resolveSlideVariables, defaultSlideBackground, isRecord, hasContentVariables, isTemplate, instantiateForValidation, layoutTemplateIssues, resolveScriptFonts, catalogReferenceSites, parseReference, catalogGroupDeclared, pointerPath, unusedDatasets, MAX_COMPOSITION_DEPTH, datasetDiagnostics, pathFor, catalogRecords, collectCitations, numberingFindings, walkCitationRuns, resolveTableData, resolveChartOptions, chartOptionTarget, codeHighlightLines, chartNumberFixesByCell, catalogKinds, catalogGroupSource, registeredCatalog, OPFCompositionError, composeSlide } from './chunk-VKNFZEMG.js';
2
+ import { schemas, schemaEntries } from './chunk-3UAVON3O.js';
3
3
  import Ajv2020 from 'ajv/dist/2020.js';
4
4
  import addFormats from 'ajv-formats';
5
5
  import { parseTree, printParseErrorCode, getNodePath } from 'jsonc-parser';
@@ -2352,6 +2352,18 @@ var unplacedRule = rule(
2352
2352
  { cost: "composition" }
2353
2353
  );
2354
2354
  var REGION_RULES = { "region-unknown": regionUnknownRule, "region-kind": regionKindRule, "region-full": regionFullRule, "layout-unplaced": unplacedRule };
2355
+ var MAX_FURNITURE_LINES = 2;
2356
+ var furnitureWrapsRule = rule(
2357
+ "furniture-wraps",
2358
+ "layout",
2359
+ "warning",
2360
+ `A header or footer zone wraps onto more than ${MAX_FURNITURE_LINES} lines.`,
2361
+ "Header and footer text repeats on every slide in a band at the slide edge. A zone that wraps onto three or more lines grows into the body, and long source lines read poorly at footer size. Footers carry short repeated text (a title, a date, a page number); sources belong in a caption or the speaker notes.",
2362
+ {
2363
+ cost: "composition",
2364
+ approximations: "Uses the lines core composed for the zone at the deck's slide size; without a host-supplied text measurement (ValidateOptions.fonts.textMeasurement) widths are core's portable estimates. A deck-level header or footer is reported once."
2365
+ }
2366
+ );
2355
2367
  var layoutRules = [
2356
2368
  {
2357
2369
  info: overflowRule,
@@ -2410,6 +2422,26 @@ var layoutRules = [
2410
2422
  }
2411
2423
  }
2412
2424
  }
2425
+ },
2426
+ {
2427
+ info: furnitureWrapsRule,
2428
+ run(context) {
2429
+ const reported = /* @__PURE__ */ new Set();
2430
+ for (const slide of context.slides)
2431
+ for (const part of slide.composition?.furniture?.parts ?? []) {
2432
+ if (part.type !== "text" || part.fit.lines.length <= MAX_FURNITURE_LINES) continue;
2433
+ const path = pointerOfDotted(part.sourcePath ?? part.path);
2434
+ if (reported.has(path)) continue;
2435
+ reported.add(path);
2436
+ context.report(furnitureWrapsRule, {
2437
+ path,
2438
+ slide,
2439
+ message: `The ${part.kind} ${part.zone} text wraps onto ${part.fit.lines.length} lines (at most ${MAX_FURNITURE_LINES}).`,
2440
+ help: "Shorten the text, or move sources and notes to a caption or the speaker notes; keep the footer for short repeated text.",
2441
+ measured: { lines: part.fit.lines.length, maximumLines: MAX_FURNITURE_LINES }
2442
+ });
2443
+ }
2444
+ }
2413
2445
  }
2414
2446
  ];
2415
2447
  var outsideRule = rule(
@@ -1,4 +1,4 @@
1
- import { validate } from './chunk-XQARTOZJ.js';
1
+ import { validate } from './chunk-23MOKE4B.js';
2
2
 
3
3
  // src/convert/shared.ts
4
4
  var CONTENT_KEYS = ["text", "items", "bullets", "image", "video", "chart", "table", "code", "metric", "quote", "timeline"];
@@ -1,4 +1,4 @@
1
- import { isRecord, same } from './chunk-YZ7RZ4MU.js';
1
+ import { isRecord, same } from './chunk-2SENTA2R.js';
2
2
  import { parseDocument, YAMLMap, Scalar, stringify } from 'yaml';
3
3
 
4
4
  // src/not-checked.ts
@@ -1201,7 +1201,7 @@ var presentation = {
1201
1201
  "center",
1202
1202
  "right"
1203
1203
  ],
1204
- "description": "Default horizontal alignment for the title heading area in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.titleAlignment, then the layout record's design.titleAlignment, then the engine default."
1204
+ "description": "Default horizontal alignment for the title heading area (the title and the tag) in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.titleAlignment, then the layout record's design.titleAlignment, then the engine default."
1205
1205
  },
1206
1206
  "contentAlignment": {
1207
1207
  "type": "string",
@@ -1210,7 +1210,7 @@ var presentation = {
1210
1210
  "center",
1211
1211
  "right"
1212
1212
  ],
1213
- "description": "Default horizontal alignment for body/content regions in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.contentAlignment, then the layout record's design.contentAlignment, then the engine default. A cover's tag and subtitle follow titleAlignment unless the slide's own design sets contentAlignment."
1213
+ "description": "Default horizontal alignment for body/content regions in resolved layouts. Effective value: the slide's design, then the deck's design, then the theme's design.contentAlignment, then the layout record's design.contentAlignment, then the engine default. The tag follows titleAlignment (and a cover's subtitle with it) unless the slide's own design sets contentAlignment."
1214
1214
  },
1215
1215
  "contentBox": {
1216
1216
  "type": "boolean",
@@ -5410,6 +5410,10 @@ var presentation = {
5410
5410
  "$ref": "#/$defs/ColorRef",
5411
5411
  "description": "Default text color, overridden by individual rich run colors. Accepts a hex color, a color-scheme slot or role name, or a 'var:<id>' variable reference."
5412
5412
  },
5413
+ "bold": {
5414
+ "type": "boolean",
5415
+ "description": "Bold cell text. Runs that set their own bold keep it; a number cell stays bold and still uses the cell's or column's number format."
5416
+ },
5413
5417
  "align": {
5414
5418
  "type": "string",
5415
5419
  "enum": [
@@ -1,9 +1,9 @@
1
- import { NOT_CHECKED, Ctx } from './chunk-ARLOTG23.js';
2
- import { sortPresentationKeys } from './chunk-U55BQQKU.js';
3
- import { same } from './chunk-YZ7RZ4MU.js';
4
- import { validate } from './chunk-XQARTOZJ.js';
5
- import { checkCatalogsOption } from './chunk-X6SB52RP.js';
6
- import { presentation } from './chunk-BWWGYOOG.js';
1
+ import { NOT_CHECKED, Ctx } from './chunk-3T7MNRBY.js';
2
+ import { sortPresentationKeys } from './chunk-X3PQMMAY.js';
3
+ import { same } from './chunk-2SENTA2R.js';
4
+ import { validate } from './chunk-23MOKE4B.js';
5
+ import { checkCatalogsOption } from './chunk-VKNFZEMG.js';
6
+ import { presentation } from './chunk-3UAVON3O.js';
7
7
  import { Parser, parseDocument, isMap, Document, visit, isScalar, isAlias, isSeq } from 'yaml';
8
8
 
9
9
  var MAX_ALIAS_COUNT = 100;
@@ -1,5 +1,5 @@
1
- import { jsonEqual, formatPointer } from './chunk-THEUCQZZ.js';
2
- import { annotationText } from './chunk-X6SB52RP.js';
1
+ import { jsonEqual, formatPointer } from './chunk-YSJRBRHB.js';
2
+ import { annotationText } from './chunk-VKNFZEMG.js';
3
3
 
4
4
  // src/diff-match.ts
5
5
  var DEFAULT_MATCH_THRESHOLD = 0.5;
@@ -1,4 +1,4 @@
1
- import { runText } from './chunk-YZ7RZ4MU.js';
1
+ import { runText } from './chunk-2SENTA2R.js';
2
2
 
3
3
  // src/convert/text-lines.ts
4
4
  var LIST_PREFIX = /^([ \t]*)(?:([-*•+]|\d{1,3}[.)])[ \t]+)?/;
@@ -1,8 +1,8 @@
1
- import { defaultCatalogs } from './chunk-EFICNDGV.js';
2
- import { localAssetSources, OPFApiError, parseSlideSelection, OPFExportError, asApiError, OPFImportError } from './chunk-W62CX2WG.js';
3
- import { deckFormatOf, readDeckReport, stringify } from './chunk-D7WZVSNV.js';
4
- import { paginate } from './chunk-7YFMWEPQ.js';
5
- import { validate, OPFValidationError } from './chunk-XQARTOZJ.js';
1
+ import { defaultCatalogs } from './chunk-MG34DCDB.js';
2
+ import { localAssetSources, OPFApiError, parseSlideSelection, OPFExportError, asApiError, OPFImportError } from './chunk-MAJHCGOW.js';
3
+ import { deckFormatOf, readDeckReport, stringify } from './chunk-MLMTXXM4.js';
4
+ import { paginate } from './chunk-YUIEWE5B.js';
5
+ import { validate, OPFValidationError } from './chunk-23MOKE4B.js';
6
6
  import { link, stat, readdir, lstat, readFile, open, unlink, mkdir, rename } from 'fs/promises';
7
7
  import path6 from 'path';
8
8
  import { readFileSync, statSync, realpathSync } from 'fs';
@@ -117,7 +117,7 @@ function localAssetProblems(deck, root) {
117
117
  }
118
118
  var RENDER_PACKAGE = "@openpresentation/opf-render";
119
119
  var PPTX_PACKAGE = "@openpresentation/opf-pptx";
120
- var PEER_RANGES = { [RENDER_PACKAGE]: "^0.20.0", [PPTX_PACKAGE]: "^0.20.0" };
120
+ var PEER_RANGES = { [RENDER_PACKAGE]: "^0.22.0", [PPTX_PACKAGE]: "^0.22.0" };
121
121
  var RENDER_EXTRAS = {
122
122
  /** The faces of the office pack, which the CLI and `convert` always load (every format). */
123
123
  fonts: ["@expo-google-fonts/roboto@0.4.3", "@expo-google-fonts/roboto-mono@0.4.2", "@expo-google-fonts/caladea@0.4.2", "@expo-google-fonts/arimo@0.4.3", "@expo-google-fonts/tinos@0.4.2", "@expo-google-fonts/cousine@0.4.3", "@expo-google-fonts/gelasio@0.4.1", "@expo-google-fonts/noto-sans@0.4.2"],
@@ -1,7 +1,7 @@
1
- import { OPFDataImportError, parseTabularData } from './chunk-YD44KIRA.js';
2
- import { applyPatchWithInverse } from './chunk-THEUCQZZ.js';
3
- import { validate, OPFValidationError } from './chunk-XQARTOZJ.js';
4
- import { embeddedCopy, checkCatalogsOption, catalogReferenceSites, parseReference, catalogGroupDeclared, resolveReference, dottedPath, unresolvedReference, recordReferenceSites, catalogGroupSource, registeredCatalog, catalogKinds, CATALOG_GROUP_PATTERN, isRecord, visitContentPayloads, annotationText, listVariables, resolveVariables, LOGO_SHAPES, resolveDesignRecords, resolveFontFamilies, resolveCanvasDimensions, imageBackground } from './chunk-X6SB52RP.js';
1
+ import { OPFDataImportError, parseTabularData } from './chunk-SPCONMIY.js';
2
+ import { applyPatchWithInverse } from './chunk-YSJRBRHB.js';
3
+ import { validate, OPFValidationError } from './chunk-23MOKE4B.js';
4
+ import { embeddedCopy, checkCatalogsOption, catalogReferenceSites, parseReference, catalogGroupDeclared, resolveReference, dottedPath, unresolvedReference, recordReferenceSites, catalogGroupSource, registeredCatalog, catalogKinds, CATALOG_GROUP_PATTERN, isRecord, visitContentPayloads, annotationText, listVariables, resolveVariables, LOGO_SHAPES, resolveDesignRecords, resolveFontFamilies, resolveCanvasDimensions, imageBackground } from './chunk-VKNFZEMG.js';
5
5
 
6
6
  // src/api-errors.ts
7
7
  var OPFApiError = class extends Error {
@@ -1,5 +1,5 @@
1
- import { OPFApiError } from './chunk-W62CX2WG.js';
2
- import { CATALOG_SCHEMA } from './chunk-XQARTOZJ.js';
1
+ import { OPFApiError } from './chunk-MAJHCGOW.js';
2
+ import { CATALOG_SCHEMA } from './chunk-23MOKE4B.js';
3
3
  import { CATALOG_SCHEMA as CATALOG_SCHEMA$1, gallery } from '@openpresentation/gallery';
4
4
 
5
5
  function galleryMismatch(declared, reads = CATALOG_SCHEMA) {
@@ -1,8 +1,8 @@
1
- import { fromMarkdown, toMarkdown } from './chunk-2X4ZG2CN.js';
2
- import { fromYaml, toYaml } from './chunk-D2XIDBUB.js';
3
- import { NOT_CHECKED } from './chunk-ARLOTG23.js';
4
- import { parseSource, validate, OPFValidationError } from './chunk-XQARTOZJ.js';
5
- import { checkCatalogsOption } from './chunk-X6SB52RP.js';
1
+ import { fromMarkdown, toMarkdown } from './chunk-SBWIZSPB.js';
2
+ import { fromYaml, toYaml } from './chunk-7XNAMCGT.js';
3
+ import { NOT_CHECKED } from './chunk-3T7MNRBY.js';
4
+ import { parseSource, validate, OPFValidationError } from './chunk-23MOKE4B.js';
5
+ import { checkCatalogsOption } from './chunk-VKNFZEMG.js';
6
6
 
7
7
  // src/deck-report.ts
8
8
  var DECK_FORMATS = ["json", "yaml", "markdown"];
@@ -1,8 +1,8 @@
1
- import { Ctx, splitLines, lineRange, readYamlMapping, NOT_CHECKED, OPFMarkdownError, writeYaml, readCsv, DECIMAL, csvField, scalarText } from './chunk-ARLOTG23.js';
2
- import { parseQuoteLines, levelsFromIndents, parseCodeFence, splitWhen, fenceCode } from './chunk-VLFDWV7L.js';
3
- import { same, isRecord, runText, isPlainRun, FORMATTING } from './chunk-YZ7RZ4MU.js';
4
- import { validate } from './chunk-XQARTOZJ.js';
5
- import { checkCatalogsOption, PROMOTED_REGION_KEY } from './chunk-X6SB52RP.js';
1
+ import { Ctx, splitLines, lineRange, readYamlMapping, NOT_CHECKED, OPFMarkdownError, writeYaml, readCsv, DECIMAL, csvField, scalarText } from './chunk-3T7MNRBY.js';
2
+ import { parseQuoteLines, levelsFromIndents, parseCodeFence, splitWhen, fenceCode } from './chunk-KUNXFN7B.js';
3
+ import { same, isRecord, runText, isPlainRun, FORMATTING } from './chunk-2SENTA2R.js';
4
+ import { validate } from './chunk-23MOKE4B.js';
5
+ import { checkCatalogsOption, PROMOTED_REGION_KEY } from './chunk-VKNFZEMG.js';
6
6
 
7
7
  // src/markdown/canon.ts
8
8
  var FORMAT_KEYS = FORMATTING;
@@ -1,4 +1,4 @@
1
- import { chartNumber } from './chunk-X6SB52RP.js';
1
+ import { chartNumber } from './chunk-VKNFZEMG.js';
2
2
 
3
3
  // src/data.ts
4
4
  var OPFDataImportError = class extends Error {
@@ -5189,6 +5189,7 @@ function resolveSocialProfile(platform, value, owner = "organization") {
5189
5189
  return { text: display(url), href: encodeURI(url), resolved: true };
5190
5190
  }
5191
5191
  var FURNITURE_GAP = 12;
5192
+ var FURNITURE_ZONE_GUTTER = 0.02;
5192
5193
  var FURNITURE_IMAGE_SHARE = 0.4;
5193
5194
  var SPACED_WORD_CHARACTER = /^[\p{L}\p{N}\p{M}]$/u;
5194
5195
  var UNSPACED_SCRIPT = /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Thai}\p{Script=Lao}\p{Script=Khmer}\p{Script=Myanmar}\p{Script=Tibetan}]/u;
@@ -5225,9 +5226,25 @@ function layoutFurniture(input, options = {}) {
5225
5226
  if (!value || typeof value !== "object" || Array.isArray(value)) throw new TypeError("Header/footer content must be an object or false.");
5226
5227
  configured = true;
5227
5228
  const zones = [];
5229
+ const inset = Math.min((settings.padding ?? 0.08) * Math.min(width, height), width * 0.25), gutter = width * FURNITURE_ZONE_GUTTER, column = (width - 2 * inset - 2 * gutter) / 3;
5230
+ const slotOf = (index) => furnitureRtl && index !== 1 ? 2 - index : index;
5231
+ const hasContent = (zone) => {
5232
+ const item = record8(record8(value)[zone]);
5233
+ return item.image !== void 0 || (typeof item.text === "string" ? item.text.trim() !== "" : item.text !== void 0) || item.socials === true || item.date === true || typeof item.date === "string";
5234
+ };
5235
+ const slots = ["left", "center", "right"].map((zone, index) => ({ slot: slotOf(index), occupied: hasContent(zone) })).sort((a, b) => a.slot - b.slot);
5236
+ const first = slots.findIndex((entry) => entry.occupied);
5237
+ const interval = (slot) => {
5238
+ const start = inset + slot * (column + gutter), end = start + column;
5239
+ if (!slots[slot].occupied || first < 0) return { x: start, width: column };
5240
+ const before = slots.slice(0, slot).map((entry) => entry.occupied).lastIndexOf(true), after = slots.findIndex((entry, i) => i > slot && entry.occupied);
5241
+ const left = before < 0 ? start - inset : (start - (inset + before * (column + gutter) + column) - gutter) / 2, right = after < 0 ? width - inset - end : (inset + after * (column + gutter) - end - gutter) / 2;
5242
+ const lend = slot === 1 ? Math.min(left, right) : void 0;
5243
+ return { x: start - (lend ?? left), width: column + (lend ?? left) + (lend ?? right) };
5244
+ };
5228
5245
  for (const [index, zone] of ["left", "center", "right"].entries()) {
5229
5246
  const side = furnitureRtl && zone !== "center" ? zone === "left" ? "right" : "left" : zone;
5230
- const content = record8(record8(value)[zone]), path = `${root}.${zone}`, x = width * (0.07 + (furnitureRtl ? 2 - index : index) * 0.3), zoneWidth = width * 0.26;
5247
+ const content = record8(record8(value)[zone]), path = `${root}.${zone}`, { x, width: zoneWidth } = interval(slotOf(index));
5231
5248
  const pending = [];
5232
5249
  const add = (field, text2, generated = false, sourcePath, extras = {}) => {
5233
5250
  if (text2 === void 0) return;
@@ -6284,7 +6301,7 @@ ${flatten(entry.description)}` : ""}`;
6284
6301
  return void 0;
6285
6302
  }
6286
6303
  function layoutTable(value, box, options = {}) {
6287
- const scale = options.scale ?? 1, minimum = snapFontSizeUp((options.minFontSize ?? 16) * scale), requested = gridFontSize(15 * scale, minimum);
6304
+ const scale = options.scale ?? 1, minimum = snapFontSizeUp((options.minFontSize ?? 16) * scale), requested = gridFontSize(contentNominalSize("table") * scale, minimum);
6288
6305
  if (![box.x, box.y, box.width, box.height, scale, minimum].every(Number.isFinite) || box.width <= 0 || box.height <= 0 || scale <= 0 || minimum <= 0) throw new RangeError("Table dimensions, scale and font sizes must be finite and positive.");
6289
6306
  const inline = inlineTableData(value, options.presentation);
6290
6307
  const grid = tableGrid(inline, options.path ?? "table");
@@ -6292,7 +6309,7 @@ function layoutTable(value, box, options = {}) {
6292
6309
  const numeric = new Set(grid.rows.flat().filter((cell) => !cell.header && typeof cell.value === "number" && Number.isFinite(cell.value)));
6293
6310
  const numericColumns = new Set(Array.from({ length: grid.columnCount }, (_, column) => column).filter((column) => {
6294
6311
  const body = grid.rows.flat().filter((cell) => !cell.header && cell.column === column && cell.value !== null && cell.value !== void 0);
6295
- return body.length > 0 && body.every((cell) => cell.colSpan === 1 && numeric.has(cell));
6312
+ return body.some((cell) => numeric.has(cell)) && body.every((cell) => cell.colSpan === 1 && (numeric.has(cell) || Array.isArray(cell.value)));
6296
6313
  }));
6297
6314
  const formats = resolveTableData(inline).formats;
6298
6315
  for (const row of grid.rows) for (const cell of row) {
@@ -6304,52 +6321,65 @@ function layoutTable(value, box, options = {}) {
6304
6321
  const cells = grid.rows.flat().map((cell) => {
6305
6322
  const padding = { top: 8, right: 10, bottom: 4, left: 10, ...cell.style.padding };
6306
6323
  const width = cellWidth * cell.colSpan - (padding.left + padding.right) * scale;
6307
- const style = { fontFamily: options.fontFamily ?? "sans-serif", fontWeight: cell.header ? 700 : 400, italic: false, path: cell.valuePath };
6308
- const numericDefault = numeric.has(cell) || cell.header && cell.colSpan === 1 && numericColumns.has(cell.column);
6324
+ const style = { fontFamily: options.fontFamily ?? "sans-serif", fontWeight: cell.header || cell.style.bold ? 700 : 400, italic: false, path: cell.valuePath };
6325
+ const numericDefault = numeric.has(cell) || (cell.header || Array.isArray(cell.value)) && cell.colSpan === 1 && numericColumns.has(cell.column);
6309
6326
  const alignment = cell.style.align ?? options.alignment ?? (numericDefault ? options.direction === "rtl" ? "left" : "right" : "left");
6310
6327
  return { ...cell, padding, width, textStyle: style, alignment };
6311
6328
  });
6312
6329
  const cellMinimum = (cell) => Array.isArray(cell.value) ? richMinimum(cell.value, requested, minimum) : minimum;
6313
- const fitCell = (cell, height, min) => {
6314
- const textBox = { width: Math.max(scale, cell.width), height: Math.max(scale, height) };
6315
- return Array.isArray(cell.value) ? fitRichText(cell.value, textBox, requested, min, { style: cell.textStyle, ...options.codeFontFamily ? { codeFontFamily: options.codeFontFamily } : {}, textMeasurement: options.textMeasurement, uniformLineHeight: true, direction: options.direction }) : fitText(flatten(cell.value), textBox, requested, min, textWidthMeasurer(resolveTextStyle(cell.textStyle, options.textMeasurement), options.textMeasurement), options.direction);
6330
+ let trial = requested;
6331
+ const cellSize = (cell) => {
6332
+ const floor = cellMinimum(cell);
6333
+ return gridFontSize(Math.max(trial, floor), floor);
6334
+ };
6335
+ const fitCell = (cell, height) => {
6336
+ const textBox = { width: Math.max(scale, cell.width), height: Math.max(scale, height) }, size = cellSize(cell);
6337
+ return Array.isArray(cell.value) ? richTextLayouter(cell.value, textBox, requested, { style: cell.textStyle, ...options.codeFontFamily ? { codeFontFamily: options.codeFontFamily } : {}, textMeasurement: options.textMeasurement, uniformLineHeight: true, direction: options.direction }, minimum)(size) : fitText(flatten(cell.value), textBox, size, size, textWidthMeasurer(resolveTextStyle(cell.textStyle, options.textMeasurement), options.textMeasurement), options.direction);
6316
6338
  };
6317
6339
  const textHeight = (fit) => "height" in fit ? fit.height : fit.lines.length * fit.lineHeight;
6318
- const required = (cell, natural2) => {
6319
- const floor = cellMinimum(cell), size = gridFontSize(natural2 ? Math.max(requested, floor) : floor, floor);
6340
+ const required = (cell, natural) => {
6341
+ const floor = cellMinimum(cell), size = gridFontSize(natural ? Math.max(trial, floor) : floor, floor);
6320
6342
  const textBox = { width: Math.max(scale, cell.width), height: scale };
6321
6343
  const fit = Array.isArray(cell.value) ? richTextLayouter(cell.value, textBox, requested, { style: cell.textStyle, ...options.codeFontFamily ? { codeFontFamily: options.codeFontFamily } : {}, textMeasurement: options.textMeasurement, uniformLineHeight: true }, minimum)(size) : fitText(flatten(cell.value), textBox, size, size, textWidthMeasurer(resolveTextStyle(cell.textStyle, options.textMeasurement), options.textMeasurement));
6322
6344
  return textHeight(fit) + (cell.padding.top + cell.padding.bottom) * scale;
6323
6345
  };
6324
- const natural = Array(grid.rowCount).fill(0), needed = Array(grid.rowCount).fill(0);
6325
- for (const cell of cells) if (cell.rowSpan === 1) {
6326
- natural[cell.row] = Math.max(natural[cell.row], required(cell, true));
6327
- needed[cell.row] = Math.max(needed[cell.row], required(cell, false));
6328
- }
6329
- for (const cell of cells) if (cell.rowSpan > 1) for (const [heights2, preferredSize] of [[natural, true], [needed, false]]) {
6330
- const current = heights2.slice(cell.row, cell.row + cell.rowSpan).reduce((a, b) => a + b, 0);
6331
- const extra = Math.max(0, required(cell, preferredSize) - current) / cell.rowSpan;
6332
- for (let r = cell.row; r < cell.row + cell.rowSpan; r++) heights2[r] += extra;
6333
- }
6334
- const preferred = natural.map((height) => Math.max(54 * scale, height));
6335
- for (let r = 0; r < needed.length; r++) needed[r] = Math.min(preferred[r], needed[r]);
6336
- const sum = (values) => values.reduce((a, b) => a + b, 0);
6337
- const preferredTotal = sum(preferred), naturalTotal = sum(natural), neededTotal = sum(needed);
6338
- const heights = preferred.map((height, r) => preferredTotal <= box.height ? height : naturalTotal <= box.height ? natural[r] + (height - natural[r]) * (box.height - naturalTotal) / Math.max(Number.EPSILON, preferredTotal - naturalTotal) : neededTotal <= box.height ? needed[r] + (natural[r] - needed[r]) * (box.height - neededTotal) / Math.max(Number.EPSILON, naturalTotal - neededTotal) : needed[r] * box.height / neededTotal);
6339
- const ys = [box.y];
6340
- for (const height of heights) ys.push(ys.at(-1) + height);
6341
- let overflow = false;
6342
- const rows3 = heights.map((height, r) => ({ box: { x: box.x, y: ys[r], width: box.width, height }, cells: [] }));
6343
- for (const cell of cells) {
6344
- const cellBox = { x: box.x + (options.direction === "rtl" ? columnCount - cell.column - cell.colSpan : cell.column) * cellWidth, y: ys[cell.row], width: cell.colSpan * cellWidth, height: ys[cell.row + cell.rowSpan] - ys[cell.row] };
6345
- const available = cellBox.height - (cell.padding.top + cell.padding.bottom) * scale;
6346
- const fit = fitCell(cell, available, minimum), height = textHeight(fit);
6347
- const offset = cell.style.verticalAlign === "bottom" ? Math.max(0, available - height) : cell.style.verticalAlign === "middle" ? Math.max(0, (available - height) / 2) : 0;
6348
- const textBox = { x: cellBox.x + cell.padding.left * scale, y: cellBox.y + cell.padding.top * scale + offset, width: Math.max(scale, cell.width), height: Math.max(scale, available - offset) };
6349
- overflow ||= cell.width <= 0 || available <= 0 || fit.overflow;
6350
- rows3[cell.row].cells.push({ value: cell.value, input: cell.input, path: cell.valuePath, sourcePath: cell.path, style: cell.style, alignment: cell.alignment, row: cell.row, column: cell.column, rowSpan: cell.rowSpan, colSpan: cell.colSpan, header: cell.header, rich: Array.isArray(cell.value), box: cellBox, textBox, textStyle: resolveTextStyle(cell.textStyle, options.textMeasurement), fit, ...fit.directions ? { direction: fit.directions[0] } : {} });
6351
- }
6352
- return { rows: rows3, columnCount, height: sum(heights), overflow };
6346
+ const place = () => {
6347
+ const natural = Array(grid.rowCount).fill(0), needed = Array(grid.rowCount).fill(0);
6348
+ for (const cell of cells) if (cell.rowSpan === 1) {
6349
+ natural[cell.row] = Math.max(natural[cell.row], required(cell, true));
6350
+ needed[cell.row] = Math.max(needed[cell.row], required(cell, false));
6351
+ }
6352
+ for (const cell of cells) if (cell.rowSpan > 1) for (const [heights2, preferredSize] of [[natural, true], [needed, false]]) {
6353
+ const current = heights2.slice(cell.row, cell.row + cell.rowSpan).reduce((a, b) => a + b, 0);
6354
+ const extra = Math.max(0, required(cell, preferredSize) - current) / cell.rowSpan;
6355
+ for (let r = cell.row; r < cell.row + cell.rowSpan; r++) heights2[r] += extra;
6356
+ }
6357
+ const preferred = natural.map((height) => Math.max(54 * scale, height));
6358
+ for (let r = 0; r < needed.length; r++) needed[r] = Math.min(preferred[r], needed[r]);
6359
+ const sum = (values) => values.reduce((a, b) => a + b, 0);
6360
+ const preferredTotal = sum(preferred), naturalTotal = sum(natural), neededTotal = sum(needed);
6361
+ const heights = preferred.map((height, r) => preferredTotal <= box.height ? height : naturalTotal <= box.height ? natural[r] + (height - natural[r]) * (box.height - naturalTotal) / Math.max(Number.EPSILON, preferredTotal - naturalTotal) : neededTotal <= box.height ? needed[r] + (natural[r] - needed[r]) * (box.height - neededTotal) / Math.max(Number.EPSILON, naturalTotal - neededTotal) : needed[r] * box.height / neededTotal);
6362
+ const ys = [box.y];
6363
+ for (const height of heights) ys.push(ys.at(-1) + height);
6364
+ let overflow = false;
6365
+ const rows3 = heights.map((height, r) => ({ box: { x: box.x, y: ys[r], width: box.width, height }, cells: [] }));
6366
+ for (const cell of cells) {
6367
+ const cellBox = { x: box.x + (options.direction === "rtl" ? columnCount - cell.column - cell.colSpan : cell.column) * cellWidth, y: ys[cell.row], width: cell.colSpan * cellWidth, height: ys[cell.row + cell.rowSpan] - ys[cell.row] };
6368
+ const available = cellBox.height - (cell.padding.top + cell.padding.bottom) * scale;
6369
+ const fit = fitCell(cell, available), height = textHeight(fit);
6370
+ const offset = cell.style.verticalAlign === "bottom" ? Math.max(0, available - height) : cell.style.verticalAlign === "middle" ? Math.max(0, (available - height) / 2) : 0;
6371
+ const textBox = { x: cellBox.x + cell.padding.left * scale, y: cellBox.y + cell.padding.top * scale + offset, width: Math.max(scale, cell.width), height: Math.max(scale, available - offset) };
6372
+ overflow ||= cell.width <= 0 || available <= 0 || fit.overflow;
6373
+ rows3[cell.row].cells.push({ value: cell.value, input: cell.input, path: cell.valuePath, sourcePath: cell.path, style: cell.style, alignment: cell.alignment, row: cell.row, column: cell.column, rowSpan: cell.rowSpan, colSpan: cell.colSpan, header: cell.header, rich: Array.isArray(cell.value), box: cellBox, textBox, textStyle: resolveTextStyle(cell.textStyle, options.textMeasurement), fit, ...fit.directions ? { direction: fit.directions[0] } : {} });
6374
+ }
6375
+ return { rows: rows3, columnCount, height: sum(heights), overflow };
6376
+ };
6377
+ for (let step = 0; ; step++) {
6378
+ const raw = requested - step * scale, last = step === 64 || raw <= minimum;
6379
+ trial = last ? snapFontSizeUp(minimum) : gridFontSize(raw, minimum);
6380
+ const layout = place();
6381
+ if (last || !layout.overflow) return layout;
6382
+ }
6353
6383
  }
6354
6384
  function tableOverflows(value, box, scale, settings, options, path) {
6355
6385
  return box.width <= 0 || box.height <= 0 || layoutTable(value, box, { scale, minFontSize: settings.minFontSize, fontFamily: options.fontFamilies?.body, ...options.fontFamilies?.code ? { codeFontFamily: options.fontFamilies.code } : {}, textMeasurement: options.textMeasurement, path, presentation: options.presentation }).overflow;
@@ -6457,7 +6487,7 @@ function composeSlide(input, options = {}) {
6457
6487
  const rasterPadding = (options.textRasterPadding ?? 1) * scale;
6458
6488
  if (!Number.isFinite(rasterPadding) || rasterPadding < 0) throw new RangeError("Text raster padding must be finite and nonnegative.");
6459
6489
  let coverGroup = false;
6460
- const alignmentFor = (field) => (field === "title" || coverGroup && (field === "tag" || field === "subtitle") && hints.sources.contentAlignment !== "slide" ? hints.titleAlignment : hints.contentAlignment) ?? (field === "metric" ? "center" : "left");
6490
+ const alignmentFor = (field) => (field === "title" || (field === "tag" || coverGroup && field === "subtitle") && hints.sources.contentAlignment !== "slide" ? hints.titleAlignment : hints.contentAlignment) ?? (field === "metric" ? "center" : "left");
6461
6491
  const styleFor = (field, path2) => resolveTextStyle({
6462
6492
  fontFamily: (field === "title" ? options.fontFamilies?.heading : field === "code" ? options.fontFamilies?.code : field === "tag" ? options.fontFamilies?.accent ?? options.fontFamilies?.body : options.fontFamilies?.body) ?? (field === "code" ? "monospace" : "sans-serif"),
6463
6493
  fontWeight: field === "title" ? 700 : 400,
@@ -7249,4 +7279,4 @@ function resolveCanvasDimensions(input) {
7249
7279
  return { width, height };
7250
7280
  }
7251
7281
 
7252
- export { AUTO_LAYOUT, CAPTIONABLE_FIELDS, CAPTION_FONT_RATIO, CAPTION_MAX_RATIO, CATALOG_GROUP_PATTERN, CATALOG_REFERENCE_PATTERN, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST, CHART_HIGHLIGHT_MUTED_MIX, CHART_SERIES_MIN_DIFFERENCE, CHART_SERIES_MIN_LIGHTNESS_STEP, CHART_SERIES_TIER_SIZE, CHART_SERIES_TINT_MIX, CHART_TEXT_PX, CHART_TYPES, CITATION_MARKER_RAISE, CITATION_MARKER_SCALE, CODE_HIGHLIGHT_LANGUAGES, CODE_HIGHLIGHT_MAX_LENGTH, CODE_PANEL_BACKGROUND, CODE_PANEL_FOREGROUND, CODE_SYNTAX_MIN_CONTRAST, DARK_BACKGROUND_LUMINANCE, DEFAULT_CHART_LABEL_SEPARATOR, DEFAULT_FURNITURE_DATE_FORMAT, DEFAULT_VARIABLE_DATE_FORMAT, DESIGN_HINT_KEYS, ENGINE_DEFAULT_CHART_TYPES, ENGINE_DEFAULT_COLOR_SCHEME, ENGINE_DEFAULT_FONT_SCHEME, ENGINE_DEFAULT_THEME, FONT_SIZE_GRID_PER_PX, FOOTNOTE_MAX_RATIO, FURNITURE_GAP, FURNITURE_IMAGE_SHARE, HEADING_AREAS, LANGUAGES, LAYOUT_BODY_KINDS, LOGO_SHAPES, MAX_COMPOSITION_DEPTH, MAX_NUMBERING_LEVELS, MAX_NUMBERING_VALUE, MAX_REGION_BLOCKS, MAX_ROMAN_VALUE, MAX_TEMPLATE_TRACKS, METRIC_TREND_MIN_CONTRAST, METRIC_TREND_SHAPES, NUMBERING_STYLES, NUMBERING_SUFFIXES, OPFCatalogsOptionError, OPFCompositionError, OPFLayoutTemplateError, OPFUnresolvedReferenceError, OPFVariableError, PATTERN_PRESETS, PATTERN_PRESET_ALIASES, PATTERN_TILE_SIZE, PICTURE_BULLET_SCALE, PROMOTED_REGION_KEY, REGION_ANCHORS, REGION_FLOWS, REGION_KINDS, REGION_ROLES, RESERVED_REGION_NAMES, SLIDE_SCOPED_BUILTINS, SOCIAL_PLATFORMS, SURFACE_ALT_MIN_CONTRAST, SURFACE_ALT_MIX, THEME_DESIGN_KEYS, TIMELINE_OUTLINE_MIN_CONTRAST, TIMELINE_STATUSES, TIMELINE_TEXT_MIN_CONTRAST, VARIABLE_KINDS, allocateRows, annotationText, bindRegions, blockKind, captionSettings, catalogGroupDeclared, catalogGroupSource, catalogKinds, catalogRecords, catalogReferenceSites, chartColorForFill, chartHighlightColors, chartHighlightMarks, chartLabelText, chartNumber, chartNumberFixesByCell, chartOptionSupport, chartOptionTarget, chartPaletteForFill, chartSeriesPalette, chartTextSize, chartValueAxis, checkCatalogsOption, citationMarkerText, codeHighlightBands, codeHighlightColors, codeHighlightLines, codeHighlightSlice, codeLineNumbers, codeLineRuns, codeSyntaxPalette, codeSyntaxPaletteForScheme, coerceVariableValue, collectCitations, colorContrast, composeLayoutAreas, composeSlide, datasetDiagnostics, defaultSlideBackground, dottedPath, embeddedCopy, fitImage, fitList, fitRichText, fitText, formatChartLabelNumber, formatChartLabelPercent, formatDataNumber, formatFurnitureDate, formatListNumber, formatVariableNumber, fromExcelNumberFormat, gridFlowShape, hasContentVariables, imageBackground, imageShape, inlineChartData, inlineDatasets, inlineTableData, instantiateForValidation, intrinsicImageAspect, intrinsicImageSize, isDarkColor, isDatasetRef, isLayoutTemplate, isRecord, isTemplate, isXYChartType, layoutCaption, layoutCode, layoutContent, layoutFootnotes, layoutFurniture, layoutMetric, layoutQuote, layoutRegion, layoutStructure, layoutTable, layoutTemplate, layoutTemplateIssues, layoutTimeline, layoutWatermark, listBuiltinVariables, listColumnBreaks, listNumbers, listVariables, maxIntervalsFor, measureText, measureTextOutline, metricTrendColor, metricTrendMark, metricTrendPoints, niceScale, normalizeHexColor, normalizeLanguageFamily, numberFormatError, numberingAtLevel, numberingFindings, numberingStyleDraws, paragraphDirection, paragraphDirectionAt, parseReference, pathFor, patternBitmap, patternRuns, physicalAlignment, placeTextLines, placedImageBlocks, pointerPath, promotedRegionKeys, provenanceOf, readingRows, recordReferenceSites, referencesSlide, regionAccepts, regionRoleRank, registeredCatalog, resolveCanvasDimensions, resolveChartColors, resolveChartData, resolveChartOptions, resolveCodeLanguage, resolveColorRef, resolveColorRoles, resolveDesignHints, resolveDesignRecords, resolveFontFamilies, resolveFontScheme, resolveLogo, resolveNumbering, resolvePatternPreset, resolveReference, resolveScriptFonts, resolveSlideDirection, resolveSlideVariables, resolveSocialProfile, resolveTableData, resolveTextStyle, resolveVariables, rootNodes, scriptFontRole, sliceNumberedItems, slideCitations, slideTokenSpans, snapFontSizeDown, snapFontSizeUp, stackCategoryValues, suggestChartNumberFix, surfaceAltColor, tableCellDisplayValue, tableGrid, tableRowBoundaries, textColorForFill, textWidthMeasurer, timelineMarkerShapes, timelineTextColor, toExcelNumberFormat, tokenizeCode, unresolvedReference, unusedDatasets, usesSlideBuiltin, variableDeclarations, visitContentPayloads, visualReadingOrder, walkCitationRuns, wrapText };
7282
+ export { AUTO_LAYOUT, CAPTIONABLE_FIELDS, CAPTION_FONT_RATIO, CAPTION_MAX_RATIO, CATALOG_GROUP_PATTERN, CATALOG_REFERENCE_PATTERN, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST, CHART_HIGHLIGHT_MUTED_MIX, CHART_SERIES_MIN_DIFFERENCE, CHART_SERIES_MIN_LIGHTNESS_STEP, CHART_SERIES_TIER_SIZE, CHART_SERIES_TINT_MIX, CHART_TEXT_PX, CHART_TYPES, CITATION_MARKER_RAISE, CITATION_MARKER_SCALE, CODE_HIGHLIGHT_LANGUAGES, CODE_HIGHLIGHT_MAX_LENGTH, CODE_PANEL_BACKGROUND, CODE_PANEL_FOREGROUND, CODE_SYNTAX_MIN_CONTRAST, DARK_BACKGROUND_LUMINANCE, DEFAULT_CHART_LABEL_SEPARATOR, DEFAULT_FURNITURE_DATE_FORMAT, DEFAULT_VARIABLE_DATE_FORMAT, DESIGN_HINT_KEYS, ENGINE_DEFAULT_CHART_TYPES, ENGINE_DEFAULT_COLOR_SCHEME, ENGINE_DEFAULT_FONT_SCHEME, ENGINE_DEFAULT_THEME, FONT_SIZE_GRID_PER_PX, FOOTNOTE_MAX_RATIO, FURNITURE_GAP, FURNITURE_IMAGE_SHARE, FURNITURE_ZONE_GUTTER, HEADING_AREAS, LANGUAGES, LAYOUT_BODY_KINDS, LOGO_SHAPES, MAX_COMPOSITION_DEPTH, MAX_NUMBERING_LEVELS, MAX_NUMBERING_VALUE, MAX_REGION_BLOCKS, MAX_ROMAN_VALUE, MAX_TEMPLATE_TRACKS, METRIC_TREND_MIN_CONTRAST, METRIC_TREND_SHAPES, NUMBERING_STYLES, NUMBERING_SUFFIXES, OPFCatalogsOptionError, OPFCompositionError, OPFLayoutTemplateError, OPFUnresolvedReferenceError, OPFVariableError, PATTERN_PRESETS, PATTERN_PRESET_ALIASES, PATTERN_TILE_SIZE, PICTURE_BULLET_SCALE, PROMOTED_REGION_KEY, REGION_ANCHORS, REGION_FLOWS, REGION_KINDS, REGION_ROLES, RESERVED_REGION_NAMES, SLIDE_SCOPED_BUILTINS, SOCIAL_PLATFORMS, SURFACE_ALT_MIN_CONTRAST, SURFACE_ALT_MIX, THEME_DESIGN_KEYS, TIMELINE_OUTLINE_MIN_CONTRAST, TIMELINE_STATUSES, TIMELINE_TEXT_MIN_CONTRAST, VARIABLE_KINDS, allocateRows, annotationText, bindRegions, blockKind, captionSettings, catalogGroupDeclared, catalogGroupSource, catalogKinds, catalogRecords, catalogReferenceSites, chartColorForFill, chartHighlightColors, chartHighlightMarks, chartLabelText, chartNumber, chartNumberFixesByCell, chartOptionSupport, chartOptionTarget, chartPaletteForFill, chartSeriesPalette, chartTextSize, chartValueAxis, checkCatalogsOption, citationMarkerText, codeHighlightBands, codeHighlightColors, codeHighlightLines, codeHighlightSlice, codeLineNumbers, codeLineRuns, codeSyntaxPalette, codeSyntaxPaletteForScheme, coerceVariableValue, collectCitations, colorContrast, composeLayoutAreas, composeSlide, datasetDiagnostics, defaultSlideBackground, dottedPath, embeddedCopy, fitImage, fitList, fitRichText, fitText, formatChartLabelNumber, formatChartLabelPercent, formatDataNumber, formatFurnitureDate, formatListNumber, formatVariableNumber, fromExcelNumberFormat, gridFlowShape, hasContentVariables, imageBackground, imageShape, inlineChartData, inlineDatasets, inlineTableData, instantiateForValidation, intrinsicImageAspect, intrinsicImageSize, isDarkColor, isDatasetRef, isLayoutTemplate, isRecord, isTemplate, isXYChartType, layoutCaption, layoutCode, layoutContent, layoutFootnotes, layoutFurniture, layoutMetric, layoutQuote, layoutRegion, layoutStructure, layoutTable, layoutTemplate, layoutTemplateIssues, layoutTimeline, layoutWatermark, listBuiltinVariables, listColumnBreaks, listNumbers, listVariables, maxIntervalsFor, measureText, measureTextOutline, metricTrendColor, metricTrendMark, metricTrendPoints, niceScale, normalizeHexColor, normalizeLanguageFamily, numberFormatError, numberingAtLevel, numberingFindings, numberingStyleDraws, paragraphDirection, paragraphDirectionAt, parseReference, pathFor, patternBitmap, patternRuns, physicalAlignment, placeTextLines, placedImageBlocks, pointerPath, promotedRegionKeys, provenanceOf, readingRows, recordReferenceSites, referencesSlide, regionAccepts, regionRoleRank, registeredCatalog, resolveCanvasDimensions, resolveChartColors, resolveChartData, resolveChartOptions, resolveCodeLanguage, resolveColorRef, resolveColorRoles, resolveDesignHints, resolveDesignRecords, resolveFontFamilies, resolveFontScheme, resolveLogo, resolveNumbering, resolvePatternPreset, resolveReference, resolveScriptFonts, resolveSlideDirection, resolveSlideVariables, resolveSocialProfile, resolveTableData, resolveTextStyle, resolveVariables, rootNodes, scriptFontRole, sliceNumberedItems, slideCitations, slideTokenSpans, snapFontSizeDown, snapFontSizeUp, stackCategoryValues, suggestChartNumberFix, surfaceAltColor, tableCellDisplayValue, tableGrid, tableRowBoundaries, textColorForFill, textWidthMeasurer, timelineMarkerShapes, timelineTextColor, toExcelNumberFormat, tokenizeCode, unresolvedReference, unusedDatasets, usesSlideBuiltin, variableDeclarations, visitContentPayloads, visualReadingOrder, walkCitationRuns, wrapText };
@@ -1,4 +1,4 @@
1
- import { presentation } from './chunk-BWWGYOOG.js';
1
+ import { presentation } from './chunk-3UAVON3O.js';
2
2
 
3
3
  // src/format.ts
4
4
  var OPFFormatError = class extends Error {
@@ -1,4 +1,4 @@
1
- import { validate } from './chunk-XQARTOZJ.js';
1
+ import { validate } from './chunk-23MOKE4B.js';
2
2
 
3
3
  // src/patch.ts
4
4
  var OPFPatchError = class extends Error {
@@ -1,5 +1,5 @@
1
- import { assertValid, resolveSlideScriptMeasurement, resolveSlideContext } from './chunk-XQARTOZJ.js';
2
- import { resolveSlideVariables, checkCatalogsOption, usesSlideBuiltin, composeSlide, codeHighlightSlice, tableRowBoundaries, visitContentPayloads, regionAccepts, slideTokenSpans, sliceNumberedItems } from './chunk-X6SB52RP.js';
1
+ import { assertValid, resolveSlideScriptMeasurement, resolveSlideContext } from './chunk-23MOKE4B.js';
2
+ import { resolveSlideVariables, checkCatalogsOption, usesSlideBuiltin, composeSlide, codeHighlightSlice, tableRowBoundaries, visitContentPayloads, regionAccepts, slideTokenSpans, sliceNumberedItems } from './chunk-VKNFZEMG.js';
3
3
 
4
4
  // src/pagination.ts
5
5
  var OPFPaginationError = class extends Error {
@@ -10,6 +10,7 @@ interface TableBorder {
10
10
  interface TableCellStyle {
11
11
  fill?: string;
12
12
  color?: string;
13
+ bold?: boolean;
13
14
  align?: 'left' | 'center' | 'right';
14
15
  verticalAlign?: 'top' | 'middle' | 'bottom';
15
16
  padding?: Partial<Record<'top' | 'right' | 'bottom' | 'left', number>>;
@@ -1863,7 +1864,7 @@ interface ComposedItem {
1863
1864
  composition: Composition;
1864
1865
  /**
1865
1866
  * Resolved horizontal text alignment for this item: titleAlignment for the
1866
- * title, contentAlignment for every other item (slide design, deck design or host, theme design,
1867
+ * title and the tag, contentAlignment for every other item (slide design, deck design or host, theme design,
1867
1868
  * layout design, then center for metrics or left for other items). Engines anchor native and preview text to this value.
1868
1869
  */
1869
1870
  alignment: 'left' | 'center' | 'right';
@@ -2298,7 +2299,8 @@ interface FurniturePartBase {
2298
2299
  /**
2299
2300
  * The part's own box. A zone lays its parts out in one row, in the order image, text, socials, date (mirrored in a
2300
2301
  * right-to-left deck), aligned to the zone's edge with FURNITURE_GAP between parts and each part vertically centered
2301
- * in the row. A zone with one part keeps the full zone width for text.
2302
+ * in the row. A zone with one part keeps the full zone width for text. The zones sit on the content inset
2303
+ * (`composition.padding`); a zone beside empty zones takes their width (FURNITURE_ZONE_GUTTER between occupied zones).
2302
2304
  */
2303
2305
  box: LayoutBox;
2304
2306
  alignment: 'left' | 'center' | 'right';
@@ -2372,6 +2374,8 @@ interface FurnitureLayout {
2372
2374
  }
2373
2375
  /** Gap between the parts of one header/footer zone row, in reference pixels (scaled with the canvas's short edge). */
2374
2376
  declare const FURNITURE_GAP = 12;
2377
+ /** Gap between the three header/footer zones, as a share of the canvas width. An empty zone's column is lent to its occupied neighbours. */
2378
+ declare const FURNITURE_ZONE_GUTTER = 0.02;
2375
2379
  /** 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. */
2376
2380
  declare const FURNITURE_IMAGE_SHARE = 0.4;
2377
2381
  /** Resolve and measure repeated fields without mutating metadata or consulting a clock. */
@@ -2929,4 +2933,4 @@ declare function resolveCanvasDimensions(input: unknown): {
2929
2933
  height: number;
2930
2934
  };
2931
2935
 
2932
- export { type ChartColorContext as $, AUTO_LAYOUT as A, type BackgroundImageFit as B, type ComposeSlideOptions as C, CHART_SERIES_MIN_LIGHTNESS_STEP as D, ENGINE_DEFAULT_CHART_TYPES as E, type Fonts as F, CHART_SERIES_TIER_SIZE as G, CHART_SERIES_TINT_MIX as H, CHART_TEXT_PX as I, CITATION_MARKER_RAISE as J, CITATION_MARKER_SCALE as K, type LayoutDiagnostic as L, type MeasureTextWidth as M, CODE_HIGHLIGHT_LANGUAGES as N, CODE_HIGHLIGHT_MAX_LENGTH as O, CODE_PANEL_BACKGROUND as P, CODE_PANEL_FOREGROUND as Q, type ResolveLogoOptions as R, SOCIAL_PLATFORMS as S, type TextMeasurement as T, CODE_SYNTAX_MIN_CONTRAST as U, type Caption as V, type CaptionAlignment as W, type CaptionObject as X, type CaptionPosition as Y, type CaptionSettings as Z, type ChartAxisGeometry as _, CHART_TYPES as a, FURNITURE_GAP as a$, type ChartHighlightMarks as a0, type ChartLabelContent as a1, type ChartLabelPosition as a2, type ChartLegendPosition as a3, type ChartOptionDiagnostic as a4, type ChartOptionKind as a5, type ChartOptionSupport as a6, type ChartOptionTarget as a7, type ChartScale as a8, type ChartValueAxis as a9, type ComposedFootnotes as aA, type ComposedGroup as aB, type ComposedHeadingArea as aC, type ComposedImage as aD, type ComposedItem as aE, type ComposedLayoutArea as aF, type ComposedListColumn as aG, type ComposedLogo as aH, type ComposedOverlay as aI, type ComposedPlacement as aJ, type ComposedRegion as aK, type Composition as aL, type CompositionCandidate as aM, type CompositionDecision as aN, type CompositionExplanation as aO, type CompositionPenalties as aP, type CompositionTrack as aQ, DARK_BACKGROUND_LUMINANCE as aR, DEFAULT_CHART_LABEL_SEPARATOR as aS, DEFAULT_FURNITURE_DATE_FORMAT as aT, DESIGN_HINT_KEYS as aU, type DeckCitations as aV, type DesignHintKey as aW, type DesignHintSource as aX, type DesignHints as aY, FONT_SIZE_GRID_PER_PX as aZ, FOOTNOTE_MAX_RATIO as a_, type CitationMarker as aa, type CitationNote as ab, type CodeContent as ac, type CodeHighlightBand as ad, type CodeHighlightColors as ae, type CodeHighlightEntry as af, type CodeHighlightIssue as ag, type CodeHighlightLines as ah, type CodeLayout as ai, type CodeLayoutDiagnostic as aj, type CodeLayoutOptions as ak, type CodeLineSegment as al, type CodeLineSource as am, type CodeRun as an, type CodeSyntaxPalette as ao, type CodeSyntaxPaletteOptions as ap, type CodeSyntaxPaletteTheme as aq, type CodeTextFit as ar, type CodeTextPart as as, type CodeToken as at, type CodeTokenKind as au, type ComposedBackgroundImage as av, type ComposedCaption as aw, type ComposedChart as ax, type ComposedFlow as ay, type ComposedFootnoteEntry as az, ENGINE_DEFAULT_COLOR_SCHEME as b, PICTURE_BULLET_SCALE as b$, FURNITURE_IMAGE_SHARE as b0, type FlowShape as b1, type FontFaceSelection as b2, type FootnoteLayoutOptions as b3, type FurnitureField as b4, type FurnitureImagePart as b5, type FurnitureLayout as b6, type FurniturePart as b7, type FurniturePartBase as b8, type FurnitureSocialLink as b9, MAX_NUMBERING_VALUE as bA, MAX_REGION_BLOCKS as bB, MAX_ROMAN_VALUE as bC, MAX_TEMPLATE_TRACKS as bD, METRIC_TREND_MIN_CONTRAST as bE, METRIC_TREND_SHAPES as bF, type MetricContent as bG, type MetricLayout as bH, type MetricLayoutDiagnostic as bI, type MetricLayoutOptions as bJ, type MetricSentiment as bK, type MetricTextPart as bL, type MetricTextSource as bM, type MetricTrend as bN, type MetricTrendColorOptions as bO, type MetricTrendMark as bP, NUMBERING_STYLES as bQ, NUMBERING_SUFFIXES as bR, type Numbering as bS, type NumberingInput as bT, type NumberingStyleName as bU, type NumberingSuffix as bV, OPFCompositionError as bW, OPFLayoutTemplateError as bX, PATTERN_PRESETS as bY, PATTERN_PRESET_ALIASES as bZ, PATTERN_TILE_SIZE as b_, type FurnitureTextExtras as ba, type FurnitureTextPart as bb, HEADING_AREAS as bc, type ImageEdge as bd, type ImageFit as be, type ImageFitPlacement as bf, type ImageFocus as bg, type ImageShape as bh, LAYOUT_BODY_KINDS as bi, type LayoutArea as bj, type LayoutAreasOptions as bk, type LayoutBodyKind as bl, type LayoutBox as bm, type LayoutContent as bn, type LayoutRegion as bo, type LayoutTemplate as bp, type LayoutTemplateIssue as bq, type ListBulletImage as br, type ListEntryLayout as bs, type ListFit as bt, type ListFitOptions as bu, type ListNumber as bv, type ListText as bw, type ListValue as bx, MAX_COMPOSITION_DEPTH as by, MAX_NUMBERING_LEVELS as bz, ENGINE_DEFAULT_FONT_SCHEME as c, type TableGridIssue as c$, type PhysicalAlignment as c0, type QuoteContent as c1, type QuoteLayout as c2, type QuoteLayoutDiagnostic as c3, type QuoteLayoutOptions as c4, type QuotePhoto as c5, type QuoteTextPart as c6, type QuoteTextSource as c7, REGION_ANCHORS as c8, REGION_FLOWS as c9, type RichTextFit as cA, type RichTextFragment as cB, type RichTextLine as cC, type RichTextOptions as cD, type RichTextRun as cE, type RowDemand as cF, SURFACE_ALT_MIN_CONTRAST as cG, SURFACE_ALT_MIX as cH, type ScriptFontApp as cI, type ScriptFontSlots as cJ, type ScriptFontSource as cK, type ScriptFontSupplement as cL, type ScriptMeasurementProfile as cM, type ScriptRole as cN, type SlideCitations as cO, type SlideComposition as cP, type SocialProfile as cQ, type SourceTextFit as cR, THEME_DESIGN_KEYS as cS, TIMELINE_OUTLINE_MIN_CONTRAST as cT, TIMELINE_STATUSES as cU, TIMELINE_TEXT_MIN_CONTRAST as cV, type TableBorder as cW, type TableCellLayout as cX, type TableCellStyle as cY, type TableGrid as cZ, type TableGridCell as c_, REGION_KINDS as ca, REGION_ROLES as cb, RESERVED_REGION_NAMES as cc, type ReadingBox as cd, type Reference as ce, type ReferencesSlideOptions as cf, type RegionAnchor as cg, type RegionBinding as ch, type RegionBindingDiagnostic as ci, type RegionBindingResult as cj, type RegionFlow as ck, type RegionKind as cl, type RegionRole as cm, type ResolveColorRefOptions as cn, type ResolveColorRefRoles as co, type ResolveColorRolesOptions as cp, type ResolveDesignHintsOptions as cq, type ResolveScriptFontsOptions as cr, type ResolvedChartDataLabels as cs, type ResolvedChartHighlight as ct, type ResolvedChartOptions as cu, type ResolvedColorRoles as cv, type ResolvedDesignHints as cw, type ResolvedNumbering as cx, type ResolvedScriptFonts as cy, type RichText as cz, ENGINE_DEFAULT_THEME as d, isDarkColor as d$, type TableLayout as d0, type TableLayoutOptions as d1, type TableRowLayout as d2, type TextDirection as d3, type TextFit as d4, type TextLineInk as d5, type TextLineSegment as d6, type TextLineSource as d7, type TextPlacement as d8, type TextPlacementLine as d9, chartValueAxis as dA, citationMarkerText as dB, codeHighlightBands as dC, codeHighlightColors as dD, codeHighlightLines as dE, codeLineNumbers as dF, codeLineRuns as dG, codeSyntaxPalette as dH, codeSyntaxPaletteForScheme as dI, collectCitations as dJ, colorContrast as dK, composeLayoutAreas as dL, composeSlide as dM, defaultSlideBackground as dN, fitImage as dO, fitList as dP, fitRichText as dQ, fitText as dR, formatChartLabelNumber as dS, formatChartLabelPercent as dT, formatFurnitureDate as dU, formatListNumber as dV, gridFlowShape as dW, imageBackground as dX, imageShape as dY, intrinsicImageAspect as dZ, intrinsicImageSize as d_, type TimelineContent as da, type TimelineEvent as db, type TimelineLayout as dc, type TimelineLayoutDiagnostic as dd, type TimelineLayoutOptions as de, type TimelineMarkerShape as df, type TimelineStatus as dg, type TimelineStatusColors as dh, type TimelineTextPart as di, type WatermarkTextLayout as dj, type WatermarkTextOptions as dk, allocateRows as dl, annotationText as dm, bindRegions as dn, blockKind as dp, captionSettings as dq, chartColorForFill as dr, chartHighlightColors as ds, chartHighlightMarks as dt, chartLabelText as du, chartOptionSupport as dv, chartOptionTarget as dw, chartPaletteForFill as dx, chartSeriesPalette as dy, chartTextSize as dz, type FontFamilies as e, textWidthMeasurer as e$, isLayoutTemplate as e0, layoutCaption as e1, layoutCode as e2, layoutContent as e3, layoutFootnotes as e4, layoutFurniture as e5, layoutMetric as e6, layoutQuote as e7, layoutRegion as e8, layoutStructure as e9, regionRoleRank as eA, resolveCanvasDimensions as eB, resolveChartColors as eC, resolveChartOptions as eD, resolveCodeLanguage as eE, resolveColorRef as eF, resolveColorRoles as eG, resolveDesignHints as eH, resolveFontFamilies as eI, resolveLogo as eJ, resolveNumbering as eK, resolvePatternPreset as eL, resolveScriptFonts as eM, resolveSlideDirection as eN, resolveSocialProfile as eO, resolveTextStyle as eP, rootNodes as eQ, scriptFontRole as eR, sliceNumberedItems as eS, slideCitations as eT, snapFontSizeDown as eU, snapFontSizeUp as eV, stackCategoryValues as eW, surfaceAltColor as eX, tableGrid as eY, tableRowBoundaries as eZ, textColorForFill as e_, layoutTable as ea, layoutTemplate as eb, layoutTemplateIssues as ec, layoutTimeline as ed, layoutWatermark as ee, listColumnBreaks as ef, listNumbers as eg, maxIntervalsFor as eh, measureText as ei, measureTextOutline as ej, metricTrendColor as ek, metricTrendMark as el, metricTrendPoints as em, niceScale as en, normalizeHexColor as eo, numberingAtLevel as ep, numberingStyleDraws as eq, paragraphDirection as er, paragraphDirectionAt as es, patternBitmap as et, patternRuns as eu, physicalAlignment as ev, placeTextLines as ew, placedImageBlocks as ex, referencesSlide as ey, regionAccepts as ez, LANGUAGES as f, timelineMarkerShapes as f0, timelineTextColor as f1, tokenizeCode as f2, visualReadingOrder as f3, walkCitationRuns as f4, wrapText as f5, 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 AnnotatedRun as p, type AnnotationFitter as q, type AnnotationLayoutOptions as r, type BindRegionsOptions as s, type BoundBlock as t, CAPTIONABLE_FIELDS as u, CAPTION_FONT_RATIO as v, CAPTION_MAX_RATIO as w, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST as x, CHART_HIGHLIGHT_MUTED_MIX as y, CHART_SERIES_MIN_DIFFERENCE as z };
2936
+ export { type ChartColorContext as $, AUTO_LAYOUT as A, type BackgroundImageFit as B, type ComposeSlideOptions as C, CHART_SERIES_MIN_LIGHTNESS_STEP as D, ENGINE_DEFAULT_CHART_TYPES as E, type Fonts as F, CHART_SERIES_TIER_SIZE as G, CHART_SERIES_TINT_MIX as H, CHART_TEXT_PX as I, CITATION_MARKER_RAISE as J, CITATION_MARKER_SCALE as K, type LayoutDiagnostic as L, type MeasureTextWidth as M, CODE_HIGHLIGHT_LANGUAGES as N, CODE_HIGHLIGHT_MAX_LENGTH as O, CODE_PANEL_BACKGROUND as P, CODE_PANEL_FOREGROUND as Q, type ResolveLogoOptions as R, SOCIAL_PLATFORMS as S, type TextMeasurement as T, CODE_SYNTAX_MIN_CONTRAST as U, type Caption as V, type CaptionAlignment as W, type CaptionObject as X, type CaptionPosition as Y, type CaptionSettings as Z, type ChartAxisGeometry as _, CHART_TYPES as a, FURNITURE_GAP as a$, type ChartHighlightMarks as a0, type ChartLabelContent as a1, type ChartLabelPosition as a2, type ChartLegendPosition as a3, type ChartOptionDiagnostic as a4, type ChartOptionKind as a5, type ChartOptionSupport as a6, type ChartOptionTarget as a7, type ChartScale as a8, type ChartValueAxis as a9, type ComposedFootnotes as aA, type ComposedGroup as aB, type ComposedHeadingArea as aC, type ComposedImage as aD, type ComposedItem as aE, type ComposedLayoutArea as aF, type ComposedListColumn as aG, type ComposedLogo as aH, type ComposedOverlay as aI, type ComposedPlacement as aJ, type ComposedRegion as aK, type Composition as aL, type CompositionCandidate as aM, type CompositionDecision as aN, type CompositionExplanation as aO, type CompositionPenalties as aP, type CompositionTrack as aQ, DARK_BACKGROUND_LUMINANCE as aR, DEFAULT_CHART_LABEL_SEPARATOR as aS, DEFAULT_FURNITURE_DATE_FORMAT as aT, DESIGN_HINT_KEYS as aU, type DeckCitations as aV, type DesignHintKey as aW, type DesignHintSource as aX, type DesignHints as aY, FONT_SIZE_GRID_PER_PX as aZ, FOOTNOTE_MAX_RATIO as a_, type CitationMarker as aa, type CitationNote as ab, type CodeContent as ac, type CodeHighlightBand as ad, type CodeHighlightColors as ae, type CodeHighlightEntry as af, type CodeHighlightIssue as ag, type CodeHighlightLines as ah, type CodeLayout as ai, type CodeLayoutDiagnostic as aj, type CodeLayoutOptions as ak, type CodeLineSegment as al, type CodeLineSource as am, type CodeRun as an, type CodeSyntaxPalette as ao, type CodeSyntaxPaletteOptions as ap, type CodeSyntaxPaletteTheme as aq, type CodeTextFit as ar, type CodeTextPart as as, type CodeToken as at, type CodeTokenKind as au, type ComposedBackgroundImage as av, type ComposedCaption as aw, type ComposedChart as ax, type ComposedFlow as ay, type ComposedFootnoteEntry as az, ENGINE_DEFAULT_COLOR_SCHEME as b, PATTERN_TILE_SIZE as b$, FURNITURE_IMAGE_SHARE as b0, FURNITURE_ZONE_GUTTER as b1, type FlowShape as b2, type FontFaceSelection as b3, type FootnoteLayoutOptions as b4, type FurnitureField as b5, type FurnitureImagePart as b6, type FurnitureLayout as b7, type FurniturePart as b8, type FurniturePartBase as b9, MAX_NUMBERING_LEVELS as bA, MAX_NUMBERING_VALUE as bB, MAX_REGION_BLOCKS as bC, MAX_ROMAN_VALUE as bD, MAX_TEMPLATE_TRACKS 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, OPFLayoutTemplateError as bY, PATTERN_PRESETS as bZ, PATTERN_PRESET_ALIASES as b_, type FurnitureSocialLink as ba, type FurnitureTextExtras as bb, type FurnitureTextPart as bc, HEADING_AREAS as bd, type ImageEdge as be, type ImageFit as bf, type ImageFitPlacement as bg, type ImageFocus as bh, type ImageShape as bi, LAYOUT_BODY_KINDS as bj, type LayoutArea as bk, type LayoutAreasOptions as bl, type LayoutBodyKind as bm, type LayoutBox as bn, type LayoutContent as bo, type LayoutRegion as bp, type LayoutTemplate as bq, type LayoutTemplateIssue as br, type ListBulletImage as bs, type ListEntryLayout as bt, type ListFit as bu, type ListFitOptions as bv, type ListNumber as bw, type ListText as bx, type ListValue as by, MAX_COMPOSITION_DEPTH as bz, ENGINE_DEFAULT_FONT_SCHEME as c, type TableGridCell as c$, PICTURE_BULLET_SCALE as c0, type PhysicalAlignment as c1, type QuoteContent as c2, type QuoteLayout as c3, type QuoteLayoutDiagnostic as c4, type QuoteLayoutOptions as c5, type QuotePhoto as c6, type QuoteTextPart as c7, type QuoteTextSource as c8, REGION_ANCHORS as c9, type RichText as cA, type RichTextFit as cB, type RichTextFragment as cC, type RichTextLine as cD, type RichTextOptions as cE, type RichTextRun as cF, type RowDemand as cG, SURFACE_ALT_MIN_CONTRAST as cH, SURFACE_ALT_MIX as cI, type ScriptFontApp as cJ, type ScriptFontSlots as cK, type ScriptFontSource as cL, type ScriptFontSupplement as cM, type ScriptMeasurementProfile as cN, type ScriptRole as cO, type SlideCitations as cP, type SlideComposition as cQ, type SocialProfile as cR, type SourceTextFit as cS, THEME_DESIGN_KEYS as cT, TIMELINE_OUTLINE_MIN_CONTRAST as cU, TIMELINE_STATUSES as cV, TIMELINE_TEXT_MIN_CONTRAST as cW, type TableBorder as cX, type TableCellLayout as cY, type TableCellStyle as cZ, type TableGrid as c_, REGION_FLOWS as ca, REGION_KINDS as cb, REGION_ROLES as cc, RESERVED_REGION_NAMES as cd, type ReadingBox as ce, type Reference as cf, type ReferencesSlideOptions as cg, type RegionAnchor as ch, type RegionBinding as ci, type RegionBindingDiagnostic as cj, type RegionBindingResult as ck, type RegionFlow as cl, type RegionKind as cm, type RegionRole as cn, type ResolveColorRefOptions as co, type ResolveColorRefRoles as cp, type ResolveColorRolesOptions as cq, type ResolveDesignHintsOptions as cr, type ResolveScriptFontsOptions as cs, type ResolvedChartDataLabels as ct, type ResolvedChartHighlight as cu, type ResolvedChartOptions as cv, type ResolvedColorRoles as cw, type ResolvedDesignHints as cx, type ResolvedNumbering as cy, type ResolvedScriptFonts as cz, ENGINE_DEFAULT_THEME as d, intrinsicImageSize as d$, type TableGridIssue as d0, type TableLayout as d1, type TableLayoutOptions as d2, type TableRowLayout as d3, type TextDirection as d4, type TextFit as d5, type TextLineInk as d6, type TextLineSegment as d7, type TextLineSource as d8, type TextPlacement as d9, chartTextSize as dA, chartValueAxis as dB, citationMarkerText as dC, codeHighlightBands as dD, codeHighlightColors as dE, codeHighlightLines as dF, codeLineNumbers as dG, codeLineRuns as dH, codeSyntaxPalette as dI, codeSyntaxPaletteForScheme as dJ, collectCitations as dK, colorContrast as dL, composeLayoutAreas as dM, composeSlide as dN, defaultSlideBackground as dO, fitImage as dP, fitList as dQ, fitRichText as dR, fitText as dS, formatChartLabelNumber as dT, formatChartLabelPercent as dU, formatFurnitureDate as dV, formatListNumber as dW, gridFlowShape as dX, imageBackground as dY, imageShape as dZ, intrinsicImageAspect as d_, type TextPlacementLine as da, type TimelineContent as db, type TimelineEvent as dc, type TimelineLayout as dd, type TimelineLayoutDiagnostic as de, type TimelineLayoutOptions as df, type TimelineMarkerShape as dg, type TimelineStatus as dh, type TimelineStatusColors as di, type TimelineTextPart as dj, type WatermarkTextLayout as dk, type WatermarkTextOptions as dl, allocateRows as dm, annotationText as dn, bindRegions as dp, blockKind as dq, captionSettings as dr, chartColorForFill as ds, chartHighlightColors as dt, chartHighlightMarks as du, chartLabelText as dv, chartOptionSupport as dw, chartOptionTarget as dx, chartPaletteForFill as dy, chartSeriesPalette as dz, type FontFamilies as e, textColorForFill as e$, isDarkColor as e0, isLayoutTemplate as e1, layoutCaption as e2, layoutCode as e3, layoutContent as e4, layoutFootnotes as e5, layoutFurniture as e6, layoutMetric as e7, layoutQuote as e8, layoutRegion as e9, regionAccepts as eA, regionRoleRank as eB, resolveCanvasDimensions as eC, resolveChartColors as eD, resolveChartOptions as eE, resolveCodeLanguage as eF, resolveColorRef as eG, resolveColorRoles as eH, resolveDesignHints as eI, resolveFontFamilies as eJ, resolveLogo as eK, resolveNumbering as eL, resolvePatternPreset as eM, resolveScriptFonts as eN, resolveSlideDirection as eO, resolveSocialProfile as eP, resolveTextStyle as eQ, rootNodes as eR, scriptFontRole as eS, sliceNumberedItems as eT, slideCitations as eU, snapFontSizeDown as eV, snapFontSizeUp as eW, stackCategoryValues as eX, surfaceAltColor as eY, tableGrid as eZ, tableRowBoundaries as e_, layoutStructure as ea, layoutTable as eb, layoutTemplate as ec, layoutTemplateIssues as ed, layoutTimeline as ee, layoutWatermark as ef, listColumnBreaks as eg, listNumbers as eh, maxIntervalsFor as ei, measureText as ej, measureTextOutline as ek, metricTrendColor as el, metricTrendMark as em, metricTrendPoints as en, niceScale as eo, normalizeHexColor as ep, numberingAtLevel as eq, numberingStyleDraws as er, paragraphDirection as es, paragraphDirectionAt as et, patternBitmap as eu, patternRuns as ev, physicalAlignment as ew, placeTextLines as ex, placedImageBlocks as ey, referencesSlide as ez, LANGUAGES as f, textWidthMeasurer as f0, timelineMarkerShapes as f1, timelineTextColor as f2, tokenizeCode as f3, visualReadingOrder as f4, walkCitationRuns as f5, wrapText as f6, 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 AnnotatedRun as p, type AnnotationFitter as q, type AnnotationLayoutOptions as r, type BindRegionsOptions as s, type BoundBlock as t, CAPTIONABLE_FIELDS as u, CAPTION_FONT_RATIO as v, CAPTION_MAX_RATIO as w, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST as x, CHART_HIGHLIGHT_MUTED_MIX as y, CHART_SERIES_MIN_DIFFERENCE as z };