@json-to-office/json-to-pptx 0.1.0 → 0.2.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/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # @json-to-office/json-to-pptx
2
2
 
3
- Generate professional .pptx presentations from JSON definitions.
3
+ **Presentations as data, not code.** Generate professional `.pptx` files from JSON definitions — serializable, schema-validated, LLM-friendly.
4
+
5
+ [![npm](https://img.shields.io/npm/v/@json-to-office/json-to-pptx.svg)](https://www.npmjs.com/package/@json-to-office/json-to-pptx)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/Wiseair-srl/json-to-office/blob/main/LICENSE)
7
+
8
+ Part of the [json-to-office](https://github.com/Wiseair-srl/json-to-office) monorepo.
4
9
 
5
10
  ## Install
6
11
 
@@ -11,19 +16,69 @@ npm install @json-to-office/json-to-pptx pptxgenjs
11
16
  ## Usage
12
17
 
13
18
  ```ts
14
- import { generatePptx } from '@json-to-office/json-to-pptx';
19
+ import { generateBufferFromJson } from '@json-to-office/json-to-pptx';
20
+ import { writeFileSync } from 'fs';
15
21
 
16
- const buffer = await generatePptx({
17
- slides: [
22
+ const buffer = await generateBufferFromJson({
23
+ name: 'pptx',
24
+ props: {
25
+ title: 'Q1 Review',
26
+ theme: 'corporate',
27
+ grid: { columns: 12, rows: 6 },
28
+ },
29
+ children: [
18
30
  {
19
- elements: [
20
- { type: 'text', text: 'Hello!', options: { x: 1, y: 1, w: 8, h: 1 } },
31
+ name: 'slide',
32
+ props: { background: { color: 'background' } },
33
+ children: [
34
+ {
35
+ name: 'text',
36
+ props: {
37
+ text: 'Q1 Results',
38
+ style: 'title',
39
+ grid: { column: 0, row: 0, columnSpan: 12 },
40
+ },
41
+ },
42
+ {
43
+ name: 'chart',
44
+ props: {
45
+ chartType: 'bar',
46
+ data: [{ name: 'Revenue ($M)', values: [1.2, 2.4, 3.1, 4.2] }],
47
+ grid: { column: 0, row: 1, columnSpan: 8, rowSpan: 5 },
48
+ },
49
+ },
50
+ {
51
+ name: 'shape',
52
+ props: {
53
+ type: 'roundRect',
54
+ fill: { color: 'accent' },
55
+ text: 'Revenue\n$4.2M',
56
+ bold: true,
57
+ fontColor: 'FFFFFF',
58
+ grid: { column: 8, row: 1, columnSpan: 4, rowSpan: 2 },
59
+ },
60
+ },
21
61
  ],
22
62
  },
23
63
  ],
24
64
  });
65
+
66
+ writeFileSync('deck.pptx', buffer);
25
67
  ```
26
68
 
69
+ ## Components
70
+
71
+ 7 component types: **text** (bullets, hyperlinks, style presets), **image** (URL/file/base64, rotation, rounded corners, shadows), **shape** (15 types: rect, ellipse, arrow, star, cloud, etc.), **table** (auto-pagination with header repeat, colspan/rowspan), **chart** (8 native PowerPoint types: bar, line, pie, area, doughnut, radar, bubble, scatter), **highcharts**, and **slides** with grid-based positioning.
72
+
73
+ ## Highlights
74
+
75
+ - **Grid layout** — 12-column responsive grid with configurable margins and gutters. Position elements by grid coordinates or absolute inches/percentages.
76
+ - **Theme system** — 10-slot semantic color scheme, text style presets, 3 built-in themes (minimal, corporate, vibrant) or define your own.
77
+ - **Template/placeholder system** — Define reusable slide templates with named placeholder regions, static elements, and style inheritance.
78
+ - **Schema validation** — TypeBox schemas as both TypeScript types and runtime validators.
79
+ - **Native charts** — 8 PowerPoint chart types rendered natively (no image export needed).
80
+ - **Peer dependency** — Uses [pptxgenjs](https://github.com/gitbrent/PptxGenJS) as the rendering backend. You control the version.
81
+
27
82
  ## License
28
83
 
29
- [MIT](../../LICENSE)
84
+ [MIT](https://github.com/Wiseair-srl/json-to-office/blob/main/LICENSE) — Wiseair srl
package/dist/index.cjs CHANGED
@@ -21,38 +21,61 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // src/index.ts
22
22
  var index_exports = {};
23
23
  __export(index_exports, {
24
+ ComponentValidationError: () => import_core_pptx3.ComponentValidationError,
25
+ DuplicateComponentError: () => import_core_pptx3.DuplicateComponentError,
24
26
  PresentationGenerator: () => import_core_pptx.PresentationGenerator,
25
27
  WarningCodes: () => import_core_pptx2.WarningCodes,
28
+ cleanComponentProps: () => import_core_pptx3.cleanComponentProps,
26
29
  compareSemver: () => import_shared.compareSemver,
30
+ createComponent: () => import_core_pptx3.createComponent,
31
+ createPresentationGenerator: () => import_core_pptx3.createPresentationGenerator,
32
+ createVersion: () => import_core_pptx3.createVersion,
33
+ exportPluginSchema: () => import_core_pptx3.exportPluginSchema,
27
34
  generateAndSaveFromJson: () => import_core_pptx.generateAndSaveFromJson,
28
35
  generateBufferFromJson: () => import_core_pptx.generateBufferFromJson,
29
36
  generateBufferWithWarnings: () => import_core_pptx.generateBufferWithWarnings,
30
37
  generateFromFile: () => import_core_pptx.generateFromFile,
38
+ generatePluginPresentationSchema: () => import_core_pptx3.generatePluginPresentationSchema,
31
39
  generatePresentation: () => import_core_pptx.generatePresentation,
32
40
  isValidSemver: () => import_shared.isValidSemver,
33
41
  latestVersion: () => import_shared.latestVersion,
34
42
  parseSemver: () => import_shared.parseSemver,
35
- savePresentation: () => import_core_pptx.savePresentation
43
+ resolveComponentVersion: () => import_core_pptx3.resolveComponentVersion,
44
+ savePresentation: () => import_core_pptx.savePresentation,
45
+ validateComponentProps: () => import_core_pptx3.validateComponentProps,
46
+ validatePresentation: () => import_core_pptx3.validatePresentation
36
47
  });
37
48
  module.exports = __toCommonJS(index_exports);
38
49
  var import_core_pptx = require("@json-to-office/core-pptx");
39
50
  var import_core_pptx2 = require("@json-to-office/core-pptx");
51
+ var import_core_pptx3 = require("@json-to-office/core-pptx");
40
52
  __reExport(index_exports, require("@json-to-office/shared-pptx"), module.exports);
41
53
  var import_shared = require("@json-to-office/shared");
42
54
  // Annotate the CommonJS export names for ESM import in node:
43
55
  0 && (module.exports = {
56
+ ComponentValidationError,
57
+ DuplicateComponentError,
44
58
  PresentationGenerator,
45
59
  WarningCodes,
60
+ cleanComponentProps,
46
61
  compareSemver,
62
+ createComponent,
63
+ createPresentationGenerator,
64
+ createVersion,
65
+ exportPluginSchema,
47
66
  generateAndSaveFromJson,
48
67
  generateBufferFromJson,
49
68
  generateBufferWithWarnings,
50
69
  generateFromFile,
70
+ generatePluginPresentationSchema,
51
71
  generatePresentation,
52
72
  isValidSemver,
53
73
  latestVersion,
54
74
  parseSemver,
75
+ resolveComponentVersion,
55
76
  savePresentation,
77
+ validateComponentProps,
78
+ validatePresentation,
56
79
  ...require("@json-to-office/shared-pptx")
57
80
  });
58
81
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @json-to-office/json-to-pptx\n *\n * Public API package for PPTX presentation generation.\n * Re-exports from core-pptx and shared-pptx.\n */\n\n// Core generation API\nexport {\n generatePresentation,\n generateBufferFromJson,\n generateBufferWithWarnings,\n generateAndSaveFromJson,\n generateFromFile,\n savePresentation,\n PresentationGenerator,\n} from '@json-to-office/core-pptx';\n\nexport type { GenerationResult, PipelineWarning, WarningCode } from '@json-to-office/core-pptx';\nexport { WarningCodes } from '@json-to-office/core-pptx';\n\n// Re-export shared-pptx schemas and types\nexport * from '@json-to-office/shared-pptx';\n\n// Re-export shared utilities\nexport {\n type ComponentDefinition,\n type GenerationWarning,\n type AddWarningFunction,\n type ValidationError,\n type ParsedSemver,\n isValidSemver,\n parseSemver,\n compareSemver,\n latestVersion,\n} from '@json-to-office/shared';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,uBAQO;AAGP,IAAAA,oBAA6B;AAG7B,0BAAc,wCAtBd;AAyBA,oBAUO;","names":["import_core_pptx"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @json-to-office/json-to-pptx\n *\n * Public API package for PPTX presentation generation.\n * Re-exports from core-pptx and shared-pptx.\n */\n\n// Core generation API\nexport {\n generatePresentation,\n generateBufferFromJson,\n generateBufferWithWarnings,\n generateAndSaveFromJson,\n generateFromFile,\n savePresentation,\n PresentationGenerator,\n} from '@json-to-office/core-pptx';\n\nexport type {\n GenerationResult,\n PipelineWarning,\n WarningCode,\n} from '@json-to-office/core-pptx';\nexport { WarningCodes } from '@json-to-office/core-pptx';\n\n// Plugin system\nexport {\n createComponent,\n createVersion,\n createPresentationGenerator,\n resolveComponentVersion,\n validateComponentProps,\n validatePresentation,\n cleanComponentProps,\n ComponentValidationError,\n DuplicateComponentError,\n generatePluginPresentationSchema,\n exportPluginSchema,\n} from '@json-to-office/core-pptx';\n\nexport type {\n CustomComponent,\n ComponentVersion,\n ComponentVersionMap,\n RenderFunction,\n RenderContext,\n PresentationGeneratorOptions,\n PluginPresentationGenerator,\n PresentationGeneratorBuilder,\n PluginBufferGenerationResult,\n PluginFileGenerationResult,\n PluginValidationResult,\n ExtractCustomComponentType,\n CustomComponentUnion,\n ExtendedPptxComponentInput,\n ExtendedPresentationComponent,\n InferBuilderComponents,\n InferDocumentType,\n InferComponentDefinition,\n ComponentValidationResult,\n PluginValidationError,\n} from '@json-to-office/core-pptx';\n\n// Re-export shared-pptx schemas and types\nexport * from '@json-to-office/shared-pptx';\n\n// Re-export shared utilities\nexport {\n type ComponentDefinition,\n type GenerationWarning,\n type AddWarningFunction,\n type ValidationError,\n type ParsedSemver,\n isValidSemver,\n parseSemver,\n compareSemver,\n latestVersion,\n} from '@json-to-office/shared';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,uBAQO;AAOP,IAAAA,oBAA6B;AAG7B,IAAAA,oBAYO;AA0BP,0BAAc,wCAhEd;AAmEA,oBAUO;","names":["import_core_pptx"]}
package/dist/index.d.cts CHANGED
@@ -1,3 +1,3 @@
1
- export { GenerationResult, PipelineWarning, PresentationGenerator, WarningCode, WarningCodes, generateAndSaveFromJson, generateBufferFromJson, generateBufferWithWarnings, generateFromFile, generatePresentation, savePresentation } from '@json-to-office/core-pptx';
1
+ export { ComponentValidationError, ComponentValidationResult, ComponentVersion, ComponentVersionMap, CustomComponent, CustomComponentUnion, DuplicateComponentError, ExtendedPptxComponentInput, ExtendedPresentationComponent, ExtractCustomComponentType, GenerationResult, InferBuilderComponents, InferComponentDefinition, InferDocumentType, PipelineWarning, PluginBufferGenerationResult, PluginFileGenerationResult, PluginPresentationGenerator, PluginValidationError, PluginValidationResult, PresentationGenerator, PresentationGeneratorBuilder, PresentationGeneratorOptions, RenderContext, RenderFunction, WarningCode, WarningCodes, cleanComponentProps, createComponent, createPresentationGenerator, createVersion, exportPluginSchema, generateAndSaveFromJson, generateBufferFromJson, generateBufferWithWarnings, generateFromFile, generatePluginPresentationSchema, generatePresentation, resolveComponentVersion, savePresentation, validateComponentProps, validatePresentation } from '@json-to-office/core-pptx';
2
2
  export * from '@json-to-office/shared-pptx';
3
3
  export { AddWarningFunction, ComponentDefinition, GenerationWarning, ParsedSemver, ValidationError, compareSemver, isValidSemver, latestVersion, parseSemver } from '@json-to-office/shared';
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { GenerationResult, PipelineWarning, PresentationGenerator, WarningCode, WarningCodes, generateAndSaveFromJson, generateBufferFromJson, generateBufferWithWarnings, generateFromFile, generatePresentation, savePresentation } from '@json-to-office/core-pptx';
1
+ export { ComponentValidationError, ComponentValidationResult, ComponentVersion, ComponentVersionMap, CustomComponent, CustomComponentUnion, DuplicateComponentError, ExtendedPptxComponentInput, ExtendedPresentationComponent, ExtractCustomComponentType, GenerationResult, InferBuilderComponents, InferComponentDefinition, InferDocumentType, PipelineWarning, PluginBufferGenerationResult, PluginFileGenerationResult, PluginPresentationGenerator, PluginValidationError, PluginValidationResult, PresentationGenerator, PresentationGeneratorBuilder, PresentationGeneratorOptions, RenderContext, RenderFunction, WarningCode, WarningCodes, cleanComponentProps, createComponent, createPresentationGenerator, createVersion, exportPluginSchema, generateAndSaveFromJson, generateBufferFromJson, generateBufferWithWarnings, generateFromFile, generatePluginPresentationSchema, generatePresentation, resolveComponentVersion, savePresentation, validateComponentProps, validatePresentation } from '@json-to-office/core-pptx';
2
2
  export * from '@json-to-office/shared-pptx';
3
3
  export { AddWarningFunction, ComponentDefinition, GenerationWarning, ParsedSemver, ValidationError, compareSemver, isValidSemver, latestVersion, parseSemver } from '@json-to-office/shared';
package/dist/index.js CHANGED
@@ -9,6 +9,19 @@ import {
9
9
  PresentationGenerator
10
10
  } from "@json-to-office/core-pptx";
11
11
  import { WarningCodes } from "@json-to-office/core-pptx";
12
+ import {
13
+ createComponent,
14
+ createVersion,
15
+ createPresentationGenerator,
16
+ resolveComponentVersion,
17
+ validateComponentProps,
18
+ validatePresentation,
19
+ cleanComponentProps,
20
+ ComponentValidationError,
21
+ DuplicateComponentError,
22
+ generatePluginPresentationSchema,
23
+ exportPluginSchema
24
+ } from "@json-to-office/core-pptx";
12
25
  export * from "@json-to-office/shared-pptx";
13
26
  import {
14
27
  isValidSemver,
@@ -17,17 +30,28 @@ import {
17
30
  latestVersion
18
31
  } from "@json-to-office/shared";
19
32
  export {
33
+ ComponentValidationError,
34
+ DuplicateComponentError,
20
35
  PresentationGenerator,
21
36
  WarningCodes,
37
+ cleanComponentProps,
22
38
  compareSemver,
39
+ createComponent,
40
+ createPresentationGenerator,
41
+ createVersion,
42
+ exportPluginSchema,
23
43
  generateAndSaveFromJson,
24
44
  generateBufferFromJson,
25
45
  generateBufferWithWarnings,
26
46
  generateFromFile,
47
+ generatePluginPresentationSchema,
27
48
  generatePresentation,
28
49
  isValidSemver,
29
50
  latestVersion,
30
51
  parseSemver,
31
- savePresentation
52
+ resolveComponentVersion,
53
+ savePresentation,
54
+ validateComponentProps,
55
+ validatePresentation
32
56
  };
33
57
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @json-to-office/json-to-pptx\n *\n * Public API package for PPTX presentation generation.\n * Re-exports from core-pptx and shared-pptx.\n */\n\n// Core generation API\nexport {\n generatePresentation,\n generateBufferFromJson,\n generateBufferWithWarnings,\n generateAndSaveFromJson,\n generateFromFile,\n savePresentation,\n PresentationGenerator,\n} from '@json-to-office/core-pptx';\n\nexport type { GenerationResult, PipelineWarning, WarningCode } from '@json-to-office/core-pptx';\nexport { WarningCodes } from '@json-to-office/core-pptx';\n\n// Re-export shared-pptx schemas and types\nexport * from '@json-to-office/shared-pptx';\n\n// Re-export shared utilities\nexport {\n type ComponentDefinition,\n type GenerationWarning,\n type AddWarningFunction,\n type ValidationError,\n type ParsedSemver,\n isValidSemver,\n parseSemver,\n compareSemver,\n latestVersion,\n} from '@json-to-office/shared';\n"],"mappings":";AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,oBAAoB;AAG7B,cAAc;AAGd;AAAA,EAME;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @json-to-office/json-to-pptx\n *\n * Public API package for PPTX presentation generation.\n * Re-exports from core-pptx and shared-pptx.\n */\n\n// Core generation API\nexport {\n generatePresentation,\n generateBufferFromJson,\n generateBufferWithWarnings,\n generateAndSaveFromJson,\n generateFromFile,\n savePresentation,\n PresentationGenerator,\n} from '@json-to-office/core-pptx';\n\nexport type {\n GenerationResult,\n PipelineWarning,\n WarningCode,\n} from '@json-to-office/core-pptx';\nexport { WarningCodes } from '@json-to-office/core-pptx';\n\n// Plugin system\nexport {\n createComponent,\n createVersion,\n createPresentationGenerator,\n resolveComponentVersion,\n validateComponentProps,\n validatePresentation,\n cleanComponentProps,\n ComponentValidationError,\n DuplicateComponentError,\n generatePluginPresentationSchema,\n exportPluginSchema,\n} from '@json-to-office/core-pptx';\n\nexport type {\n CustomComponent,\n ComponentVersion,\n ComponentVersionMap,\n RenderFunction,\n RenderContext,\n PresentationGeneratorOptions,\n PluginPresentationGenerator,\n PresentationGeneratorBuilder,\n PluginBufferGenerationResult,\n PluginFileGenerationResult,\n PluginValidationResult,\n ExtractCustomComponentType,\n CustomComponentUnion,\n ExtendedPptxComponentInput,\n ExtendedPresentationComponent,\n InferBuilderComponents,\n InferDocumentType,\n InferComponentDefinition,\n ComponentValidationResult,\n PluginValidationError,\n} from '@json-to-office/core-pptx';\n\n// Re-export shared-pptx schemas and types\nexport * from '@json-to-office/shared-pptx';\n\n// Re-export shared utilities\nexport {\n type ComponentDefinition,\n type GenerationWarning,\n type AddWarningFunction,\n type ValidationError,\n type ParsedSemver,\n isValidSemver,\n parseSemver,\n compareSemver,\n latestVersion,\n} from '@json-to-office/shared';\n"],"mappings":";AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP,SAAS,oBAAoB;AAG7B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA0BP,cAAc;AAGd;AAAA,EAME;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-to-office/json-to-pptx",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Professional .pptx presentation generation from JSON - Public API package",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -24,9 +24,9 @@
24
24
  "LICENSE"
25
25
  ],
26
26
  "dependencies": {
27
- "@json-to-office/shared": "^0.1.0",
28
- "@json-to-office/shared-pptx": "^0.1.0",
29
- "@json-to-office/core-pptx": "^0.1.0"
27
+ "@json-to-office/core-pptx": "^0.2.0",
28
+ "@json-to-office/shared": "^0.2.0",
29
+ "@json-to-office/shared-pptx": "^0.2.0"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "pptxgenjs": "^3.12.0"