@json-to-office/core-docx 0.26.1 → 0.28.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":"visual.d.ts","sourceRoot":"","sources":["../../src/components/visual.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,aAAa,EAEd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAY/D;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAWrE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AA0DD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CA2BhC"}
1
+ {"version":3,"file":"visual.d.ts","sourceRoot":"","sources":["../../src/components/visual.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,aAAa,EAEd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAY/D;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAWrE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AA2DD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CA+BhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cached-render.d.ts","sourceRoot":"","sources":["../../src/core/cached-render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,WAAW,EAIZ,MAAM,UAAU,CAAC;AAoBlB;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CA4BlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAEtD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIzD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,WAAW,UAAQ,GAClB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAqG5D;AAKD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC,GACD,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,kEAMrC;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,GAAG,CACvD,MAAM,EACN,OAAO,CACR,GAAG,IAAI,CAAC,CAgBR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf"}
1
+ {"version":3,"file":"cached-render.d.ts","sourceRoot":"","sources":["../../src/core/cached-render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,WAAW,EAIZ,MAAM,UAAU,CAAC;AAoBlB;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CA4BlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAEtD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIzD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,WAAW,UAAQ,GAClB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAyG5D;AAKD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC,GACD,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,kEAMrC;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,GAAG,CACvD,MAAM,EACN,OAAO,CACR,GAAG,IAAI,CAAC,CAgBR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -21,6 +21,11 @@ export interface FlattenVisualsOptions {
21
21
  dpi?: number;
22
22
  /** Max concurrent rasterizations (default 4). */
23
23
  concurrency?: number;
24
+ /**
25
+ * Directory that relative asset paths inside visuals resolve against —
26
+ * the document's own directory. Absent → the rasterizer's cwd (#142).
27
+ */
28
+ baseDir?: string;
24
29
  }
25
30
  /**
26
31
  * Return a deep copy of `doc` with every `visual` node replaced by the `image`
@@ -1 +1 @@
1
- {"version":3,"file":"flattenVisuals.d.ts","sourceRoot":"","sources":["../../src/core/flattenVisuals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAShC,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,SAAS,EAAE,cAAc,CAAC;IAC1B,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA4BD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,CAAC,CASZ"}
1
+ {"version":3,"file":"flattenVisuals.d.ts","sourceRoot":"","sources":["../../src/core/flattenVisuals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAShC,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,SAAS,EAAE,cAAc,CAAC;IAC1B,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6BD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAUZ"}
@@ -23,10 +23,13 @@ export interface ThemeContextOptions {
23
23
  warnings?: GenerationWarning[];
24
24
  /**
25
25
  * Theme lookup for the base `props.theme` name. The plugin builder passes
26
- * its own (customThemes → constructor-supplied themebuilt-in); omit it to
27
- * use customThemes → built-in.
26
+ * its own (customThemes → doc-named built-inconstructor-supplied theme
27
+ * built-in); omit it to use customThemes → built-in. `authored` is true when
28
+ * the name came from the document's own `props.theme` (not the 'minimal'
29
+ * fallback), so the lookup can honor an explicitly doc-named built-in
30
+ * without the constructor theme being shadowed for unnamed docs (#141).
28
31
  */
29
- resolveNamedTheme?: (name: string, warnings?: GenerationWarning[]) => ThemeConfig;
32
+ resolveNamedTheme?: (name: string, warnings: GenerationWarning[] | undefined, authored: boolean) => ThemeConfig;
30
33
  }
31
34
  export interface GenerationThemeContext {
32
35
  /** The document after the export-mode pre-pass rewrote font references. */
@@ -1 +1 @@
1
- {"version":3,"file":"generationContext.d.ts","sourceRoot":"","sources":["../../src/core/generationContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,iBAAiB,EAAE,KAC3B,WAAW,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,QAAQ,EAAE,yBAAyB,CAAC;IACpC,KAAK,EAAE,WAAW,CAAC;IACnB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,yBAAyB,EACrC,OAAO,GAAE,mBAAwB,GAChC,sBAAsB,CA6DxB"}
1
+ {"version":3,"file":"generationContext.d.ts","sourceRoot":"","sources":["../../src/core/generationContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB,EAAE,GAAG,SAAS,EACzC,QAAQ,EAAE,OAAO,KACd,WAAW,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,QAAQ,EAAE,yBAAyB,CAAC;IACpC,KAAK,EAAE,WAAW,CAAC;IACnB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,yBAAyB,EACrC,OAAO,GAAE,mBAAwB,GAChC,sBAAsB,CAkExB"}
@@ -41,6 +41,12 @@ export interface JsonGenerationOptions {
41
41
  deterministic?: boolean;
42
42
  /** Build timestamp for metadata; defaults to a stable epoch. */
43
43
  generatedAt?: string | Date;
44
+ /**
45
+ * Directory that relative asset paths (image `path` props) resolve against.
46
+ * File entry points default it to the document's own directory; elsewhere
47
+ * it falls back to `process.cwd()` (#142).
48
+ */
49
+ baseDir?: string;
44
50
  }
45
51
  /**
46
52
  * Type guard to check if input is a report component definition
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,11 @@ interface RenderDocumentOptions {
13
13
  cache?: MemoryCache;
14
14
  bypassCache?: boolean;
15
15
  services?: ServicesConfig;
16
+ /**
17
+ * Directory that relative asset paths (image `path` props) resolve
18
+ * against. Defaults to `process.cwd()` when absent (#142).
19
+ */
20
+ baseDir?: string;
16
21
  }
17
22
  /**
18
23
  * Render a complete document from structure and layout
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,eAAe,EAEf,eAAe,EAKf,OAAO,EACR,MAAM,MAAM,CAAC;AAcd,OAAO,EACL,mBAAmB,EACnB,aAAa,EAed,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,OAAO,EAEL,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA0B7D,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AA8DD;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAUnB;AA6XD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,OAAO,EACvB,WAAW,UAAQ,GAClB,OAAO,CAAC,eAAe,CAAC,CAiH1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAmC5D"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,eAAe,EAEf,eAAe,EAKf,OAAO,EACR,MAAM,MAAM,CAAC;AAcd,OAAO,EACL,mBAAmB,EACnB,aAAa,EAed,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,OAAO,EAEL,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA6B7D,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA8DD;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAYnB;AA6XD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,OAAO,EACvB,WAAW,UAAQ,GAClB,OAAO,CAAC,eAAe,CAAC,CAiH1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAmC5D"}
package/dist/index.js CHANGED
@@ -1924,6 +1924,7 @@ var init_docxImagePositioning = __esm({
1924
1924
 
1925
1925
  // src/core/generator.ts
1926
1926
  import { writeFileSync } from "fs";
1927
+ import { dirname, resolve as resolve3 } from "path";
1927
1928
 
1928
1929
  // src/types/index.ts
1929
1930
  import {
@@ -2008,8 +2009,13 @@ function resolveThemeContext(documentIn, options = {}) {
2008
2009
  );
2009
2010
  }
2010
2011
  const document = documentIn.props === void 0 ? { ...documentIn, props: {} } : documentIn;
2011
- const baseThemeName = document.props.theme || "minimal";
2012
- let theme = resolveNamedTheme ? resolveNamedTheme(baseThemeName, warnings) : defaultNamedThemeLookup(baseThemeName, customThemes, warnings);
2012
+ const authoredThemeName = document.props.theme || void 0;
2013
+ const baseThemeName = authoredThemeName ?? "minimal";
2014
+ let theme = resolveNamedTheme ? resolveNamedTheme(
2015
+ baseThemeName,
2016
+ warnings,
2017
+ authoredThemeName !== void 0
2018
+ ) : defaultNamedThemeLookup(baseThemeName, customThemes, warnings);
2013
2019
  const themeOverrides = document.props.themeOverrides;
2014
2020
  let themeName = baseThemeName;
2015
2021
  if (themeOverrides) {
@@ -2693,9 +2699,34 @@ import {
2693
2699
  } from "docx";
2694
2700
 
2695
2701
  // src/utils/imageUtils.ts
2696
- init_widthUtils();
2697
2702
  import { readFileSync } from "fs";
2698
2703
  import probe from "probe-image-size";
2704
+
2705
+ // src/utils/generationContext.ts
2706
+ import { AsyncLocalStorage } from "async_hooks";
2707
+ import { isAbsolute, resolve } from "path";
2708
+ var generationDateStorage = new AsyncLocalStorage();
2709
+ function runWithGenerationDate(date, callback) {
2710
+ return generationDateStorage.run(date, callback);
2711
+ }
2712
+ function getGenerationDate() {
2713
+ return generationDateStorage.getStore() ?? /* @__PURE__ */ new Date();
2714
+ }
2715
+ var baseDirStorage = new AsyncLocalStorage();
2716
+ function runWithBaseDir(baseDir, callback) {
2717
+ return baseDir === void 0 ? callback() : baseDirStorage.run(resolve(baseDir), callback);
2718
+ }
2719
+ function getBaseDir() {
2720
+ return baseDirStorage.getStore();
2721
+ }
2722
+ function resolveFromBaseDir(filePath) {
2723
+ const base = baseDirStorage.getStore();
2724
+ if (!base || isAbsolute(filePath)) return filePath;
2725
+ return resolve(base, filePath);
2726
+ }
2727
+
2728
+ // src/utils/imageUtils.ts
2729
+ init_widthUtils();
2699
2730
  import { ImageRun } from "docx";
2700
2731
  function parseWidthValue(width, availableWidthPx) {
2701
2732
  if (typeof width === "number") {
@@ -2871,7 +2902,7 @@ async function getImageBuffer(imagePath) {
2871
2902
  if (isValidUrl(imagePath)) {
2872
2903
  return await downloadImageFromUrl(imagePath);
2873
2904
  }
2874
- return { buffer: readFileSync(imagePath) };
2905
+ return { buffer: readFileSync(resolveFromBaseDir(imagePath)) };
2875
2906
  }
2876
2907
  async function getImageDimensions(imagePath) {
2877
2908
  try {
@@ -3943,16 +3974,6 @@ function parseTextWithHyperlinks(text, baseStyle = {}, options = {}) {
3943
3974
  return runs;
3944
3975
  }
3945
3976
 
3946
- // src/utils/generationContext.ts
3947
- import { AsyncLocalStorage } from "async_hooks";
3948
- var generationDateStorage = new AsyncLocalStorage();
3949
- function runWithGenerationDate(date, callback) {
3950
- return generationDateStorage.run(date, callback);
3951
- }
3952
- function getGenerationDate() {
3953
- return generationDateStorage.getStore() ?? /* @__PURE__ */ new Date();
3954
- }
3955
-
3956
3977
  // src/utils/placeholderProcessor.ts
3957
3978
  function styledPlaceholderText(text, context) {
3958
3979
  return new TextRun2({
@@ -4307,8 +4328,9 @@ async function renderComponentWithCache(component, theme, themeName, context, by
4307
4328
  const themeHash = createThemeHash(theme);
4308
4329
  const contextKey = context?.section ? `${context.section.currentLayout}:${context.section.columnCount}` : "no-section";
4309
4330
  const generationDateKey = getGenerationDate().toISOString();
4331
+ const baseDirKey = getBaseDir() ?? "";
4310
4332
  const childrenKey = "children" in component && component.children ? `:children:${JSON.stringify(component.children)}` : "";
4311
- const cacheKey = `component:${component.name}:${themeHash}:${contextKey}:${generationDateKey}:${componentProps}${childrenKey}`;
4333
+ const cacheKey = `component:${component.name}:${themeHash}:${contextKey}:${generationDateKey}:${baseDirKey}:${componentProps}${childrenKey}`;
4312
4334
  const cached = await componentCache.get(cacheKey);
4313
4335
  if (cached) {
4314
4336
  return cached.result;
@@ -7040,14 +7062,14 @@ function visualToImageProps(props, base64DataUri) {
7040
7062
  ...props.alt !== void 0 && { alt: props.alt }
7041
7063
  };
7042
7064
  }
7043
- async function rasterize(presentation, dpi, propsServerUrl, serviceConfig) {
7065
+ async function rasterize(presentation, dpi, propsServerUrl, serviceConfig, baseDir) {
7044
7066
  if (!isNodeEnvironment()) {
7045
7067
  throw new Error(
7046
7068
  "Visual rasterization requires a Node.js environment. It is not available in browser environments."
7047
7069
  );
7048
7070
  }
7049
7071
  if (serviceConfig?.render) {
7050
- return serviceConfig.render({ presentation, dpi });
7072
+ return serviceConfig.render({ presentation, dpi, baseDir });
7051
7073
  }
7052
7074
  const serverUrl = resolveServiceUrl(
7053
7075
  propsServerUrl,
@@ -7057,7 +7079,7 @@ async function rasterize(presentation, dpi, propsServerUrl, serviceConfig) {
7057
7079
  const response = await postJsonToService({
7058
7080
  url: serverUrl,
7059
7081
  path: "/rasterize",
7060
- body: { presentation, dpi },
7082
+ body: { presentation, dpi, ...baseDir !== void 0 && { baseDir } },
7061
7083
  headers: serviceConfig?.headers,
7062
7084
  serviceLabel: "PPTX rasterization service",
7063
7085
  onUnreachable: (url, cause) => `PPTX rasterization service is not reachable at ${url}. Configure services.pptx with a \`render\` callback or a running \`serverUrl\`.
@@ -7090,7 +7112,8 @@ async function renderVisualComponent(component, theme, themeName, context) {
7090
7112
  presentation,
7091
7113
  dpi,
7092
7114
  props.serverUrl,
7093
- serviceConfig
7115
+ serviceConfig,
7116
+ getBaseDir()
7094
7117
  );
7095
7118
  return await createImage(
7096
7119
  result.base64DataUri,
@@ -7184,10 +7207,13 @@ function coreProperties(metadata) {
7184
7207
  async function renderDocument(structure, layout, options) {
7185
7208
  return runWithGenerationDate(
7186
7209
  structure.metadata.date,
7187
- () => globalBookmarkRegistry.runScoped(
7188
- () => globalRevisionIdRegistry.runScoped(
7189
- () => globalNumberingRegistry.runScoped(
7190
- () => renderDocumentScoped(structure, layout, options)
7210
+ () => runWithBaseDir(
7211
+ options?.baseDir,
7212
+ () => globalBookmarkRegistry.runScoped(
7213
+ () => globalRevisionIdRegistry.runScoped(
7214
+ () => globalNumberingRegistry.runScoped(
7215
+ () => renderDocumentScoped(structure, layout, options)
7216
+ )
7191
7217
  )
7192
7218
  )
7193
7219
  )
@@ -7782,10 +7808,10 @@ function normalizeDocument(document) {
7782
7808
 
7783
7809
  // src/json/filesystem.ts
7784
7810
  import { promises as fs3 } from "fs";
7785
- import { join, resolve, isAbsolute } from "path";
7811
+ import { join, resolve as resolve2, isAbsolute as isAbsolute2 } from "path";
7786
7812
  async function loadJsonDefinition(filePath) {
7787
7813
  try {
7788
- const absolutePath = isAbsolute(filePath) ? filePath : resolve(filePath);
7814
+ const absolutePath = isAbsolute2(filePath) ? filePath : resolve2(filePath);
7789
7815
  await fs3.access(absolutePath);
7790
7816
  const fileContent = await fs3.readFile(absolutePath, "utf-8");
7791
7817
  return parseJsonWithLineNumbers(fileContent);
@@ -7860,7 +7886,8 @@ async function generateDocument(document, options) {
7860
7886
  options?.services,
7861
7887
  options?.fonts,
7862
7888
  options?.warnings,
7863
- resolveGenerationDate(options)
7889
+ resolveGenerationDate(options),
7890
+ options?.baseDir
7864
7891
  );
7865
7892
  }
7866
7893
  async function generateFromConfig(props, components, options) {
@@ -7871,7 +7898,7 @@ async function generateFromConfig(props, components, options) {
7871
7898
  };
7872
7899
  return await generateDocument(reportComponent, options);
7873
7900
  }
7874
- async function generateDocumentWithCustomThemes(documentIn, customThemes, services, fonts, warnings, generationDate) {
7901
+ async function generateDocumentWithCustomThemes(documentIn, customThemes, services, fonts, warnings, generationDate, baseDir) {
7875
7902
  const { document, theme, themeName } = resolveThemeContext(documentIn, {
7876
7903
  customThemes,
7877
7904
  fonts,
@@ -7887,7 +7914,8 @@ async function generateDocumentWithCustomThemes(documentIn, customThemes, servic
7887
7914
  const layout = applyLayout(structure.sections, theme, themeName);
7888
7915
  const renderedDocument = await renderDocument(structure, layout, {
7889
7916
  bypassCache: false,
7890
- services
7917
+ services,
7918
+ baseDir
7891
7919
  });
7892
7920
  return renderedDocument;
7893
7921
  }
@@ -7932,7 +7960,8 @@ async function generateDocumentFromJson(jsonConfig, options) {
7932
7960
  options?.services,
7933
7961
  options?.fonts,
7934
7962
  options?.warnings,
7935
- resolveGenerationDate(options)
7963
+ resolveGenerationDate(options),
7964
+ options?.baseDir
7936
7965
  );
7937
7966
  }
7938
7967
  function validateJsonSchema(jsonConfig) {
@@ -7948,7 +7977,10 @@ async function generateAndSaveFromJson(jsonConfig, filename, options) {
7948
7977
  }
7949
7978
  async function generateDocumentFromFile(filePath, options) {
7950
7979
  const jsonDefinition = await loadJsonDefinition(filePath);
7951
- return await generateDocumentFromJson(jsonDefinition, options);
7980
+ return await generateDocumentFromJson(jsonDefinition, {
7981
+ baseDir: dirname(resolve3(filePath)),
7982
+ ...options
7983
+ });
7952
7984
  }
7953
7985
  async function generateBufferFromFile(filePath, options) {
7954
7986
  const document = await generateDocumentFromFile(filePath, options);
@@ -7996,7 +8028,7 @@ function createLimiter(max) {
7996
8028
  };
7997
8029
  return async function limit(fn) {
7998
8030
  if (active >= max)
7999
- await new Promise((resolve2) => queue.push(resolve2));
8031
+ await new Promise((resolve4) => queue.push(resolve4));
8000
8032
  active++;
8001
8033
  try {
8002
8034
  return await fn();
@@ -8009,6 +8041,7 @@ async function flattenVisuals(doc, options) {
8009
8041
  const ctx = {
8010
8042
  rasterize: options.rasterize,
8011
8043
  dpi: options.dpi,
8044
+ baseDir: options.baseDir,
8012
8045
  limit: createLimiter(
8013
8046
  Math.max(1, options.concurrency ?? DEFAULT_CONCURRENCY)
8014
8047
  )
@@ -8019,7 +8052,11 @@ async function rasterizeVisual(obj, ctx) {
8019
8052
  const props = obj.props;
8020
8053
  const dpi = clampVisualDpi2(props.dpi ?? ctx.dpi ?? DEFAULT_VISUAL_DPI2);
8021
8054
  const result = await ctx.limit(
8022
- () => ctx.rasterize({ presentation: buildVisualPresentation(props), dpi })
8055
+ () => ctx.rasterize({
8056
+ presentation: buildVisualPresentation(props),
8057
+ dpi,
8058
+ baseDir: ctx.baseDir
8059
+ })
8023
8060
  );
8024
8061
  const image = {
8025
8062
  name: "image",
@@ -8292,6 +8329,9 @@ async function runExample(example, options = {}) {
8292
8329
  }
8293
8330
  }
8294
8331
 
8332
+ // src/plugin/createDocumentGenerator.ts
8333
+ init_themes();
8334
+
8295
8335
  // src/plugin/version-resolver.ts
8296
8336
  import { resolveComponentVersion } from "@json-to-office/shared/plugin";
8297
8337
 
@@ -8534,7 +8574,7 @@ function mergeSchemas(customComponents, standardSchemas) {
8534
8574
  // src/plugin/createDocumentGenerator.ts
8535
8575
  function createBuilderImpl(state) {
8536
8576
  const componentMap = new Map(state.components.map((c) => [c.name, c]));
8537
- function resolveDocumentTheme(themeName, warnings) {
8577
+ function resolveDocumentTheme(themeName, warnings, authored) {
8538
8578
  if (state.customThemes) {
8539
8579
  if (state.customThemes[themeName]) {
8540
8580
  return state.customThemes[themeName];
@@ -8546,6 +8586,12 @@ function createBuilderImpl(state) {
8546
8586
  return state.customThemes[key];
8547
8587
  }
8548
8588
  }
8589
+ if (authored && hasTheme(themeName)) {
8590
+ return resolveBuiltInTheme(themeName, {
8591
+ customThemes: state.customThemes,
8592
+ warnings
8593
+ });
8594
+ }
8549
8595
  if (state.theme) {
8550
8596
  return state.theme;
8551
8597
  }
@@ -8692,7 +8738,8 @@ function createBuilderImpl(state) {
8692
8738
  fonts: state.fonts,
8693
8739
  validation: state.validation,
8694
8740
  deterministic: state.deterministic,
8695
- generatedAt: state.generatedAt
8741
+ generatedAt: state.generatedAt,
8742
+ baseDir: state.baseDir
8696
8743
  };
8697
8744
  return createBuilderImpl(
8698
8745
  newState
@@ -8791,7 +8838,8 @@ function createBuilderImpl(state) {
8791
8838
  const layout = applyLayout(structure.sections, modedTheme, themeName);
8792
8839
  const generatedDocument = await renderDocument(structure, layout, {
8793
8840
  services: state.services,
8794
- bypassCache: !state.enableCache
8841
+ bypassCache: !state.enableCache,
8842
+ baseDir: options?.baseDir ?? state.baseDir
8795
8843
  });
8796
8844
  const preservedDefinition = preserveSet ? {
8797
8845
  ...modedRoot,
@@ -8921,7 +8969,8 @@ function createDocumentGenerator(options) {
8921
8969
  fonts: options.fonts,
8922
8970
  validation: options.validation,
8923
8971
  deterministic: options.deterministic ?? true,
8924
- generatedAt: options.generatedAt
8972
+ generatedAt: options.generatedAt,
8973
+ baseDir: options.baseDir
8925
8974
  };
8926
8975
  return createBuilderImpl(initialState);
8927
8976
  }