@json-to-office/core-pptx 0.19.0 → 0.20.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/components/chart.d.ts.map +1 -1
- package/dist/components/highcharts.d.ts +1 -1
- package/dist/components/highcharts.d.ts.map +1 -1
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/structure.d.ts.map +1 -1
- package/dist/index.js +121 -33
- package/dist/index.js.map +1 -1
- package/dist/plugin/createPresentationGenerator.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/color.d.ts +6 -0
- package/dist/utils/color.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/components/chart.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIjE,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,EAAE,CAAC;IAExB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAiBD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,SAAS,EAChB,QAAQ,CAAC,EAAE,eAAe,EAAE,GAC3B,IAAI,
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/components/chart.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIjE,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,EAAE,CAAC;IAExB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAiBD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,SAAS,EAChB,QAAQ,CAAC,EAAE,eAAe,EAAE,GAC3B,IAAI,CAiKN"}
|
|
@@ -5,5 +5,5 @@ import type PptxGenJS from 'pptxgenjs';
|
|
|
5
5
|
import type { PptxThemeConfig, PipelineWarning } from '../types';
|
|
6
6
|
import type { PptxHighchartsProps } from '@json-to-office/shared-pptx';
|
|
7
7
|
import type { HighchartsServiceConfig } from '@json-to-office/shared';
|
|
8
|
-
export declare function renderHighchartsComponent(slide: PptxGenJS.Slide, props: PptxHighchartsProps,
|
|
8
|
+
export declare function renderHighchartsComponent(slide: PptxGenJS.Slide, props: PptxHighchartsProps, theme: PptxThemeConfig, warnings?: PipelineWarning[], servicesConfig?: HighchartsServiceConfig): Promise<void>;
|
|
9
9
|
//# sourceMappingURL=highcharts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highcharts.d.ts","sourceRoot":"","sources":["../../src/components/highcharts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"highcharts.d.ts","sourceRoot":"","sources":["../../src/components/highcharts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAmGtE,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,EAAE,eAAe,EAAE,EAC5B,cAAc,CAAC,EAAE,uBAAuB,GACvC,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,SAAS,MAAM,WAAW,CAAC;AAGlC,OAAO,KAAK,EACV,+BAA+B,EAC/B,eAAe,EACf,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAID;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,OAAO,GAClB,UAAU,IAAI,+BAA+B,CAI/C;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,+BAA+B,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,GAC3B,OAAO,CAAC,SAAS,CAAC,CAoBpB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GAAG,+BAA+B,EACpD,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,GAAG,+BAA+B,EACpD,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,SAAS,MAAM,WAAW,CAAC;AAGlC,OAAO,KAAK,EACV,+BAA+B,EAC/B,eAAe,EACf,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAID;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,OAAO,GAClB,UAAU,IAAI,+BAA+B,CAI/C;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,+BAA+B,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,GAC3B,OAAO,CAAC,SAAS,CAAC,CAoBpB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GAAG,+BAA+B,EACpD,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,GAAG,+BAA+B,EACpD,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CA4F3B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,GAAG,+BAA+B,EACpD,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAIf;AAyBD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;CAQjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/core/structure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/core/structure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAGV,+BAA+B,EAC/B,qBAAqB,EAGtB,MAAM,UAAU,CAAC;AAQlB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,+BAA+B,EACzC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,qBAAqB,CAkHvB"}
|
package/dist/index.js
CHANGED
|
@@ -311,8 +311,7 @@ function resolveComponentTree(components, theme) {
|
|
|
311
311
|
import { mergeWithDefaults as mergeWithDefaults2 } from "@json-to-office/shared";
|
|
312
312
|
function processPresentation(document, options) {
|
|
313
313
|
const { props, children = [] } = document;
|
|
314
|
-
const
|
|
315
|
-
const baseTheme = options?.customThemes?.[themeName] ?? getPptxTheme(themeName);
|
|
314
|
+
const baseTheme = typeof props.theme === "object" && props.theme !== null ? props.theme : options?.customThemes?.[props.theme ?? "default"] ?? getPptxTheme(props.theme ?? "default");
|
|
316
315
|
const presDefaults = props.componentDefaults;
|
|
317
316
|
const theme = presDefaults ? {
|
|
318
317
|
...baseTheme,
|
|
@@ -413,12 +412,25 @@ var SEMANTIC_TO_THEME_KEY = {
|
|
|
413
412
|
bg1: "background",
|
|
414
413
|
bg2: "background2"
|
|
415
414
|
};
|
|
415
|
+
var DEFAULT_CHART_THEME_COLORS = [
|
|
416
|
+
"primary",
|
|
417
|
+
"secondary",
|
|
418
|
+
"accent",
|
|
419
|
+
"accent4",
|
|
420
|
+
"accent5",
|
|
421
|
+
"accent6"
|
|
422
|
+
];
|
|
416
423
|
function resolveColor(color, theme, warnings) {
|
|
417
424
|
const themeKey = SEMANTIC_TO_THEME_KEY[color];
|
|
418
425
|
if (themeKey) {
|
|
419
426
|
const resolved = theme.colors[themeKey];
|
|
420
|
-
if (resolved)
|
|
421
|
-
|
|
427
|
+
if (resolved)
|
|
428
|
+
return resolved.startsWith("#") ? resolved.slice(1) : resolved;
|
|
429
|
+
warn(
|
|
430
|
+
warnings,
|
|
431
|
+
W.THEME_COLOR_FALLBACK,
|
|
432
|
+
`Theme color "${themeKey}" not defined, falling back to primary`
|
|
433
|
+
);
|
|
422
434
|
return theme.colors.primary.startsWith("#") ? theme.colors.primary.slice(1) : theme.colors.primary;
|
|
423
435
|
}
|
|
424
436
|
const bare = color.startsWith("#") ? color.slice(1) : color;
|
|
@@ -426,7 +438,11 @@ function resolveColor(color, theme, warnings) {
|
|
|
426
438
|
return bare[0] + bare[0] + bare[1] + bare[1] + bare[2] + bare[2];
|
|
427
439
|
}
|
|
428
440
|
if (!/^[0-9A-Fa-f]{6}$/.test(bare)) {
|
|
429
|
-
warn(
|
|
441
|
+
warn(
|
|
442
|
+
warnings,
|
|
443
|
+
W.UNKNOWN_COLOR,
|
|
444
|
+
`Unknown color value: "${color}", treating as literal`
|
|
445
|
+
);
|
|
430
446
|
}
|
|
431
447
|
return bare;
|
|
432
448
|
}
|
|
@@ -1113,8 +1129,21 @@ Cause: ${error instanceof Error ? error.message : String(error)}`
|
|
|
1113
1129
|
height: config.options.chart?.height ?? 720
|
|
1114
1130
|
};
|
|
1115
1131
|
}
|
|
1116
|
-
|
|
1117
|
-
|
|
1132
|
+
function withThemeColors(props, theme, warnings) {
|
|
1133
|
+
if (!props.options || props.options.colors || !theme?.colors) return props;
|
|
1134
|
+
const palette = DEFAULT_CHART_THEME_COLORS.map(
|
|
1135
|
+
(token) => `#${resolveColor(token, theme, warnings)}`
|
|
1136
|
+
);
|
|
1137
|
+
return {
|
|
1138
|
+
...props,
|
|
1139
|
+
options: { ...props.options, colors: palette }
|
|
1140
|
+
};
|
|
1141
|
+
}
|
|
1142
|
+
async function renderHighchartsComponent(slide, props, theme, warnings, servicesConfig) {
|
|
1143
|
+
const chart = await generateChart(
|
|
1144
|
+
withThemeColors(props, theme, warnings),
|
|
1145
|
+
servicesConfig
|
|
1146
|
+
);
|
|
1118
1147
|
const w = props.w ?? chart.width / PX_PER_INCH;
|
|
1119
1148
|
const h = props.h ?? chart.height / PX_PER_INCH;
|
|
1120
1149
|
slide.addImage({
|
|
@@ -1138,25 +1167,39 @@ var CHART_TYPE_MAP = {
|
|
|
1138
1167
|
radar: "radar",
|
|
1139
1168
|
scatter: "scatter"
|
|
1140
1169
|
};
|
|
1141
|
-
var DEFAULT_THEME_COLORS =
|
|
1170
|
+
var DEFAULT_THEME_COLORS = DEFAULT_CHART_THEME_COLORS;
|
|
1142
1171
|
function renderChartComponent(slide, props, theme, _pptx, warnings) {
|
|
1143
1172
|
const chartType = CHART_TYPE_MAP[props.type];
|
|
1144
1173
|
if (!chartType) {
|
|
1145
|
-
warn(warnings, W.UNKNOWN_CHART_TYPE, `Unknown chart type: ${props.type}`, {
|
|
1174
|
+
warn(warnings, W.UNKNOWN_CHART_TYPE, `Unknown chart type: ${props.type}`, {
|
|
1175
|
+
component: "chart"
|
|
1176
|
+
});
|
|
1146
1177
|
return;
|
|
1147
1178
|
}
|
|
1148
1179
|
if (!props.data || props.data.length === 0) {
|
|
1149
|
-
warn(warnings, W.CHART_NO_DATA, "Chart component has no data series", {
|
|
1180
|
+
warn(warnings, W.CHART_NO_DATA, "Chart component has no data series", {
|
|
1181
|
+
component: "chart"
|
|
1182
|
+
});
|
|
1150
1183
|
return;
|
|
1151
1184
|
}
|
|
1152
1185
|
for (const series of props.data) {
|
|
1153
1186
|
if (!series.labels || !series.values) {
|
|
1154
|
-
warn(
|
|
1187
|
+
warn(
|
|
1188
|
+
warnings,
|
|
1189
|
+
W.CHART_INVALID_SERIES,
|
|
1190
|
+
`Chart series "${series.name ?? "(unnamed)"}" missing labels or values`,
|
|
1191
|
+
{ component: "chart" }
|
|
1192
|
+
);
|
|
1155
1193
|
return;
|
|
1156
1194
|
}
|
|
1157
1195
|
}
|
|
1158
1196
|
if ((chartType === "pie" || chartType === "doughnut") && props.data.length > 1) {
|
|
1159
|
-
warn(
|
|
1197
|
+
warn(
|
|
1198
|
+
warnings,
|
|
1199
|
+
W.CHART_MULTI_SERIES,
|
|
1200
|
+
`${props.type} chart has ${props.data.length} series \u2014 only the first will render`,
|
|
1201
|
+
{ component: "chart" }
|
|
1202
|
+
);
|
|
1160
1203
|
}
|
|
1161
1204
|
const data = props.data.map((series) => {
|
|
1162
1205
|
const d = {};
|
|
@@ -1185,41 +1228,60 @@ function renderChartComponent(slide, props, theme, _pptx, warnings) {
|
|
|
1185
1228
|
if (props.showLabel !== void 0) opts.showLabel = props.showLabel;
|
|
1186
1229
|
if (props.showSerName !== void 0) opts.showSerName = props.showSerName;
|
|
1187
1230
|
if (props.title !== void 0) opts.title = props.title;
|
|
1188
|
-
if (props.titleFontSize !== void 0)
|
|
1189
|
-
|
|
1231
|
+
if (props.titleFontSize !== void 0)
|
|
1232
|
+
opts.titleFontSize = props.titleFontSize;
|
|
1233
|
+
if (props.titleFontFace !== void 0)
|
|
1234
|
+
opts.titleFontFace = props.titleFontFace;
|
|
1190
1235
|
if (props.legendPos !== void 0) opts.legendPos = props.legendPos;
|
|
1191
|
-
if (props.legendFontSize !== void 0)
|
|
1192
|
-
|
|
1236
|
+
if (props.legendFontSize !== void 0)
|
|
1237
|
+
opts.legendFontSize = props.legendFontSize;
|
|
1238
|
+
if (props.legendFontFace !== void 0)
|
|
1239
|
+
opts.legendFontFace = props.legendFontFace;
|
|
1193
1240
|
if (props.catAxisTitle !== void 0) {
|
|
1194
1241
|
opts.catAxisTitle = props.catAxisTitle;
|
|
1195
1242
|
opts.showCatAxisTitle = true;
|
|
1196
1243
|
}
|
|
1197
|
-
if (props.catAxisHidden !== void 0)
|
|
1198
|
-
|
|
1199
|
-
if (props.
|
|
1244
|
+
if (props.catAxisHidden !== void 0)
|
|
1245
|
+
opts.catAxisHidden = props.catAxisHidden;
|
|
1246
|
+
if (props.catAxisLabelRotate !== void 0)
|
|
1247
|
+
opts.catAxisLabelRotate = props.catAxisLabelRotate;
|
|
1248
|
+
if (props.catAxisLabelFontSize !== void 0)
|
|
1249
|
+
opts.catAxisLabelFontSize = props.catAxisLabelFontSize;
|
|
1200
1250
|
if (props.valAxisTitle !== void 0) {
|
|
1201
1251
|
opts.valAxisTitle = props.valAxisTitle;
|
|
1202
1252
|
opts.showValAxisTitle = true;
|
|
1203
1253
|
}
|
|
1204
|
-
if (props.valAxisHidden !== void 0)
|
|
1205
|
-
|
|
1206
|
-
if (props.
|
|
1207
|
-
|
|
1208
|
-
if (props.
|
|
1254
|
+
if (props.valAxisHidden !== void 0)
|
|
1255
|
+
opts.valAxisHidden = props.valAxisHidden;
|
|
1256
|
+
if (props.valAxisMinVal !== void 0)
|
|
1257
|
+
opts.valAxisMinVal = props.valAxisMinVal;
|
|
1258
|
+
if (props.valAxisMaxVal !== void 0)
|
|
1259
|
+
opts.valAxisMaxVal = props.valAxisMaxVal;
|
|
1260
|
+
if (props.valAxisLabelFormatCode !== void 0)
|
|
1261
|
+
opts.valAxisLabelFormatCode = props.valAxisLabelFormatCode;
|
|
1262
|
+
if (props.valAxisMajorUnit !== void 0)
|
|
1263
|
+
opts.valAxisMajorUnit = props.valAxisMajorUnit;
|
|
1209
1264
|
if (props.barDir !== void 0) opts.barDir = props.barDir;
|
|
1210
1265
|
if (props.barGrouping !== void 0) opts.barGrouping = props.barGrouping;
|
|
1211
|
-
if (props.barGapWidthPct !== void 0)
|
|
1266
|
+
if (props.barGapWidthPct !== void 0)
|
|
1267
|
+
opts.barGapWidthPct = props.barGapWidthPct;
|
|
1212
1268
|
if (props.lineSmooth !== void 0) opts.lineSmooth = props.lineSmooth;
|
|
1213
|
-
if (props.lineDataSymbol !== void 0)
|
|
1269
|
+
if (props.lineDataSymbol !== void 0)
|
|
1270
|
+
opts.lineDataSymbol = props.lineDataSymbol;
|
|
1214
1271
|
if (props.lineSize !== void 0) opts.lineSize = props.lineSize;
|
|
1215
|
-
if (props.firstSliceAng !== void 0)
|
|
1272
|
+
if (props.firstSliceAng !== void 0)
|
|
1273
|
+
opts.firstSliceAng = props.firstSliceAng;
|
|
1216
1274
|
if (props.holeSize !== void 0) opts.holeSize = props.holeSize;
|
|
1217
1275
|
if (props.radarStyle !== void 0) opts.radarStyle = props.radarStyle;
|
|
1218
1276
|
opts.dataLabelColor = props.dataLabelColor ? resolveColor(props.dataLabelColor, theme, warnings) : themeTextColor;
|
|
1219
|
-
if (props.dataLabelFontSize !== void 0)
|
|
1220
|
-
|
|
1221
|
-
if (props.
|
|
1222
|
-
|
|
1277
|
+
if (props.dataLabelFontSize !== void 0)
|
|
1278
|
+
opts.dataLabelFontSize = props.dataLabelFontSize;
|
|
1279
|
+
if (props.dataLabelFontFace !== void 0)
|
|
1280
|
+
opts.dataLabelFontFace = props.dataLabelFontFace;
|
|
1281
|
+
if (props.dataLabelFontBold !== void 0)
|
|
1282
|
+
opts.dataLabelFontBold = props.dataLabelFontBold;
|
|
1283
|
+
if (props.dataLabelPosition !== void 0)
|
|
1284
|
+
opts.dataLabelPosition = props.dataLabelPosition;
|
|
1223
1285
|
slide.addChart(chartType, data, opts);
|
|
1224
1286
|
}
|
|
1225
1287
|
|
|
@@ -1586,6 +1648,21 @@ async function generateBufferWithWarnings(jsonConfig, options) {
|
|
|
1586
1648
|
component = jsonConfig;
|
|
1587
1649
|
}
|
|
1588
1650
|
const warnings = [];
|
|
1651
|
+
if (typeof component.props?.theme === "object" && component.props.theme !== null) {
|
|
1652
|
+
const inlineTheme = component.props.theme;
|
|
1653
|
+
const inlineName = inlineTheme.name || "inline-theme";
|
|
1654
|
+
component = {
|
|
1655
|
+
...component,
|
|
1656
|
+
props: { ...component.props, theme: inlineName }
|
|
1657
|
+
};
|
|
1658
|
+
options = {
|
|
1659
|
+
...options,
|
|
1660
|
+
customThemes: {
|
|
1661
|
+
...options?.customThemes ?? {},
|
|
1662
|
+
[inlineName]: inlineTheme
|
|
1663
|
+
}
|
|
1664
|
+
};
|
|
1665
|
+
}
|
|
1589
1666
|
const baseThemeName = component.props?.theme ?? "default";
|
|
1590
1667
|
let resolvedTheme = options?.customThemes?.[baseThemeName] ?? getPptxTheme(baseThemeName);
|
|
1591
1668
|
const mode = applyExportMode({
|
|
@@ -1921,13 +1998,24 @@ function createBuilderImpl(state) {
|
|
|
1921
1998
|
}
|
|
1922
1999
|
async function generate(document) {
|
|
1923
2000
|
try {
|
|
1924
|
-
|
|
2001
|
+
let internalDocument = document;
|
|
1925
2002
|
if (!internalDocument || internalDocument.name !== "pptx") {
|
|
1926
2003
|
throw new Error("Top-level component must be a pptx component");
|
|
1927
2004
|
}
|
|
2005
|
+
let inlineTheme;
|
|
2006
|
+
if (typeof internalDocument.props.theme === "object" && internalDocument.props.theme !== null) {
|
|
2007
|
+
inlineTheme = internalDocument.props.theme;
|
|
2008
|
+
internalDocument = {
|
|
2009
|
+
...internalDocument,
|
|
2010
|
+
props: {
|
|
2011
|
+
...internalDocument.props,
|
|
2012
|
+
theme: inlineTheme.name || "inline-theme"
|
|
2013
|
+
}
|
|
2014
|
+
};
|
|
2015
|
+
}
|
|
1928
2016
|
const docThemeName = internalDocument.props.theme;
|
|
1929
2017
|
const baseThemeName = docThemeName ?? (typeof state.theme === "string" ? state.theme : "default");
|
|
1930
|
-
let resolvedTheme = state.customThemes?.[baseThemeName] ?? (typeof state.theme === "object" && state.theme !== null ? state.theme : getPptxTheme(baseThemeName));
|
|
2018
|
+
let resolvedTheme = inlineTheme ?? state.customThemes?.[baseThemeName] ?? (typeof state.theme === "object" && state.theme !== null ? state.theme : getPptxTheme(baseThemeName));
|
|
1931
2019
|
const warnings = [];
|
|
1932
2020
|
const mode = applyExportMode2({
|
|
1933
2021
|
doc: internalDocument,
|