@openpresentation/opf 0.22.1 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +16 -16
- package/dist/{chunk-MAJHCGOW.js → chunk-3FWUA763.js} +4 -4
- package/dist/{chunk-SPCONMIY.js → chunk-4I3XPRAO.js} +1 -1
- package/dist/{chunk-7XNAMCGT.js → chunk-B2XALDGS.js} +6 -6
- package/dist/{chunk-LKMR3OLD.js → chunk-BOWBPSFF.js} +26 -9
- package/dist/{chunk-YUIEWE5B.js → chunk-CNOLYQ4C.js} +2 -2
- package/dist/{chunk-2SENTA2R.js → chunk-F55S5HDP.js} +1 -1
- package/dist/{chunk-23MOKE4B.js → chunk-L67MPTPZ.js} +43 -9
- package/dist/{chunk-VKNFZEMG.js → chunk-N3ZPLGK5.js} +137 -16
- package/dist/{chunk-KUNXFN7B.js → chunk-NIA2WEXN.js} +1 -1
- package/dist/{chunk-MG34DCDB.js → chunk-PLV7P236.js} +2 -2
- package/dist/{chunk-3T7MNRBY.js → chunk-TILQBXPZ.js} +1 -1
- package/dist/{chunk-BULGAKBY.js → chunk-TMOQ532D.js} +2 -2
- package/dist/{chunk-MLMTXXM4.js → chunk-VHNG75IH.js} +5 -5
- package/dist/{chunk-YSJRBRHB.js → chunk-VIOSRKMA.js} +1 -1
- package/dist/{chunk-SBWIZSPB.js → chunk-XKUEEDDN.js} +5 -5
- package/dist/{chunk-X3PQMMAY.js → chunk-YMBA3V2O.js} +1 -1
- package/dist/{chunk-3UAVON3O.js → chunk-ZIRSAFRC.js} +99 -0
- package/dist/{composition-CkHn6JrM.d.ts → composition-qX-igJe5.d.ts} +147 -15
- package/dist/composition.d.ts +1 -1
- package/dist/composition.js +1 -1
- package/dist/conversion-CY34E5WI.js +19 -0
- package/dist/{conversion-CSD65VLi.d.ts → conversion-t-YYHWL-.d.ts} +17 -5
- package/dist/convert.d.ts +2 -2
- package/dist/convert.js +7 -7
- package/dist/data.d.ts +1 -1
- package/dist/data.js +2 -2
- package/dist/{deck-report-vnWmXBjq.d.ts → deck-report-CJ6gd_6-.d.ts} +2 -2
- package/dist/deck.d.ts +5 -5
- package/dist/deck.js +10 -10
- package/dist/diff.js +5 -5
- package/dist/docs.js +9 -9
- package/dist/examples.d.ts +1 -1
- package/dist/examples.js +213 -0
- package/dist/format.js +2 -2
- package/dist/index.d.ts +11 -11
- package/dist/index.js +20 -20
- package/dist/markdown.d.ts +3 -3
- package/dist/markdown.js +7 -7
- package/dist/node-engine.d.ts +7 -7
- package/dist/node-engine.js +20 -20
- package/dist/{pagination-C4jzAtFy.d.ts → pagination-LiWxhbsz.d.ts} +3 -1
- package/dist/pagination.d.ts +2 -2
- package/dist/pagination.js +4 -4
- package/dist/patch.js +4 -4
- package/dist/{presentation-fN6tORPZ.d.ts → presentation-Dn-fm0iY.d.ts} +35 -0
- package/dist/repo-readme.js +1 -1
- package/dist/schemas.d.ts +2 -0
- package/dist/schemas.js +1 -1
- package/dist/spec/schemas/opf.schema.json +40 -0
- package/dist/types.d.ts +1 -1
- package/dist/{validation-types-B21fZfb2.d.ts → validation-types-CzPKoKWo.d.ts} +1 -1
- package/dist/{validator-Cflv4F9e.d.ts → validator-BuAV_HUo.d.ts} +2 -2
- package/dist/validator.d.ts +4 -4
- package/dist/validator.js +3 -3
- package/dist/yaml.d.ts +3 -3
- package/dist/yaml.js +7 -7
- package/package.json +5 -5
- package/dist/conversion-JDFXRXTK.js +0 -19
package/dist/browser.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
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-3FWUA763.js';
|
|
2
|
+
export { OPFApiError, OPFExportError, OPFImportError, OPFMoveToCustomError, copySlides, edit, embed, fill, fillRecords, localAssetSources, moveToCustom, parseSlideSelection, sameRecord, stats, updateFromCatalog } from './chunk-3FWUA763.js';
|
|
3
3
|
export { specFileEntries, specFileKinds, specFilePaths } from './chunk-UJSAR6GF.js';
|
|
4
|
-
export { OPFDataImportError, ingest, parseTabularData } from './chunk-
|
|
5
|
-
export { DECK_FORMATS, deckFormatOf, parse, stringify } from './chunk-
|
|
6
|
-
export { fromMarkdown, toMarkdown } from './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
export { OPFMarkdownError } from './chunk-
|
|
9
|
-
export { diff, merge } from './chunk-
|
|
10
|
-
export { OPFPatchError, OPFPatchValidationError, applyPatch } from './chunk-
|
|
11
|
-
export { OPFFormatError, format } from './chunk-
|
|
12
|
-
export { OPFPaginationError, paginate, paginateSlide } from './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
export { CATALOG_SCHEMA, DEFAULT_VALIDATION_THRESHOLDS, OPFValidationError, assertValid, assertValidCatalogRecord, catalogDisplayKinds, catalogSchemaNames, findValidationRule, resolveSlideContext, validate, validateCatalogRecord, validationCategories, validationRules } from './chunk-
|
|
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-
|
|
17
|
-
export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-
|
|
4
|
+
export { OPFDataImportError, ingest, parseTabularData } from './chunk-4I3XPRAO.js';
|
|
5
|
+
export { DECK_FORMATS, deckFormatOf, parse, stringify } from './chunk-VHNG75IH.js';
|
|
6
|
+
export { fromMarkdown, toMarkdown } from './chunk-XKUEEDDN.js';
|
|
7
|
+
import './chunk-B2XALDGS.js';
|
|
8
|
+
export { OPFMarkdownError } from './chunk-TILQBXPZ.js';
|
|
9
|
+
export { diff, merge } from './chunk-TMOQ532D.js';
|
|
10
|
+
export { OPFPatchError, OPFPatchValidationError, applyPatch } from './chunk-VIOSRKMA.js';
|
|
11
|
+
export { OPFFormatError, format } from './chunk-YMBA3V2O.js';
|
|
12
|
+
export { OPFPaginationError, paginate, paginateSlide } from './chunk-CNOLYQ4C.js';
|
|
13
|
+
import './chunk-NIA2WEXN.js';
|
|
14
|
+
import './chunk-F55S5HDP.js';
|
|
15
|
+
export { CATALOG_SCHEMA, DEFAULT_VALIDATION_THRESHOLDS, OPFValidationError, assertValid, assertValidCatalogRecord, catalogDisplayKinds, catalogSchemaNames, findValidationRule, resolveSlideContext, validate, validateCatalogRecord, validationCategories, validationRules } from './chunk-L67MPTPZ.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-N3ZPLGK5.js';
|
|
17
|
+
export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-ZIRSAFRC.js';
|
|
18
18
|
export { FONT_POLICY, applyFontPolicyDecisions, fontAvailabilityDiagnostics, fontPolicyFor } from './chunk-F7PLNWHQ.js';
|
|
19
19
|
|
|
20
20
|
// src/browser.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { OPFDataImportError, parseTabularData } from './chunk-
|
|
2
|
-
import { applyPatchWithInverse } from './chunk-
|
|
3
|
-
import { validate, OPFValidationError } from './chunk-
|
|
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-
|
|
1
|
+
import { OPFDataImportError, parseTabularData } from './chunk-4I3XPRAO.js';
|
|
2
|
+
import { applyPatchWithInverse } from './chunk-VIOSRKMA.js';
|
|
3
|
+
import { validate, OPFValidationError } from './chunk-L67MPTPZ.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-N3ZPLGK5.js';
|
|
5
5
|
|
|
6
6
|
// src/api-errors.ts
|
|
7
7
|
var OPFApiError = class extends Error {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { NOT_CHECKED, Ctx } from './chunk-
|
|
2
|
-
import { sortPresentationKeys } from './chunk-
|
|
3
|
-
import { same } from './chunk-
|
|
4
|
-
import { validate } from './chunk-
|
|
5
|
-
import { checkCatalogsOption } from './chunk-
|
|
6
|
-
import { presentation } from './chunk-
|
|
1
|
+
import { NOT_CHECKED, Ctx } from './chunk-TILQBXPZ.js';
|
|
2
|
+
import { sortPresentationKeys } from './chunk-YMBA3V2O.js';
|
|
3
|
+
import { same } from './chunk-F55S5HDP.js';
|
|
4
|
+
import { validate } from './chunk-L67MPTPZ.js';
|
|
5
|
+
import { checkCatalogsOption } from './chunk-N3ZPLGK5.js';
|
|
6
|
+
import { presentation } from './chunk-ZIRSAFRC.js';
|
|
7
7
|
import { Parser, parseDocument, isMap, Document, visit, isScalar, isAlias, isSeq } from 'yaml';
|
|
8
8
|
|
|
9
9
|
var MAX_ALIAS_COUNT = 100;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { defaultCatalogs } from './chunk-
|
|
2
|
-
import { localAssetSources, OPFApiError, parseSlideSelection, OPFExportError, asApiError, OPFImportError } from './chunk-
|
|
3
|
-
import { deckFormatOf, readDeckReport, stringify } from './chunk-
|
|
4
|
-
import { paginate } from './chunk-
|
|
5
|
-
import { validate, OPFValidationError } from './chunk-
|
|
1
|
+
import { defaultCatalogs } from './chunk-PLV7P236.js';
|
|
2
|
+
import { localAssetSources, OPFApiError, parseSlideSelection, OPFExportError, asApiError, OPFImportError } from './chunk-3FWUA763.js';
|
|
3
|
+
import { deckFormatOf, readDeckReport, stringify } from './chunk-VHNG75IH.js';
|
|
4
|
+
import { paginate } from './chunk-CNOLYQ4C.js';
|
|
5
|
+
import { validate, OPFValidationError } from './chunk-L67MPTPZ.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,19 @@ 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.
|
|
120
|
+
var PEER_RANGES = { [RENDER_PACKAGE]: "^0.23.0", [PPTX_PACKAGE]: "^0.23.0" };
|
|
121
|
+
var PPTX_TEXT_OPTIONS_FROM = "0.22.0";
|
|
122
|
+
var numbers = (version) => version.replace(/[-+].*$/, "").split(".").map((part) => Number.parseInt(part, 10) || 0);
|
|
123
|
+
function atLeast(version, minimum) {
|
|
124
|
+
const [a, b] = [numbers(version), numbers(minimum)];
|
|
125
|
+
for (let i = 0; i < 3; i++) if ((a[i] ?? 0) !== (b[i] ?? 0)) return (a[i] ?? 0) > (b[i] ?? 0);
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
function requirePptxOptions(pptx, options, flags = false) {
|
|
129
|
+
const asked = [options.bodyText === "native" ? flags ? "--body-text native" : 'bodyText: "native"' : void 0, options.slideNumbers ? flags ? "--slide-numbers" : "slideNumbers" : void 0].filter(Boolean);
|
|
130
|
+
if (asked.length && pptx.version !== "unknown" && !atLeast(pptx.version, PPTX_TEXT_OPTIONS_FROM))
|
|
131
|
+
throw new OPFApiError(`${asked.join(" and ")} needs ${pptx.name}@${PPTX_TEXT_OPTIONS_FROM} or later; ${pptx.version} is installed and would ignore it.`, "peer-too-old", { details: { package: pptx.name } });
|
|
132
|
+
}
|
|
121
133
|
var RENDER_EXTRAS = {
|
|
122
134
|
/** The faces of the office pack, which the CLI and `convert` always load (every format). */
|
|
123
135
|
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"],
|
|
@@ -618,9 +630,11 @@ function resolveExportOptions(options) {
|
|
|
618
630
|
const charts = oneOf("charts", options.charts, ["auto", "native", "picture"]);
|
|
619
631
|
const provenance = oneOf("provenance", options.provenance, ["full", "references-only", "none"]);
|
|
620
632
|
const images = oneOf("images", options.images, ["compatible", "preserve"]);
|
|
633
|
+
const bodyText = oneOf("bodyText", options.bodyText, ["measured", "native"]);
|
|
634
|
+
const slideNumbers = oneOf("slideNumbers", options.slideNumbers, ["static", "live"]);
|
|
621
635
|
const text = oneOf("text", options.text, EXPORT_TEXT);
|
|
622
636
|
if (options.raster && format !== "pdf") throw invalid("raster applies to format pdf.");
|
|
623
|
-
if ((charts !== void 0 || provenance !== void 0 || images !== void 0) && format !== "pptx") throw invalid("charts, provenance and
|
|
637
|
+
if ((charts !== void 0 || provenance !== void 0 || images !== void 0 || bodyText !== void 0 || slideNumbers !== void 0) && format !== "pptx") throw invalid("charts, provenance, images, bodyText and slideNumbers apply to format pptx.");
|
|
624
638
|
if (options.scale !== void 0 && format !== "png" && format !== "pdf") throw invalid("scale applies to format png (and raster pdf).");
|
|
625
639
|
if (options.includeHidden && format === "pptx") throw invalid("includeHidden applies to per-slide image and PDF output; the PPTX keeps a hidden slide as a hidden slide.");
|
|
626
640
|
if (options.slides !== void 0 && format === "pptx") throw invalid("slides is not available for pptx: the whole presentation is exported.");
|
|
@@ -705,6 +719,7 @@ async function drawWith(presentation, handle, options, ctx, environment) {
|
|
|
705
719
|
const run = (extra) => ({ fonts: fontSummary(), ...pagination ? { pagination } : {}, skippedHidden, ...extra });
|
|
706
720
|
try {
|
|
707
721
|
if (format === "pptx") {
|
|
722
|
+
requirePptxOptions(pptx, options, ctx.flags);
|
|
708
723
|
const module = pptx.module;
|
|
709
724
|
const bytes = await module.toPptx(deck, {
|
|
710
725
|
fonts: handle,
|
|
@@ -718,6 +733,8 @@ async function drawWith(presentation, handle, options, ctx, environment) {
|
|
|
718
733
|
...options.charts ? { chartex: options.charts === "picture" ? "fallback" : options.charts } : {},
|
|
719
734
|
...options.provenance ? { provenance: options.provenance === "none" ? false : options.provenance } : {},
|
|
720
735
|
...options.images ? { imageFormat: options.images } : {},
|
|
736
|
+
...options.bodyText ? { bodyText: options.bodyText } : {},
|
|
737
|
+
...options.slideNumbers ? { slideNumberFields: options.slideNumbers } : {},
|
|
721
738
|
...date ? { date } : {}
|
|
722
739
|
});
|
|
723
740
|
return run({ files: [{ name: `${stem}.pptx`, type: MEDIA2.pptx, bytes }], skippedHidden: [] });
|
|
@@ -898,7 +915,7 @@ function targetOf(output, options, flags) {
|
|
|
898
915
|
checkOutputPattern(output, exported === "png" || exported === "svg");
|
|
899
916
|
return exported ? { kind: "export", format: exported, zip: false } : { kind: "deck", format: deck };
|
|
900
917
|
}
|
|
901
|
-
var EXPORT_ONLY = ["slides", "includeHidden", "paginate", "scale", "raster", "text", "charts", "provenance", "images", "date", "fonts", "assetDir"];
|
|
918
|
+
var EXPORT_ONLY = ["slides", "includeHidden", "paginate", "scale", "raster", "text", "charts", "provenance", "images", "bodyText", "slideNumbers", "date", "fonts", "assetDir"];
|
|
902
919
|
var given = (value) => value !== void 0 && value !== false && !(Array.isArray(value) && value.length === 0);
|
|
903
920
|
function checkApplicable(source, target, options, flags) {
|
|
904
921
|
const name = (key) => flags ? `--${key.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}` : key;
|
|
@@ -911,7 +928,7 @@ function checkApplicable(source, target, options, flags) {
|
|
|
911
928
|
}
|
|
912
929
|
const format = target.format;
|
|
913
930
|
if (given(options.raster) && format !== "pdf") throw invalid2(`${name("raster")} applies to pdf output.`);
|
|
914
|
-
if ((options.charts !== void 0 || options.provenance !== void 0 || options.images !== void 0) && format !== "pptx") throw invalid2(`${names("charts", "provenance", "images")} apply to pptx output.`);
|
|
931
|
+
if ((options.charts !== void 0 || options.provenance !== void 0 || options.images !== void 0 || options.bodyText !== void 0 || options.slideNumbers !== void 0) && format !== "pptx") throw invalid2(`${names("charts", "provenance", "images", "bodyText", "slideNumbers")} apply to pptx output.`);
|
|
915
932
|
if (options.scale !== void 0 && format !== "png" && format !== "pdf") throw invalid2(`${name("scale")} applies to png output (and raster pdf).`);
|
|
916
933
|
if (given(options.includeHidden) && format === "pptx") throw invalid2(`${name("includeHidden")} applies to per-slide image and PDF output; the PPTX keeps a hidden slide as a hidden slide.`);
|
|
917
934
|
if (options.slides !== void 0 && format === "pptx") throw invalid2(`${name("slides")} is not available for pptx output: the whole presentation is exported.`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { assertValid, resolveSlideScriptMeasurement, resolveSlideContext } from './chunk-
|
|
2
|
-
import { resolveSlideVariables, checkCatalogsOption, usesSlideBuiltin, composeSlide, codeHighlightSlice, tableRowBoundaries, visitContentPayloads, regionAccepts, slideTokenSpans, sliceNumberedItems } from './chunk-
|
|
1
|
+
import { assertValid, resolveSlideScriptMeasurement, resolveSlideContext } from './chunk-L67MPTPZ.js';
|
|
2
|
+
import { resolveSlideVariables, checkCatalogsOption, usesSlideBuiltin, composeSlide, codeHighlightSlice, tableRowBoundaries, visitContentPayloads, regionAccepts, slideTokenSpans, sliceNumberedItems } from './chunk-N3ZPLGK5.js';
|
|
3
3
|
|
|
4
4
|
// src/pagination.ts
|
|
5
5
|
var OPFPaginationError = class extends Error {
|
|
@@ -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,
|
|
2
|
-
import { schemas, schemaEntries } from './chunk-
|
|
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, normalizeColorVariant, isRecord, hasContentVariables, isTemplate, instantiateForValidation, layoutTemplateIssues, resolveScriptFonts, defaultSlideBackground, 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-N3ZPLGK5.js';
|
|
2
|
+
import { schemas, schemaEntries } from './chunk-ZIRSAFRC.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';
|
|
@@ -1230,9 +1230,9 @@ function simulateVision(hex, model) {
|
|
|
1230
1230
|
}
|
|
1231
1231
|
var PAGE = "#FFFFFF";
|
|
1232
1232
|
var colorFrom = (scheme, slot, fallback) => typeof slot === "string" ? slot.startsWith("#") ? normalizeHexColor(slot) ?? fallback : normalizeHexColor(scheme[slot]) ?? fallback : fallback;
|
|
1233
|
-
function backdropOf(definition, scheme, text, variables) {
|
|
1233
|
+
function backdropOf(definition, scheme, text, variables, canvasColor) {
|
|
1234
1234
|
const resolve2 = (value, fallback) => backgroundColorRef(value, scheme, variables, fallback);
|
|
1235
|
-
const canvas = defaultSlideBackground(scheme);
|
|
1235
|
+
const canvas = canvasColor ?? defaultSlideBackground(scheme);
|
|
1236
1236
|
if (!definition) return { kind: "solid", color: canvas };
|
|
1237
1237
|
if (imageBackground(definition)) return { kind: "image", opacity: imageBackground(definition)?.opacity ?? 1, base: PAGE };
|
|
1238
1238
|
if (typeof definition === "string") return { kind: "solid", color: colorFrom(scheme, definition, canvas) };
|
|
@@ -1299,6 +1299,34 @@ function decisionColor(definition, scheme, variables = {}) {
|
|
|
1299
1299
|
return void 0;
|
|
1300
1300
|
}
|
|
1301
1301
|
}
|
|
1302
|
+
var THEME_SLOTS = /* @__PURE__ */ new Set(["light1", "light2", "dark1", "dark2"]);
|
|
1303
|
+
function colorChoice(levels, scheme, variables = {}) {
|
|
1304
|
+
let variantOnly = false;
|
|
1305
|
+
let picture;
|
|
1306
|
+
for (const level of levels) {
|
|
1307
|
+
const definition = level.background;
|
|
1308
|
+
const slot = typeof definition === "string" ? definition : rec(definition).type === "theme" ? rec(definition).slot : void 0;
|
|
1309
|
+
const themeSlot = THEME_SLOTS.has(slot) ? slot : void 0;
|
|
1310
|
+
const isPicture = imageBackground(definition) !== void 0 || rec(definition).type === "gradient";
|
|
1311
|
+
const variant = normalizeColorVariant(level.variant);
|
|
1312
|
+
if (variant) {
|
|
1313
|
+
const fill = definition !== void 0 && !variantOnly && !themeSlot && !isPicture ? decisionColor(definition, scheme, variables) : void 0;
|
|
1314
|
+
const own2 = definition !== void 0 && !variantOnly && !themeSlot;
|
|
1315
|
+
return { variant, ...fill ? { background: fill } : {}, drawn: variantOnly ? picture : { definition: own2 ? definition : void 0 } };
|
|
1316
|
+
}
|
|
1317
|
+
if (variantOnly || definition === void 0 || definition === null || definition === false) continue;
|
|
1318
|
+
if (themeSlot) return { variant: { background: themeSlot } };
|
|
1319
|
+
if (isPicture) {
|
|
1320
|
+
const tone = rec(definition).tone;
|
|
1321
|
+
if (tone === "dark" || tone === "light") return { variant: { background: tone === "dark" ? "dark1" : "light1" } };
|
|
1322
|
+
variantOnly = true;
|
|
1323
|
+
picture = { definition };
|
|
1324
|
+
continue;
|
|
1325
|
+
}
|
|
1326
|
+
return { background: decisionColor(definition, scheme, variables) };
|
|
1327
|
+
}
|
|
1328
|
+
return {};
|
|
1329
|
+
}
|
|
1302
1330
|
function resolveDesign(document, index, context) {
|
|
1303
1331
|
const deck = rec(document.design), own2 = rec(rec(rec(document.slides)[index]).design);
|
|
1304
1332
|
const { options, diagnostics, resolved } = context;
|
|
@@ -1307,11 +1335,12 @@ function resolveDesign(document, index, context) {
|
|
|
1307
1335
|
const fontDiagnostic = diagnostics.find((diagnostic) => diagnostic.kind === "fontSchemes");
|
|
1308
1336
|
const dimensions = { width: options.width, height: options.height };
|
|
1309
1337
|
const variables = rec(document.variables);
|
|
1310
|
-
const
|
|
1338
|
+
const choice = colorChoice([own2, deck, theme], colorScheme, variables);
|
|
1339
|
+
const roles = resolveColorRoles(colorScheme, { background: choice.background, variant: choice.variant });
|
|
1311
1340
|
const dark = roles.dark;
|
|
1312
1341
|
const text = roles.text;
|
|
1313
|
-
const backdrop = backdropOf(own2.background ?? deck.background ?? theme.background, colorScheme, text, variables);
|
|
1314
|
-
const picture = imageBackground(own2.background ?? deck.background ?? theme.background);
|
|
1342
|
+
const backdrop = backdropOf(choice.drawn ? choice.drawn.definition : own2.background ?? deck.background ?? theme.background, colorScheme, text, variables, roles.map.bg1 === "light1" ? void 0 : roles.background);
|
|
1343
|
+
const picture = imageBackground(choice.drawn ? choice.drawn.definition : own2.background ?? deck.background ?? theme.background);
|
|
1315
1344
|
const backgroundImage = picture && own2.background !== void 0 ? { source: picture.src, fit: picture.fit, path: `/slides/${index}/design/background` } : picture && deck.background !== void 0 ? { source: picture.src, fit: picture.fit, path: "/design/background" } : void 0;
|
|
1316
1345
|
return {
|
|
1317
1346
|
theme,
|
|
@@ -1321,6 +1350,10 @@ function resolveDesign(document, index, context) {
|
|
|
1321
1350
|
dimensions,
|
|
1322
1351
|
backdrop,
|
|
1323
1352
|
dark,
|
|
1353
|
+
variant: roles.variant,
|
|
1354
|
+
map: roles.map,
|
|
1355
|
+
accents: roles.accents,
|
|
1356
|
+
neutrals: roles.neutrals,
|
|
1324
1357
|
colors: {
|
|
1325
1358
|
background: roles.background,
|
|
1326
1359
|
surface: roles.surface,
|
|
@@ -3629,6 +3662,7 @@ function resolveSlideContext(presentation, index, options = {}) {
|
|
|
3629
3662
|
} else diagnostics.push(unresolvedReference(presentation, "layouts", slide.layout, `slides.${index}.layout`, catalogs));
|
|
3630
3663
|
}
|
|
3631
3664
|
if (options.strictReferences && diagnostics.length) throw new OPFUnresolvedReferenceError(diagnostics);
|
|
3665
|
+
const roles = resolveColorRoles(colorScheme, colorChoice([rec2(slide.design), rec2(deck.design), theme], colorScheme, rec2(deck.variables)));
|
|
3632
3666
|
const composeOptions = {
|
|
3633
3667
|
...resolveCanvasDimensions(design.dimensions ?? theme.dimensions),
|
|
3634
3668
|
...layout ? { layout } : {},
|
|
@@ -3637,7 +3671,7 @@ function resolveSlideContext(presentation, index, options = {}) {
|
|
|
3637
3671
|
slideNumber: options.slideNumber ?? index + 1,
|
|
3638
3672
|
slideCount: options.slideCount ?? slides.length,
|
|
3639
3673
|
fontFamilies: resolveFontFamilies(fontScheme),
|
|
3640
|
-
darkBackground:
|
|
3674
|
+
darkBackground: roles.dark,
|
|
3641
3675
|
...theme.background !== void 0 ? { themeBackground: theme.background } : {},
|
|
3642
3676
|
// OPF 0.19: a theme may carry the shared design keys (between the deck's design and the layout record's).
|
|
3643
3677
|
...theme.design !== void 0 && rec2(theme.design) === theme.design ? { themeDesign: theme.design } : {},
|
|
@@ -3645,7 +3679,7 @@ function resolveSlideContext(presentation, index, options = {}) {
|
|
|
3645
3679
|
...options.date !== void 0 ? { date: options.date } : {}
|
|
3646
3680
|
};
|
|
3647
3681
|
const resolvedSlide = resolveSlideVariables(slide, { slideNumber: composeOptions.slideNumber, slideCount: composeOptions.slideCount, presentation, darkBackground: composeOptions.darkBackground === true });
|
|
3648
|
-
return { slide: resolvedSlide, options: composeOptions, diagnostics, resolved: { theme, colorScheme, fontScheme, fontSchemePath: records.fontSchemePath, ...layout ? { layout } : {}, provenance: { ...layoutProvenance ? { layout: layoutProvenance } : {}, ...records.provenance } } };
|
|
3682
|
+
return { slide: resolvedSlide, options: composeOptions, diagnostics, resolved: { theme, colorScheme, roles, fontScheme, fontSchemePath: records.fontSchemePath, ...layout ? { layout } : {}, provenance: { ...layoutProvenance ? { layout: layoutProvenance } : {}, ...records.provenance } } };
|
|
3649
3683
|
}
|
|
3650
3684
|
|
|
3651
3685
|
// src/rule-slides.ts
|
|
@@ -3451,27 +3451,141 @@ function readableLink(link, background, text2) {
|
|
|
3451
3451
|
const contrast2 = linkHex && backgroundHex ? colorContrast(linkHex, backgroundHex) : void 0;
|
|
3452
3452
|
return contrast2 !== void 0 && contrast2 < MIN_LINK_CONTRAST ? text2 : link;
|
|
3453
3453
|
}
|
|
3454
|
+
var ACCENT_SLOTS = ["accent1", "accent2", "accent3", "accent4", "accent5", "accent6"];
|
|
3455
|
+
var MAPS = {
|
|
3456
|
+
light1: { bg1: "light1", tx1: "dark1", bg2: "light2", tx2: "dark2" },
|
|
3457
|
+
light2: { bg1: "light2", tx1: "dark1", bg2: "light2", tx2: "dark2" },
|
|
3458
|
+
dark1: { bg1: "dark1", tx1: "light1", bg2: "dark2", tx2: "light2" },
|
|
3459
|
+
dark2: { bg1: "dark2", tx1: "light1", bg2: "dark2", tx2: "light2" }
|
|
3460
|
+
};
|
|
3461
|
+
function normalizeColorVariant(value) {
|
|
3462
|
+
if (typeof value === "string") return Object.hasOwn(MAPS, value) ? { background: value } : void 0;
|
|
3463
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return void 0;
|
|
3464
|
+
const { background, accents } = value;
|
|
3465
|
+
if (typeof background !== "string" || !Object.hasOwn(MAPS, background)) return void 0;
|
|
3466
|
+
if (accents === void 0) return { background };
|
|
3467
|
+
return Array.isArray(accents) && accents.length === 6 && ACCENT_SLOTS.every((slot) => accents.includes(slot)) ? { background, accents: [...accents] } : void 0;
|
|
3468
|
+
}
|
|
3469
|
+
function isColorVariant(value) {
|
|
3470
|
+
return normalizeColorVariant(value) !== void 0;
|
|
3471
|
+
}
|
|
3472
|
+
function colorMapFor(variant) {
|
|
3473
|
+
const normalized = normalizeColorVariant(variant);
|
|
3474
|
+
const base = MAPS[normalized?.background ?? "light1"];
|
|
3475
|
+
return { ...base, accents: normalized?.accents ? [...normalized.accents] : ACCENT_SLOTS };
|
|
3476
|
+
}
|
|
3477
|
+
var OOXML_SLOT = { light1: "lt1", light2: "lt2", dark1: "dk1", dark2: "dk2" };
|
|
3478
|
+
function clrMapAttributes(map) {
|
|
3479
|
+
return {
|
|
3480
|
+
bg1: OOXML_SLOT[map.bg1],
|
|
3481
|
+
tx1: OOXML_SLOT[map.tx1],
|
|
3482
|
+
bg2: OOXML_SLOT[map.bg2],
|
|
3483
|
+
tx2: OOXML_SLOT[map.tx2],
|
|
3484
|
+
accent1: map.accents[0],
|
|
3485
|
+
accent2: map.accents[1],
|
|
3486
|
+
accent3: map.accents[2],
|
|
3487
|
+
accent4: map.accents[3],
|
|
3488
|
+
accent5: map.accents[4],
|
|
3489
|
+
accent6: map.accents[5],
|
|
3490
|
+
hlink: "hlink",
|
|
3491
|
+
folHlink: "folHlink"
|
|
3492
|
+
};
|
|
3493
|
+
}
|
|
3494
|
+
function rgbToHsl([r, g, b]) {
|
|
3495
|
+
const red = r / 255, green = g / 255, blue = b / 255, max = Math.max(red, green, blue), min = Math.min(red, green, blue), l = (max + min) / 2;
|
|
3496
|
+
if (max === min) return [0, 0, l];
|
|
3497
|
+
const d = max - min, s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
3498
|
+
const h = max === red ? (green - blue) / d + (green < blue ? 6 : 0) : max === green ? (blue - red) / d + 2 : (red - green) / d + 4;
|
|
3499
|
+
return [h / 6, s, l];
|
|
3500
|
+
}
|
|
3501
|
+
function hslToRgb([h, s, l]) {
|
|
3502
|
+
if (s === 0) return [l * 255, l * 255, l * 255];
|
|
3503
|
+
const q = l < 0.5 ? l * (1 + s) : l + s - l * s, p = 2 * l - q;
|
|
3504
|
+
const channel = (t) => {
|
|
3505
|
+
const u = t < 0 ? t + 1 : t > 1 ? t - 1 : t;
|
|
3506
|
+
return 255 * (u < 1 / 6 ? p + (q - p) * 6 * u : u < 0.5 ? q : u < 2 / 3 ? p + (q - p) * (2 / 3 - u) * 6 : p);
|
|
3507
|
+
};
|
|
3508
|
+
return [channel(h + 1 / 3), channel(h), channel(h - 1 / 3)];
|
|
3509
|
+
}
|
|
3510
|
+
function applyLuminance(hex, lumMod = 1e5, lumOff = 0) {
|
|
3511
|
+
const channels2 = opaqueChannels(hex);
|
|
3512
|
+
if (!channels2) return hex;
|
|
3513
|
+
const [h, s, l] = rgbToHsl(channels2);
|
|
3514
|
+
return hexOfChannels(hslToRgb([h, s, Math.min(1, Math.max(0, l * lumMod / 1e5 + lumOff / 1e5))]));
|
|
3515
|
+
}
|
|
3516
|
+
function mixTowardsBackground(slot, slotHex, backgroundHex, share) {
|
|
3517
|
+
const from = opaqueChannels(slotHex), to = opaqueChannels(backgroundHex);
|
|
3518
|
+
if (!from || !to) return { slot, hex: slotHex };
|
|
3519
|
+
const own3 = rgbToHsl(from)[2], target = rgbToHsl(to)[2] + share * (own3 - rgbToHsl(to)[2]);
|
|
3520
|
+
let lumMod = 1e5, lumOff = 0;
|
|
3521
|
+
if (target >= own3) {
|
|
3522
|
+
const k = own3 >= 1 ? 0 : (target - own3) / (1 - own3);
|
|
3523
|
+
lumMod = Math.round((1 - k) * 1e5);
|
|
3524
|
+
lumOff = Math.round(k * 1e5);
|
|
3525
|
+
} else lumMod = Math.round(target / own3 * 1e5);
|
|
3526
|
+
return { slot, hex: applyLuminance(slotHex, lumMod, lumOff), ...lumMod !== 1e5 ? { lumMod } : {}, ...lumOff !== 0 ? { lumOff } : {} };
|
|
3527
|
+
}
|
|
3528
|
+
var NEUTRAL_SHARES = { border: 0.2, gridline: 0.15, axisLine: 0.25, chartText: 0.65, codeComment: 0.65 };
|
|
3454
3529
|
function resolveColorRoles(colorScheme, options = {}) {
|
|
3455
3530
|
const slot = (name, fallback) => slotKeepingAlpha(colorScheme, name, fallback);
|
|
3456
|
-
const
|
|
3457
|
-
const
|
|
3458
|
-
const
|
|
3459
|
-
const
|
|
3531
|
+
const FALLBACK2 = { light1: "#FFFFFF", light2: "#F8FAFC", dark1: "#111827", dark2: "#1E293B" };
|
|
3532
|
+
const explicit = normalizeColorVariant(options.variant);
|
|
3533
|
+
const explicitBackground = keepAlpha(options.background);
|
|
3534
|
+
const dark = explicit ? explicit.background.startsWith("dark") : options.tone ? options.tone === "dark" : isDarkColor(explicitBackground ?? defaultSlideBackground(colorScheme));
|
|
3535
|
+
const variant = explicit ?? { background: dark ? "dark1" : "light1" };
|
|
3536
|
+
const map = colorMapFor(variant);
|
|
3537
|
+
const slotColor = (name) => slot(name, FALLBACK2[name]);
|
|
3538
|
+
const bg1 = map.bg1 === "light1" ? defaultSlideBackground(colorScheme) : slotColor(map.bg1);
|
|
3539
|
+
const background = explicitBackground ?? bg1;
|
|
3540
|
+
const tx1 = slotColor(map.tx1), bg2 = slotColor(map.bg2), tx2 = slotColor(map.tx2);
|
|
3541
|
+
const text2 = dark ? tx1 : keepAlpha(colorScheme.text) ?? tx1;
|
|
3542
|
+
const surface = keepAlpha(colorScheme.surface) ?? bg2;
|
|
3543
|
+
const accents = map.accents.map((name) => slot(name, "#000000"));
|
|
3544
|
+
const neutrals = schemeNeutrals({ bg1: explicitBackground ?? bg1, tx1, bg2, tx2, dark });
|
|
3460
3545
|
return {
|
|
3461
|
-
primary: keepAlpha(colorScheme.primary) ??
|
|
3462
|
-
secondary: keepAlpha(colorScheme.secondary) ??
|
|
3463
|
-
accent: keepAlpha(colorScheme.accent) ??
|
|
3546
|
+
primary: keepAlpha(colorScheme.primary) ?? accents[0],
|
|
3547
|
+
secondary: keepAlpha(colorScheme.secondary) ?? accents[1],
|
|
3548
|
+
accent: keepAlpha(colorScheme.accent) ?? accents[2],
|
|
3464
3549
|
background,
|
|
3465
3550
|
surface,
|
|
3466
3551
|
surfaceAlt: surfaceAltColor(surface, text2),
|
|
3467
|
-
border:
|
|
3552
|
+
border: neutrals.border.hex,
|
|
3468
3553
|
text: text2,
|
|
3469
|
-
textSecondary: keepAlpha(colorScheme.textSecondary) ??
|
|
3554
|
+
textSecondary: keepAlpha(colorScheme.textSecondary) ?? tx2,
|
|
3470
3555
|
hyperlink: readableLink(slot("hyperlink", DEFAULT_HYPERLINK), background, text2),
|
|
3471
3556
|
followedHyperlink: slot("followedHyperlink", DEFAULT_FOLLOWED_HYPERLINK),
|
|
3472
|
-
dark
|
|
3557
|
+
dark,
|
|
3558
|
+
variant,
|
|
3559
|
+
map,
|
|
3560
|
+
accents,
|
|
3561
|
+
neutrals
|
|
3473
3562
|
};
|
|
3474
3563
|
}
|
|
3564
|
+
function schemeNeutrals(colors) {
|
|
3565
|
+
const { bg1, tx1, bg2, tx2, dark } = colors;
|
|
3566
|
+
const opaque = (value) => normalizeHexColor(value) ?? value;
|
|
3567
|
+
const [back, front, second, secondText] = [opaque(bg1), opaque(tx1), opaque(bg2), opaque(tx2)];
|
|
3568
|
+
const share = (amount) => mixTowardsBackground("tx1", front, back, amount);
|
|
3569
|
+
const panel = dark ? { slot: "bg2", hex: second } : { slot: "tx1", hex: front };
|
|
3570
|
+
const textOnPanel = (colorContrast(back, panel.hex) ?? 0) >= (colorContrast(front, panel.hex) ?? 0) ? { slot: "bg1", hex: back } : { slot: "tx1", hex: front };
|
|
3571
|
+
const comment = mixTowardsBackground(textOnPanel.slot, textOnPanel.hex, panel.hex, NEUTRAL_SHARES.codeComment);
|
|
3572
|
+
return {
|
|
3573
|
+
border: share(NEUTRAL_SHARES.border),
|
|
3574
|
+
gridline: share(NEUTRAL_SHARES.gridline),
|
|
3575
|
+
axisLine: share(NEUTRAL_SHARES.axisLine),
|
|
3576
|
+
chartText: share(NEUTRAL_SHARES.chartText),
|
|
3577
|
+
outline: { slot: "bg1", hex: back },
|
|
3578
|
+
trendNeutral: { slot: "tx2", hex: secondText },
|
|
3579
|
+
codePanel: panel,
|
|
3580
|
+
codeText: textOnPanel,
|
|
3581
|
+
codeComment: comment
|
|
3582
|
+
};
|
|
3583
|
+
}
|
|
3584
|
+
function readableSchemeColor(fill, roles) {
|
|
3585
|
+
const light = { slot: "bg1", hex: normalizeHexColor(roles.background) ?? roles.background };
|
|
3586
|
+
const ink = { slot: "tx1", hex: normalizeHexColor(roles.text) ?? roles.text };
|
|
3587
|
+
return (colorContrast(light.hex, fill) ?? 0) >= (colorContrast(ink.hex, fill) ?? 0) ? light : ink;
|
|
3588
|
+
}
|
|
3475
3589
|
function luminance(value) {
|
|
3476
3590
|
if (typeof value !== "string") return void 0;
|
|
3477
3591
|
let hex = value.trim();
|
|
@@ -3609,8 +3723,8 @@ function chartPaletteForFill(fill, palette) {
|
|
|
3609
3723
|
}
|
|
3610
3724
|
var CHART_SERIES_TINT_MIX = 0.4;
|
|
3611
3725
|
function chartSeriesPalette(colorScheme = {}, colors, context = {}) {
|
|
3612
|
-
const
|
|
3613
|
-
|
|
3726
|
+
const order = context.accents && context.accents.length === 6 && ACCENT_SLOTS.every((slot) => context.accents.includes(slot)) ? context.accents : ACCENT_SLOTS;
|
|
3727
|
+
const accents = order.map((slot) => {
|
|
3614
3728
|
return normalizeHexColor(colorScheme?.[slot]) ?? normalizeHexColor(ENGINE_DEFAULT_COLOR_SCHEME[slot]) ?? "#000000";
|
|
3615
3729
|
});
|
|
3616
3730
|
const palette = [...accents, ...accents.map((accent) => mixChannels(opaqueChannels(accent), [255, 255, 255], CHART_SERIES_TINT_MIX))];
|
|
@@ -4397,6 +4511,13 @@ function codeSyntaxPaletteForScheme(scheme, options = {}) {
|
|
|
4397
4511
|
const pick = (role, slot, fallback) => normalize(record9[role]) ?? normalize(record9[slot]) ?? fallback;
|
|
4398
4512
|
return codeSyntaxPalette({ primary: pick("primary", "accent1", "#2563EB"), secondary: pick("secondary", "accent2", "#0F766E"), accent: pick("accent", "accent3", "#F59E0B") }, options);
|
|
4399
4513
|
}
|
|
4514
|
+
function codeSyntaxPaletteForRoles(roles, options = {}) {
|
|
4515
|
+
const { neutrals } = roles;
|
|
4516
|
+
return codeSyntaxPalette(
|
|
4517
|
+
{ primary: roles.primary, secondary: roles.secondary, accent: roles.accent, mutedText: neutrals.codeComment.hex },
|
|
4518
|
+
{ background: neutrals.codePanel.hex, foreground: neutrals.codeText.hex, ...options }
|
|
4519
|
+
);
|
|
4520
|
+
}
|
|
4400
4521
|
|
|
4401
4522
|
// src/metric-trend.ts
|
|
4402
4523
|
var METRIC_DEFAULT_SENTIMENT = Object.freeze({ up: "positive", down: "negative", flat: "neutral" });
|
|
@@ -4545,16 +4666,16 @@ var blend = (from, to, amount) => {
|
|
|
4545
4666
|
const a = channels(from), b = channels(to);
|
|
4546
4667
|
return toHex(a.map((value, index) => value + (b[index] - value) * amount));
|
|
4547
4668
|
};
|
|
4548
|
-
function codeHighlightColors(scheme, palette = codeSyntaxPaletteForScheme(scheme)) {
|
|
4669
|
+
function codeHighlightColors(scheme, palette = codeSyntaxPaletteForScheme(scheme), panel = CODE_PANEL_BACKGROUND) {
|
|
4549
4670
|
const record9 = scheme && typeof scheme === "object" ? scheme : {};
|
|
4550
4671
|
const primary = normalize(record9.primary) ?? normalize(record9.accent1) ?? "#2563EB";
|
|
4551
4672
|
const [hue, saturation] = toHsl(primary);
|
|
4552
4673
|
const tint = fromHsl(hue, Math.min(saturation, 0.7), 0.45);
|
|
4553
|
-
const band = blend(
|
|
4674
|
+
const band = blend(panel, tint, CODE_HIGHLIGHT_BAND_TINT);
|
|
4554
4675
|
const lit = {}, dim = {};
|
|
4555
4676
|
for (const key of Object.keys(palette)) {
|
|
4556
4677
|
lit[key] = legible(palette[key], band, CODE_SYNTAX_MIN_CONTRAST);
|
|
4557
|
-
dim[key] = legible(blend(palette[key],
|
|
4678
|
+
dim[key] = legible(blend(palette[key], panel, CODE_HIGHLIGHT_DIM), panel, CODE_SYNTAX_MIN_CONTRAST);
|
|
4558
4679
|
}
|
|
4559
4680
|
return { band, lit, dim };
|
|
4560
4681
|
}
|
|
@@ -7279,4 +7400,4 @@ function resolveCanvasDimensions(input) {
|
|
|
7279
7400
|
return { width, height };
|
|
7280
7401
|
}
|
|
7281
7402
|
|
|
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 };
|
|
7403
|
+
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, NEUTRAL_SHARES, 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, applyLuminance, bindRegions, blockKind, captionSettings, catalogGroupDeclared, catalogGroupSource, catalogKinds, catalogRecords, catalogReferenceSites, chartColorForFill, chartHighlightColors, chartHighlightMarks, chartLabelText, chartNumber, chartNumberFixesByCell, chartOptionSupport, chartOptionTarget, chartPaletteForFill, chartSeriesPalette, chartTextSize, chartValueAxis, checkCatalogsOption, citationMarkerText, clrMapAttributes, codeHighlightBands, codeHighlightColors, codeHighlightLines, codeHighlightSlice, codeLineNumbers, codeLineRuns, codeSyntaxPalette, codeSyntaxPaletteForRoles, codeSyntaxPaletteForScheme, coerceVariableValue, collectCitations, colorContrast, colorMapFor, 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, isColorVariant, 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, normalizeColorVariant, normalizeHexColor, normalizeLanguageFamily, numberFormatError, numberingAtLevel, numberingFindings, numberingStyleDraws, paragraphDirection, paragraphDirectionAt, parseReference, pathFor, patternBitmap, patternRuns, physicalAlignment, placeTextLines, placedImageBlocks, pointerPath, promotedRegionKeys, provenanceOf, readableSchemeColor, 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,5 +1,5 @@
|
|
|
1
|
-
import { OPFApiError } from './chunk-
|
|
2
|
-
import { CATALOG_SCHEMA } from './chunk-
|
|
1
|
+
import { OPFApiError } from './chunk-3FWUA763.js';
|
|
2
|
+
import { CATALOG_SCHEMA } from './chunk-L67MPTPZ.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,5 +1,5 @@
|
|
|
1
|
-
import { jsonEqual, formatPointer } from './chunk-
|
|
2
|
-
import { annotationText } from './chunk-
|
|
1
|
+
import { jsonEqual, formatPointer } from './chunk-VIOSRKMA.js';
|
|
2
|
+
import { annotationText } from './chunk-N3ZPLGK5.js';
|
|
3
3
|
|
|
4
4
|
// src/diff-match.ts
|
|
5
5
|
var DEFAULT_MATCH_THRESHOLD = 0.5;
|
|
@@ -1,8 +1,8 @@
|
|
|
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-
|
|
5
|
-
import { checkCatalogsOption } from './chunk-
|
|
1
|
+
import { fromMarkdown, toMarkdown } from './chunk-XKUEEDDN.js';
|
|
2
|
+
import { fromYaml, toYaml } from './chunk-B2XALDGS.js';
|
|
3
|
+
import { NOT_CHECKED } from './chunk-TILQBXPZ.js';
|
|
4
|
+
import { parseSource, validate, OPFValidationError } from './chunk-L67MPTPZ.js';
|
|
5
|
+
import { checkCatalogsOption } from './chunk-N3ZPLGK5.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-
|
|
2
|
-
import { parseQuoteLines, levelsFromIndents, parseCodeFence, splitWhen, fenceCode } from './chunk-
|
|
3
|
-
import { same, isRecord, runText, isPlainRun, FORMATTING } from './chunk-
|
|
4
|
-
import { validate } from './chunk-
|
|
5
|
-
import { checkCatalogsOption, PROMOTED_REGION_KEY } from './chunk-
|
|
1
|
+
import { Ctx, splitLines, lineRange, readYamlMapping, NOT_CHECKED, OPFMarkdownError, writeYaml, readCsv, DECIMAL, csvField, scalarText } from './chunk-TILQBXPZ.js';
|
|
2
|
+
import { parseQuoteLines, levelsFromIndents, parseCodeFence, splitWhen, fenceCode } from './chunk-NIA2WEXN.js';
|
|
3
|
+
import { same, isRecord, runText, isPlainRun, FORMATTING } from './chunk-F55S5HDP.js';
|
|
4
|
+
import { validate } from './chunk-L67MPTPZ.js';
|
|
5
|
+
import { checkCatalogsOption, PROMOTED_REGION_KEY } from './chunk-N3ZPLGK5.js';
|
|
6
6
|
|
|
7
7
|
// src/markdown/canon.ts
|
|
8
8
|
var FORMAT_KEYS = FORMATTING;
|