@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.
@@ -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,CAmHN"}
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, _theme: PptxThemeConfig, _warnings?: PipelineWarning[], servicesConfig?: HighchartsServiceConfig): Promise<void>;
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;AA6EtE,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,eAAe,EACvB,SAAS,CAAC,EAAE,eAAe,EAAE,EAC7B,cAAc,CAAC,EAAE,uBAAuB,GACvC,OAAO,CAAC,IAAI,CAAC,CAaf"}
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,CAoE3B;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
+ {"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,EAEV,+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,CA8GvB"}
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 themeName = props.theme ?? "default";
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) return resolved.startsWith("#") ? resolved.slice(1) : resolved;
421
- warn(warnings, W.THEME_COLOR_FALLBACK, `Theme color "${themeKey}" not defined, falling back to primary`);
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(warnings, W.UNKNOWN_COLOR, `Unknown color value: "${color}", treating as literal`);
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
- async function renderHighchartsComponent(slide, props, _theme, _warnings, servicesConfig) {
1117
- const chart = await generateChart(props, servicesConfig);
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 = ["primary", "secondary", "accent", "accent4", "accent5", "accent6"];
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}`, { component: "chart" });
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", { component: "chart" });
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(warnings, W.CHART_INVALID_SERIES, `Chart series "${series.name ?? "(unnamed)"}" missing labels or values`, { component: "chart" });
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(warnings, W.CHART_MULTI_SERIES, `${props.type} chart has ${props.data.length} series \u2014 only the first will render`, { component: "chart" });
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) opts.titleFontSize = props.titleFontSize;
1189
- if (props.titleFontFace !== void 0) opts.titleFontFace = props.titleFontFace;
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) opts.legendFontSize = props.legendFontSize;
1192
- if (props.legendFontFace !== void 0) opts.legendFontFace = props.legendFontFace;
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) opts.catAxisHidden = props.catAxisHidden;
1198
- if (props.catAxisLabelRotate !== void 0) opts.catAxisLabelRotate = props.catAxisLabelRotate;
1199
- if (props.catAxisLabelFontSize !== void 0) opts.catAxisLabelFontSize = props.catAxisLabelFontSize;
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) opts.valAxisHidden = props.valAxisHidden;
1205
- if (props.valAxisMinVal !== void 0) opts.valAxisMinVal = props.valAxisMinVal;
1206
- if (props.valAxisMaxVal !== void 0) opts.valAxisMaxVal = props.valAxisMaxVal;
1207
- if (props.valAxisLabelFormatCode !== void 0) opts.valAxisLabelFormatCode = props.valAxisLabelFormatCode;
1208
- if (props.valAxisMajorUnit !== void 0) opts.valAxisMajorUnit = props.valAxisMajorUnit;
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) opts.barGapWidthPct = props.barGapWidthPct;
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) opts.lineDataSymbol = props.lineDataSymbol;
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) opts.firstSliceAng = props.firstSliceAng;
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) opts.dataLabelFontSize = props.dataLabelFontSize;
1220
- if (props.dataLabelFontFace !== void 0) opts.dataLabelFontFace = props.dataLabelFontFace;
1221
- if (props.dataLabelFontBold !== void 0) opts.dataLabelFontBold = props.dataLabelFontBold;
1222
- if (props.dataLabelPosition !== void 0) opts.dataLabelPosition = props.dataLabelPosition;
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
- const internalDocument = document;
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,