@openpresentation/opf 0.26.2 → 0.26.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/browser.js +15 -13
- package/dist/{chunk-5VJCLUUA.js → chunk-6IXSHIAL.js} +6 -6
- package/dist/{chunk-O2ST5ZKL.js → chunk-6NBTZYYD.js} +1 -1
- package/dist/{chunk-NWO6HT4F.js → chunk-EDCRBTJF.js} +4 -4
- package/dist/{chunk-JI3PHXPJ.js → chunk-EQ6S5SEZ.js} +1 -1
- package/dist/{chunk-N6CNJCIF.js → chunk-F4HFDP6I.js} +0 -18
- package/dist/chunk-GWJBZ4LC.js +639 -0
- package/dist/{chunk-LN2ASLMF.js → chunk-H5QC3X3K.js} +1 -1
- package/dist/{chunk-Q6KMKTEH.js → chunk-MN7DRK57.js} +40 -648
- package/dist/{chunk-OFWBICDO.js → chunk-NZLW6FBQ.js} +1 -1
- package/dist/{chunk-CRCOQ4K2.js → chunk-O6BY3AU2.js} +1 -1
- package/dist/{chunk-7YZ72FRP.js → chunk-PIO73BQ6.js} +6 -5
- package/dist/{chunk-6JAFSZVL.js → chunk-QAEBYDKY.js} +2 -4
- package/dist/{chunk-L65YNP4J.js → chunk-QH2W6HIM.js} +1 -1
- package/dist/chunk-RYZPBJLB.js +4 -0
- package/dist/{chunk-LUQYSUXS.js → chunk-XFOOKVRI.js} +57 -4
- package/dist/{chunk-XFK4KPKK.js → chunk-ZSZDVIDV.js} +2 -2
- package/dist/{conversion-CX_I6Vna.d.ts → conversion-DSafOGzh.d.ts} +2 -2
- package/dist/conversion-QIAJM6DQ.js +20 -0
- package/dist/convert.js +6 -6
- package/dist/deck.js +11 -9
- package/dist/diff.js +3 -3
- package/dist/docs.js +3 -3
- package/dist/format.js +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +19 -17
- package/dist/markdown.js +8 -6
- package/dist/node-engine.d.ts +2 -2
- package/dist/node-engine.js +19 -17
- package/dist/pagination.js +3 -3
- package/dist/patch.js +2 -2
- package/dist/schema.d.ts +18 -4
- package/dist/schema.js +2 -2
- package/dist/schemas.js +1 -1
- package/dist/source.d.ts +102 -4
- package/dist/source.js +389 -10
- package/dist/spec/schemas/opf.schema.json +0 -16
- package/dist/spec/schemas/theme.schema.json +0 -2
- package/dist/validator.js +2 -2
- package/dist/yaml.js +7 -6
- package/package.json +5 -5
- package/dist/conversion-BKCKBECG.js +0 -18
package/README.md
CHANGED
|
@@ -99,7 +99,7 @@ The layout engine's names are not on the root. `composeSlide`, `fitText`, `layou
|
|
|
99
99
|
|
|
100
100
|
### Source editing: schema field queries, text addressing and syntax recovery
|
|
101
101
|
|
|
102
|
-
Two browser-safe subpaths for source editors, the CLI and agents. `@openpresentation/opf/schema` reads the field model of a document from the JSON Schemas: `describeField(path, document?)` returns the types, description, enum values, default, examples, whether the parent requires it, the `oneOf` variants (and `primary`, the form a template should use), the ranked `children` of an object (required first, then the curated `COMMON_KEYS` order, then alphabetical; promoted regions, `extensions` and `$schema` are `advanced`), the item schema of an array (`itemInfo`) or map (`entryInfo`), `requiredChildren` and `freeText`, and `{ known: false }` for a path the schema does not describe; `catalogKindAt(path, document?)` names the catalog a reference field points into (`layouts`, `themes`, `colorSchemes`, `fontSchemes`, `narratives`, `audiences`, `purposes`, `tones`) from
|
|
102
|
+
Two browser-safe subpaths for source editors, the CLI and agents. `@openpresentation/opf/schema` reads the field model of a document from the JSON Schemas: `describeField(path, document?)` returns the types, description, enum values, default, examples, whether the parent requires it, the `oneOf` variants (and `primary`, the form a template should use), the ranked `children` of an object (required first, then the curated `COMMON_KEYS` order, then alphabetical; promoted regions, `extensions` and `$schema` are `advanced`), the item schema of an array (`itemInfo`) or map (`entryInfo`), `requiredChildren` and `freeText`, and `{ known: false }` for a path the schema does not describe; `catalogKindAt(path, document?)` names the catalog a reference field points into (`layouts`, `themes`, `colorSchemes`, `fontSchemes`, `narratives`, `audiences`, `purposes`, `tones`) from `schemaCatalogKinds` (also exported), core-side metadata keyed by schema name and JSON Pointer; the published schemas carry no vendor keyword and compile under strict Ajv, so a new reference field is one entry there and needs no editor change. The navigation helpers it is built on are exported too (`resolveSchema`, `schemaVariants`, `activeSchema`, `schemaAtPath`, `createSchemaValue`, `listSchemaFields`, `splitOpfPath`). `@openpresentation/opf/source` turns text into positions and back: `locate(text, format, pointer, { part })` is the range of a JSON Pointer in JSON, YAML or Markdown (`value`, `key`, `entry`, `open` or `colon`; the nearest ancestor with `exact: false` when the node is missing; a Markdown slide field is located by the same ranges its findings use: the `layout=` token of an options comment, the text after `# ` or `- `), `pathAt(text, format, offset)` the path under a caret, `scanMarkdown(text)` the regions of a Markdown deck (front matter, slides, option comments, fences, notes) with the dialect's vocabulary (`SLIDE_OPTION_KEYS`, `BLOCK_OPTION_KEYS`, `FENCE_KINDS`, `METRIC_KEYS`), and `analyzeJsonSyntax(text, { limit })` the root cause of each JSON syntax error, once, in position order (at most five), with a range, a message, a hint and the fixes that repair it (`Insert comma`, `Add { }`, `Remove "design"`, `Insert }`, `Use double quotes`, ...); `validate(text)` reports the same causes as `opf/json-syntax` findings. See [validate](../../docs/validate.md).
|
|
103
103
|
|
|
104
104
|
### Validate (0.14.0)
|
|
105
105
|
|
package/dist/browser.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import { OPFApiError } from './chunk-
|
|
2
|
-
export { OPFApiError, OPFExportError, OPFImportError, OPFMoveToCustomError, copySlides, edit, embed, fill, fillRecords, localAssetSources, moveToCustom, parseSlideSelection, sameRecord, stats, updateFromCatalog } from './chunk-
|
|
1
|
+
import { OPFApiError } from './chunk-NZLW6FBQ.js';
|
|
2
|
+
export { OPFApiError, OPFExportError, OPFImportError, OPFMoveToCustomError, copySlides, edit, embed, fill, fillRecords, localAssetSources, moveToCustom, parseSlideSelection, sameRecord, stats, updateFromCatalog } from './chunk-NZLW6FBQ.js';
|
|
3
3
|
export { specFileEntries, specFileKinds, specFilePaths } from './chunk-UJSAR6GF.js';
|
|
4
4
|
export { FONT_POLICY, applyFontPolicyDecisions, fontAvailabilityDiagnostics, fontPolicyFor } from './chunk-PJSPHHRK.js';
|
|
5
5
|
export { OPFDataImportError, ingest, parseTabularData } from './chunk-TKQ2VFV5.js';
|
|
6
|
-
export { OPFPaginationError, paginate, paginateSlide } from './chunk-
|
|
7
|
-
export { DECK_FORMATS, deckFormatOf, parse, stringify } from './chunk-
|
|
8
|
-
export { fromMarkdown, toMarkdown } from './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
|
|
12
|
-
import './chunk-
|
|
13
|
-
export {
|
|
14
|
-
|
|
6
|
+
export { OPFPaginationError, paginate, paginateSlide } from './chunk-QH2W6HIM.js';
|
|
7
|
+
export { DECK_FORMATS, deckFormatOf, parse, stringify } from './chunk-EDCRBTJF.js';
|
|
8
|
+
export { fromMarkdown, toMarkdown } from './chunk-GWJBZ4LC.js';
|
|
9
|
+
import './chunk-PIO73BQ6.js';
|
|
10
|
+
import './chunk-RYZPBJLB.js';
|
|
11
|
+
import './chunk-MN7DRK57.js';
|
|
12
|
+
import './chunk-O6BY3AU2.js';
|
|
13
|
+
export { OPFMarkdownError } from './chunk-QAEBYDKY.js';
|
|
14
|
+
import './chunk-6NBTZYYD.js';
|
|
15
|
+
export { diff, merge } from './chunk-H5QC3X3K.js';
|
|
16
|
+
export { CATALOG_SCHEMA, DEFAULT_VALIDATION_THRESHOLDS, OPFPatchError, OPFPatchValidationError, OPFValidationError, applyPatch, assertValid, assertValidCatalogRecord, catalogDisplayKinds, catalogSchemaNames, findValidationRule, resolveSlideContext, validate, validateCatalogRecord, validationCategories, validationRules } from './chunk-XFOOKVRI.js';
|
|
15
17
|
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-XRMV2GMB.js';
|
|
16
|
-
export { OPFFormatError, format } from './chunk-
|
|
17
|
-
export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-
|
|
18
|
+
export { OPFFormatError, format } from './chunk-EQ6S5SEZ.js';
|
|
19
|
+
export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-F4HFDP6I.js';
|
|
18
20
|
|
|
19
21
|
// src/browser.ts
|
|
20
22
|
var nodeOnly = (name, message) => new OPFApiError(`\`${name}\` ${message}`, "node-only", { details: { function: name, build: "browser" } });
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { defaultCatalogs } from './chunk-
|
|
2
|
-
import { localAssetSources, OPFApiError, parseSlideSelection, OPFExportError, asApiError, OPFImportError } from './chunk-
|
|
3
|
-
import { paginate } from './chunk-
|
|
4
|
-
import { deckFormatOf, readDeckReport, stringify } from './chunk-
|
|
5
|
-
import { validate, OPFValidationError } from './chunk-
|
|
1
|
+
import { defaultCatalogs } from './chunk-ZSZDVIDV.js';
|
|
2
|
+
import { localAssetSources, OPFApiError, parseSlideSelection, OPFExportError, asApiError, OPFImportError } from './chunk-NZLW6FBQ.js';
|
|
3
|
+
import { paginate } from './chunk-QH2W6HIM.js';
|
|
4
|
+
import { deckFormatOf, readDeckReport, stringify } from './chunk-EDCRBTJF.js';
|
|
5
|
+
import { validate, OPFValidationError } from './chunk-XFOOKVRI.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.26.
|
|
120
|
+
var PEER_RANGES = { [RENDER_PACKAGE]: "^0.26.4", [PPTX_PACKAGE]: "^0.26.4" };
|
|
121
121
|
var PPTX_TEXT_OPTIONS_FROM = "0.22.0";
|
|
122
122
|
var numbers = (version) => version.replace(/[-+].*$/, "").split(".").map((part) => Number.parseInt(part, 10) || 0);
|
|
123
123
|
function atLeast(version, minimum) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { fromMarkdown, toMarkdown } from './chunk-
|
|
2
|
-
import { fromYaml, toYaml } from './chunk-
|
|
3
|
-
import { NOT_CHECKED } from './chunk-
|
|
4
|
-
import { parseSource, validate, OPFValidationError } from './chunk-
|
|
1
|
+
import { fromMarkdown, toMarkdown } from './chunk-GWJBZ4LC.js';
|
|
2
|
+
import { fromYaml, toYaml } from './chunk-PIO73BQ6.js';
|
|
3
|
+
import { NOT_CHECKED } from './chunk-RYZPBJLB.js';
|
|
4
|
+
import { parseSource, validate, OPFValidationError } from './chunk-XFOOKVRI.js';
|
|
5
5
|
import { checkCatalogsOption } from './chunk-XRMV2GMB.js';
|
|
6
6
|
|
|
7
7
|
// src/deck-report.ts
|
|
@@ -92,7 +92,6 @@ var presentation = {
|
|
|
92
92
|
]
|
|
93
93
|
},
|
|
94
94
|
"audience": {
|
|
95
|
-
"x-opf-catalog": "audiences",
|
|
96
95
|
"oneOf": [
|
|
97
96
|
{
|
|
98
97
|
"type": "string"
|
|
@@ -103,7 +102,6 @@ var presentation = {
|
|
|
103
102
|
{
|
|
104
103
|
"type": "array",
|
|
105
104
|
"items": {
|
|
106
|
-
"x-opf-catalog": "audiences",
|
|
107
105
|
"oneOf": [
|
|
108
106
|
{
|
|
109
107
|
"type": "string"
|
|
@@ -150,7 +148,6 @@ var presentation = {
|
|
|
150
148
|
]
|
|
151
149
|
},
|
|
152
150
|
"purpose": {
|
|
153
|
-
"x-opf-catalog": "purposes",
|
|
154
151
|
"oneOf": [
|
|
155
152
|
{
|
|
156
153
|
"type": "string"
|
|
@@ -205,7 +202,6 @@ var presentation = {
|
|
|
205
202
|
]
|
|
206
203
|
},
|
|
207
204
|
"tone": {
|
|
208
|
-
"x-opf-catalog": "tones",
|
|
209
205
|
"oneOf": [
|
|
210
206
|
{
|
|
211
207
|
"$ref": "#/$defs/CatalogReference"
|
|
@@ -298,7 +294,6 @@ var presentation = {
|
|
|
298
294
|
"default": false
|
|
299
295
|
},
|
|
300
296
|
"narrative": {
|
|
301
|
-
"x-opf-catalog": "narratives",
|
|
302
297
|
"$ref": "#/$defs/CatalogReference",
|
|
303
298
|
"description": "The deck's narrative plan, by reference: a bare narratives id ('classic-story') or 'name:id' for a record of a named catalogs group ('acme:founder-pitch'). The deck holds only this pointer; the plan (the arc, its beats and what each beat must do) lives in the record, which has the fields of https://openpresentation.org/schema/opf-narrative/v1. A narrative the document defines itself is a record in catalogs.custom.narratives, referenced here by its key.\n\nSlides link themselves to beats with slides[].beat. Core validate warns about a slides[].beat id the resolved narrative does not define and about a root 'duration' outside its 'duration' range, and reports a beat that no slide references. The preview and the PPTX export draw nothing from the narrative; opf-pptx stores the reference for round-trip.\n\nThe reference resolves like every content reference (see catalogs); one that resolves nowhere is the warning opf/unresolved-reference, never an error.\n\nDeck-level concerns that are not part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root.",
|
|
304
299
|
"examples": [
|
|
@@ -447,7 +442,6 @@ var presentation = {
|
|
|
447
442
|
],
|
|
448
443
|
"properties": {
|
|
449
444
|
"id": {
|
|
450
|
-
"x-opf-catalog": "audiences",
|
|
451
445
|
"$ref": "#/$defs/CatalogReference",
|
|
452
446
|
"description": "Optional audiences reference (a bare id or 'name:id') resolved before applying the inline overrides.",
|
|
453
447
|
"examples": [
|
|
@@ -544,7 +538,6 @@ var presentation = {
|
|
|
544
538
|
],
|
|
545
539
|
"properties": {
|
|
546
540
|
"id": {
|
|
547
|
-
"x-opf-catalog": "purposes",
|
|
548
541
|
"$ref": "#/$defs/CatalogReference",
|
|
549
542
|
"description": "Optional purposes reference (a bare id or 'name:id') resolved before applying the inline overrides.",
|
|
550
543
|
"examples": [
|
|
@@ -681,12 +674,10 @@ var presentation = {
|
|
|
681
674
|
]
|
|
682
675
|
},
|
|
683
676
|
"fontScheme": {
|
|
684
|
-
"x-opf-catalog": "fontSchemes",
|
|
685
677
|
"$ref": "#/$defs/CatalogReference",
|
|
686
678
|
"description": "Font-scheme reference (a bare id or 'name:id') for this language's script slot when targeting PowerPoint output. Its major/minor families fill the language's script slot (eastAsian or complexScript, chosen by 'script') unless the effective design font scheme sets that slot itself; the latin slot always follows the design font scheme. Without it, engines use the default script fonts of their language vocabulary."
|
|
687
679
|
},
|
|
688
680
|
"googleFontScheme": {
|
|
689
|
-
"x-opf-catalog": "fontSchemes",
|
|
690
681
|
"$ref": "#/$defs/CatalogReference",
|
|
691
682
|
"description": "Font-scheme reference (a bare id or 'name:id') used in place of 'fontScheme' when resolving script fonts for Google Slides output."
|
|
692
683
|
},
|
|
@@ -724,7 +715,6 @@ var presentation = {
|
|
|
724
715
|
],
|
|
725
716
|
"properties": {
|
|
726
717
|
"id": {
|
|
727
|
-
"x-opf-catalog": "tones",
|
|
728
718
|
"$ref": "#/$defs/CatalogReference",
|
|
729
719
|
"description": "Optional tones reference (a bare id or 'name:id') resolved before applying the inline overrides.",
|
|
730
720
|
"examples": [
|
|
@@ -1024,7 +1014,6 @@ var presentation = {
|
|
|
1024
1014
|
"description": "Visual design system applied to the presentation; individual slides may override fields via Slide.design.",
|
|
1025
1015
|
"properties": {
|
|
1026
1016
|
"theme": {
|
|
1027
|
-
"x-opf-catalog": "themes",
|
|
1028
1017
|
"$ref": "#/$defs/CatalogReference",
|
|
1029
1018
|
"description": "Theme for the deck: a themes reference, a bare id ('minimal') or 'name:id' ('acme:brand'). The theme supplies the default colour scheme, font scheme, background and dimensions; design.colorScheme, design.fontScheme, design.background and design.dimensions override it field by field. A reference that resolves nowhere is the warning opf/unresolved-reference and engines use the engine default theme.",
|
|
1030
1019
|
"examples": [
|
|
@@ -1035,7 +1024,6 @@ var presentation = {
|
|
|
1035
1024
|
]
|
|
1036
1025
|
},
|
|
1037
1026
|
"colorScheme": {
|
|
1038
|
-
"x-opf-catalog": "colorSchemes",
|
|
1039
1027
|
"oneOf": [
|
|
1040
1028
|
{
|
|
1041
1029
|
"type": "string"
|
|
@@ -1056,7 +1044,6 @@ var presentation = {
|
|
|
1056
1044
|
]
|
|
1057
1045
|
},
|
|
1058
1046
|
"fontScheme": {
|
|
1059
|
-
"x-opf-catalog": "fontSchemes",
|
|
1060
1047
|
"oneOf": [
|
|
1061
1048
|
{
|
|
1062
1049
|
"type": "string"
|
|
@@ -1300,7 +1287,6 @@ var presentation = {
|
|
|
1300
1287
|
"description": "Color palette used by the design system. Every slot and role is a hex color ('#RGB', '#RRGGBB' or '#RRGGBBAA'); a color-scheme name or a 'var:<id>' reference is not valid here, because those resolve through the scheme. The slot fields (accent1-accent6, dark1, dark2, light1, light2, hyperlink, followedHyperlink) mirror color-scheme.schema.json (https://openpresentation.org/schema/opf-color-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\n\nTwo parallel models are supported and may be mixed:\n- OOXML slots - the 12-slot PowerPoint theme model that round-trips directly to OOXML. Use these for full control over the palette as PowerPoint sees it.\n- Abstract roles (primary, secondary, accent, background, surface, text, textSecondary) - OPF-specific semantic aliases the engine maps onto the OOXML slots. Convenient for inline overrides without thinking in slot numbers; not part of the catalog record schema.\n\nIn design.colorScheme, 'id' resolves a colorSchemes record as the base; slot and role overrides on the same object take precedence over the resolved scheme. The string form of design.colorScheme is equivalent to setting only 'id'.",
|
|
1301
1288
|
"properties": {
|
|
1302
1289
|
"id": {
|
|
1303
|
-
"x-opf-catalog": "colorSchemes",
|
|
1304
1290
|
"$ref": "#/$defs/CatalogReference",
|
|
1305
1291
|
"description": "Colour-scheme reference (a bare id or 'name:id') resolved as the base; slot and role overrides on the surrounding ColorScheme object take precedence over the resolved scheme.",
|
|
1306
1292
|
"examples": [
|
|
@@ -1474,7 +1460,6 @@ var presentation = {
|
|
|
1474
1460
|
"description": "Typography selections used by the design system. The pair fields (major, minor) and refinement fields (type, app, languageFamily) mirror font-scheme.schema.json (https://openpresentation.org/schema/opf-font-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\n\nTwo parallel models are supported and may be mixed:\n- OOXML pairs (major, minor) - heading and body family names that round-trip directly to PowerPoint majorFont/minorFont entries.\n- Abstract roles (heading, body, accent, code) - OPF-specific font family names the engine maps onto the OOXML pair when serializing. Convenient for inline overrides and for adding accent/code roles that don't have a direct OOXML slot. Catalog records may also carry 'code' (for example the consolas and courier-new records); heading, body and accent are not part of the catalog record schema. A role is a family name only: weight, style and tracking come from the text styles, and PowerPoint has no numeric weight.\n\nIn design.fontScheme, 'id' resolves a fontSchemes record as the base; pair and role overrides on the same object take precedence over the resolved scheme. The string form of design.fontScheme is equivalent to setting only 'id'.",
|
|
1475
1461
|
"properties": {
|
|
1476
1462
|
"id": {
|
|
1477
|
-
"x-opf-catalog": "fontSchemes",
|
|
1478
1463
|
"$ref": "#/$defs/CatalogReference",
|
|
1479
1464
|
"description": "Font-scheme reference (a bare id or 'name:id') resolved as the base; field overrides on the surrounding FontScheme object take precedence over the resolved scheme.",
|
|
1480
1465
|
"examples": [
|
|
@@ -2870,7 +2855,6 @@ var presentation = {
|
|
|
2870
2855
|
"description": "Optional reference to one or more beats of the deck's narrative (each value is the id of a beat in the narrative record that the root 'narrative' resolves to). A single string declares the slide's primary beat; an array declares that one slide covers multiple beats. Declares the slide's role in the story arc; does not constrain ordering or structure. Core validate warns about a beat id the resolved narrative does not define, and reports a beat that no slide references. Slides without a beat are valid; multiple slides may share a beat."
|
|
2871
2856
|
},
|
|
2872
2857
|
"layout": {
|
|
2873
|
-
"x-opf-catalog": "layouts",
|
|
2874
2858
|
"$ref": "#/$defs/CatalogReference",
|
|
2875
2859
|
"description": "Optional layout: a layouts reference, a bare id ('pillars') or 'name:id' ('acme:hero'), or 'auto'. When omitted or 'auto', the slide is composed with no layout record: engines arrange title, subtitle, tag and content automatically, a slide with no body payload is a cover (vertically centered), and design hints apply; there is no finding. 'auto' is reserved, so no catalog may define a layout of that id, and opf format drops it. A layout is a grid template (layout.schema.json): the slide's content stays flat and binds to the layout's regions by reading order, role and kind, a block may pin itself to a region with 'region', and an empty region collapses. A reference that resolves nowhere is the warning opf/unresolved-reference (and the 'unresolved-reference' diagnostic of resolveSlideContext), the slide composes automatically, and a strict export fails. A layout id of the 0.18 default catalog that 0.19 no longer has is such a reference: 0.19 has no migration path for layouts. A layout never changes what a slide contains, and engines never substitute a different layout.",
|
|
2876
2860
|
"examples": [
|
|
@@ -6466,7 +6450,6 @@ var theme = {
|
|
|
6466
6450
|
]
|
|
6467
6451
|
},
|
|
6468
6452
|
"colorScheme": {
|
|
6469
|
-
"x-opf-catalog": "colorSchemes",
|
|
6470
6453
|
"type": "string",
|
|
6471
6454
|
"pattern": "^(?:[a-z][a-z0-9-]*:)?[a-z][a-z0-9-]*$",
|
|
6472
6455
|
"description": "The theme's default colour scheme: a reference (a bare id or 'name:id') resolved like design.colorScheme, but in the theme's own catalogs group first.",
|
|
@@ -6477,7 +6460,6 @@ var theme = {
|
|
|
6477
6460
|
]
|
|
6478
6461
|
},
|
|
6479
6462
|
"fontScheme": {
|
|
6480
|
-
"x-opf-catalog": "fontSchemes",
|
|
6481
6463
|
"type": "string",
|
|
6482
6464
|
"pattern": "^(?:[a-z][a-z0-9-]*:)?[a-z][a-z0-9-]*$",
|
|
6483
6465
|
"description": "The theme's default font scheme: a reference (a bare id or 'name:id') resolved like design.fontScheme, but in the theme's own catalogs group first.",
|