@json-to-office/shared-pptx 1.3.0 → 1.5.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-N6CABSXM.js → chunk-CS65H3RG.js} +2 -2
- package/dist/{chunk-WQAPVKW2.js → chunk-EVSOXQHO.js} +2 -2
- package/dist/{chunk-KRLDFNJM.js → chunk-F54YIK73.js} +2 -2
- package/dist/{chunk-EXPOJ55X.js → chunk-TLD3Z2B2.js} +118 -66
- package/dist/chunk-TLD3Z2B2.js.map +1 -0
- package/dist/{chunk-ZIDB7UMH.js → chunk-YBRH7UCF.js} +2 -2
- package/dist/{chunk-7CKCXKN7.js → chunk-Z6NUHS34.js} +1 -1
- package/dist/{chunk-7CKCXKN7.js.map → chunk-Z6NUHS34.js.map} +1 -1
- package/dist/index.js +6 -6
- package/dist/schemas/component-defaults.d.ts +2 -0
- package/dist/schemas/component-defaults.js +1 -1
- package/dist/schemas/component-registry.js +3 -3
- package/dist/schemas/component-union.js +4 -4
- package/dist/schemas/components.d.ts +2 -0
- package/dist/schemas/components.js +4 -4
- package/dist/schemas/document.js +5 -5
- package/dist/schemas/generator.js +4 -4
- package/dist/schemas/theme.d.ts +1 -0
- package/dist/schemas/theme.js +2 -2
- package/package.json +5 -5
- package/dist/chunk-EXPOJ55X.js.map +0 -1
- /package/dist/{chunk-N6CABSXM.js.map → chunk-CS65H3RG.js.map} +0 -0
- /package/dist/{chunk-WQAPVKW2.js.map → chunk-EVSOXQHO.js.map} +0 -0
- /package/dist/{chunk-KRLDFNJM.js.map → chunk-F54YIK73.js.map} +0 -0
- /package/dist/{chunk-ZIDB7UMH.js.map → chunk-YBRH7UCF.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PptxComponentDefaultsSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Z6NUHS34.js";
|
|
4
4
|
|
|
5
5
|
// src/schemas/theme.ts
|
|
6
6
|
import { Type } from "@sinclair/typebox";
|
|
@@ -159,4 +159,4 @@ export {
|
|
|
159
159
|
STYLE_NAMES2 as STYLE_NAMES,
|
|
160
160
|
StyleNameSchema
|
|
161
161
|
};
|
|
162
|
-
//# sourceMappingURL=chunk-
|
|
162
|
+
//# sourceMappingURL=chunk-CS65H3RG.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAllPptxComponentSchemasNarrowed
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TLD3Z2B2.js";
|
|
4
4
|
import {
|
|
5
5
|
DEFAULT_PPTX_RENDERER_ID,
|
|
6
6
|
PPTX_RENDERER_IDS
|
|
@@ -82,4 +82,4 @@ function generateRendererSchema(customComponents, renderer, requireDiscriminator
|
|
|
82
82
|
export {
|
|
83
83
|
generateUnifiedDocumentSchema
|
|
84
84
|
};
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
85
|
+
//# sourceMappingURL=chunk-EVSOXQHO.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAllPptxComponentSchemas,
|
|
3
3
|
createAllPptxComponentSchemasNarrowed
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TLD3Z2B2.js";
|
|
5
5
|
|
|
6
6
|
// src/schemas/component-union.ts
|
|
7
7
|
import { Type } from "@sinclair/typebox";
|
|
@@ -25,4 +25,4 @@ export {
|
|
|
25
25
|
PptxComponentDefinitionSchema,
|
|
26
26
|
PptxSlideContentSchema
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
28
|
+
//# sourceMappingURL=chunk-F54YIK73.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
ColorValueSchema,
|
|
7
7
|
GridConfigSchema,
|
|
8
8
|
ThemeConfigSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CS65H3RG.js";
|
|
10
10
|
import {
|
|
11
11
|
PptxChartPropsSchema,
|
|
12
12
|
PptxComponentDefaultsSchema,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
PptxTablePropsSchema,
|
|
16
16
|
ShapePropsSchema,
|
|
17
17
|
TextPropsSchema
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-Z6NUHS34.js";
|
|
19
19
|
|
|
20
20
|
// src/schemas/component-registry.ts
|
|
21
21
|
import { Type as Type5 } from "@sinclair/typebox";
|
|
@@ -146,72 +146,124 @@ var Coord = Type2.Union([
|
|
|
146
146
|
})
|
|
147
147
|
]);
|
|
148
148
|
function contentComponent(name, propsSchema) {
|
|
149
|
-
return Type2.Object(
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
149
|
+
return Type2.Object(
|
|
150
|
+
{
|
|
151
|
+
name: Type2.Literal(name),
|
|
152
|
+
id: Type2.Optional(Type2.String()),
|
|
153
|
+
enabled: Type2.Optional(
|
|
154
|
+
Type2.Boolean({
|
|
155
|
+
default: true,
|
|
156
|
+
description: "When false, this component is filtered out and not rendered. Defaults to true."
|
|
157
|
+
})
|
|
158
|
+
),
|
|
159
|
+
props: propsSchema
|
|
160
|
+
},
|
|
161
|
+
{ additionalProperties: false }
|
|
162
|
+
);
|
|
158
163
|
}
|
|
159
|
-
var TemplateObjectComponentSchema = Type2.Union(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
}
|
|
164
|
+
var TemplateObjectComponentSchema = Type2.Union(
|
|
165
|
+
[
|
|
166
|
+
contentComponent("text", TextPropsSchema),
|
|
167
|
+
contentComponent("image", PptxImagePropsSchema),
|
|
168
|
+
contentComponent("shape", ShapePropsSchema),
|
|
169
|
+
contentComponent("table", PptxTablePropsSchema),
|
|
170
|
+
contentComponent("chart", PptxChartPropsSchema),
|
|
171
|
+
contentComponent("highcharts", PptxHighchartsPropsSchema)
|
|
172
|
+
],
|
|
173
|
+
{
|
|
174
|
+
discriminator: { propertyName: "name" },
|
|
175
|
+
description: "Fixed component on a template slide (same format as slide children)"
|
|
176
|
+
}
|
|
177
|
+
);
|
|
170
178
|
function defaultsComponent(name, propsSchema) {
|
|
171
|
-
return Type2.Object(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
179
|
+
return Type2.Object(
|
|
180
|
+
{
|
|
181
|
+
name: Type2.Literal(name),
|
|
182
|
+
props: Type2.Partial(propsSchema, {
|
|
183
|
+
description: "Default props inherited by the component placed in this placeholder"
|
|
184
|
+
})
|
|
185
|
+
},
|
|
186
|
+
{ additionalProperties: false }
|
|
187
|
+
);
|
|
175
188
|
}
|
|
176
|
-
var PlaceholderDefaultsSchema = Type2.Union(
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}, { additionalProperties: false, description: "Placeholder on a template slide \u2014 defaults is a component stub whose props are inherited by the actual component" });
|
|
196
|
-
var TemplateSlideDefinitionSchema = Type2.Object({
|
|
197
|
-
name: Type2.String({ description: "Unique template slide name" }),
|
|
198
|
-
background: Type2.Optional(SlideBackgroundSchema),
|
|
199
|
-
margin: Type2.Optional(Type2.Union([
|
|
200
|
-
Type2.Number({ description: "Margin in inches (all sides)" }),
|
|
201
|
-
Type2.Array(Type2.Number(), { minItems: 4, maxItems: 4, description: "Margin [top, right, bottom, left] in inches" })
|
|
202
|
-
])),
|
|
203
|
-
slideNumber: Type2.Optional(Type2.Object({
|
|
204
|
-
x: Coord,
|
|
205
|
-
y: Coord,
|
|
189
|
+
var PlaceholderDefaultsSchema = Type2.Union(
|
|
190
|
+
[
|
|
191
|
+
defaultsComponent("text", TextPropsSchema),
|
|
192
|
+
defaultsComponent("image", PptxImagePropsSchema),
|
|
193
|
+
defaultsComponent("shape", ShapePropsSchema),
|
|
194
|
+
defaultsComponent("table", PptxTablePropsSchema),
|
|
195
|
+
defaultsComponent("chart", PptxChartPropsSchema),
|
|
196
|
+
defaultsComponent("highcharts", PptxHighchartsPropsSchema)
|
|
197
|
+
],
|
|
198
|
+
{
|
|
199
|
+
discriminator: { propertyName: "name" },
|
|
200
|
+
description: "Partial component stub \u2014 styling defaults only"
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
var PlaceholderDefinitionSchema = Type2.Object(
|
|
204
|
+
{
|
|
205
|
+
name: Type2.String({ description: "Unique placeholder name" }),
|
|
206
|
+
x: Type2.Optional(Coord),
|
|
207
|
+
y: Type2.Optional(Coord),
|
|
206
208
|
w: Type2.Optional(Coord),
|
|
207
209
|
h: Type2.Optional(Coord),
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
},
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
210
|
+
grid: Type2.Optional(GridPositionSchema),
|
|
211
|
+
defaults: Type2.Optional(PlaceholderDefaultsSchema)
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
additionalProperties: false,
|
|
215
|
+
description: "Placeholder on a template slide \u2014 defaults is a component stub whose props are inherited by the actual component"
|
|
216
|
+
}
|
|
217
|
+
);
|
|
218
|
+
var TemplateSlideDefinitionSchema = Type2.Object(
|
|
219
|
+
{
|
|
220
|
+
name: Type2.String({ description: "Unique template slide name" }),
|
|
221
|
+
background: Type2.Optional(SlideBackgroundSchema),
|
|
222
|
+
margin: Type2.Optional(
|
|
223
|
+
Type2.Union([
|
|
224
|
+
Type2.Number({ description: "Margin in inches (all sides)" }),
|
|
225
|
+
Type2.Array(Type2.Number(), {
|
|
226
|
+
minItems: 4,
|
|
227
|
+
maxItems: 4,
|
|
228
|
+
description: "Margin [top, right, bottom, left] in inches"
|
|
229
|
+
})
|
|
230
|
+
])
|
|
231
|
+
),
|
|
232
|
+
slideNumber: Type2.Optional(
|
|
233
|
+
Type2.Object(
|
|
234
|
+
{
|
|
235
|
+
x: Coord,
|
|
236
|
+
y: Coord,
|
|
237
|
+
w: Type2.Optional(Coord),
|
|
238
|
+
h: Type2.Optional(Coord),
|
|
239
|
+
color: Type2.Optional(ColorValueSchema),
|
|
240
|
+
fontSize: Type2.Optional(
|
|
241
|
+
Type2.Number({ description: "Slide number font size in points" })
|
|
242
|
+
)
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
additionalProperties: false,
|
|
246
|
+
description: "Slide number position and styling"
|
|
247
|
+
}
|
|
248
|
+
)
|
|
249
|
+
),
|
|
250
|
+
objects: Type2.Optional(
|
|
251
|
+
Type2.Array(TemplateObjectComponentSchema, {
|
|
252
|
+
description: "Fixed components (logos, footers, decorations) \u2014 same { name, props } format as slide children"
|
|
253
|
+
})
|
|
254
|
+
),
|
|
255
|
+
placeholders: Type2.Optional(
|
|
256
|
+
Type2.Array(PlaceholderDefinitionSchema, {
|
|
257
|
+
description: "Placeholder regions for slide content"
|
|
258
|
+
})
|
|
259
|
+
),
|
|
260
|
+
grid: Type2.Optional(GridConfigSchema)
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
additionalProperties: false,
|
|
264
|
+
description: "Template slide definition (reusable slide template)"
|
|
265
|
+
}
|
|
266
|
+
);
|
|
215
267
|
|
|
216
268
|
// src/schemas/components/presentation.ts
|
|
217
269
|
var PresentationPropsSchema = Type3.Object(
|
|
@@ -345,7 +397,7 @@ var PPTX_STANDARD_COMPONENTS_REGISTRY = [
|
|
|
345
397
|
// the deep validator have always demanded the key. Keeping it required
|
|
346
398
|
// is a decision, not the schema's own answer, so it is declared.
|
|
347
399
|
propsRequired: true,
|
|
348
|
-
description: "Main presentation container - defines the overall presentation structure. Required as the root component.",
|
|
400
|
+
description: "Main presentation container - defines the overall presentation structure. Required as the root component. Always declare `slideWidth`/`slideHeight` (13.333 \xD7 7.5 for 16:9) \u2014 omitted, the renderer silently falls back to 4:3 and 16:9 content leaves a dead strip.",
|
|
349
401
|
special: {
|
|
350
402
|
hasSchemaField: true
|
|
351
403
|
}
|
|
@@ -360,7 +412,7 @@ var PPTX_STANDARD_COMPONENTS_REGISTRY = [
|
|
|
360
412
|
// No `propsRequired`: every slide prop is optional and nothing outside
|
|
361
413
|
// the schema asks for one, so `{ "name": "slide", "children": [...] }`
|
|
362
414
|
// is a whole slide and the published schema says so.
|
|
363
|
-
description: "Slide container - groups content elements on a single slide."
|
|
415
|
+
description: "Slide container - groups content elements on a single slide. One idea per slide: past roughly 40 words of body text, split the content across more slides."
|
|
364
416
|
},
|
|
365
417
|
// Content components are canonical in @json-to-office/shared so DOCX
|
|
366
418
|
// visuals can reuse the exact schemas without depending on shared-pptx.
|
|
@@ -529,4 +581,4 @@ export {
|
|
|
529
581
|
createAllPptxComponentSchemas,
|
|
530
582
|
createAllPptxComponentSchemasNarrowed
|
|
531
583
|
};
|
|
532
|
-
//# sourceMappingURL=chunk-
|
|
584
|
+
//# sourceMappingURL=chunk-TLD3Z2B2.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/common.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';\nimport {\n PPTX_SLIDE_CONTENT_COMPONENTS,\n pptxComponentRequiresProps,\n} from '@json-to-office/shared/schemas/slide-content';\nimport {\n PPTX_RENDERER_IDS,\n pptxPropsSchemaForRenderer,\n type PptxRendererId,\n} from './renderer';\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 /**\n * Force `props` to stay required even though the props schema accepts `{}`.\n * See `pptxComponentRequiresProps` for when that is legitimate.\n */\n propsRequired?: boolean;\n special?: {\n hasSchemaField?: boolean;\n };\n}\nimport { PresentationPropsSchema } from './components/presentation';\nimport { SlidePropsSchema } from './components/slide';\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 // Every presentation prop is optional, but the root is where a deck\n // states its title, size and theme, and both the published schema and\n // the deep validator have always demanded the key. Keeping it required\n // is a decision, not the schema's own answer, so it is declared.\n propsRequired: true,\n description:\n 'Main presentation container - defines the overall presentation structure. Required as the root component. Always declare `slideWidth`/`slideHeight` (13.333 × 7.5 for 16:9) — omitted, the renderer silently falls back to 4:3 and 16:9 content leaves a dead strip.',\n special: {\n hasSchemaField: true,\n },\n },\n {\n name: 'slide',\n propsSchema: SlidePropsSchema,\n hasChildren: true,\n allowedChildren: PPTX_SLIDE_CONTENT_COMPONENTS.map(({ name }) => name),\n hasPlaceholders: true,\n category: 'container',\n // No `propsRequired`: every slide prop is optional and nothing outside\n // the schema asks for one, so `{ \"name\": \"slide\", \"children\": [...] }`\n // is a whole slide and the published schema says so.\n description:\n 'Slide container - groups content elements on a single slide. One idea per slide: past roughly 40 words of body text, split the content across more slides.',\n },\n\n // Content components are canonical in @json-to-office/shared so DOCX\n // visuals can reuse the exact schemas without depending on shared-pptx.\n ...PPTX_SLIDE_CONTENT_COMPONENTS,\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 * Whether this component must carry a `props` key — the one answer both the\n * published schema and the deep validator read.\n *\n * Re-exported from `@json-to-office/shared` so the registry is the single\n * place a consumer has to look: the rule is the props schema's own (a schema\n * that accepts `{}` demands nothing) unless the definition overrides it.\n */\nexport { pptxComponentRequiresProps };\n\n// ============================================================================\n// Schema Generation Helpers\n// ============================================================================\n\nexport function createPptxComponentSchemaObject(\n component: PptxStandardComponentDefinition,\n recursiveRef?: TSchema,\n placeholderRef?: TSchema,\n profile?: { renderer: PptxRendererId; requireDiscriminator: boolean }\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 schema.renderer = profile\n ? profile.requireDiscriminator\n ? Type.Literal(profile.renderer, {\n description: 'Renderer backend for this presentation',\n })\n : Type.Optional(\n Type.Literal(profile.renderer, {\n description: 'Renderer backend. Omitted defaults to \"pptxgenjs\".',\n })\n )\n : Type.Optional(\n Type.Union(\n PPTX_RENDERER_IDS.map((renderer) => Type.Literal(renderer)),\n {\n description: 'Renderer backend. Omitted defaults to \"pptxgenjs\".',\n }\n )\n );\n }\n\n schema.props = profile\n ? pptxPropsSchemaForRenderer(\n component.name,\n component.propsSchema,\n profile.renderer\n )\n : component.propsSchema;\n\n if (component.hasChildren && recursiveRef) {\n schema.children = Type.Optional(Type.Array(recursiveRef));\n }\n\n if (\n component.hasPlaceholders &&\n (placeholderRef ?? recursiveRef) &&\n profile?.renderer !== 'office-open'\n ) {\n const baseProperties = (schema.props 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 // Optionality is decided from the canonical definition, never from the\n // pruned/placeholder-augmented copy above: the deep validator checks the\n // canonical schema, so reading anything else here is how the published\n // schema and the runtime would start disagreeing about the same document.\n if (!pptxComponentRequiresProps(component)) {\n schema.props = Type.Optional(schema.props);\n }\n\n return Type.Object(schema, {\n additionalProperties: false,\n description: component.description,\n });\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 profile?: { renderer: PptxRendererId; requireDiscriminator: boolean }\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, profile)\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, profile)\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 // Placeholders hold what `children` holds: a named slot is a position\n // for a content component, not a second way into the tree. Passing the\n // narrowed union rather than `selfRef` is what stops the published\n // schema from accepting a `slide` — or the `pptx` root — as a\n // placeholder value, which the deep walk also refuses.\n resolved.set(\n comp.name,\n createPptxComponentSchemaObject(\n comp,\n childrenType,\n childrenType,\n profile\n )\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 { FontRegistrySchema } from '@json-to-office/shared';\nimport { TemplateSlideDefinitionSchema } from './template';\nimport { GridConfigSchema, ThemeConfigSchema } 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.Union(\n [\n Type.String({\n description: 'Theme name to apply (default: \"default\")',\n default: 'default',\n }),\n ThemeConfigSchema,\n ],\n {\n description:\n 'Theme to apply: a built-in/custom theme name (default: ' +\n '\"default\"), or an inline theme config object so the document ' +\n 'stays self-contained',\n }\n )\n ),\n fontRegistry: Type.Optional(FontRegistrySchema),\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 language: Type.Optional(\n Type.String({\n pattern: '^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$',\n description:\n 'Default presentation language (BCP-47 tag, e.g. \"en-US\"). Sets the spell-check language for all text; individual text components can override it.',\n examples: ['en-US', 'fr-FR', 'de-DE', 'it-IT', 'es-ES'],\n })\n ),\n pageNumberFormat: Type.Optional(\n Type.Union([Type.Literal('9'), Type.Literal('09')], {\n description:\n '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 {\n name: Type.Literal(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 props: propsSchema,\n },\n { additionalProperties: false }\n );\n}\n\n// Content component union — same { name, props } format as slide children\nconst TemplateObjectComponentSchema = Type.Union(\n [\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 {\n discriminator: { propertyName: 'name' },\n description:\n 'Fixed component on a template slide (same format as slide children)',\n }\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 {\n name: Type.Literal(name),\n props: Type.Partial(propsSchema, {\n description:\n 'Default props inherited by the component placed in this placeholder',\n }),\n },\n { additionalProperties: false }\n );\n}\n\nconst PlaceholderDefaultsSchema = Type.Union(\n [\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 {\n discriminator: { propertyName: 'name' },\n description: 'Partial component stub — styling defaults only',\n }\n);\n\n// Placeholder definition\nexport const PlaceholderDefinitionSchema = Type.Object(\n {\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 },\n {\n additionalProperties: false,\n description:\n 'Placeholder on a template slide — defaults is a component stub whose props are inherited by the actual component',\n }\n);\n\n// Template slide definition\nexport const TemplateSlideDefinitionSchema = Type.Object(\n {\n name: Type.String({ description: 'Unique template slide name' }),\n background: Type.Optional(SlideBackgroundSchema),\n margin: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Margin in inches (all sides)' }),\n Type.Array(Type.Number(), {\n minItems: 4,\n maxItems: 4,\n description: 'Margin [top, right, bottom, left] in inches',\n }),\n ])\n ),\n slideNumber: Type.Optional(\n Type.Object(\n {\n x: Coord,\n y: Coord,\n w: Type.Optional(Coord),\n h: Type.Optional(Coord),\n color: Type.Optional(ColorValueSchema),\n fontSize: Type.Optional(\n Type.Number({ description: 'Slide number font size in points' })\n ),\n },\n {\n additionalProperties: false,\n description: 'Slide number position and styling',\n }\n )\n ),\n objects: Type.Optional(\n Type.Array(TemplateObjectComponentSchema, {\n description:\n 'Fixed components (logos, footers, decorations) — same { name, props } format as slide children',\n })\n ),\n placeholders: Type.Optional(\n Type.Array(PlaceholderDefinitionSchema, {\n description: 'Placeholder regions for slide content',\n })\n ),\n grid: Type.Optional(GridConfigSchema),\n },\n {\n additionalProperties: false,\n description: 'Template slide definition (reusable slide template)',\n }\n);\n\nexport type PlaceholderDefinition = Static<typeof PlaceholderDefinitionSchema>;\nexport type TemplateSlideDefinition = Static<\n typeof TemplateSlideDefinitionSchema\n>;\n","/**\n * Common Types and Schemas for PPTX Components\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n ColorValueSchema,\n GradientFillSchema,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport type {\n PptxAlignment,\n VerticalAlignment,\n Shadow,\n GridPosition,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport const PositionSchema = Type.Object(\n {\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'X position as percentage (e.g., \"10%\")',\n }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Y position as percentage (e.g., \"10%\")',\n }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Width as percentage (e.g., \"80%\")',\n }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Height as percentage (e.g., \"20%\")',\n }),\n ])\n ),\n },\n {\n description: 'Position and size in inches or percentages',\n additionalProperties: false,\n }\n);\n\nexport const SlideBackgroundSchema = Type.Object(\n {\n color: Type.Optional(ColorValueSchema),\n gradient: Type.Optional(GradientFillSchema),\n image: Type.Optional(\n Type.Object(\n {\n path: Type.Optional(\n Type.String({ description: 'Image file path or URL' })\n ),\n base64: Type.Optional(\n Type.String({ description: 'Base64-encoded image data' })\n ),\n },\n { description: 'Background image', additionalProperties: false }\n )\n ),\n },\n {\n description: 'Slide background configuration',\n additionalProperties: false,\n }\n);\n\nexport const TransitionSchema = Type.Object(\n {\n type: Type.Optional(\n Type.Union(\n [\n Type.Literal('fade'),\n Type.Literal('push'),\n Type.Literal('wipe'),\n Type.Literal('zoom'),\n Type.Literal('none'),\n ],\n { description: 'Transition effect type' }\n )\n ),\n speed: Type.Optional(\n Type.Union(\n [Type.Literal('slow'), Type.Literal('medium'), Type.Literal('fast')],\n { description: 'Transition speed' }\n )\n ),\n },\n {\n description: 'Slide transition configuration',\n additionalProperties: false,\n }\n);\n\nexport type Position = Static<typeof PositionSchema>;\nexport type SlideBackground = Static<typeof SlideBackgroundSchema>;\nexport type Transition = Static<typeof TransitionSchema>;\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 meta: Type.Optional(\n Type.Object(\n {\n title: Type.Optional(\n Type.String({\n description:\n 'Authoring label for this slide, shown in editors and outlines. Never rendered — slide content is unaffected.',\n })\n ),\n },\n {\n additionalProperties: false,\n description: 'Authoring metadata; has no effect on the presentation.',\n }\n )\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","ColorValueSchema","Type","Type","Type","Type","Type"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PptxComponentDefinitionSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-F54YIK73.js";
|
|
4
4
|
|
|
5
5
|
// src/schemas/document.ts
|
|
6
6
|
var PptxJsonComponentDefinitionSchema = PptxComponentDefinitionSchema;
|
|
@@ -18,4 +18,4 @@ export {
|
|
|
18
18
|
PptxJsonComponentDefinitionSchema,
|
|
19
19
|
PPTX_JSON_SCHEMA_URLS
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-YBRH7UCF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/component-defaults.ts","../src/schemas/components/text.ts","../src/schemas/components/image.ts","../src/schemas/components/shape.ts","../src/schemas/components/table.ts","../src/schemas/components/highcharts.ts","../src/schemas/components/chart.ts"],"sourcesContent":["/**\n * PPTX Component Defaults Schemas\n *\n * Imports directly from individual component files to avoid circular deps.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\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// Create component defaults by making all fields optional (Type.Partial)\nexport const TextComponentDefaultsSchema = Type.Partial(TextPropsSchema);\nexport const ImageComponentDefaultsSchema = Type.Partial(PptxImagePropsSchema);\nexport const ShapeComponentDefaultsSchema = Type.Partial(ShapePropsSchema);\nexport const TableComponentDefaultsSchema = Type.Partial(PptxTablePropsSchema);\nexport const HighchartsComponentDefaultsSchema = Type.Partial(\n PptxHighchartsPropsSchema\n);\nexport const ChartComponentDefaultsSchema = Type.Partial(PptxChartPropsSchema);\n\nexport const PptxComponentDefaultsSchema = Type.Object(\n {\n text: Type.Optional(TextComponentDefaultsSchema),\n image: Type.Optional(ImageComponentDefaultsSchema),\n shape: Type.Optional(ShapeComponentDefaultsSchema),\n table: Type.Optional(TableComponentDefaultsSchema),\n highcharts: Type.Optional(HighchartsComponentDefaultsSchema),\n chart: Type.Optional(ChartComponentDefaultsSchema),\n },\n { additionalProperties: true }\n);\n\n// TypeScript types\nexport type TextComponentDefaults = Static<typeof TextComponentDefaultsSchema>;\nexport type ImageComponentDefaults = Static<\n typeof ImageComponentDefaultsSchema\n>;\nexport type ShapeComponentDefaults = Static<\n typeof ShapeComponentDefaultsSchema\n>;\nexport type TableComponentDefaults = Static<\n typeof TableComponentDefaultsSchema\n>;\nexport type HighchartsComponentDefaults = Static<\n typeof HighchartsComponentDefaultsSchema\n>;\nexport type ChartComponentDefaults = Static<\n typeof ChartComponentDefaultsSchema\n>;\nexport type PptxComponentDefaults = Static
|
|
1
|
+
{"version":3,"sources":["../src/schemas/component-defaults.ts","../src/schemas/components/text.ts","../src/schemas/components/image.ts","../src/schemas/components/shape.ts","../src/schemas/components/table.ts","../src/schemas/components/highcharts.ts","../src/schemas/components/chart.ts"],"sourcesContent":["/**\n * PPTX Component Defaults Schemas\n *\n * Imports directly from individual component files to avoid circular deps.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\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// Create component defaults by making all fields optional (Type.Partial)\nexport const TextComponentDefaultsSchema = Type.Partial(TextPropsSchema);\nexport const ImageComponentDefaultsSchema = Type.Partial(PptxImagePropsSchema);\nexport const ShapeComponentDefaultsSchema = Type.Partial(ShapePropsSchema);\nexport const TableComponentDefaultsSchema = Type.Partial(PptxTablePropsSchema);\nexport const HighchartsComponentDefaultsSchema = Type.Partial(\n PptxHighchartsPropsSchema\n);\nexport const ChartComponentDefaultsSchema = Type.Partial(PptxChartPropsSchema);\n\nexport const PptxComponentDefaultsSchema = Type.Object(\n {\n text: Type.Optional(TextComponentDefaultsSchema),\n image: Type.Optional(ImageComponentDefaultsSchema),\n shape: Type.Optional(ShapeComponentDefaultsSchema),\n table: Type.Optional(TableComponentDefaultsSchema),\n highcharts: Type.Optional(HighchartsComponentDefaultsSchema),\n chart: Type.Optional(ChartComponentDefaultsSchema),\n },\n { additionalProperties: true }\n);\n\n// TypeScript types\nexport type TextComponentDefaults = Static<typeof TextComponentDefaultsSchema>;\nexport type ImageComponentDefaults = Static<\n typeof ImageComponentDefaultsSchema\n>;\nexport type ShapeComponentDefaults = Static<\n typeof ShapeComponentDefaultsSchema\n>;\nexport type TableComponentDefaults = Static<\n typeof TableComponentDefaultsSchema\n>;\nexport type HighchartsComponentDefaults = Static<\n typeof HighchartsComponentDefaultsSchema\n>;\nexport type ChartComponentDefaults = Static<\n typeof ChartComponentDefaultsSchema\n>;\nexport type PptxComponentDefaults = Static<typeof PptxComponentDefaultsSchema>;\n","export {\n TextPropsSchema,\n TextRunSchema,\n} from '@json-to-office/shared/schemas/slide-content';\nexport type {\n TextProps,\n TextRun,\n} from '@json-to-office/shared/schemas/slide-content';\n","export { PptxImagePropsSchema } from '@json-to-office/shared/schemas/slide-content';\nexport type { PptxImageProps } from '@json-to-office/shared/schemas/slide-content';\n","export {\n ShapePropsSchema,\n ShapeTypeSchema,\n TextSegmentSchema,\n GradientStopSchema,\n GradientFillSchema,\n PatternFillSchema,\n PATTERN_FILL_PRESETS,\n} from '@json-to-office/shared/schemas/slide-content';\nexport type {\n ShapeProps,\n ShapeType,\n TextSegment,\n GradientStop,\n GradientFill,\n PatternFill,\n} from '@json-to-office/shared/schemas/slide-content';\n","export { PptxTablePropsSchema } from '@json-to-office/shared/schemas/slide-content';\nexport type { PptxTableProps } from '@json-to-office/shared/schemas/slide-content';\n","export { PptxHighchartsPropsSchema } from '@json-to-office/shared/schemas/slide-content';\nexport type { PptxHighchartsProps } from '@json-to-office/shared/schemas/slide-content';\n","export { PptxChartPropsSchema } from '@json-to-office/shared/schemas/slide-content';\nexport type { PptxChartProps } from '@json-to-office/shared/schemas/slide-content';\n"],"mappings":";AAMA,SAAS,YAAoB;;;ACN7B;AAAA,EACE;AAAA,EACA;AAAA,OACK;;;ACHP,SAAS,4BAA4B;;;ACArC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACRP,SAAS,4BAA4B;;;ACArC,SAAS,iCAAiC;;;ACA1C,SAAS,4BAA4B;;;ANe9B,IAAM,8BAA8B,KAAK,QAAQ,eAAe;AAChE,IAAM,+BAA+B,KAAK,QAAQ,oBAAoB;AACtE,IAAM,+BAA+B,KAAK,QAAQ,gBAAgB;AAClE,IAAM,+BAA+B,KAAK,QAAQ,oBAAoB;AACtE,IAAM,oCAAoC,KAAK;AAAA,EACpD;AACF;AACO,IAAM,+BAA+B,KAAK,QAAQ,oBAAoB;AAEtE,IAAM,8BAA8B,KAAK;AAAA,EAC9C;AAAA,IACE,MAAM,KAAK,SAAS,2BAA2B;AAAA,IAC/C,OAAO,KAAK,SAAS,4BAA4B;AAAA,IACjD,OAAO,KAAK,SAAS,4BAA4B;AAAA,IACjD,OAAO,KAAK,SAAS,4BAA4B;AAAA,IACjD,YAAY,KAAK,SAAS,iCAAiC;AAAA,IAC3D,OAAO,KAAK,SAAS,4BAA4B;AAAA,EACnD;AAAA,EACA,EAAE,sBAAsB,KAAK;AAC/B;","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PPTX_JSON_SCHEMA_URLS,
|
|
3
3
|
PptxJsonComponentDefinitionSchema
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YBRH7UCF.js";
|
|
5
5
|
import "./chunk-J4OT5Y5B.js";
|
|
6
6
|
import {
|
|
7
7
|
PptxComponentDefinitionSchema,
|
|
8
8
|
PptxSlideContentSchema,
|
|
9
9
|
PptxStandardComponentDefinitionSchema
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-F54YIK73.js";
|
|
11
11
|
import {
|
|
12
12
|
PPTX_BASE_SCHEMA_METADATA,
|
|
13
13
|
PPTX_COMPONENT_METADATA
|
|
14
14
|
} from "./chunk-RV7W3UXU.js";
|
|
15
15
|
import {
|
|
16
16
|
generateUnifiedDocumentSchema
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-EVSOXQHO.js";
|
|
18
18
|
import {
|
|
19
19
|
PPTX_STANDARD_COMPONENTS_REGISTRY,
|
|
20
20
|
PositionSchema,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
getPptxStandardComponent,
|
|
34
34
|
isPptxStandardComponent,
|
|
35
35
|
pptxComponentRequiresProps
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-TLD3Z2B2.js";
|
|
37
37
|
import {
|
|
38
38
|
DEFAULT_PPTX_RENDERER_ID,
|
|
39
39
|
PPTX_RENDERER_IDS,
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
TextStyleSchema,
|
|
49
49
|
ThemeConfigSchema,
|
|
50
50
|
isValidThemeConfig
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-CS65H3RG.js";
|
|
52
52
|
import {
|
|
53
53
|
ChartComponentDefaultsSchema,
|
|
54
54
|
GradientFillSchema,
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
TextComponentDefaultsSchema,
|
|
70
70
|
TextPropsSchema,
|
|
71
71
|
TextRunSchema
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-Z6NUHS34.js";
|
|
73
73
|
|
|
74
74
|
// src/validation/image-source-conflicts.ts
|
|
75
75
|
var IMAGE_SOURCE_FIELDS = ["path", "base64", "svg"];
|
|
@@ -220,6 +220,7 @@ declare const TableComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
220
220
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
221
221
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
222
222
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
223
|
+
headerRow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
223
224
|
autoPage: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
224
225
|
autoPageRepeatHeader: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
225
226
|
margin: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
|
|
@@ -562,6 +563,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
562
563
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
563
564
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
564
565
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
566
|
+
headerRow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
565
567
|
autoPage: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
566
568
|
autoPageRepeatHeader: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
567
569
|
margin: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
|
|
@@ -10,10 +10,10 @@ import {
|
|
|
10
10
|
getPptxStandardComponent,
|
|
11
11
|
isPptxStandardComponent,
|
|
12
12
|
pptxComponentRequiresProps
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-TLD3Z2B2.js";
|
|
14
14
|
import "../chunk-OSHLAL7B.js";
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-CS65H3RG.js";
|
|
16
|
+
import "../chunk-Z6NUHS34.js";
|
|
17
17
|
export {
|
|
18
18
|
PPTX_STANDARD_COMPONENTS_REGISTRY,
|
|
19
19
|
createAllPptxComponentSchemas,
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
PptxComponentDefinitionSchema,
|
|
3
3
|
PptxSlideContentSchema,
|
|
4
4
|
PptxStandardComponentDefinitionSchema
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-F54YIK73.js";
|
|
6
|
+
import "../chunk-TLD3Z2B2.js";
|
|
7
7
|
import "../chunk-OSHLAL7B.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-CS65H3RG.js";
|
|
9
|
+
import "../chunk-Z6NUHS34.js";
|
|
10
10
|
export {
|
|
11
11
|
PptxComponentDefinitionSchema,
|
|
12
12
|
PptxSlideContentSchema,
|
|
@@ -330,6 +330,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
330
330
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
331
331
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
332
332
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
333
|
+
headerRow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
333
334
|
autoPage: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
334
335
|
autoPageRepeatHeader: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
335
336
|
margin: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
|
|
@@ -714,6 +715,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
714
715
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
715
716
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
716
717
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
718
|
+
headerRow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
717
719
|
autoPage: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
718
720
|
autoPageRepeatHeader: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
719
721
|
margin: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
PptxComponentDefinitionSchema,
|
|
4
4
|
PptxSlideContentSchema,
|
|
5
5
|
PptxStandardComponentDefinitionSchema
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-F54YIK73.js";
|
|
7
7
|
import {
|
|
8
8
|
GridPositionSchema,
|
|
9
9
|
PositionSchema,
|
|
@@ -14,9 +14,9 @@ import {
|
|
|
14
14
|
SlidePropsSchema,
|
|
15
15
|
TransitionSchema,
|
|
16
16
|
VerticalAlignmentSchema
|
|
17
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-TLD3Z2B2.js";
|
|
18
18
|
import "../chunk-OSHLAL7B.js";
|
|
19
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-CS65H3RG.js";
|
|
20
20
|
import {
|
|
21
21
|
GradientFillSchema,
|
|
22
22
|
GradientStopSchema,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
TextPropsSchema,
|
|
31
31
|
TextRunSchema,
|
|
32
32
|
TextSegmentSchema
|
|
33
|
-
} from "../chunk-
|
|
33
|
+
} from "../chunk-Z6NUHS34.js";
|
|
34
34
|
export {
|
|
35
35
|
GradientFillSchema,
|
|
36
36
|
GradientStopSchema,
|
package/dist/schemas/document.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PPTX_JSON_SCHEMA_URLS,
|
|
3
3
|
PptxJsonComponentDefinitionSchema
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-YBRH7UCF.js";
|
|
5
5
|
import "../chunk-J4OT5Y5B.js";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-F54YIK73.js";
|
|
7
|
+
import "../chunk-TLD3Z2B2.js";
|
|
8
8
|
import "../chunk-OSHLAL7B.js";
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-CS65H3RG.js";
|
|
10
|
+
import "../chunk-Z6NUHS34.js";
|
|
11
11
|
export {
|
|
12
12
|
PPTX_JSON_SCHEMA_URLS,
|
|
13
13
|
PptxJsonComponentDefinitionSchema
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateUnifiedDocumentSchema
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-EVSOXQHO.js";
|
|
4
|
+
import "../chunk-TLD3Z2B2.js";
|
|
5
5
|
import "../chunk-OSHLAL7B.js";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-CS65H3RG.js";
|
|
7
|
+
import "../chunk-Z6NUHS34.js";
|
|
8
8
|
export {
|
|
9
9
|
generateUnifiedDocumentSchema
|
|
10
10
|
};
|
package/dist/schemas/theme.d.ts
CHANGED
|
@@ -333,6 +333,7 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
|
|
|
333
333
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
334
334
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
335
335
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
336
|
+
headerRow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
336
337
|
autoPage: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
337
338
|
autoPageRepeatHeader: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
338
339
|
margin: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
|
package/dist/schemas/theme.js
CHANGED
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
TextStyleSchema,
|
|
11
11
|
ThemeConfigSchema,
|
|
12
12
|
isValidThemeConfig
|
|
13
|
-
} from "../chunk-
|
|
14
|
-
import "../chunk-
|
|
13
|
+
} from "../chunk-CS65H3RG.js";
|
|
14
|
+
import "../chunk-Z6NUHS34.js";
|
|
15
15
|
export {
|
|
16
16
|
ColorValueSchema,
|
|
17
17
|
GridConfigSchema,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@json-to-office/shared-pptx",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "PPTX-specific schemas, component registry and validation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@sinclair/typebox": "0.34.38",
|
|
27
|
-
"@json-to-office/shared": "^1.
|
|
27
|
+
"@json-to-office/shared": "^1.5.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "20.11.0",
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
"build": "tsup",
|
|
64
64
|
"dev": "tsup --watch",
|
|
65
65
|
"clean": "rm -rf dist",
|
|
66
|
-
"lint": "eslint src
|
|
67
|
-
"lint:fix": "eslint src
|
|
68
|
-
"format": "prettier --write src/**/*.ts",
|
|
66
|
+
"lint": "eslint src --ext .ts",
|
|
67
|
+
"lint:fix": "eslint src --ext .ts --fix",
|
|
68
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
69
69
|
"typecheck": "tsc --noEmit",
|
|
70
70
|
"test": "vitest run --passWithNoTests",
|
|
71
71
|
"test:watch": "vitest",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/component-registry.ts","../src/schemas/components/presentation.ts","../src/schemas/components/template.ts","../src/schemas/components/common.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';\nimport {\n PPTX_SLIDE_CONTENT_COMPONENTS,\n pptxComponentRequiresProps,\n} from '@json-to-office/shared/schemas/slide-content';\nimport {\n PPTX_RENDERER_IDS,\n pptxPropsSchemaForRenderer,\n type PptxRendererId,\n} from './renderer';\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 /**\n * Force `props` to stay required even though the props schema accepts `{}`.\n * See `pptxComponentRequiresProps` for when that is legitimate.\n */\n propsRequired?: boolean;\n special?: {\n hasSchemaField?: boolean;\n };\n}\nimport { PresentationPropsSchema } from './components/presentation';\nimport { SlidePropsSchema } from './components/slide';\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 // Every presentation prop is optional, but the root is where a deck\n // states its title, size and theme, and both the published schema and\n // the deep validator have always demanded the key. Keeping it required\n // is a decision, not the schema's own answer, so it is declared.\n propsRequired: true,\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: PPTX_SLIDE_CONTENT_COMPONENTS.map(({ name }) => name),\n hasPlaceholders: true,\n category: 'container',\n // No `propsRequired`: every slide prop is optional and nothing outside\n // the schema asks for one, so `{ \"name\": \"slide\", \"children\": [...] }`\n // is a whole slide and the published schema says so.\n description:\n 'Slide container - groups content elements on a single slide.',\n },\n\n // Content components are canonical in @json-to-office/shared so DOCX\n // visuals can reuse the exact schemas without depending on shared-pptx.\n ...PPTX_SLIDE_CONTENT_COMPONENTS,\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 * Whether this component must carry a `props` key — the one answer both the\n * published schema and the deep validator read.\n *\n * Re-exported from `@json-to-office/shared` so the registry is the single\n * place a consumer has to look: the rule is the props schema's own (a schema\n * that accepts `{}` demands nothing) unless the definition overrides it.\n */\nexport { pptxComponentRequiresProps };\n\n// ============================================================================\n// Schema Generation Helpers\n// ============================================================================\n\nexport function createPptxComponentSchemaObject(\n component: PptxStandardComponentDefinition,\n recursiveRef?: TSchema,\n placeholderRef?: TSchema,\n profile?: { renderer: PptxRendererId; requireDiscriminator: boolean }\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 schema.renderer = profile\n ? profile.requireDiscriminator\n ? Type.Literal(profile.renderer, {\n description: 'Renderer backend for this presentation',\n })\n : Type.Optional(\n Type.Literal(profile.renderer, {\n description: 'Renderer backend. Omitted defaults to \"pptxgenjs\".',\n })\n )\n : Type.Optional(\n Type.Union(\n PPTX_RENDERER_IDS.map((renderer) => Type.Literal(renderer)),\n {\n description: 'Renderer backend. Omitted defaults to \"pptxgenjs\".',\n }\n )\n );\n }\n\n schema.props = profile\n ? pptxPropsSchemaForRenderer(\n component.name,\n component.propsSchema,\n profile.renderer\n )\n : component.propsSchema;\n\n if (component.hasChildren && recursiveRef) {\n schema.children = Type.Optional(Type.Array(recursiveRef));\n }\n\n if (\n component.hasPlaceholders &&\n (placeholderRef ?? recursiveRef) &&\n profile?.renderer !== 'office-open'\n ) {\n const baseProperties = (schema.props 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 // Optionality is decided from the canonical definition, never from the\n // pruned/placeholder-augmented copy above: the deep validator checks the\n // canonical schema, so reading anything else here is how the published\n // schema and the runtime would start disagreeing about the same document.\n if (!pptxComponentRequiresProps(component)) {\n schema.props = Type.Optional(schema.props);\n }\n\n return Type.Object(schema, {\n additionalProperties: false,\n description: component.description,\n });\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 profile?: { renderer: PptxRendererId; requireDiscriminator: boolean }\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, profile)\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, profile)\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 // Placeholders hold what `children` holds: a named slot is a position\n // for a content component, not a second way into the tree. Passing the\n // narrowed union rather than `selfRef` is what stops the published\n // schema from accepting a `slide` — or the `pptx` root — as a\n // placeholder value, which the deep walk also refuses.\n resolved.set(\n comp.name,\n createPptxComponentSchemaObject(\n comp,\n childrenType,\n childrenType,\n profile\n )\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 { FontRegistrySchema } from '@json-to-office/shared';\nimport { TemplateSlideDefinitionSchema } from './template';\nimport { GridConfigSchema, ThemeConfigSchema } 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.Union(\n [\n Type.String({\n description: 'Theme name to apply (default: \"default\")',\n default: 'default',\n }),\n ThemeConfigSchema,\n ],\n {\n description:\n 'Theme to apply: a built-in/custom theme name (default: ' +\n '\"default\"), or an inline theme config object so the document ' +\n 'stays self-contained',\n }\n )\n ),\n fontRegistry: Type.Optional(FontRegistrySchema),\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 language: Type.Optional(\n Type.String({\n pattern: '^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$',\n description:\n 'Default presentation language (BCP-47 tag, e.g. \"en-US\"). Sets the spell-check language for all text; individual text components can override it.',\n examples: ['en-US', 'fr-FR', 'de-DE', 'it-IT', 'es-ES'],\n })\n ),\n pageNumberFormat: Type.Optional(\n Type.Union([Type.Literal('9'), Type.Literal('09')], {\n description:\n '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 * Common Types and Schemas for PPTX Components\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n ColorValueSchema,\n GradientFillSchema,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport type {\n PptxAlignment,\n VerticalAlignment,\n Shadow,\n GridPosition,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport const PositionSchema = Type.Object(\n {\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'X position as percentage (e.g., \"10%\")',\n }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Y position as percentage (e.g., \"10%\")',\n }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Width as percentage (e.g., \"80%\")',\n }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Height as percentage (e.g., \"20%\")',\n }),\n ])\n ),\n },\n {\n description: 'Position and size in inches or percentages',\n additionalProperties: false,\n }\n);\n\nexport const SlideBackgroundSchema = Type.Object(\n {\n color: Type.Optional(ColorValueSchema),\n gradient: Type.Optional(GradientFillSchema),\n image: Type.Optional(\n Type.Object(\n {\n path: Type.Optional(\n Type.String({ description: 'Image file path or URL' })\n ),\n base64: Type.Optional(\n Type.String({ description: 'Base64-encoded image data' })\n ),\n },\n { description: 'Background image', additionalProperties: false }\n )\n ),\n },\n {\n description: 'Slide background configuration',\n additionalProperties: false,\n }\n);\n\nexport const TransitionSchema = Type.Object(\n {\n type: Type.Optional(\n Type.Union(\n [\n Type.Literal('fade'),\n Type.Literal('push'),\n Type.Literal('wipe'),\n Type.Literal('zoom'),\n Type.Literal('none'),\n ],\n { description: 'Transition effect type' }\n )\n ),\n speed: Type.Optional(\n Type.Union(\n [Type.Literal('slow'), Type.Literal('medium'), Type.Literal('fast')],\n { description: 'Transition speed' }\n )\n ),\n },\n {\n description: 'Slide transition configuration',\n additionalProperties: false,\n }\n);\n\nexport type Position = Static<typeof PositionSchema>;\nexport type SlideBackground = Static<typeof SlideBackgroundSchema>;\nexport type Transition = Static<typeof TransitionSchema>;\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 meta: Type.Optional(\n Type.Object(\n {\n title: Type.Optional(\n Type.String({\n description:\n 'Authoring label for this slide, shown in editors and outlines. Never rendered — slide content is unaffected.',\n })\n ),\n },\n {\n additionalProperties: false,\n description: 'Authoring metadata; has no effect on the presentation.',\n }\n )\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","ColorValueSchema","Type","Type","Type","Type","Type"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|