@json-to-office/shared-pptx 0.3.0 → 0.8.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/chunk-MSUK73NL.js +388 -0
- package/dist/chunk-MSUK73NL.js.map +1 -0
- package/dist/{chunk-62S727ED.js → chunk-O5OKKOVY.js} +2 -2
- package/dist/chunk-OJMLZFHW.js +982 -0
- package/dist/chunk-OJMLZFHW.js.map +1 -0
- package/dist/{chunk-VMLRGZLK.js → chunk-TOK2Q3ET.js} +2 -2
- package/dist/{chunk-3N6WLB7N.js → chunk-XVUV6GJL.js} +2 -2
- package/dist/index.d.ts +66 -2
- package/dist/index.js +32 -16
- package/dist/index.js.map +1 -1
- package/dist/schemas/component-defaults.d.ts +546 -0
- package/dist/schemas/component-defaults.js +19 -0
- package/dist/schemas/component-defaults.js.map +1 -0
- package/dist/schemas/component-registry.js +2 -2
- package/dist/schemas/component-union.js +3 -3
- package/dist/schemas/components.d.ts +276 -8
- package/dist/schemas/components.js +6 -5
- package/dist/schemas/document.js +4 -4
- package/dist/schemas/generator.js +3 -3
- package/dist/schemas/theme.d.ts +271 -3
- package/dist/schemas/theme.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-MZ3TEFYH.js +0 -154
- package/dist/chunk-MZ3TEFYH.js.map +0 -1
- package/dist/chunk-WY5GF6HO.js +0 -1171
- package/dist/chunk-WY5GF6HO.js.map +0 -1
- /package/dist/{chunk-62S727ED.js.map → chunk-O5OKKOVY.js.map} +0 -0
- /package/dist/{chunk-VMLRGZLK.js.map → chunk-TOK2Q3ET.js.map} +0 -0
- /package/dist/{chunk-3N6WLB7N.js.map → chunk-XVUV6GJL.js.map} +0 -0
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ColorValueSchema,
|
|
3
|
+
GridConfigSchema,
|
|
4
|
+
GridPositionSchema,
|
|
5
|
+
PptxChartPropsSchema,
|
|
6
|
+
PptxComponentDefaultsSchema,
|
|
7
|
+
PptxHighchartsPropsSchema,
|
|
8
|
+
PptxImagePropsSchema,
|
|
9
|
+
PptxTablePropsSchema,
|
|
10
|
+
ShapePropsSchema,
|
|
11
|
+
SlideBackgroundSchema,
|
|
12
|
+
TextPropsSchema,
|
|
13
|
+
TransitionSchema
|
|
14
|
+
} from "./chunk-OJMLZFHW.js";
|
|
15
|
+
|
|
16
|
+
// src/schemas/component-registry.ts
|
|
17
|
+
import { Type as Type4 } from "@sinclair/typebox";
|
|
18
|
+
|
|
19
|
+
// src/schemas/components/presentation.ts
|
|
20
|
+
import { Type as Type2 } from "@sinclair/typebox";
|
|
21
|
+
|
|
22
|
+
// src/schemas/components/template.ts
|
|
23
|
+
import { Type } from "@sinclair/typebox";
|
|
24
|
+
var Coord = Type.Union([
|
|
25
|
+
Type.Number({ description: "Position/size in inches" }),
|
|
26
|
+
Type.String({
|
|
27
|
+
pattern: "^\\d+(\\.\\d+)?%$",
|
|
28
|
+
description: 'Position/size as percentage of slide dimension (e.g., "50%")'
|
|
29
|
+
})
|
|
30
|
+
]);
|
|
31
|
+
function contentComponent(name, propsSchema) {
|
|
32
|
+
return Type.Object({
|
|
33
|
+
name: Type.Literal(name),
|
|
34
|
+
id: Type.Optional(Type.String()),
|
|
35
|
+
enabled: Type.Optional(Type.Boolean({
|
|
36
|
+
default: true,
|
|
37
|
+
description: "When false, this component is filtered out and not rendered. Defaults to true."
|
|
38
|
+
})),
|
|
39
|
+
props: propsSchema
|
|
40
|
+
}, { additionalProperties: false });
|
|
41
|
+
}
|
|
42
|
+
var TemplateObjectComponentSchema = Type.Union([
|
|
43
|
+
contentComponent("text", TextPropsSchema),
|
|
44
|
+
contentComponent("image", PptxImagePropsSchema),
|
|
45
|
+
contentComponent("shape", ShapePropsSchema),
|
|
46
|
+
contentComponent("table", PptxTablePropsSchema),
|
|
47
|
+
contentComponent("chart", PptxChartPropsSchema),
|
|
48
|
+
contentComponent("highcharts", PptxHighchartsPropsSchema)
|
|
49
|
+
], {
|
|
50
|
+
discriminator: { propertyName: "name" },
|
|
51
|
+
description: "Fixed component on a template slide (same format as slide children)"
|
|
52
|
+
});
|
|
53
|
+
function defaultsComponent(name, propsSchema) {
|
|
54
|
+
return Type.Object({
|
|
55
|
+
name: Type.Literal(name),
|
|
56
|
+
props: Type.Partial(propsSchema, { description: "Default props inherited by the component placed in this placeholder" })
|
|
57
|
+
}, { additionalProperties: false });
|
|
58
|
+
}
|
|
59
|
+
var PlaceholderDefaultsSchema = Type.Union([
|
|
60
|
+
defaultsComponent("text", TextPropsSchema),
|
|
61
|
+
defaultsComponent("image", PptxImagePropsSchema),
|
|
62
|
+
defaultsComponent("shape", ShapePropsSchema),
|
|
63
|
+
defaultsComponent("table", PptxTablePropsSchema),
|
|
64
|
+
defaultsComponent("chart", PptxChartPropsSchema),
|
|
65
|
+
defaultsComponent("highcharts", PptxHighchartsPropsSchema)
|
|
66
|
+
], {
|
|
67
|
+
discriminator: { propertyName: "name" },
|
|
68
|
+
description: "Partial component stub \u2014 styling defaults only"
|
|
69
|
+
});
|
|
70
|
+
var PlaceholderDefinitionSchema = Type.Object({
|
|
71
|
+
name: Type.String({ description: "Unique placeholder name" }),
|
|
72
|
+
x: Type.Optional(Coord),
|
|
73
|
+
y: Type.Optional(Coord),
|
|
74
|
+
w: Type.Optional(Coord),
|
|
75
|
+
h: Type.Optional(Coord),
|
|
76
|
+
grid: Type.Optional(GridPositionSchema),
|
|
77
|
+
defaults: Type.Optional(PlaceholderDefaultsSchema)
|
|
78
|
+
}, { additionalProperties: false, description: "Placeholder on a template slide \u2014 defaults is a component stub whose props are inherited by the actual component" });
|
|
79
|
+
var TemplateSlideDefinitionSchema = Type.Object({
|
|
80
|
+
name: Type.String({ description: "Unique template slide name" }),
|
|
81
|
+
background: Type.Optional(SlideBackgroundSchema),
|
|
82
|
+
margin: Type.Optional(Type.Union([
|
|
83
|
+
Type.Number({ description: "Margin in inches (all sides)" }),
|
|
84
|
+
Type.Array(Type.Number(), { minItems: 4, maxItems: 4, description: "Margin [top, right, bottom, left] in inches" })
|
|
85
|
+
])),
|
|
86
|
+
slideNumber: Type.Optional(Type.Object({
|
|
87
|
+
x: Coord,
|
|
88
|
+
y: Coord,
|
|
89
|
+
w: Type.Optional(Coord),
|
|
90
|
+
h: Type.Optional(Coord),
|
|
91
|
+
color: Type.Optional(ColorValueSchema),
|
|
92
|
+
fontSize: Type.Optional(Type.Number({ description: "Slide number font size in points" }))
|
|
93
|
+
}, { additionalProperties: false, description: "Slide number position and styling" })),
|
|
94
|
+
objects: Type.Optional(Type.Array(TemplateObjectComponentSchema, { description: "Fixed components (logos, footers, decorations) \u2014 same { name, props } format as slide children" })),
|
|
95
|
+
placeholders: Type.Optional(Type.Array(PlaceholderDefinitionSchema, { description: "Placeholder regions for slide content" })),
|
|
96
|
+
grid: Type.Optional(GridConfigSchema)
|
|
97
|
+
}, { additionalProperties: false, description: "Template slide definition (reusable slide template)" });
|
|
98
|
+
|
|
99
|
+
// src/schemas/components/presentation.ts
|
|
100
|
+
var PresentationPropsSchema = Type2.Object(
|
|
101
|
+
{
|
|
102
|
+
title: Type2.Optional(
|
|
103
|
+
Type2.String({ description: "Presentation title metadata" })
|
|
104
|
+
),
|
|
105
|
+
author: Type2.Optional(
|
|
106
|
+
Type2.String({ description: "Presentation author metadata" })
|
|
107
|
+
),
|
|
108
|
+
subject: Type2.Optional(
|
|
109
|
+
Type2.String({ description: "Presentation subject metadata" })
|
|
110
|
+
),
|
|
111
|
+
company: Type2.Optional(
|
|
112
|
+
Type2.String({ description: "Company name metadata" })
|
|
113
|
+
),
|
|
114
|
+
theme: Type2.Optional(
|
|
115
|
+
Type2.String({
|
|
116
|
+
description: 'Theme name to apply (default: "default")',
|
|
117
|
+
default: "default"
|
|
118
|
+
})
|
|
119
|
+
),
|
|
120
|
+
slideWidth: Type2.Optional(
|
|
121
|
+
Type2.Number({
|
|
122
|
+
description: "Slide width in inches (default: 10)",
|
|
123
|
+
default: 10
|
|
124
|
+
})
|
|
125
|
+
),
|
|
126
|
+
slideHeight: Type2.Optional(
|
|
127
|
+
Type2.Number({
|
|
128
|
+
description: "Slide height in inches (default: 7.5)",
|
|
129
|
+
default: 7.5
|
|
130
|
+
})
|
|
131
|
+
),
|
|
132
|
+
rtlMode: Type2.Optional(
|
|
133
|
+
Type2.Boolean({ description: "Right-to-left text direction" })
|
|
134
|
+
),
|
|
135
|
+
pageNumberFormat: Type2.Optional(
|
|
136
|
+
Type2.Union([Type2.Literal("9"), Type2.Literal("09")], {
|
|
137
|
+
description: 'Format for {PAGE_NUMBER} placeholders: "9" = bare number (default), "09" = zero-padded',
|
|
138
|
+
default: "9"
|
|
139
|
+
})
|
|
140
|
+
),
|
|
141
|
+
componentDefaults: Type2.Optional(PptxComponentDefaultsSchema),
|
|
142
|
+
grid: Type2.Optional(GridConfigSchema),
|
|
143
|
+
templates: Type2.Optional(
|
|
144
|
+
Type2.Array(TemplateSlideDefinitionSchema, {
|
|
145
|
+
description: "Template slide definitions (reusable slide templates)"
|
|
146
|
+
})
|
|
147
|
+
)
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
description: "Presentation container props",
|
|
151
|
+
additionalProperties: false
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
// src/schemas/components/slide.ts
|
|
156
|
+
import { Type as Type3 } from "@sinclair/typebox";
|
|
157
|
+
var SlidePropsSchema = Type3.Object(
|
|
158
|
+
{
|
|
159
|
+
background: Type3.Optional(SlideBackgroundSchema),
|
|
160
|
+
transition: Type3.Optional(TransitionSchema),
|
|
161
|
+
notes: Type3.Optional(
|
|
162
|
+
Type3.String({ description: "Speaker notes for this slide" })
|
|
163
|
+
),
|
|
164
|
+
layout: Type3.Optional(
|
|
165
|
+
Type3.String({
|
|
166
|
+
description: 'Slide layout name (e.g., "Title Slide", "Blank")'
|
|
167
|
+
})
|
|
168
|
+
),
|
|
169
|
+
hidden: Type3.Optional(
|
|
170
|
+
Type3.Boolean({ description: "Hide this slide from presentation" })
|
|
171
|
+
),
|
|
172
|
+
template: Type3.Optional(
|
|
173
|
+
Type3.String({ description: "Template slide name to apply" })
|
|
174
|
+
)
|
|
175
|
+
// Note: `placeholders` is added dynamically by the component registry
|
|
176
|
+
// with the recursive component ref, to avoid circular imports.
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
description: "Slide container props",
|
|
180
|
+
additionalProperties: false
|
|
181
|
+
}
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
// src/schemas/component-registry.ts
|
|
185
|
+
var PPTX_STANDARD_COMPONENTS_REGISTRY = [
|
|
186
|
+
// ========================================================================
|
|
187
|
+
// Container Components (can contain children)
|
|
188
|
+
// ========================================================================
|
|
189
|
+
{
|
|
190
|
+
name: "pptx",
|
|
191
|
+
propsSchema: PresentationPropsSchema,
|
|
192
|
+
hasChildren: true,
|
|
193
|
+
allowedChildren: ["slide"],
|
|
194
|
+
category: "container",
|
|
195
|
+
description: "Main presentation container - defines the overall presentation structure. Required as the root component.",
|
|
196
|
+
special: {
|
|
197
|
+
hasSchemaField: true
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
name: "slide",
|
|
202
|
+
propsSchema: SlidePropsSchema,
|
|
203
|
+
hasChildren: true,
|
|
204
|
+
allowedChildren: [
|
|
205
|
+
"text",
|
|
206
|
+
"image",
|
|
207
|
+
"shape",
|
|
208
|
+
"table",
|
|
209
|
+
"highcharts",
|
|
210
|
+
"chart"
|
|
211
|
+
],
|
|
212
|
+
hasPlaceholders: true,
|
|
213
|
+
category: "container",
|
|
214
|
+
description: "Slide container - groups content elements on a single slide."
|
|
215
|
+
},
|
|
216
|
+
// ========================================================================
|
|
217
|
+
// Content Components (leaf nodes, no children)
|
|
218
|
+
// ========================================================================
|
|
219
|
+
{
|
|
220
|
+
name: "text",
|
|
221
|
+
propsSchema: TextPropsSchema,
|
|
222
|
+
hasChildren: false,
|
|
223
|
+
category: "content",
|
|
224
|
+
description: "Text element - displays text with formatting, positioning and styling options."
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: "image",
|
|
228
|
+
propsSchema: PptxImagePropsSchema,
|
|
229
|
+
hasChildren: false,
|
|
230
|
+
category: "content",
|
|
231
|
+
description: "Image element - displays images from file path, URL, or base64 data."
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
name: "shape",
|
|
235
|
+
propsSchema: ShapePropsSchema,
|
|
236
|
+
hasChildren: false,
|
|
237
|
+
category: "content",
|
|
238
|
+
description: "Shape element - draws geometric shapes with optional text, fill, and line styling."
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: "table",
|
|
242
|
+
propsSchema: PptxTablePropsSchema,
|
|
243
|
+
hasChildren: false,
|
|
244
|
+
category: "content",
|
|
245
|
+
description: "Table element - displays tabular data with rows and columns."
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
name: "highcharts",
|
|
249
|
+
propsSchema: PptxHighchartsPropsSchema,
|
|
250
|
+
hasChildren: false,
|
|
251
|
+
category: "content",
|
|
252
|
+
description: "Highcharts element - renders charts via Highcharts Export Server."
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
name: "chart",
|
|
256
|
+
propsSchema: PptxChartPropsSchema,
|
|
257
|
+
hasChildren: false,
|
|
258
|
+
category: "content",
|
|
259
|
+
description: "Native PowerPoint chart - editable, scalable, no external server needed."
|
|
260
|
+
}
|
|
261
|
+
];
|
|
262
|
+
function getPptxStandardComponent(name) {
|
|
263
|
+
return PPTX_STANDARD_COMPONENTS_REGISTRY.find((c) => c.name === name);
|
|
264
|
+
}
|
|
265
|
+
function getAllPptxComponentNames() {
|
|
266
|
+
return PPTX_STANDARD_COMPONENTS_REGISTRY.map((c) => c.name);
|
|
267
|
+
}
|
|
268
|
+
function getPptxComponentsByCategory(category) {
|
|
269
|
+
return PPTX_STANDARD_COMPONENTS_REGISTRY.filter(
|
|
270
|
+
(c) => c.category === category
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
function getPptxContainerComponents() {
|
|
274
|
+
return PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) => c.hasChildren);
|
|
275
|
+
}
|
|
276
|
+
function getPptxContentComponents() {
|
|
277
|
+
return PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) => !c.hasChildren);
|
|
278
|
+
}
|
|
279
|
+
function isPptxStandardComponent(name) {
|
|
280
|
+
return PPTX_STANDARD_COMPONENTS_REGISTRY.some((c) => c.name === name);
|
|
281
|
+
}
|
|
282
|
+
function createPptxComponentSchemaObject(component, recursiveRef, placeholderRef) {
|
|
283
|
+
const schema = {
|
|
284
|
+
name: Type4.Literal(component.name),
|
|
285
|
+
id: Type4.Optional(Type4.String()),
|
|
286
|
+
enabled: Type4.Optional(
|
|
287
|
+
Type4.Boolean({
|
|
288
|
+
default: true,
|
|
289
|
+
description: "When false, this component is filtered out and not rendered. Defaults to true."
|
|
290
|
+
})
|
|
291
|
+
)
|
|
292
|
+
};
|
|
293
|
+
if (component.special?.hasSchemaField) {
|
|
294
|
+
schema.$schema = Type4.Optional(Type4.String({ format: "uri" }));
|
|
295
|
+
}
|
|
296
|
+
schema.props = component.propsSchema;
|
|
297
|
+
if (component.hasChildren && recursiveRef) {
|
|
298
|
+
schema.children = Type4.Optional(Type4.Array(recursiveRef));
|
|
299
|
+
}
|
|
300
|
+
if (component.hasPlaceholders && (placeholderRef ?? recursiveRef)) {
|
|
301
|
+
const baseProperties = component.propsSchema.properties ?? {};
|
|
302
|
+
const phRef = placeholderRef ?? recursiveRef;
|
|
303
|
+
schema.props = Type4.Object(
|
|
304
|
+
{
|
|
305
|
+
...baseProperties,
|
|
306
|
+
placeholders: Type4.Optional(
|
|
307
|
+
Type4.Record(Type4.String(), phRef, {
|
|
308
|
+
description: 'Content for named placeholders: { "title": { "name": "text", ... } }'
|
|
309
|
+
})
|
|
310
|
+
)
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
additionalProperties: false,
|
|
314
|
+
description: component.propsSchema.description
|
|
315
|
+
}
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
return Type4.Object(schema, { additionalProperties: false });
|
|
319
|
+
}
|
|
320
|
+
function createAllPptxComponentSchemas(recursiveRef) {
|
|
321
|
+
return PPTX_STANDARD_COMPONENTS_REGISTRY.map(
|
|
322
|
+
(component) => createPptxComponentSchemaObject(component, recursiveRef)
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
function createAllPptxComponentSchemasNarrowed(selfRef, pluginSchemas = []) {
|
|
326
|
+
const leafSchemas = /* @__PURE__ */ new Map();
|
|
327
|
+
for (const comp of PPTX_STANDARD_COMPONENTS_REGISTRY) {
|
|
328
|
+
if (!comp.hasChildren) {
|
|
329
|
+
leafSchemas.set(
|
|
330
|
+
comp.name,
|
|
331
|
+
createPptxComponentSchemaObject(comp, void 0, selfRef)
|
|
332
|
+
);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
const containers = PPTX_STANDARD_COMPONENTS_REGISTRY.filter(
|
|
336
|
+
(c) => c.hasChildren
|
|
337
|
+
);
|
|
338
|
+
const resolved = /* @__PURE__ */ new Map();
|
|
339
|
+
const pending = [...containers];
|
|
340
|
+
while (pending.length > 0) {
|
|
341
|
+
const before = pending.length;
|
|
342
|
+
for (let i = pending.length - 1; i >= 0; i--) {
|
|
343
|
+
const comp = pending[i];
|
|
344
|
+
if (!comp.allowedChildren) {
|
|
345
|
+
resolved.set(
|
|
346
|
+
comp.name,
|
|
347
|
+
createPptxComponentSchemaObject(comp, selfRef, selfRef)
|
|
348
|
+
);
|
|
349
|
+
pending.splice(i, 1);
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
const containerDeps = comp.allowedChildren.filter(
|
|
353
|
+
(name) => containers.some((c) => c.name === name)
|
|
354
|
+
);
|
|
355
|
+
if (!containerDeps.every((d) => resolved.has(d))) continue;
|
|
356
|
+
const childSchemas = comp.allowedChildren.map((name) => resolved.get(name) ?? leafSchemas.get(name)).filter((s) => s !== void 0);
|
|
357
|
+
const allChildSchemas = [...childSchemas, ...pluginSchemas];
|
|
358
|
+
const childrenType = allChildSchemas.length === 1 ? allChildSchemas[0] : Type4.Union(allChildSchemas);
|
|
359
|
+
resolved.set(
|
|
360
|
+
comp.name,
|
|
361
|
+
createPptxComponentSchemaObject(comp, childrenType, selfRef)
|
|
362
|
+
);
|
|
363
|
+
pending.splice(i, 1);
|
|
364
|
+
}
|
|
365
|
+
if (pending.length === before) {
|
|
366
|
+
throw new Error(
|
|
367
|
+
`Circular allowedChildren among: ${pending.map((c) => c.name).join(", ")}`
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return [...resolved.values(), ...leafSchemas.values()];
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
export {
|
|
375
|
+
PresentationPropsSchema,
|
|
376
|
+
SlidePropsSchema,
|
|
377
|
+
PPTX_STANDARD_COMPONENTS_REGISTRY,
|
|
378
|
+
getPptxStandardComponent,
|
|
379
|
+
getAllPptxComponentNames,
|
|
380
|
+
getPptxComponentsByCategory,
|
|
381
|
+
getPptxContainerComponents,
|
|
382
|
+
getPptxContentComponents,
|
|
383
|
+
isPptxStandardComponent,
|
|
384
|
+
createPptxComponentSchemaObject,
|
|
385
|
+
createAllPptxComponentSchemas,
|
|
386
|
+
createAllPptxComponentSchemasNarrowed
|
|
387
|
+
};
|
|
388
|
+
//# sourceMappingURL=chunk-MSUK73NL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schemas/component-registry.ts","../src/schemas/components/presentation.ts","../src/schemas/components/template.ts","../src/schemas/components/slide.ts"],"sourcesContent":["/**\n * PPTX Component Registry - SINGLE SOURCE OF TRUTH\n *\n * This is the ONLY place where standard PPTX components are defined.\n * All schema generators MUST use this registry.\n */\n\nimport { Type, TSchema } from '@sinclair/typebox';\n\n/**\n * Component definition with metadata\n */\nexport interface PptxStandardComponentDefinition {\n name: string;\n propsSchema: TSchema;\n hasChildren: boolean;\n /**\n * Names of standard components allowed as direct children.\n * Only meaningful when hasChildren is true.\n * Plugin components are always allowed in addition to these.\n * Omit to allow the full recursive union (backward-compat).\n */\n allowedChildren?: readonly string[];\n hasPlaceholders?: boolean;\n category: 'container' | 'content' | 'layout';\n description: string;\n special?: {\n hasSchemaField?: boolean;\n };\n}\nimport { PresentationPropsSchema } from './components/presentation';\nimport { SlidePropsSchema } from './components/slide';\nimport { TextPropsSchema } from './components/text';\nimport { PptxImagePropsSchema } from './components/image';\nimport { ShapePropsSchema } from './components/shape';\nimport { PptxTablePropsSchema } from './components/table';\nimport { PptxHighchartsPropsSchema } from './components/highcharts';\nimport { PptxChartPropsSchema } from './components/chart';\n\n/**\n * SINGLE SOURCE OF TRUTH for all standard PPTX components\n */\nexport const PPTX_STANDARD_COMPONENTS_REGISTRY: readonly PptxStandardComponentDefinition[] =\n [\n // ========================================================================\n // Container Components (can contain children)\n // ========================================================================\n {\n name: 'pptx',\n propsSchema: PresentationPropsSchema,\n hasChildren: true,\n allowedChildren: ['slide'],\n category: 'container',\n description:\n 'Main presentation container - defines the overall presentation structure. Required as the root component.',\n special: {\n hasSchemaField: true,\n },\n },\n {\n name: 'slide',\n propsSchema: SlidePropsSchema,\n hasChildren: true,\n allowedChildren: [\n 'text',\n 'image',\n 'shape',\n 'table',\n 'highcharts',\n 'chart',\n ],\n hasPlaceholders: true,\n category: 'container',\n description:\n 'Slide container - groups content elements on a single slide.',\n },\n\n // ========================================================================\n // Content Components (leaf nodes, no children)\n // ========================================================================\n {\n name: 'text',\n propsSchema: TextPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Text element - displays text with formatting, positioning and styling options.',\n },\n {\n name: 'image',\n propsSchema: PptxImagePropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Image element - displays images from file path, URL, or base64 data.',\n },\n {\n name: 'shape',\n propsSchema: ShapePropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Shape element - draws geometric shapes with optional text, fill, and line styling.',\n },\n {\n name: 'table',\n propsSchema: PptxTablePropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Table element - displays tabular data with rows and columns.',\n },\n {\n name: 'highcharts',\n propsSchema: PptxHighchartsPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Highcharts element - renders charts via Highcharts Export Server.',\n },\n {\n name: 'chart',\n propsSchema: PptxChartPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Native PowerPoint chart - editable, scalable, no external server needed.',\n },\n ] as const;\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nexport function getPptxStandardComponent(\n name: string\n): PptxStandardComponentDefinition | undefined {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.find((c) => c.name === name);\n}\n\nexport function getAllPptxComponentNames(): readonly string[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.map((c) => c.name);\n}\n\nexport function getPptxComponentsByCategory(\n category: PptxStandardComponentDefinition['category']\n): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter(\n (c) => c.category === category\n );\n}\n\nexport function getPptxContainerComponents(): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) => c.hasChildren);\n}\n\nexport function getPptxContentComponents(): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) => !c.hasChildren);\n}\n\nexport function isPptxStandardComponent(name: string): boolean {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.some((c) => c.name === name);\n}\n\n// ============================================================================\n// Schema Generation Helpers\n// ============================================================================\n\nexport function createPptxComponentSchemaObject(\n component: PptxStandardComponentDefinition,\n recursiveRef?: TSchema,\n placeholderRef?: TSchema\n): TSchema {\n const schema: Record<string, TSchema> = {\n name: Type.Literal(component.name),\n id: Type.Optional(Type.String()),\n enabled: Type.Optional(\n Type.Boolean({\n default: true,\n description:\n 'When false, this component is filtered out and not rendered. Defaults to true.',\n })\n ),\n };\n\n if (component.special?.hasSchemaField) {\n schema.$schema = Type.Optional(Type.String({ format: 'uri' }));\n }\n\n schema.props = component.propsSchema;\n\n if (component.hasChildren && recursiveRef) {\n schema.children = Type.Optional(Type.Array(recursiveRef));\n }\n\n if (component.hasPlaceholders && (placeholderRef ?? recursiveRef)) {\n const baseProperties = (component.propsSchema as any).properties ?? {};\n const phRef = placeholderRef ?? recursiveRef!;\n schema.props = Type.Object(\n {\n ...baseProperties,\n placeholders: Type.Optional(\n Type.Record(Type.String(), phRef, {\n description:\n 'Content for named placeholders: { \"title\": { \"name\": \"text\", ... } }',\n })\n ),\n },\n {\n additionalProperties: false,\n description: (component.propsSchema as any).description,\n }\n );\n }\n\n return Type.Object(schema, { additionalProperties: false });\n}\n\nexport function createAllPptxComponentSchemas(\n recursiveRef?: TSchema\n): readonly TSchema[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.map((component) =>\n createPptxComponentSchemaObject(component, recursiveRef)\n );\n}\n\n/**\n * Build all standard PPTX component schemas with per-container narrowed children.\n *\n * Resolves containers in dependency order so each container's children union\n * only references its allowedChildren. Plugin schemas are always included in\n * every container's children.\n *\n * @param selfRef - The Type.Recursive self-reference (fallback and for plugin children)\n * @param pluginSchemas - Plugin component schemas (always allowed in all containers)\n * @returns Array of TypeBox schemas with narrowed children per container\n */\nexport function createAllPptxComponentSchemasNarrowed(\n selfRef: TSchema,\n pluginSchemas: TSchema[] = []\n): TSchema[] {\n // Phase 1: Build leaf (non-container) component schemas — no children\n const leafSchemas = new Map<string, TSchema>();\n for (const comp of PPTX_STANDARD_COMPONENTS_REGISTRY) {\n if (!comp.hasChildren) {\n leafSchemas.set(\n comp.name,\n createPptxComponentSchemaObject(comp, undefined, selfRef)\n );\n }\n }\n\n // Phase 2: Resolve containers in dependency order\n const containers = PPTX_STANDARD_COMPONENTS_REGISTRY.filter(\n (c) => c.hasChildren\n );\n const resolved = new Map<string, TSchema>();\n const pending = [...containers];\n\n while (pending.length > 0) {\n const before = pending.length;\n for (let i = pending.length - 1; i >= 0; i--) {\n const comp = pending[i];\n\n if (!comp.allowedChildren) {\n // No allowedChildren declared — fallback to full recursive ref\n resolved.set(\n comp.name,\n createPptxComponentSchemaObject(comp, selfRef, selfRef)\n );\n pending.splice(i, 1);\n continue;\n }\n\n // Check if all container dependencies are resolved\n const containerDeps = comp.allowedChildren.filter((name) =>\n containers.some((c) => c.name === name)\n );\n if (!containerDeps.every((d) => resolved.has(d))) continue;\n\n // Build narrowed children union\n const childSchemas = comp.allowedChildren\n .map((name) => resolved.get(name) ?? leafSchemas.get(name))\n .filter((s): s is TSchema => s !== undefined);\n\n const allChildSchemas = [...childSchemas, ...pluginSchemas];\n const childrenType =\n allChildSchemas.length === 1\n ? allChildSchemas[0]\n : Type.Union(allChildSchemas);\n\n resolved.set(\n comp.name,\n createPptxComponentSchemaObject(comp, childrenType, selfRef)\n );\n pending.splice(i, 1);\n }\n\n if (pending.length === before) {\n throw new Error(\n `Circular allowedChildren among: ${pending.map((c) => c.name).join(', ')}`\n );\n }\n }\n\n // Combine: containers (resolved) + leaves\n return [...resolved.values(), ...leafSchemas.values()];\n}\n","/**\n * Presentation Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { TemplateSlideDefinitionSchema } from './template';\nimport { GridConfigSchema } from '../theme';\nimport { PptxComponentDefaultsSchema } from '../component-defaults';\n\nexport const PresentationPropsSchema = Type.Object(\n {\n title: Type.Optional(\n Type.String({ description: 'Presentation title metadata' })\n ),\n author: Type.Optional(\n Type.String({ description: 'Presentation author metadata' })\n ),\n subject: Type.Optional(\n Type.String({ description: 'Presentation subject metadata' })\n ),\n company: Type.Optional(\n Type.String({ description: 'Company name metadata' })\n ),\n theme: Type.Optional(\n Type.String({\n description: 'Theme name to apply (default: \"default\")',\n default: 'default',\n })\n ),\n slideWidth: Type.Optional(\n Type.Number({\n description: 'Slide width in inches (default: 10)',\n default: 10,\n })\n ),\n slideHeight: Type.Optional(\n Type.Number({\n description: 'Slide height in inches (default: 7.5)',\n default: 7.5,\n })\n ),\n rtlMode: Type.Optional(\n Type.Boolean({ description: 'Right-to-left text direction' })\n ),\n pageNumberFormat: Type.Optional(\n Type.Union([Type.Literal('9'), Type.Literal('09')], {\n description: 'Format for {PAGE_NUMBER} placeholders: \"9\" = bare number (default), \"09\" = zero-padded',\n default: '9',\n })\n ),\n componentDefaults: Type.Optional(PptxComponentDefaultsSchema),\n grid: Type.Optional(GridConfigSchema),\n templates: Type.Optional(\n Type.Array(TemplateSlideDefinitionSchema, {\n description: 'Template slide definitions (reusable slide templates)',\n })\n ),\n },\n {\n description: 'Presentation container props',\n additionalProperties: false,\n }\n);\n\nexport type PresentationProps = Static<typeof PresentationPropsSchema>;\n","/**\n * Template Slide Definition Schemas\n */\n\nimport { Type, Static, TSchema } from '@sinclair/typebox';\nimport { SlideBackgroundSchema, GridPositionSchema } from './common';\nimport { ColorValueSchema, GridConfigSchema } from '../theme';\nimport { TextPropsSchema } from './text';\nimport { PptxImagePropsSchema } from './image';\nimport { ShapePropsSchema } from './shape';\nimport { PptxTablePropsSchema } from './table';\nimport { PptxChartPropsSchema } from './chart';\nimport { PptxHighchartsPropsSchema } from './highcharts';\n\n// Position helpers (number in inches OR percentage string e.g. \"50%\")\nconst Coord = Type.Union([\n Type.Number({ description: 'Position/size in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Position/size as percentage of slide dimension (e.g., \"50%\")',\n }),\n]);\n\n// Helper: wrap a props schema into { name, props } component format\nfunction contentComponent(name: string, propsSchema: TSchema) {\n return Type.Object({\n name: Type.Literal(name),\n id: Type.Optional(Type.String()),\n enabled: Type.Optional(Type.Boolean({\n default: true,\n description: 'When false, this component is filtered out and not rendered. Defaults to true.',\n })),\n props: propsSchema,\n }, { additionalProperties: false });\n}\n\n// Content component union — same { name, props } format as slide children\nconst TemplateObjectComponentSchema = Type.Union([\n contentComponent('text', TextPropsSchema),\n contentComponent('image', PptxImagePropsSchema),\n contentComponent('shape', ShapePropsSchema),\n contentComponent('table', PptxTablePropsSchema),\n contentComponent('chart', PptxChartPropsSchema),\n contentComponent('highcharts', PptxHighchartsPropsSchema),\n], {\n discriminator: { propertyName: 'name' },\n description: 'Fixed component on a template slide (same format as slide children)',\n});\n\n// Defaults schema — partial component stub (carries styling props, not content)\n// Discriminated union so Monaco can autocomplete prop names per component type\nfunction defaultsComponent(name: string, propsSchema: TSchema) {\n return Type.Object({\n name: Type.Literal(name),\n props: Type.Partial(propsSchema, { description: 'Default props inherited by the component placed in this placeholder' }),\n }, { additionalProperties: false });\n}\n\nconst PlaceholderDefaultsSchema = Type.Union([\n defaultsComponent('text', TextPropsSchema),\n defaultsComponent('image', PptxImagePropsSchema),\n defaultsComponent('shape', ShapePropsSchema),\n defaultsComponent('table', PptxTablePropsSchema),\n defaultsComponent('chart', PptxChartPropsSchema),\n defaultsComponent('highcharts', PptxHighchartsPropsSchema),\n], {\n discriminator: { propertyName: 'name' },\n description: 'Partial component stub — styling defaults only',\n});\n\n// Placeholder definition\nexport const PlaceholderDefinitionSchema = Type.Object({\n name: Type.String({ description: 'Unique placeholder name' }),\n x: Type.Optional(Coord),\n y: Type.Optional(Coord),\n w: Type.Optional(Coord),\n h: Type.Optional(Coord),\n grid: Type.Optional(GridPositionSchema),\n defaults: Type.Optional(PlaceholderDefaultsSchema),\n}, { additionalProperties: false, description: 'Placeholder on a template slide — defaults is a component stub whose props are inherited by the actual component' });\n\n// Template slide definition\nexport const TemplateSlideDefinitionSchema = Type.Object({\n name: Type.String({ description: 'Unique template slide name' }),\n background: Type.Optional(SlideBackgroundSchema),\n margin: Type.Optional(Type.Union([\n Type.Number({ description: 'Margin in inches (all sides)' }),\n Type.Array(Type.Number(), { minItems: 4, maxItems: 4, description: 'Margin [top, right, bottom, left] in inches' }),\n ])),\n slideNumber: Type.Optional(Type.Object({\n x: Coord, y: Coord,\n w: Type.Optional(Coord),\n h: Type.Optional(Coord),\n color: Type.Optional(ColorValueSchema),\n fontSize: Type.Optional(Type.Number({ description: 'Slide number font size in points' })),\n }, { additionalProperties: false, description: 'Slide number position and styling' })),\n objects: Type.Optional(Type.Array(TemplateObjectComponentSchema, { description: 'Fixed components (logos, footers, decorations) — same { name, props } format as slide children' })),\n placeholders: Type.Optional(Type.Array(PlaceholderDefinitionSchema, { description: 'Placeholder regions for slide content' })),\n grid: Type.Optional(GridConfigSchema),\n}, { additionalProperties: false, description: 'Template slide definition (reusable slide template)' });\n\nexport type PlaceholderDefinition = Static<typeof PlaceholderDefinitionSchema>;\nexport type TemplateSlideDefinition = Static<typeof TemplateSlideDefinitionSchema>;\n","/**\n * Slide Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { SlideBackgroundSchema, TransitionSchema } from './common';\n\nexport const SlidePropsSchema = Type.Object(\n {\n background: Type.Optional(SlideBackgroundSchema),\n transition: Type.Optional(TransitionSchema),\n notes: Type.Optional(\n Type.String({ description: 'Speaker notes for this slide' })\n ),\n layout: Type.Optional(\n Type.String({\n description: 'Slide layout name (e.g., \"Title Slide\", \"Blank\")',\n })\n ),\n hidden: Type.Optional(\n Type.Boolean({ description: 'Hide this slide from presentation' })\n ),\n template: Type.Optional(\n Type.String({ description: 'Template slide name to apply' })\n ),\n // Note: `placeholders` is added dynamically by the component registry\n // with the recursive component ref, to avoid circular imports.\n },\n {\n description: 'Slide container props',\n additionalProperties: false,\n }\n);\n\nexport type SlideProps = Static<typeof SlidePropsSchema>;\n"],"mappings":"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","names":["Type","Type","Type","Type","Type","Type"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAllPptxComponentSchemasNarrowed,
|
|
3
3
|
createPptxComponentSchemaObject
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-MSUK73NL.js";
|
|
5
5
|
|
|
6
6
|
// src/schemas/generator.ts
|
|
7
7
|
import { Type } from "@sinclair/typebox";
|
|
@@ -39,4 +39,4 @@ function generateUnifiedDocumentSchema(options = {}) {
|
|
|
39
39
|
export {
|
|
40
40
|
generateUnifiedDocumentSchema
|
|
41
41
|
};
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-O5OKKOVY.js.map
|