@json-to-office/shared-pptx 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PptxComponentDefinitionSchema
3
- } from "./chunk-SXIHWIJB.js";
3
+ } from "./chunk-BJP72XV3.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-PGUWE3H7.js.map
21
+ //# sourceMappingURL=chunk-2R6VYDG2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  createAllPptxComponentSchemasNarrowed,
4
4
  createPptxComponentSchemaObject,
5
5
  getPptxContentComponents
6
- } from "./chunk-JPEJEULS.js";
6
+ } from "./chunk-UVET7RT3.js";
7
7
 
8
8
  // src/schemas/component-union.ts
9
9
  import { Type } from "@sinclair/typebox";
@@ -34,4 +34,4 @@ export {
34
34
  PptxComponentDefinitionSchema,
35
35
  PptxSlideContentSchema
36
36
  };
37
- //# sourceMappingURL=chunk-SXIHWIJB.js.map
37
+ //# sourceMappingURL=chunk-BJP72XV3.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAllPptxComponentSchemasNarrowed,
3
3
  createPptxComponentSchemaObject
4
- } from "./chunk-JPEJEULS.js";
4
+ } from "./chunk-UVET7RT3.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-BGV5BVEG.js.map
42
+ //# sourceMappingURL=chunk-GUSMSJT6.js.map
@@ -291,25 +291,37 @@ var TextPropsSchema = Type3.Object(
291
291
  x: Type3.Optional(
292
292
  Type3.Union([
293
293
  Type3.Number({ description: "X position in inches" }),
294
- Type3.String({ pattern: "^\\d+(\\.\\d+)?%$", description: "X as percentage" })
294
+ Type3.String({
295
+ pattern: "^\\d+(\\.\\d+)?%$",
296
+ description: "X as percentage"
297
+ })
295
298
  ])
296
299
  ),
297
300
  y: Type3.Optional(
298
301
  Type3.Union([
299
302
  Type3.Number({ description: "Y position in inches" }),
300
- Type3.String({ pattern: "^\\d+(\\.\\d+)?%$", description: "Y as percentage" })
303
+ Type3.String({
304
+ pattern: "^\\d+(\\.\\d+)?%$",
305
+ description: "Y as percentage"
306
+ })
301
307
  ])
302
308
  ),
303
309
  w: Type3.Optional(
304
310
  Type3.Union([
305
311
  Type3.Number({ description: "Width in inches" }),
306
- Type3.String({ pattern: "^\\d+(\\.\\d+)?%$", description: "Width as percentage" })
312
+ Type3.String({
313
+ pattern: "^\\d+(\\.\\d+)?%$",
314
+ description: "Width as percentage"
315
+ })
307
316
  ])
308
317
  ),
309
318
  h: Type3.Optional(
310
319
  Type3.Union([
311
320
  Type3.Number({ description: "Height in inches" }),
312
- Type3.String({ pattern: "^\\d+(\\.\\d+)?%$", description: "Height as percentage" })
321
+ Type3.String({
322
+ pattern: "^\\d+(\\.\\d+)?%$",
323
+ description: "Height as percentage"
324
+ })
313
325
  ])
314
326
  ),
315
327
  fontSize: Type3.Optional(
@@ -341,13 +353,22 @@ var TextPropsSchema = Type3.Object(
341
353
  Type3.Literal("dotted")
342
354
  ])
343
355
  ),
344
- color: Type3.Optional(Type3.String({ description: "Underline color (hex)" }))
356
+ color: Type3.Optional(
357
+ Type3.String({ description: "Underline color (hex)" })
358
+ )
345
359
  },
346
360
  { additionalProperties: false }
347
361
  )
348
362
  ])
349
363
  ),
350
364
  strike: Type3.Optional(Type3.Boolean({ description: "Strikethrough text" })),
365
+ language: Type3.Optional(
366
+ Type3.String({
367
+ pattern: "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
368
+ description: 'Language tag (BCP-47, e.g. "en-US", "fr-FR") for spell-checking this text. Overrides the presentation default.',
369
+ examples: ["en-US", "fr-FR", "de-DE", "it-IT", "es-ES"]
370
+ })
371
+ ),
351
372
  align: Type3.Optional(PptxAlignmentSchema),
352
373
  valign: Type3.Optional(VerticalAlignmentSchema),
353
374
  breakLine: Type3.Optional(
@@ -361,8 +382,12 @@ var TextPropsSchema = Type3.Object(
361
382
  type: Type3.Optional(
362
383
  Type3.Union([Type3.Literal("bullet"), Type3.Literal("number")])
363
384
  ),
364
- style: Type3.Optional(Type3.String({ description: "Bullet character or style" })),
365
- startAt: Type3.Optional(Type3.Number({ description: "Starting number for numbered lists" }))
385
+ style: Type3.Optional(
386
+ Type3.String({ description: "Bullet character or style" })
387
+ ),
388
+ startAt: Type3.Optional(
389
+ Type3.Number({ description: "Starting number for numbered lists" })
390
+ )
366
391
  },
367
392
  { additionalProperties: false }
368
393
  )
@@ -378,14 +403,20 @@ var TextPropsSchema = Type3.Object(
378
403
  })
379
404
  ])
380
405
  ),
381
- rotate: Type3.Optional(Type3.Number({ description: "Rotation angle in degrees" })),
406
+ rotate: Type3.Optional(
407
+ Type3.Number({ description: "Rotation angle in degrees" })
408
+ ),
382
409
  shadow: Type3.Optional(ShadowSchema),
383
410
  fill: Type3.Optional(
384
411
  Type3.Object(
385
412
  {
386
413
  color: Type3.String({ description: "Fill color (hex without #)" }),
387
414
  transparency: Type3.Optional(
388
- Type3.Number({ minimum: 0, maximum: 100, description: "Fill transparency (0-100)" })
415
+ Type3.Number({
416
+ minimum: 0,
417
+ maximum: 100,
418
+ description: "Fill transparency (0-100)"
419
+ })
389
420
  )
390
421
  },
391
422
  { additionalProperties: false }
@@ -395,16 +426,30 @@ var TextPropsSchema = Type3.Object(
395
426
  Type3.Object(
396
427
  {
397
428
  url: Type3.Optional(Type3.String({ description: "Hyperlink URL" })),
398
- slide: Type3.Optional(Type3.Number({ description: "Slide number to link to" })),
399
- tooltip: Type3.Optional(Type3.String({ description: "Hyperlink tooltip" }))
429
+ slide: Type3.Optional(
430
+ Type3.Number({ description: "Slide number to link to" })
431
+ ),
432
+ tooltip: Type3.Optional(
433
+ Type3.String({ description: "Hyperlink tooltip" })
434
+ )
400
435
  },
401
436
  { additionalProperties: false }
402
437
  )
403
438
  ),
404
- lineSpacing: Type3.Optional(Type3.Number({ description: "Line spacing in points" })),
405
- charSpacing: Type3.Optional(Type3.Number({ description: "Character spacing in points (positive = wider, negative = tighter)" })),
406
- paraSpaceBefore: Type3.Optional(Type3.Number({ description: "Space before paragraph in points" })),
407
- paraSpaceAfter: Type3.Optional(Type3.Number({ description: "Space after paragraph in points" })),
439
+ lineSpacing: Type3.Optional(
440
+ Type3.Number({ description: "Line spacing in points" })
441
+ ),
442
+ charSpacing: Type3.Optional(
443
+ Type3.Number({
444
+ description: "Character spacing in points (positive = wider, negative = tighter)"
445
+ })
446
+ ),
447
+ paraSpaceBefore: Type3.Optional(
448
+ Type3.Number({ description: "Space before paragraph in points" })
449
+ ),
450
+ paraSpaceAfter: Type3.Optional(
451
+ Type3.Number({ description: "Space after paragraph in points" })
452
+ ),
408
453
  grid: Type3.Optional(GridPositionSchema),
409
454
  style: Type3.Optional(StyleNameSchema)
410
455
  },
@@ -1054,4 +1099,4 @@ export {
1054
1099
  ShadowSchema,
1055
1100
  GridPositionSchema
1056
1101
  };
1057
- //# sourceMappingURL=chunk-BSPBG4E7.js.map
1102
+ //# sourceMappingURL=chunk-STLETJGO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schemas/component-defaults.ts","../src/schemas/components/text.ts","../src/schemas/components/common.ts","../src/schemas/theme.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<\n typeof PptxComponentDefaultsSchema\n>;\n","/**\n * Text Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontFamilyNameSchema } from '@json-to-office/shared';\nimport {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} from './common';\nimport { StyleNameSchema } from '../theme';\n\nexport const TextPropsSchema = Type.Object(\n {\n text: Type.String({ description: 'Text content to display' }),\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 as percentage',\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 as percentage',\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',\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',\n }),\n ])\n ),\n fontSize: Type.Optional(\n Type.Number({ minimum: 1, description: 'Font size in points' })\n ),\n fontFace: Type.Optional(FontFamilyNameSchema),\n color: Type.Optional(\n Type.String({ description: 'Text color (hex without #, e.g., \"FF0000\")' })\n ),\n bold: Type.Optional(Type.Boolean({ description: 'Bold text' })),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Per-run weight (100–900). Renderer picks the closest embedded variant via CSS font-matching and references it through a synthetic family alias. Overrides `bold` when set.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic text' })),\n underline: Type.Optional(\n Type.Union([\n Type.Boolean({ description: 'Simple underline toggle' }),\n Type.Object(\n {\n style: Type.Optional(\n Type.Union([\n Type.Literal('sng'),\n Type.Literal('dbl'),\n Type.Literal('dash'),\n Type.Literal('dotted'),\n ])\n ),\n color: Type.Optional(\n Type.String({ description: 'Underline color (hex)' })\n ),\n },\n { additionalProperties: false }\n ),\n ])\n ),\n strike: Type.Optional(Type.Boolean({ description: 'Strikethrough text' })),\n language: Type.Optional(\n Type.String({\n pattern: '^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$',\n description:\n 'Language tag (BCP-47, e.g. \"en-US\", \"fr-FR\") for spell-checking this text. Overrides the presentation default.',\n examples: ['en-US', 'fr-FR', 'de-DE', 'it-IT', 'es-ES'],\n })\n ),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n breakLine: Type.Optional(\n Type.Boolean({ description: 'Add line break after text' })\n ),\n bullet: Type.Optional(\n Type.Union([\n Type.Boolean({ description: 'Enable default bullet' }),\n Type.Object(\n {\n type: Type.Optional(\n Type.Union([Type.Literal('bullet'), Type.Literal('number')])\n ),\n style: Type.Optional(\n Type.String({ description: 'Bullet character or style' })\n ),\n startAt: Type.Optional(\n Type.Number({ description: 'Starting number for numbered lists' })\n ),\n },\n { additionalProperties: false }\n ),\n ])\n ),\n margin: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Margin in points (all sides)' }),\n Type.Array(Type.Number(), {\n description: 'Margins as [top, right, bottom, left] in points',\n minItems: 4,\n maxItems: 4,\n }),\n ])\n ),\n rotate: Type.Optional(\n Type.Number({ description: 'Rotation angle in degrees' })\n ),\n shadow: Type.Optional(ShadowSchema),\n fill: Type.Optional(\n Type.Object(\n {\n color: Type.String({ description: 'Fill color (hex without #)' }),\n transparency: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 100,\n description: 'Fill transparency (0-100)',\n })\n ),\n },\n { additionalProperties: false }\n )\n ),\n hyperlink: Type.Optional(\n Type.Object(\n {\n url: Type.Optional(Type.String({ description: 'Hyperlink URL' })),\n slide: Type.Optional(\n Type.Number({ description: 'Slide number to link to' })\n ),\n tooltip: Type.Optional(\n Type.String({ description: 'Hyperlink tooltip' })\n ),\n },\n { additionalProperties: false }\n )\n ),\n lineSpacing: Type.Optional(\n Type.Number({ description: 'Line spacing in points' })\n ),\n charSpacing: Type.Optional(\n Type.Number({\n description:\n 'Character spacing in points (positive = wider, negative = tighter)',\n })\n ),\n paraSpaceBefore: Type.Optional(\n Type.Number({ description: 'Space before paragraph in points' })\n ),\n paraSpaceAfter: Type.Optional(\n Type.Number({ description: 'Space after paragraph in points' })\n ),\n grid: Type.Optional(GridPositionSchema),\n style: Type.Optional(StyleNameSchema),\n },\n {\n description: 'Text component props',\n additionalProperties: false,\n }\n);\n\nexport type TextProps = Static<typeof TextPropsSchema>;\n","/**\n * Common Types and Schemas for PPTX Components\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { ColorValueSchema } from '../theme';\n\n// ============================================================================\n// PPTX-Specific Common Types\n// ============================================================================\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 image: Type.Optional(\n Type.Object(\n {\n path: Type.Optional(Type.String({ description: 'Image file path or URL' })),\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 const PptxAlignmentSchema = Type.Union(\n [Type.Literal('left'), Type.Literal('center'), Type.Literal('right')],\n { description: 'Horizontal alignment options' }\n);\n\nexport const VerticalAlignmentSchema = Type.Union(\n [Type.Literal('top'), Type.Literal('middle'), Type.Literal('bottom')],\n { description: 'Vertical alignment options' }\n);\n\nexport const ShadowSchema = Type.Object(\n {\n type: Type.Optional(\n Type.Union([Type.Literal('outer'), Type.Literal('inner')], {\n description: 'Shadow type',\n })\n ),\n color: Type.Optional(ColorValueSchema),\n blur: Type.Optional(Type.Number({ description: 'Shadow blur radius in points' })),\n offset: Type.Optional(Type.Number({ description: 'Shadow offset in points' })),\n angle: Type.Optional(Type.Number({ description: 'Shadow angle in degrees' })),\n opacity: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 1,\n description: 'Shadow opacity (0-1)',\n })\n ),\n },\n {\n description: 'Shadow configuration',\n additionalProperties: false,\n }\n);\n\nexport const GridPositionSchema = Type.Object(\n {\n column: Type.Number({ minimum: 0, description: 'Starting column (0-indexed)' }),\n row: Type.Number({ minimum: 0, description: 'Starting row (0-indexed)' }),\n columnSpan: Type.Optional(Type.Number({ minimum: 1, description: 'Number of columns to span (default: 1)' })),\n rowSpan: Type.Optional(Type.Number({ minimum: 1, description: 'Number of rows to span (default: 1)' })),\n },\n { additionalProperties: false, description: 'Grid-based positioning' }\n);\n\nexport type GridPosition = Static<typeof GridPositionSchema>;\n\n// ============================================================================\n// TypeScript Types\n// ============================================================================\n\nexport type Position = Static<typeof PositionSchema>;\nexport type SlideBackground = Static<typeof SlideBackgroundSchema>;\nexport type Transition = Static<typeof TransitionSchema>;\nexport type PptxAlignment = Static<typeof PptxAlignmentSchema>;\nexport type VerticalAlignment = Static<typeof VerticalAlignmentSchema>;\nexport type Shadow = Static<typeof ShadowSchema>;\n","/**\n * PPTX Theme Schema\n * Simplified theme configuration for presentations\n */\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontFamilyNameSchema } from '@json-to-office/shared';\nimport { PptxComponentDefaultsSchema } from './component-defaults';\n\nexport const GridMarginSchema = Type.Union(\n [\n Type.Number({ description: 'Margin in inches (all sides)' }),\n Type.Object(\n {\n top: Type.Number({ description: 'Top margin in inches' }),\n right: Type.Number({ description: 'Right margin in inches' }),\n bottom: Type.Number({ description: 'Bottom margin in inches' }),\n left: Type.Number({ description: 'Left margin in inches' }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Slide margins in inches' }\n);\n\nexport const GridGutterSchema = Type.Union(\n [\n Type.Number({ description: 'Gutter in inches (both axes)' }),\n Type.Object(\n {\n column: Type.Number({ description: 'Column gutter in inches' }),\n row: Type.Number({ description: 'Row gutter in inches' }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Gaps between grid tracks in inches' }\n);\n\nexport const GridConfigSchema = Type.Object(\n {\n columns: Type.Optional(Type.Number({ minimum: 1, description: 'Number of columns (default: 12)' })),\n rows: Type.Optional(Type.Number({ minimum: 1, description: 'Number of rows (default: 6)' })),\n margin: Type.Optional(GridMarginSchema),\n gutter: Type.Optional(GridGutterSchema),\n },\n { additionalProperties: false, description: 'Grid layout configuration' }\n);\n\nexport type GridMargin = Static<typeof GridMarginSchema>;\nexport type GridGutter = Static<typeof GridGutterSchema>;\nexport type GridConfig = Static<typeof GridConfigSchema>;\n\nconst HexColorSchema = Type.String({ pattern: '^#?[0-9A-Fa-f]{6}$', description: 'Hex color (e.g. #FF0000)' });\n\nexport const SEMANTIC_COLOR_NAMES = [\n 'primary', 'secondary', 'accent', 'background', 'text',\n 'text2', 'background2', 'accent4', 'accent5', 'accent6',\n] as const;\n\n/** PowerPoint XML aliases that resolve to canonical semantic names at runtime */\nexport const SEMANTIC_COLOR_ALIASES = [\n 'accent1', 'accent2', 'accent3', 'tx1', 'tx2', 'bg1', 'bg2',\n] as const;\n\nexport const ColorValueSchema = Type.Union([\n HexColorSchema,\n ...SEMANTIC_COLOR_NAMES.map(n => Type.Literal(n)),\n ...SEMANTIC_COLOR_ALIASES.map(n => Type.Literal(n)),\n], { description: 'Hex color or semantic theme color name' });\n\n// ── Named text styles ──────────────────────────────────────────────\n\nexport const STYLE_NAMES = [\n 'title', 'subtitle',\n 'heading1', 'heading2', 'heading3',\n 'body', 'caption',\n] as const;\n\nexport const StyleNameSchema = Type.Union(\n STYLE_NAMES.map(n => Type.Literal(n)),\n { description: 'Predefined style name' }\n);\n\nexport const TextStyleSchema = Type.Object({\n fontSize: Type.Optional(Type.Number()),\n fontFace: Type.Optional(FontFamilyNameSchema),\n fontColor: Type.Optional(ColorValueSchema),\n bold: Type.Optional(Type.Boolean()),\n fontWeight: Type.Optional(Type.Integer({ minimum: 100, maximum: 900 })),\n italic: Type.Optional(Type.Boolean()),\n align: Type.Optional(Type.Union([\n Type.Literal('left'), Type.Literal('center'), Type.Literal('right'), Type.Literal('justify'),\n ])),\n lineSpacing: Type.Optional(Type.Number()),\n charSpacing: Type.Optional(Type.Number()),\n paraSpaceAfter: Type.Optional(Type.Number()),\n}, { additionalProperties: false, description: 'Text style preset' });\n\nexport type StyleName = (typeof STYLE_NAMES)[number];\nexport type TextStyle = Static<typeof TextStyleSchema>;\n\n// ── Theme config ───────────────────────────────────────────────────\n\nexport const ThemeConfigSchema = Type.Object(\n {\n name: Type.String({ description: 'Theme name' }),\n colors: Type.Object(\n {\n primary: HexColorSchema,\n secondary: HexColorSchema,\n accent: HexColorSchema,\n background: HexColorSchema,\n text: HexColorSchema,\n text2: Type.Optional(HexColorSchema),\n background2: Type.Optional(HexColorSchema),\n accent4: Type.Optional(HexColorSchema),\n accent5: Type.Optional(HexColorSchema),\n accent6: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false, description: 'Theme color palette (10-slot scheme)' }\n ),\n fonts: Type.Object(\n {\n heading: FontFamilyNameSchema,\n body: FontFamilyNameSchema,\n },\n { additionalProperties: false, description: 'Font families' }\n ),\n defaults: Type.Object(\n {\n fontSize: Type.Number({ description: 'Default font size in points' }),\n fontColor: HexColorSchema,\n },\n { additionalProperties: false, description: 'Default text styling' }\n ),\n styles: Type.Optional(Type.Partial(\n Type.Object(Object.fromEntries(\n STYLE_NAMES.map(n => [n, TextStyleSchema])\n ) as Record<string, typeof TextStyleSchema>),\n { additionalProperties: false, description: 'Named text style presets' }\n )),\n componentDefaults: Type.Optional(PptxComponentDefaultsSchema),\n },\n { additionalProperties: false, description: 'Presentation theme configuration' }\n);\n\nexport type ThemeConfigJson = Static<typeof ThemeConfigSchema>;\n\nexport function isValidThemeConfig(data: unknown): data is ThemeConfigJson {\n return typeof data === 'object' && data !== null;\n}\n","/**\n * Image Component Schema (PPTX)\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { ShadowSchema, GridPositionSchema } from './common';\n\nexport const PptxImagePropsSchema = Type.Object(\n {\n path: Type.Optional(\n Type.String({\n description:\n 'Image file path or URL (mutually exclusive with base64 and svg)',\n })\n ),\n base64: Type.Optional(\n Type.String({\n description:\n 'Base64-encoded image data in data URI format (mutually exclusive with path and svg)',\n })\n ),\n svg: Type.Optional(\n Type.String({\n description:\n 'Raw inline SVG markup, e.g. \"<svg xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\" viewBox=\\\\\"0 0 24 24\\\\\">...</svg>\" (mutually exclusive with path and base64). Wrapped into an image/svg+xml data URI and embedded as a vector (PowerPoint 2016+); intrinsic size taken from the SVG viewBox/width/height when w/h omitted.',\n })\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 as percentage',\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 as percentage',\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',\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',\n }),\n ])\n ),\n sizing: Type.Optional(\n Type.Object(\n {\n type: Type.Union(\n [\n Type.Literal('contain'),\n Type.Literal('cover'),\n Type.Literal('crop'),\n ],\n { description: 'Image sizing strategy' }\n ),\n w: Type.Optional(\n Type.Number({ description: 'Target width in inches' })\n ),\n h: Type.Optional(\n Type.Number({ description: 'Target height in inches' })\n ),\n },\n { description: 'Image sizing options', additionalProperties: false }\n )\n ),\n rotate: Type.Optional(\n Type.Number({ description: 'Rotation angle in degrees' })\n ),\n rounding: Type.Optional(\n Type.Boolean({ description: 'Apply rounded corners to image' })\n ),\n shadow: Type.Optional(ShadowSchema),\n hyperlink: Type.Optional(\n Type.Object(\n {\n url: Type.Optional(Type.String({ description: 'Hyperlink URL' })),\n slide: Type.Optional(\n Type.Number({ description: 'Slide number to link to' })\n ),\n tooltip: Type.Optional(\n Type.String({ description: 'Hyperlink tooltip' })\n ),\n },\n { additionalProperties: false }\n )\n ),\n alt: Type.Optional(\n Type.String({ description: 'Alternative text for accessibility' })\n ),\n grid: Type.Optional(GridPositionSchema),\n },\n {\n description: 'PPTX image component props',\n additionalProperties: false,\n }\n);\n\nexport type PptxImageProps = Static<typeof PptxImagePropsSchema>;\n","/**\n * Shape Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { PptxAlignmentSchema, VerticalAlignmentSchema, ShadowSchema, GridPositionSchema } from './common';\nimport { StyleNameSchema } from '../theme';\n\nexport const ShapeTypeSchema = Type.Union(\n [\n Type.Literal('rect'),\n Type.Literal('roundRect'),\n Type.Literal('ellipse'),\n Type.Literal('triangle'),\n Type.Literal('diamond'),\n Type.Literal('pentagon'),\n Type.Literal('hexagon'),\n Type.Literal('star5'),\n Type.Literal('star6'),\n Type.Literal('line'),\n Type.Literal('arrow'),\n Type.Literal('chevron'),\n Type.Literal('cloud'),\n Type.Literal('heart'),\n Type.Literal('lightning'),\n ],\n { description: 'Shape type' }\n);\n\nexport const TextSegmentSchema = Type.Object(\n {\n text: Type.String(),\n fontSize: Type.Optional(Type.Number({ minimum: 1 })),\n fontFace: Type.Optional(Type.String()),\n color: Type.Optional(Type.String({ description: 'Segment color (hex without # or semantic name)' })),\n bold: Type.Optional(Type.Boolean()),\n fontWeight: Type.Optional(Type.Integer({ minimum: 100, maximum: 900 })),\n italic: Type.Optional(Type.Boolean()),\n breakLine: Type.Optional(Type.Boolean({ description: 'Insert line break after this segment' })),\n spaceBefore: Type.Optional(Type.Number({ minimum: 0, description: 'Space before paragraph in points' })),\n spaceAfter: Type.Optional(Type.Number({ minimum: 0, description: 'Space after paragraph in points' })),\n charSpacing: Type.Optional(Type.Number({ description: 'Character spacing in points' })),\n },\n { additionalProperties: false }\n);\n\nexport type TextSegment = Static<typeof TextSegmentSchema>;\n\nexport const ShapePropsSchema = Type.Object(\n {\n type: ShapeTypeSchema,\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'X as percentage' }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Y as percentage' }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Width as percentage' }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Height as percentage' }),\n ])\n ),\n fill: Type.Optional(\n Type.Object(\n {\n color: Type.String({ description: 'Fill color (hex without #)' }),\n transparency: Type.Optional(\n Type.Number({ minimum: 0, maximum: 100, description: 'Fill transparency (0-100)' })\n ),\n },\n { additionalProperties: false }\n )\n ),\n line: Type.Optional(\n Type.Object(\n {\n color: Type.Optional(Type.String({ description: 'Line color (hex without #)' })),\n width: Type.Optional(Type.Number({ minimum: 0, description: 'Line width in points' })),\n dashType: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dash'),\n Type.Literal('dot'),\n Type.Literal('dashDot'),\n ])\n ),\n },\n { additionalProperties: false }\n )\n ),\n text: Type.Optional(Type.Union([\n Type.String({ description: 'Plain text' }),\n Type.Array(TextSegmentSchema, { description: 'Rich text segments with per-segment formatting' }),\n ], { description: 'Text content inside the shape' })),\n fontSize: Type.Optional(Type.Number({ minimum: 1, description: 'Font size for shape text' })),\n fontFace: Type.Optional(Type.String({ description: 'Font family for shape text' })),\n fontColor: Type.Optional(Type.String({ description: 'Font color for shape text (hex without #)' })),\n charSpacing: Type.Optional(Type.Number({ description: 'Character spacing in points for shape text' })),\n bold: Type.Optional(Type.Boolean({ description: 'Bold shape text' })),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Per-shape weight (100–900). Overrides `bold` when set.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic shape text' })),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n rotate: Type.Optional(Type.Number({ description: 'Rotation angle in degrees' })),\n shadow: Type.Optional(ShadowSchema),\n rectRadius: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Corner radius for roundRect shape in inches',\n })\n ),\n grid: Type.Optional(GridPositionSchema),\n style: Type.Optional(StyleNameSchema),\n },\n {\n description: 'Shape component props',\n additionalProperties: false,\n }\n);\n\nexport type ShapeType = Static<typeof ShapeTypeSchema>;\nexport type ShapeProps = Static<typeof ShapePropsSchema>;\n","/**\n * Table Component Schema (PPTX)\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { PptxAlignmentSchema, VerticalAlignmentSchema, GridPositionSchema } from './common';\n\nconst PptxTableCellSchema = Type.Union([\n Type.String({ description: 'Simple text cell' }),\n Type.Object(\n {\n text: Type.String({ description: 'Cell text content' }),\n color: Type.Optional(Type.String({ description: 'Text color (hex without #)' })),\n fill: Type.Optional(Type.String({ description: 'Cell background color (hex without #)' })),\n fontSize: Type.Optional(Type.Number({ description: 'Font size in points' })),\n fontFace: Type.Optional(Type.String({ description: 'Font family' })),\n bold: Type.Optional(Type.Boolean({ description: 'Bold text' })),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description: 'Per-cell weight (100–900). Overrides `bold` when set.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic text' })),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n colspan: Type.Optional(Type.Number({ minimum: 1, description: 'Column span' })),\n rowspan: Type.Optional(Type.Number({ minimum: 1, description: 'Row span' })),\n margin: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Margin in points (all sides)' }),\n Type.Array(Type.Number(), { minItems: 4, maxItems: 4 }),\n ])\n ),\n },\n { additionalProperties: false }\n ),\n]);\n\nexport const PptxTablePropsSchema = Type.Object(\n {\n rows: Type.Array(\n Type.Array(PptxTableCellSchema, { description: 'Row of cells' }),\n { description: 'Table rows (array of arrays)', minItems: 1 }\n ),\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'X as percentage' }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Y as percentage' }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Width as percentage' }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Height as percentage' }),\n ])\n ),\n colW: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Uniform column width in inches' }),\n Type.Array(Type.Number(), { description: 'Individual column widths in inches' }),\n ])\n ),\n rowH: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Uniform row height in inches' }),\n Type.Array(Type.Number(), { description: 'Individual row heights in inches' }),\n ])\n ),\n border: Type.Optional(\n Type.Object(\n {\n type: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dash'),\n Type.Literal('dot'),\n Type.Literal('none'),\n ])\n ),\n pt: Type.Optional(Type.Number({ minimum: 0, description: 'Border width in points' })),\n color: Type.Optional(Type.String({ description: 'Border color (hex without #)' })),\n },\n { additionalProperties: false }\n )\n ),\n fill: Type.Optional(Type.String({ description: 'Table background color (hex without #)' })),\n fontSize: Type.Optional(Type.Number({ minimum: 1, description: 'Default font size for all cells' })),\n fontFace: Type.Optional(Type.String({ description: 'Default font family for all cells' })),\n color: Type.Optional(Type.String({ description: 'Default text color for all cells (hex without #)' })),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n autoPage: Type.Optional(\n Type.Boolean({ description: 'Auto-paginate table across multiple slides when content overflows' })\n ),\n autoPageRepeatHeader: Type.Optional(\n Type.Boolean({ description: 'Repeat first row as header on each auto-paged slide' })\n ),\n margin: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Cell margin in points (all sides)' }),\n Type.Array(Type.Number(), { minItems: 4, maxItems: 4 }),\n ])\n ),\n borderRadius: Type.Optional(\n Type.Number({ minimum: 0, description: 'Rounded corner radius in inches. Renders a roundRect shape behind the table.' })\n ),\n grid: Type.Optional(GridPositionSchema),\n },\n {\n description: 'PPTX table component props',\n additionalProperties: false,\n }\n);\n\nexport type PptxTableProps = Static<typeof PptxTablePropsSchema>;\n","/**\n * Highcharts Component Schema (PPTX)\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { GridPositionSchema } from './common';\n\nexport const PptxHighchartsPropsSchema = Type.Object(\n {\n options: Type.Intersect([\n Type.Record(Type.String(), Type.Unknown()),\n Type.Object({\n chart: Type.Object({\n width: Type.Number(),\n height: Type.Number(),\n }),\n }),\n ]),\n scale: Type.Optional(Type.Number()),\n serverUrl: Type.Optional(\n Type.String({\n description:\n 'Highcharts Export Server URL (default: http://localhost:7801)',\n })\n ),\n // Optional resources forwarded verbatim to the export server (CSS/JS/files).\n // Notably enables @font-face rules so charts render in custom fonts.\n resources: Type.Optional(\n Type.Object({\n css: Type.Optional(Type.String()),\n js: Type.Optional(Type.String()),\n files: Type.Optional(Type.Array(Type.String())),\n })\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 as percentage',\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 as percentage',\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',\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',\n }),\n ])\n ),\n grid: Type.Optional(GridPositionSchema),\n },\n {\n description: 'PPTX Highcharts component props',\n additionalProperties: false,\n }\n);\n\nexport type PptxHighchartsProps = Static<typeof PptxHighchartsPropsSchema>;\n","/**\n * Chart Component Schema (PPTX) — native PowerPoint charts via pptxgenjs\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { GridPositionSchema } from './common';\n\nconst PositionValue = Type.Union([\n Type.Number(),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$' }),\n]);\n\nconst ChartTypeSchema = Type.Union(\n [\n Type.Literal('area'),\n Type.Literal('bar'),\n Type.Literal('bar3D'),\n Type.Literal('bubble'),\n Type.Literal('doughnut'),\n Type.Literal('line'),\n Type.Literal('pie'),\n Type.Literal('radar'),\n Type.Literal('scatter'),\n ],\n { description: 'Chart type' }\n);\n\nconst ChartDataSeriesSchema = Type.Object(\n {\n name: Type.Optional(Type.String({ description: 'Series name' })),\n labels: Type.Optional(Type.Array(Type.String(), { description: 'Category labels' })),\n values: Type.Optional(Type.Array(Type.Number(), { description: 'Data values' })),\n sizes: Type.Optional(Type.Array(Type.Number(), { description: 'Bubble sizes (bubble charts only)' })),\n },\n { additionalProperties: false }\n);\n\nexport const PptxChartPropsSchema = Type.Object(\n {\n type: ChartTypeSchema,\n data: Type.Array(ChartDataSeriesSchema, {\n description: 'Chart data series',\n minItems: 1,\n }),\n\n // Display toggles\n showLegend: Type.Optional(Type.Boolean({ description: 'Show chart legend' })),\n showTitle: Type.Optional(Type.Boolean({ description: 'Show chart title' })),\n showValue: Type.Optional(Type.Boolean({ description: 'Show data values' })),\n showPercent: Type.Optional(Type.Boolean({ description: 'Show percentages (pie/doughnut)' })),\n showLabel: Type.Optional(Type.Boolean({ description: 'Show category labels on data points' })),\n showSerName: Type.Optional(Type.Boolean({ description: 'Show series name on data points' })),\n\n // Title\n title: Type.Optional(Type.String({ description: 'Chart title text' })),\n titleFontSize: Type.Optional(Type.Number({ description: 'Title font size (points)' })),\n titleColor: Type.Optional(Type.String({ description: 'Title color (hex or semantic)' })),\n titleFontFace: Type.Optional(Type.String({ description: 'Title font face' })),\n\n // Chart colors\n chartColors: Type.Optional(\n Type.Array(Type.String(), {\n description: 'Series colors (hex or semantic theme names). Defaults to theme palette.',\n })\n ),\n\n // Legend\n legendPos: Type.Optional(\n Type.Union(\n [Type.Literal('b'), Type.Literal('l'), Type.Literal('r'), Type.Literal('t'), Type.Literal('tr')],\n { description: 'Legend position' }\n )\n ),\n legendFontSize: Type.Optional(Type.Number({ description: 'Legend font size' })),\n legendFontFace: Type.Optional(Type.String({ description: 'Legend font face' })),\n legendColor: Type.Optional(Type.String({ description: 'Legend text color' })),\n\n // Category axis\n catAxisTitle: Type.Optional(Type.String({ description: 'Category axis title' })),\n catAxisHidden: Type.Optional(Type.Boolean({ description: 'Hide category axis' })),\n catAxisLabelRotate: Type.Optional(Type.Number({ description: 'Category axis label rotation (degrees)' })),\n catAxisLabelFontSize: Type.Optional(Type.Number({ description: 'Category axis label font size' })),\n catAxisLabelColor: Type.Optional(Type.String({ description: 'Category axis label color (hex or semantic)' })),\n\n // Value axis\n valAxisTitle: Type.Optional(Type.String({ description: 'Value axis title' })),\n valAxisHidden: Type.Optional(Type.Boolean({ description: 'Hide value axis' })),\n valAxisMinVal: Type.Optional(Type.Number({ description: 'Value axis minimum' })),\n valAxisMaxVal: Type.Optional(Type.Number({ description: 'Value axis maximum' })),\n valAxisLabelFormatCode: Type.Optional(Type.String({ description: 'Value axis label format (e.g. \"$0.00\", \"#%\")' })),\n valAxisMajorUnit: Type.Optional(Type.Number({ description: 'Value axis major unit / tick interval' })),\n valAxisLabelColor: Type.Optional(Type.String({ description: 'Value axis label color (hex or semantic)' })),\n\n // Bar-specific\n barDir: Type.Optional(\n Type.Union([Type.Literal('bar'), Type.Literal('col')], {\n description: 'Bar direction: \"bar\" (horizontal) or \"col\" (vertical, default)',\n })\n ),\n barGrouping: Type.Optional(\n Type.Union(\n [Type.Literal('clustered'), Type.Literal('stacked'), Type.Literal('percentStacked')],\n { description: 'Bar grouping style' }\n )\n ),\n barGapWidthPct: Type.Optional(\n Type.Number({ minimum: 0, maximum: 500, description: 'Bar gap width (0-500%)' })\n ),\n\n // Line-specific\n lineSmooth: Type.Optional(Type.Boolean({ description: 'Smooth lines' })),\n lineDataSymbol: Type.Optional(\n Type.Union(\n [\n Type.Literal('circle'),\n Type.Literal('dash'),\n Type.Literal('diamond'),\n Type.Literal('dot'),\n Type.Literal('none'),\n Type.Literal('square'),\n Type.Literal('triangle'),\n ],\n { description: 'Line data point marker symbol' }\n )\n ),\n lineSize: Type.Optional(Type.Number({ description: 'Line width (points)' })),\n\n // Pie/doughnut-specific\n firstSliceAng: Type.Optional(Type.Number({ minimum: 0, maximum: 359, description: 'Angle of first slice (degrees)' })),\n holeSize: Type.Optional(Type.Number({ minimum: 10, maximum: 90, description: 'Doughnut hole size (%)' })),\n\n // Radar-specific\n radarStyle: Type.Optional(\n Type.Union(\n [Type.Literal('standard'), Type.Literal('marker'), Type.Literal('filled')],\n { description: 'Radar chart style' }\n )\n ),\n\n // Data labels\n dataLabelColor: Type.Optional(Type.String({ description: 'Data label text color' })),\n dataLabelFontSize: Type.Optional(Type.Number({ description: 'Data label font size' })),\n dataLabelFontFace: Type.Optional(Type.String({ description: 'Data label font face' })),\n dataLabelFontBold: Type.Optional(Type.Boolean({ description: 'Bold data labels' })),\n dataLabelPosition: Type.Optional(\n Type.Union(\n [\n Type.Literal('b'),\n Type.Literal('bestFit'),\n Type.Literal('ctr'),\n Type.Literal('l'),\n Type.Literal('r'),\n Type.Literal('t'),\n Type.Literal('inEnd'),\n Type.Literal('outEnd'),\n ],\n { description: 'Data label position' }\n )\n ),\n\n // Positioning\n x: Type.Optional(PositionValue),\n y: Type.Optional(PositionValue),\n w: Type.Optional(PositionValue),\n h: Type.Optional(PositionValue),\n grid: Type.Optional(GridPositionSchema),\n },\n {\n description: 'Native PowerPoint chart component props',\n additionalProperties: false,\n }\n);\n\nexport type PptxChartProps = Static<typeof PptxChartPropsSchema>;\n"],"mappings":"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","names":["Type","Type","FontFamilyNameSchema","Type","Type","Type","FontFamilyNameSchema","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type"]}
@@ -11,7 +11,7 @@ import {
11
11
  SlideBackgroundSchema,
12
12
  TextPropsSchema,
13
13
  TransitionSchema
14
- } from "./chunk-BSPBG4E7.js";
14
+ } from "./chunk-STLETJGO.js";
15
15
 
16
16
  // src/schemas/component-registry.ts
17
17
  import { Type as Type4 } from "@sinclair/typebox";
@@ -132,6 +132,13 @@ var PresentationPropsSchema = Type2.Object(
132
132
  rtlMode: Type2.Optional(
133
133
  Type2.Boolean({ description: "Right-to-left text direction" })
134
134
  ),
135
+ language: Type2.Optional(
136
+ Type2.String({
137
+ pattern: "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
138
+ description: 'Default presentation language (BCP-47 tag, e.g. "en-US"). Sets the spell-check language for all text; individual text components can override it.',
139
+ examples: ["en-US", "fr-FR", "de-DE", "it-IT", "es-ES"]
140
+ })
141
+ ),
135
142
  pageNumberFormat: Type2.Optional(
136
143
  Type2.Union([Type2.Literal("9"), Type2.Literal("09")], {
137
144
  description: 'Format for {PAGE_NUMBER} placeholders: "9" = bare number (default), "09" = zero-padded',
@@ -385,4 +392,4 @@ export {
385
392
  createAllPptxComponentSchemas,
386
393
  createAllPptxComponentSchemasNarrowed
387
394
  };
388
- //# sourceMappingURL=chunk-JPEJEULS.js.map
395
+ //# sourceMappingURL=chunk-UVET7RT3.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 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 * 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"]}
package/dist/index.js CHANGED
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  PPTX_JSON_SCHEMA_URLS,
3
3
  PptxJsonComponentDefinitionSchema
4
- } from "./chunk-PGUWE3H7.js";
4
+ } from "./chunk-2R6VYDG2.js";
5
5
  import "./chunk-J4OT5Y5B.js";
6
6
  import {
7
7
  PptxComponentDefinitionSchema,
8
8
  PptxSlideContentSchema,
9
9
  PptxStandardComponentDefinitionSchema
10
- } from "./chunk-SXIHWIJB.js";
10
+ } from "./chunk-BJP72XV3.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-BGV5BVEG.js";
17
+ } from "./chunk-GUSMSJT6.js";
18
18
  import {
19
19
  PPTX_STANDARD_COMPONENTS_REGISTRY,
20
20
  PresentationPropsSchema,
@@ -27,7 +27,7 @@ import {
27
27
  getPptxContentComponents,
28
28
  getPptxStandardComponent,
29
29
  isPptxStandardComponent
30
- } from "./chunk-JPEJEULS.js";
30
+ } from "./chunk-UVET7RT3.js";
31
31
  import {
32
32
  ChartComponentDefaultsSchema,
33
33
  ColorValueSchema,
@@ -56,7 +56,7 @@ import {
56
56
  TransitionSchema,
57
57
  VerticalAlignmentSchema,
58
58
  isValidThemeConfig
59
- } from "./chunk-BSPBG4E7.js";
59
+ } from "./chunk-STLETJGO.js";
60
60
 
61
61
  // src/validation/image-source-conflicts.ts
62
62
  var IMAGE_SOURCE_FIELDS = ["path", "base64", "svg"];
@@ -18,6 +18,7 @@ declare const TextComponentDefaultsSchema: _sinclair_typebox.TObject<{
18
18
  color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
19
19
  }>]>>;
20
20
  strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
21
+ language: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
21
22
  align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
22
23
  valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
23
24
  breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
@@ -295,6 +296,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
295
296
  color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
296
297
  }>]>>;
297
298
  strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
299
+ language: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
298
300
  align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
299
301
  valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
300
302
  breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
@@ -6,7 +6,7 @@ import {
6
6
  ShapeComponentDefaultsSchema,
7
7
  TableComponentDefaultsSchema,
8
8
  TextComponentDefaultsSchema
9
- } from "../chunk-BSPBG4E7.js";
9
+ } from "../chunk-STLETJGO.js";
10
10
  export {
11
11
  ChartComponentDefaultsSchema,
12
12
  HighchartsComponentDefaultsSchema,
@@ -9,8 +9,8 @@ import {
9
9
  getPptxContentComponents,
10
10
  getPptxStandardComponent,
11
11
  isPptxStandardComponent
12
- } from "../chunk-JPEJEULS.js";
13
- import "../chunk-BSPBG4E7.js";
12
+ } from "../chunk-UVET7RT3.js";
13
+ import "../chunk-STLETJGO.js";
14
14
  export {
15
15
  PPTX_STANDARD_COMPONENTS_REGISTRY,
16
16
  createAllPptxComponentSchemas,
@@ -2,9 +2,9 @@ import {
2
2
  PptxComponentDefinitionSchema,
3
3
  PptxSlideContentSchema,
4
4
  PptxStandardComponentDefinitionSchema
5
- } from "../chunk-SXIHWIJB.js";
6
- import "../chunk-JPEJEULS.js";
7
- import "../chunk-BSPBG4E7.js";
5
+ } from "../chunk-BJP72XV3.js";
6
+ import "../chunk-UVET7RT3.js";
7
+ import "../chunk-STLETJGO.js";
8
8
  export {
9
9
  PptxComponentDefinitionSchema,
10
10
  PptxSlideContentSchema,
@@ -52,6 +52,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
52
52
  slideWidth: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
53
53
  slideHeight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
54
54
  rtlMode: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
55
+ language: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
55
56
  pageNumberFormat: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"9">, _sinclair_typebox.TLiteral<"09">]>>;
56
57
  componentDefaults: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
57
58
  text: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
@@ -71,6 +72,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
71
72
  color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
72
73
  }>]>>;
73
74
  strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
75
+ language: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
74
76
  align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
75
77
  valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
76
78
  breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
@@ -480,6 +482,7 @@ declare const TextPropsSchema: _sinclair_typebox.TObject<{
480
482
  color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
481
483
  }>]>>;
482
484
  strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
485
+ language: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
483
486
  align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
484
487
  valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
485
488
  breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
@@ -3,11 +3,11 @@ import {
3
3
  PptxComponentDefinitionSchema,
4
4
  PptxSlideContentSchema,
5
5
  PptxStandardComponentDefinitionSchema
6
- } from "../chunk-SXIHWIJB.js";
6
+ } from "../chunk-BJP72XV3.js";
7
7
  import {
8
8
  PresentationPropsSchema,
9
9
  SlidePropsSchema
10
- } from "../chunk-JPEJEULS.js";
10
+ } from "../chunk-UVET7RT3.js";
11
11
  import {
12
12
  GridPositionSchema,
13
13
  PositionSchema,
@@ -23,7 +23,7 @@ import {
23
23
  TextSegmentSchema,
24
24
  TransitionSchema,
25
25
  VerticalAlignmentSchema
26
- } from "../chunk-BSPBG4E7.js";
26
+ } from "../chunk-STLETJGO.js";
27
27
  export {
28
28
  GridPositionSchema,
29
29
  PositionSchema,
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  PPTX_JSON_SCHEMA_URLS,
3
3
  PptxJsonComponentDefinitionSchema
4
- } from "../chunk-PGUWE3H7.js";
4
+ } from "../chunk-2R6VYDG2.js";
5
5
  import "../chunk-J4OT5Y5B.js";
6
- import "../chunk-SXIHWIJB.js";
7
- import "../chunk-JPEJEULS.js";
8
- import "../chunk-BSPBG4E7.js";
6
+ import "../chunk-BJP72XV3.js";
7
+ import "../chunk-UVET7RT3.js";
8
+ import "../chunk-STLETJGO.js";
9
9
  export {
10
10
  PPTX_JSON_SCHEMA_URLS,
11
11
  PptxJsonComponentDefinitionSchema
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateUnifiedDocumentSchema
3
- } from "../chunk-BGV5BVEG.js";
4
- import "../chunk-JPEJEULS.js";
5
- import "../chunk-BSPBG4E7.js";
3
+ } from "../chunk-GUSMSJT6.js";
4
+ import "../chunk-UVET7RT3.js";
5
+ import "../chunk-STLETJGO.js";
6
6
  export {
7
7
  generateUnifiedDocumentSchema
8
8
  };
@@ -102,6 +102,7 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
102
102
  color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
103
103
  }>]>>;
104
104
  strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
105
+ language: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
105
106
  align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
106
107
  valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
107
108
  breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
@@ -10,7 +10,7 @@ import {
10
10
  TextStyleSchema,
11
11
  ThemeConfigSchema,
12
12
  isValidThemeConfig
13
- } from "../chunk-BSPBG4E7.js";
13
+ } from "../chunk-STLETJGO.js";
14
14
  export {
15
15
  ColorValueSchema,
16
16
  GridConfigSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-to-office/shared-pptx",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "PPTX-specific schemas, component registry and validation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schemas/component-defaults.ts","../src/schemas/components/text.ts","../src/schemas/components/common.ts","../src/schemas/theme.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<\n typeof PptxComponentDefaultsSchema\n>;\n","/**\n * Text Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontFamilyNameSchema } from '@json-to-office/shared';\nimport { PptxAlignmentSchema, VerticalAlignmentSchema, ShadowSchema, GridPositionSchema } from './common';\nimport { StyleNameSchema } from '../theme';\n\nexport const TextPropsSchema = Type.Object(\n {\n text: Type.String({ description: 'Text content to display' }),\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'X as percentage' }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Y as percentage' }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Width as percentage' }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Height as percentage' }),\n ])\n ),\n fontSize: Type.Optional(\n Type.Number({ minimum: 1, description: 'Font size in points' })\n ),\n fontFace: Type.Optional(FontFamilyNameSchema),\n color: Type.Optional(\n Type.String({ description: 'Text color (hex without #, e.g., \"FF0000\")' })\n ),\n bold: Type.Optional(Type.Boolean({ description: 'Bold text' })),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Per-run weight (100–900). Renderer picks the closest embedded variant via CSS font-matching and references it through a synthetic family alias. Overrides `bold` when set.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic text' })),\n underline: Type.Optional(\n Type.Union([\n Type.Boolean({ description: 'Simple underline toggle' }),\n Type.Object(\n {\n style: Type.Optional(\n Type.Union([\n Type.Literal('sng'),\n Type.Literal('dbl'),\n Type.Literal('dash'),\n Type.Literal('dotted'),\n ])\n ),\n color: Type.Optional(Type.String({ description: 'Underline color (hex)' })),\n },\n { additionalProperties: false }\n ),\n ])\n ),\n strike: Type.Optional(Type.Boolean({ description: 'Strikethrough text' })),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n breakLine: Type.Optional(\n Type.Boolean({ description: 'Add line break after text' })\n ),\n bullet: Type.Optional(\n Type.Union([\n Type.Boolean({ description: 'Enable default bullet' }),\n Type.Object(\n {\n type: Type.Optional(\n Type.Union([Type.Literal('bullet'), Type.Literal('number')])\n ),\n style: Type.Optional(Type.String({ description: 'Bullet character or style' })),\n startAt: Type.Optional(Type.Number({ description: 'Starting number for numbered lists' })),\n },\n { additionalProperties: false }\n ),\n ])\n ),\n margin: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Margin in points (all sides)' }),\n Type.Array(Type.Number(), {\n description: 'Margins as [top, right, bottom, left] in points',\n minItems: 4,\n maxItems: 4,\n }),\n ])\n ),\n rotate: Type.Optional(Type.Number({ description: 'Rotation angle in degrees' })),\n shadow: Type.Optional(ShadowSchema),\n fill: Type.Optional(\n Type.Object(\n {\n color: Type.String({ description: 'Fill color (hex without #)' }),\n transparency: Type.Optional(\n Type.Number({ minimum: 0, maximum: 100, description: 'Fill transparency (0-100)' })\n ),\n },\n { additionalProperties: false }\n )\n ),\n hyperlink: Type.Optional(\n Type.Object(\n {\n url: Type.Optional(Type.String({ description: 'Hyperlink URL' })),\n slide: Type.Optional(Type.Number({ description: 'Slide number to link to' })),\n tooltip: Type.Optional(Type.String({ description: 'Hyperlink tooltip' })),\n },\n { additionalProperties: false }\n )\n ),\n lineSpacing: Type.Optional(Type.Number({ description: 'Line spacing in points' })),\n charSpacing: Type.Optional(Type.Number({ description: 'Character spacing in points (positive = wider, negative = tighter)' })),\n paraSpaceBefore: Type.Optional(Type.Number({ description: 'Space before paragraph in points' })),\n paraSpaceAfter: Type.Optional(Type.Number({ description: 'Space after paragraph in points' })),\n grid: Type.Optional(GridPositionSchema),\n style: Type.Optional(StyleNameSchema),\n },\n {\n description: 'Text component props',\n additionalProperties: false,\n }\n);\n\nexport type TextProps = Static<typeof TextPropsSchema>;\n","/**\n * Common Types and Schemas for PPTX Components\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { ColorValueSchema } from '../theme';\n\n// ============================================================================\n// PPTX-Specific Common Types\n// ============================================================================\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 image: Type.Optional(\n Type.Object(\n {\n path: Type.Optional(Type.String({ description: 'Image file path or URL' })),\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 const PptxAlignmentSchema = Type.Union(\n [Type.Literal('left'), Type.Literal('center'), Type.Literal('right')],\n { description: 'Horizontal alignment options' }\n);\n\nexport const VerticalAlignmentSchema = Type.Union(\n [Type.Literal('top'), Type.Literal('middle'), Type.Literal('bottom')],\n { description: 'Vertical alignment options' }\n);\n\nexport const ShadowSchema = Type.Object(\n {\n type: Type.Optional(\n Type.Union([Type.Literal('outer'), Type.Literal('inner')], {\n description: 'Shadow type',\n })\n ),\n color: Type.Optional(ColorValueSchema),\n blur: Type.Optional(Type.Number({ description: 'Shadow blur radius in points' })),\n offset: Type.Optional(Type.Number({ description: 'Shadow offset in points' })),\n angle: Type.Optional(Type.Number({ description: 'Shadow angle in degrees' })),\n opacity: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 1,\n description: 'Shadow opacity (0-1)',\n })\n ),\n },\n {\n description: 'Shadow configuration',\n additionalProperties: false,\n }\n);\n\nexport const GridPositionSchema = Type.Object(\n {\n column: Type.Number({ minimum: 0, description: 'Starting column (0-indexed)' }),\n row: Type.Number({ minimum: 0, description: 'Starting row (0-indexed)' }),\n columnSpan: Type.Optional(Type.Number({ minimum: 1, description: 'Number of columns to span (default: 1)' })),\n rowSpan: Type.Optional(Type.Number({ minimum: 1, description: 'Number of rows to span (default: 1)' })),\n },\n { additionalProperties: false, description: 'Grid-based positioning' }\n);\n\nexport type GridPosition = Static<typeof GridPositionSchema>;\n\n// ============================================================================\n// TypeScript Types\n// ============================================================================\n\nexport type Position = Static<typeof PositionSchema>;\nexport type SlideBackground = Static<typeof SlideBackgroundSchema>;\nexport type Transition = Static<typeof TransitionSchema>;\nexport type PptxAlignment = Static<typeof PptxAlignmentSchema>;\nexport type VerticalAlignment = Static<typeof VerticalAlignmentSchema>;\nexport type Shadow = Static<typeof ShadowSchema>;\n","/**\n * PPTX Theme Schema\n * Simplified theme configuration for presentations\n */\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontFamilyNameSchema } from '@json-to-office/shared';\nimport { PptxComponentDefaultsSchema } from './component-defaults';\n\nexport const GridMarginSchema = Type.Union(\n [\n Type.Number({ description: 'Margin in inches (all sides)' }),\n Type.Object(\n {\n top: Type.Number({ description: 'Top margin in inches' }),\n right: Type.Number({ description: 'Right margin in inches' }),\n bottom: Type.Number({ description: 'Bottom margin in inches' }),\n left: Type.Number({ description: 'Left margin in inches' }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Slide margins in inches' }\n);\n\nexport const GridGutterSchema = Type.Union(\n [\n Type.Number({ description: 'Gutter in inches (both axes)' }),\n Type.Object(\n {\n column: Type.Number({ description: 'Column gutter in inches' }),\n row: Type.Number({ description: 'Row gutter in inches' }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Gaps between grid tracks in inches' }\n);\n\nexport const GridConfigSchema = Type.Object(\n {\n columns: Type.Optional(Type.Number({ minimum: 1, description: 'Number of columns (default: 12)' })),\n rows: Type.Optional(Type.Number({ minimum: 1, description: 'Number of rows (default: 6)' })),\n margin: Type.Optional(GridMarginSchema),\n gutter: Type.Optional(GridGutterSchema),\n },\n { additionalProperties: false, description: 'Grid layout configuration' }\n);\n\nexport type GridMargin = Static<typeof GridMarginSchema>;\nexport type GridGutter = Static<typeof GridGutterSchema>;\nexport type GridConfig = Static<typeof GridConfigSchema>;\n\nconst HexColorSchema = Type.String({ pattern: '^#?[0-9A-Fa-f]{6}$', description: 'Hex color (e.g. #FF0000)' });\n\nexport const SEMANTIC_COLOR_NAMES = [\n 'primary', 'secondary', 'accent', 'background', 'text',\n 'text2', 'background2', 'accent4', 'accent5', 'accent6',\n] as const;\n\n/** PowerPoint XML aliases that resolve to canonical semantic names at runtime */\nexport const SEMANTIC_COLOR_ALIASES = [\n 'accent1', 'accent2', 'accent3', 'tx1', 'tx2', 'bg1', 'bg2',\n] as const;\n\nexport const ColorValueSchema = Type.Union([\n HexColorSchema,\n ...SEMANTIC_COLOR_NAMES.map(n => Type.Literal(n)),\n ...SEMANTIC_COLOR_ALIASES.map(n => Type.Literal(n)),\n], { description: 'Hex color or semantic theme color name' });\n\n// ── Named text styles ──────────────────────────────────────────────\n\nexport const STYLE_NAMES = [\n 'title', 'subtitle',\n 'heading1', 'heading2', 'heading3',\n 'body', 'caption',\n] as const;\n\nexport const StyleNameSchema = Type.Union(\n STYLE_NAMES.map(n => Type.Literal(n)),\n { description: 'Predefined style name' }\n);\n\nexport const TextStyleSchema = Type.Object({\n fontSize: Type.Optional(Type.Number()),\n fontFace: Type.Optional(FontFamilyNameSchema),\n fontColor: Type.Optional(ColorValueSchema),\n bold: Type.Optional(Type.Boolean()),\n fontWeight: Type.Optional(Type.Integer({ minimum: 100, maximum: 900 })),\n italic: Type.Optional(Type.Boolean()),\n align: Type.Optional(Type.Union([\n Type.Literal('left'), Type.Literal('center'), Type.Literal('right'), Type.Literal('justify'),\n ])),\n lineSpacing: Type.Optional(Type.Number()),\n charSpacing: Type.Optional(Type.Number()),\n paraSpaceAfter: Type.Optional(Type.Number()),\n}, { additionalProperties: false, description: 'Text style preset' });\n\nexport type StyleName = (typeof STYLE_NAMES)[number];\nexport type TextStyle = Static<typeof TextStyleSchema>;\n\n// ── Theme config ───────────────────────────────────────────────────\n\nexport const ThemeConfigSchema = Type.Object(\n {\n name: Type.String({ description: 'Theme name' }),\n colors: Type.Object(\n {\n primary: HexColorSchema,\n secondary: HexColorSchema,\n accent: HexColorSchema,\n background: HexColorSchema,\n text: HexColorSchema,\n text2: Type.Optional(HexColorSchema),\n background2: Type.Optional(HexColorSchema),\n accent4: Type.Optional(HexColorSchema),\n accent5: Type.Optional(HexColorSchema),\n accent6: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false, description: 'Theme color palette (10-slot scheme)' }\n ),\n fonts: Type.Object(\n {\n heading: FontFamilyNameSchema,\n body: FontFamilyNameSchema,\n },\n { additionalProperties: false, description: 'Font families' }\n ),\n defaults: Type.Object(\n {\n fontSize: Type.Number({ description: 'Default font size in points' }),\n fontColor: HexColorSchema,\n },\n { additionalProperties: false, description: 'Default text styling' }\n ),\n styles: Type.Optional(Type.Partial(\n Type.Object(Object.fromEntries(\n STYLE_NAMES.map(n => [n, TextStyleSchema])\n ) as Record<string, typeof TextStyleSchema>),\n { additionalProperties: false, description: 'Named text style presets' }\n )),\n componentDefaults: Type.Optional(PptxComponentDefaultsSchema),\n },\n { additionalProperties: false, description: 'Presentation theme configuration' }\n);\n\nexport type ThemeConfigJson = Static<typeof ThemeConfigSchema>;\n\nexport function isValidThemeConfig(data: unknown): data is ThemeConfigJson {\n return typeof data === 'object' && data !== null;\n}\n","/**\n * Image Component Schema (PPTX)\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { ShadowSchema, GridPositionSchema } from './common';\n\nexport const PptxImagePropsSchema = Type.Object(\n {\n path: Type.Optional(\n Type.String({\n description:\n 'Image file path or URL (mutually exclusive with base64 and svg)',\n })\n ),\n base64: Type.Optional(\n Type.String({\n description:\n 'Base64-encoded image data in data URI format (mutually exclusive with path and svg)',\n })\n ),\n svg: Type.Optional(\n Type.String({\n description:\n 'Raw inline SVG markup, e.g. \"<svg xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\" viewBox=\\\\\"0 0 24 24\\\\\">...</svg>\" (mutually exclusive with path and base64). Wrapped into an image/svg+xml data URI and embedded as a vector (PowerPoint 2016+); intrinsic size taken from the SVG viewBox/width/height when w/h omitted.',\n })\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 as percentage',\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 as percentage',\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',\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',\n }),\n ])\n ),\n sizing: Type.Optional(\n Type.Object(\n {\n type: Type.Union(\n [\n Type.Literal('contain'),\n Type.Literal('cover'),\n Type.Literal('crop'),\n ],\n { description: 'Image sizing strategy' }\n ),\n w: Type.Optional(\n Type.Number({ description: 'Target width in inches' })\n ),\n h: Type.Optional(\n Type.Number({ description: 'Target height in inches' })\n ),\n },\n { description: 'Image sizing options', additionalProperties: false }\n )\n ),\n rotate: Type.Optional(\n Type.Number({ description: 'Rotation angle in degrees' })\n ),\n rounding: Type.Optional(\n Type.Boolean({ description: 'Apply rounded corners to image' })\n ),\n shadow: Type.Optional(ShadowSchema),\n hyperlink: Type.Optional(\n Type.Object(\n {\n url: Type.Optional(Type.String({ description: 'Hyperlink URL' })),\n slide: Type.Optional(\n Type.Number({ description: 'Slide number to link to' })\n ),\n tooltip: Type.Optional(\n Type.String({ description: 'Hyperlink tooltip' })\n ),\n },\n { additionalProperties: false }\n )\n ),\n alt: Type.Optional(\n Type.String({ description: 'Alternative text for accessibility' })\n ),\n grid: Type.Optional(GridPositionSchema),\n },\n {\n description: 'PPTX image component props',\n additionalProperties: false,\n }\n);\n\nexport type PptxImageProps = Static<typeof PptxImagePropsSchema>;\n","/**\n * Shape Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { PptxAlignmentSchema, VerticalAlignmentSchema, ShadowSchema, GridPositionSchema } from './common';\nimport { StyleNameSchema } from '../theme';\n\nexport const ShapeTypeSchema = Type.Union(\n [\n Type.Literal('rect'),\n Type.Literal('roundRect'),\n Type.Literal('ellipse'),\n Type.Literal('triangle'),\n Type.Literal('diamond'),\n Type.Literal('pentagon'),\n Type.Literal('hexagon'),\n Type.Literal('star5'),\n Type.Literal('star6'),\n Type.Literal('line'),\n Type.Literal('arrow'),\n Type.Literal('chevron'),\n Type.Literal('cloud'),\n Type.Literal('heart'),\n Type.Literal('lightning'),\n ],\n { description: 'Shape type' }\n);\n\nexport const TextSegmentSchema = Type.Object(\n {\n text: Type.String(),\n fontSize: Type.Optional(Type.Number({ minimum: 1 })),\n fontFace: Type.Optional(Type.String()),\n color: Type.Optional(Type.String({ description: 'Segment color (hex without # or semantic name)' })),\n bold: Type.Optional(Type.Boolean()),\n fontWeight: Type.Optional(Type.Integer({ minimum: 100, maximum: 900 })),\n italic: Type.Optional(Type.Boolean()),\n breakLine: Type.Optional(Type.Boolean({ description: 'Insert line break after this segment' })),\n spaceBefore: Type.Optional(Type.Number({ minimum: 0, description: 'Space before paragraph in points' })),\n spaceAfter: Type.Optional(Type.Number({ minimum: 0, description: 'Space after paragraph in points' })),\n charSpacing: Type.Optional(Type.Number({ description: 'Character spacing in points' })),\n },\n { additionalProperties: false }\n);\n\nexport type TextSegment = Static<typeof TextSegmentSchema>;\n\nexport const ShapePropsSchema = Type.Object(\n {\n type: ShapeTypeSchema,\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'X as percentage' }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Y as percentage' }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Width as percentage' }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Height as percentage' }),\n ])\n ),\n fill: Type.Optional(\n Type.Object(\n {\n color: Type.String({ description: 'Fill color (hex without #)' }),\n transparency: Type.Optional(\n Type.Number({ minimum: 0, maximum: 100, description: 'Fill transparency (0-100)' })\n ),\n },\n { additionalProperties: false }\n )\n ),\n line: Type.Optional(\n Type.Object(\n {\n color: Type.Optional(Type.String({ description: 'Line color (hex without #)' })),\n width: Type.Optional(Type.Number({ minimum: 0, description: 'Line width in points' })),\n dashType: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dash'),\n Type.Literal('dot'),\n Type.Literal('dashDot'),\n ])\n ),\n },\n { additionalProperties: false }\n )\n ),\n text: Type.Optional(Type.Union([\n Type.String({ description: 'Plain text' }),\n Type.Array(TextSegmentSchema, { description: 'Rich text segments with per-segment formatting' }),\n ], { description: 'Text content inside the shape' })),\n fontSize: Type.Optional(Type.Number({ minimum: 1, description: 'Font size for shape text' })),\n fontFace: Type.Optional(Type.String({ description: 'Font family for shape text' })),\n fontColor: Type.Optional(Type.String({ description: 'Font color for shape text (hex without #)' })),\n charSpacing: Type.Optional(Type.Number({ description: 'Character spacing in points for shape text' })),\n bold: Type.Optional(Type.Boolean({ description: 'Bold shape text' })),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Per-shape weight (100–900). Overrides `bold` when set.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic shape text' })),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n rotate: Type.Optional(Type.Number({ description: 'Rotation angle in degrees' })),\n shadow: Type.Optional(ShadowSchema),\n rectRadius: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Corner radius for roundRect shape in inches',\n })\n ),\n grid: Type.Optional(GridPositionSchema),\n style: Type.Optional(StyleNameSchema),\n },\n {\n description: 'Shape component props',\n additionalProperties: false,\n }\n);\n\nexport type ShapeType = Static<typeof ShapeTypeSchema>;\nexport type ShapeProps = Static<typeof ShapePropsSchema>;\n","/**\n * Table Component Schema (PPTX)\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { PptxAlignmentSchema, VerticalAlignmentSchema, GridPositionSchema } from './common';\n\nconst PptxTableCellSchema = Type.Union([\n Type.String({ description: 'Simple text cell' }),\n Type.Object(\n {\n text: Type.String({ description: 'Cell text content' }),\n color: Type.Optional(Type.String({ description: 'Text color (hex without #)' })),\n fill: Type.Optional(Type.String({ description: 'Cell background color (hex without #)' })),\n fontSize: Type.Optional(Type.Number({ description: 'Font size in points' })),\n fontFace: Type.Optional(Type.String({ description: 'Font family' })),\n bold: Type.Optional(Type.Boolean({ description: 'Bold text' })),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description: 'Per-cell weight (100–900). Overrides `bold` when set.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic text' })),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n colspan: Type.Optional(Type.Number({ minimum: 1, description: 'Column span' })),\n rowspan: Type.Optional(Type.Number({ minimum: 1, description: 'Row span' })),\n margin: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Margin in points (all sides)' }),\n Type.Array(Type.Number(), { minItems: 4, maxItems: 4 }),\n ])\n ),\n },\n { additionalProperties: false }\n ),\n]);\n\nexport const PptxTablePropsSchema = Type.Object(\n {\n rows: Type.Array(\n Type.Array(PptxTableCellSchema, { description: 'Row of cells' }),\n { description: 'Table rows (array of arrays)', minItems: 1 }\n ),\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'X as percentage' }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Y as percentage' }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Width as percentage' }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$', description: 'Height as percentage' }),\n ])\n ),\n colW: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Uniform column width in inches' }),\n Type.Array(Type.Number(), { description: 'Individual column widths in inches' }),\n ])\n ),\n rowH: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Uniform row height in inches' }),\n Type.Array(Type.Number(), { description: 'Individual row heights in inches' }),\n ])\n ),\n border: Type.Optional(\n Type.Object(\n {\n type: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dash'),\n Type.Literal('dot'),\n Type.Literal('none'),\n ])\n ),\n pt: Type.Optional(Type.Number({ minimum: 0, description: 'Border width in points' })),\n color: Type.Optional(Type.String({ description: 'Border color (hex without #)' })),\n },\n { additionalProperties: false }\n )\n ),\n fill: Type.Optional(Type.String({ description: 'Table background color (hex without #)' })),\n fontSize: Type.Optional(Type.Number({ minimum: 1, description: 'Default font size for all cells' })),\n fontFace: Type.Optional(Type.String({ description: 'Default font family for all cells' })),\n color: Type.Optional(Type.String({ description: 'Default text color for all cells (hex without #)' })),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n autoPage: Type.Optional(\n Type.Boolean({ description: 'Auto-paginate table across multiple slides when content overflows' })\n ),\n autoPageRepeatHeader: Type.Optional(\n Type.Boolean({ description: 'Repeat first row as header on each auto-paged slide' })\n ),\n margin: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Cell margin in points (all sides)' }),\n Type.Array(Type.Number(), { minItems: 4, maxItems: 4 }),\n ])\n ),\n borderRadius: Type.Optional(\n Type.Number({ minimum: 0, description: 'Rounded corner radius in inches. Renders a roundRect shape behind the table.' })\n ),\n grid: Type.Optional(GridPositionSchema),\n },\n {\n description: 'PPTX table component props',\n additionalProperties: false,\n }\n);\n\nexport type PptxTableProps = Static<typeof PptxTablePropsSchema>;\n","/**\n * Highcharts Component Schema (PPTX)\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { GridPositionSchema } from './common';\n\nexport const PptxHighchartsPropsSchema = Type.Object(\n {\n options: Type.Intersect([\n Type.Record(Type.String(), Type.Unknown()),\n Type.Object({\n chart: Type.Object({\n width: Type.Number(),\n height: Type.Number(),\n }),\n }),\n ]),\n scale: Type.Optional(Type.Number()),\n serverUrl: Type.Optional(\n Type.String({\n description:\n 'Highcharts Export Server URL (default: http://localhost:7801)',\n })\n ),\n // Optional resources forwarded verbatim to the export server (CSS/JS/files).\n // Notably enables @font-face rules so charts render in custom fonts.\n resources: Type.Optional(\n Type.Object({\n css: Type.Optional(Type.String()),\n js: Type.Optional(Type.String()),\n files: Type.Optional(Type.Array(Type.String())),\n })\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 as percentage',\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 as percentage',\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',\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',\n }),\n ])\n ),\n grid: Type.Optional(GridPositionSchema),\n },\n {\n description: 'PPTX Highcharts component props',\n additionalProperties: false,\n }\n);\n\nexport type PptxHighchartsProps = Static<typeof PptxHighchartsPropsSchema>;\n","/**\n * Chart Component Schema (PPTX) — native PowerPoint charts via pptxgenjs\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { GridPositionSchema } from './common';\n\nconst PositionValue = Type.Union([\n Type.Number(),\n Type.String({ pattern: '^\\\\d+(\\\\.\\\\d+)?%$' }),\n]);\n\nconst ChartTypeSchema = Type.Union(\n [\n Type.Literal('area'),\n Type.Literal('bar'),\n Type.Literal('bar3D'),\n Type.Literal('bubble'),\n Type.Literal('doughnut'),\n Type.Literal('line'),\n Type.Literal('pie'),\n Type.Literal('radar'),\n Type.Literal('scatter'),\n ],\n { description: 'Chart type' }\n);\n\nconst ChartDataSeriesSchema = Type.Object(\n {\n name: Type.Optional(Type.String({ description: 'Series name' })),\n labels: Type.Optional(Type.Array(Type.String(), { description: 'Category labels' })),\n values: Type.Optional(Type.Array(Type.Number(), { description: 'Data values' })),\n sizes: Type.Optional(Type.Array(Type.Number(), { description: 'Bubble sizes (bubble charts only)' })),\n },\n { additionalProperties: false }\n);\n\nexport const PptxChartPropsSchema = Type.Object(\n {\n type: ChartTypeSchema,\n data: Type.Array(ChartDataSeriesSchema, {\n description: 'Chart data series',\n minItems: 1,\n }),\n\n // Display toggles\n showLegend: Type.Optional(Type.Boolean({ description: 'Show chart legend' })),\n showTitle: Type.Optional(Type.Boolean({ description: 'Show chart title' })),\n showValue: Type.Optional(Type.Boolean({ description: 'Show data values' })),\n showPercent: Type.Optional(Type.Boolean({ description: 'Show percentages (pie/doughnut)' })),\n showLabel: Type.Optional(Type.Boolean({ description: 'Show category labels on data points' })),\n showSerName: Type.Optional(Type.Boolean({ description: 'Show series name on data points' })),\n\n // Title\n title: Type.Optional(Type.String({ description: 'Chart title text' })),\n titleFontSize: Type.Optional(Type.Number({ description: 'Title font size (points)' })),\n titleColor: Type.Optional(Type.String({ description: 'Title color (hex or semantic)' })),\n titleFontFace: Type.Optional(Type.String({ description: 'Title font face' })),\n\n // Chart colors\n chartColors: Type.Optional(\n Type.Array(Type.String(), {\n description: 'Series colors (hex or semantic theme names). Defaults to theme palette.',\n })\n ),\n\n // Legend\n legendPos: Type.Optional(\n Type.Union(\n [Type.Literal('b'), Type.Literal('l'), Type.Literal('r'), Type.Literal('t'), Type.Literal('tr')],\n { description: 'Legend position' }\n )\n ),\n legendFontSize: Type.Optional(Type.Number({ description: 'Legend font size' })),\n legendFontFace: Type.Optional(Type.String({ description: 'Legend font face' })),\n legendColor: Type.Optional(Type.String({ description: 'Legend text color' })),\n\n // Category axis\n catAxisTitle: Type.Optional(Type.String({ description: 'Category axis title' })),\n catAxisHidden: Type.Optional(Type.Boolean({ description: 'Hide category axis' })),\n catAxisLabelRotate: Type.Optional(Type.Number({ description: 'Category axis label rotation (degrees)' })),\n catAxisLabelFontSize: Type.Optional(Type.Number({ description: 'Category axis label font size' })),\n catAxisLabelColor: Type.Optional(Type.String({ description: 'Category axis label color (hex or semantic)' })),\n\n // Value axis\n valAxisTitle: Type.Optional(Type.String({ description: 'Value axis title' })),\n valAxisHidden: Type.Optional(Type.Boolean({ description: 'Hide value axis' })),\n valAxisMinVal: Type.Optional(Type.Number({ description: 'Value axis minimum' })),\n valAxisMaxVal: Type.Optional(Type.Number({ description: 'Value axis maximum' })),\n valAxisLabelFormatCode: Type.Optional(Type.String({ description: 'Value axis label format (e.g. \"$0.00\", \"#%\")' })),\n valAxisMajorUnit: Type.Optional(Type.Number({ description: 'Value axis major unit / tick interval' })),\n valAxisLabelColor: Type.Optional(Type.String({ description: 'Value axis label color (hex or semantic)' })),\n\n // Bar-specific\n barDir: Type.Optional(\n Type.Union([Type.Literal('bar'), Type.Literal('col')], {\n description: 'Bar direction: \"bar\" (horizontal) or \"col\" (vertical, default)',\n })\n ),\n barGrouping: Type.Optional(\n Type.Union(\n [Type.Literal('clustered'), Type.Literal('stacked'), Type.Literal('percentStacked')],\n { description: 'Bar grouping style' }\n )\n ),\n barGapWidthPct: Type.Optional(\n Type.Number({ minimum: 0, maximum: 500, description: 'Bar gap width (0-500%)' })\n ),\n\n // Line-specific\n lineSmooth: Type.Optional(Type.Boolean({ description: 'Smooth lines' })),\n lineDataSymbol: Type.Optional(\n Type.Union(\n [\n Type.Literal('circle'),\n Type.Literal('dash'),\n Type.Literal('diamond'),\n Type.Literal('dot'),\n Type.Literal('none'),\n Type.Literal('square'),\n Type.Literal('triangle'),\n ],\n { description: 'Line data point marker symbol' }\n )\n ),\n lineSize: Type.Optional(Type.Number({ description: 'Line width (points)' })),\n\n // Pie/doughnut-specific\n firstSliceAng: Type.Optional(Type.Number({ minimum: 0, maximum: 359, description: 'Angle of first slice (degrees)' })),\n holeSize: Type.Optional(Type.Number({ minimum: 10, maximum: 90, description: 'Doughnut hole size (%)' })),\n\n // Radar-specific\n radarStyle: Type.Optional(\n Type.Union(\n [Type.Literal('standard'), Type.Literal('marker'), Type.Literal('filled')],\n { description: 'Radar chart style' }\n )\n ),\n\n // Data labels\n dataLabelColor: Type.Optional(Type.String({ description: 'Data label text color' })),\n dataLabelFontSize: Type.Optional(Type.Number({ description: 'Data label font size' })),\n dataLabelFontFace: Type.Optional(Type.String({ description: 'Data label font face' })),\n dataLabelFontBold: Type.Optional(Type.Boolean({ description: 'Bold data labels' })),\n dataLabelPosition: Type.Optional(\n Type.Union(\n [\n Type.Literal('b'),\n Type.Literal('bestFit'),\n Type.Literal('ctr'),\n Type.Literal('l'),\n Type.Literal('r'),\n Type.Literal('t'),\n Type.Literal('inEnd'),\n Type.Literal('outEnd'),\n ],\n { description: 'Data label position' }\n )\n ),\n\n // Positioning\n x: Type.Optional(PositionValue),\n y: Type.Optional(PositionValue),\n w: Type.Optional(PositionValue),\n h: Type.Optional(PositionValue),\n grid: Type.Optional(GridPositionSchema),\n },\n {\n description: 'Native PowerPoint chart component props',\n additionalProperties: false,\n }\n);\n\nexport type PptxChartProps = Static<typeof PptxChartPropsSchema>;\n"],"mappings":"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","names":["Type","Type","FontFamilyNameSchema","Type","Type","Type","FontFamilyNameSchema","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type"]}
@@ -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/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":";;;;;;;;;;;;;;;;AAOA,SAAS,QAAAA,aAAqB;;;ACH9B,SAAS,QAAAC,aAAoB;;;ACA7B,SAAS,YAA6B;AAWtC,IAAM,QAAQ,KAAK,MAAM;AAAA,EACvB,KAAK,OAAO,EAAE,aAAa,0BAA0B,CAAC;AAAA,EACtD,KAAK,OAAO;AAAA,IACV,SAAS;AAAA,IACT,aAAa;AAAA,EACf,CAAC;AACH,CAAC;AAGD,SAAS,iBAAiB,MAAc,aAAsB;AAC5D,SAAO,KAAK,OAAO;AAAA,IACjB,MAAM,KAAK,QAAQ,IAAI;AAAA,IACvB,IAAI,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,IAC/B,SAAS,KAAK,SAAS,KAAK,QAAQ;AAAA,MAClC,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,OAAO;AAAA,EACT,GAAG,EAAE,sBAAsB,MAAM,CAAC;AACpC;AAGA,IAAM,gCAAgC,KAAK,MAAM;AAAA,EAC/C,iBAAiB,QAAQ,eAAe;AAAA,EACxC,iBAAiB,SAAS,oBAAoB;AAAA,EAC9C,iBAAiB,SAAS,gBAAgB;AAAA,EAC1C,iBAAiB,SAAS,oBAAoB;AAAA,EAC9C,iBAAiB,SAAS,oBAAoB;AAAA,EAC9C,iBAAiB,cAAc,yBAAyB;AAC1D,GAAG;AAAA,EACD,eAAe,EAAE,cAAc,OAAO;AAAA,EACtC,aAAa;AACf,CAAC;AAID,SAAS,kBAAkB,MAAc,aAAsB;AAC7D,SAAO,KAAK,OAAO;AAAA,IACjB,MAAM,KAAK,QAAQ,IAAI;AAAA,IACvB,OAAO,KAAK,QAAQ,aAAa,EAAE,aAAa,sEAAsE,CAAC;AAAA,EACzH,GAAG,EAAE,sBAAsB,MAAM,CAAC;AACpC;AAEA,IAAM,4BAA4B,KAAK,MAAM;AAAA,EAC3C,kBAAkB,QAAQ,eAAe;AAAA,EACzC,kBAAkB,SAAS,oBAAoB;AAAA,EAC/C,kBAAkB,SAAS,gBAAgB;AAAA,EAC3C,kBAAkB,SAAS,oBAAoB;AAAA,EAC/C,kBAAkB,SAAS,oBAAoB;AAAA,EAC/C,kBAAkB,cAAc,yBAAyB;AAC3D,GAAG;AAAA,EACD,eAAe,EAAE,cAAc,OAAO;AAAA,EACtC,aAAa;AACf,CAAC;AAGM,IAAM,8BAA8B,KAAK,OAAO;AAAA,EACrD,MAAM,KAAK,OAAO,EAAE,aAAa,0BAA0B,CAAC;AAAA,EAC5D,GAAG,KAAK,SAAS,KAAK;AAAA,EACtB,GAAG,KAAK,SAAS,KAAK;AAAA,EACtB,GAAG,KAAK,SAAS,KAAK;AAAA,EACtB,GAAG,KAAK,SAAS,KAAK;AAAA,EACtB,MAAM,KAAK,SAAS,kBAAkB;AAAA,EACtC,UAAU,KAAK,SAAS,yBAAyB;AACnD,GAAG,EAAE,sBAAsB,OAAO,aAAa,wHAAmH,CAAC;AAG5J,IAAM,gCAAgC,KAAK,OAAO;AAAA,EACvD,MAAM,KAAK,OAAO,EAAE,aAAa,6BAA6B,CAAC;AAAA,EAC/D,YAAY,KAAK,SAAS,qBAAqB;AAAA,EAC/C,QAAQ,KAAK,SAAS,KAAK,MAAM;AAAA,IAC/B,KAAK,OAAO,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC3D,KAAK,MAAM,KAAK,OAAO,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,aAAa,8CAA8C,CAAC;AAAA,EACpH,CAAC,CAAC;AAAA,EACF,aAAa,KAAK,SAAS,KAAK,OAAO;AAAA,IACrC,GAAG;AAAA,IAAO,GAAG;AAAA,IACb,GAAG,KAAK,SAAS,KAAK;AAAA,IACtB,GAAG,KAAK,SAAS,KAAK;AAAA,IACtB,OAAO,KAAK,SAAS,gBAAgB;AAAA,IACrC,UAAU,KAAK,SAAS,KAAK,OAAO,EAAE,aAAa,mCAAmC,CAAC,CAAC;AAAA,EAC1F,GAAG,EAAE,sBAAsB,OAAO,aAAa,oCAAoC,CAAC,CAAC;AAAA,EACrF,SAAS,KAAK,SAAS,KAAK,MAAM,+BAA+B,EAAE,aAAa,sGAAiG,CAAC,CAAC;AAAA,EACnL,cAAc,KAAK,SAAS,KAAK,MAAM,6BAA6B,EAAE,aAAa,wCAAwC,CAAC,CAAC;AAAA,EAC7H,MAAM,KAAK,SAAS,gBAAgB;AACtC,GAAG,EAAE,sBAAsB,OAAO,aAAa,sDAAsD,CAAC;;;AD1F/F,IAAM,0BAA0BC,MAAK;AAAA,EAC1C;AAAA,IACE,OAAOA,MAAK;AAAA,MACVA,MAAK,OAAO,EAAE,aAAa,8BAA8B,CAAC;AAAA,IAC5D;AAAA,IACA,QAAQA,MAAK;AAAA,MACXA,MAAK,OAAO,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC7D;AAAA,IACA,SAASA,MAAK;AAAA,MACZA,MAAK,OAAO,EAAE,aAAa,gCAAgC,CAAC;AAAA,IAC9D;AAAA,IACA,SAASA,MAAK;AAAA,MACZA,MAAK,OAAO,EAAE,aAAa,wBAAwB,CAAC;AAAA,IACtD;AAAA,IACA,OAAOA,MAAK;AAAA,MACVA,MAAK,OAAO;AAAA,QACV,aAAa;AAAA,QACb,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,YAAYA,MAAK;AAAA,MACfA,MAAK,OAAO;AAAA,QACV,aAAa;AAAA,QACb,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,aAAaA,MAAK;AAAA,MAChBA,MAAK,OAAO;AAAA,QACV,aAAa;AAAA,QACb,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,SAASA,MAAK;AAAA,MACZA,MAAK,QAAQ,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC9D;AAAA,IACA,kBAAkBA,MAAK;AAAA,MACrBA,MAAK,MAAM,CAACA,MAAK,QAAQ,GAAG,GAAGA,MAAK,QAAQ,IAAI,CAAC,GAAG;AAAA,QAClD,aAAa;AAAA,QACb,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,mBAAmBA,MAAK,SAAS,2BAA2B;AAAA,IAC5D,MAAMA,MAAK,SAAS,gBAAgB;AAAA,IACpC,WAAWA,MAAK;AAAA,MACdA,MAAK,MAAM,+BAA+B;AAAA,QACxC,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,sBAAsB;AAAA,EACxB;AACF;;;AE1DA,SAAS,QAAAC,aAAoB;AAGtB,IAAM,mBAAmBC,MAAK;AAAA,EACnC;AAAA,IACE,YAAYA,MAAK,SAAS,qBAAqB;AAAA,IAC/C,YAAYA,MAAK,SAAS,gBAAgB;AAAA,IAC1C,OAAOA,MAAK;AAAA,MACVA,MAAK,OAAO,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC7D;AAAA,IACA,QAAQA,MAAK;AAAA,MACXA,MAAK,OAAO;AAAA,QACV,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAAA,IACA,QAAQA,MAAK;AAAA,MACXA,MAAK,QAAQ,EAAE,aAAa,oCAAoC,CAAC;AAAA,IACnE;AAAA,IACA,UAAUA,MAAK;AAAA,MACbA,MAAK,OAAO,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC7D;AAAA;AAAA;AAAA,EAGF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,sBAAsB;AAAA,EACxB;AACF;;;AHUO,IAAM,oCACX;AAAA;AAAA;AAAA;AAAA,EAIE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB,CAAC,OAAO;AAAA,IACzB,UAAU;AAAA,IACV,aACE;AAAA,IACF,SAAS;AAAA,MACP,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AACF;AAMK,SAAS,yBACd,MAC6C;AAC7C,SAAO,kCAAkC,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AACtE;AAEO,SAAS,2BAA8C;AAC5D,SAAO,kCAAkC,IAAI,CAAC,MAAM,EAAE,IAAI;AAC5D;AAEO,SAAS,4BACd,UAC4C;AAC5C,SAAO,kCAAkC;AAAA,IACvC,CAAC,MAAM,EAAE,aAAa;AAAA,EACxB;AACF;AAEO,SAAS,6BAAyE;AACvF,SAAO,kCAAkC,OAAO,CAAC,MAAM,EAAE,WAAW;AACtE;AAEO,SAAS,2BAAuE;AACrF,SAAO,kCAAkC,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW;AACvE;AAEO,SAAS,wBAAwB,MAAuB;AAC7D,SAAO,kCAAkC,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AACtE;AAMO,SAAS,gCACd,WACA,cACA,gBACS;AACT,QAAM,SAAkC;AAAA,IACtC,MAAMC,MAAK,QAAQ,UAAU,IAAI;AAAA,IACjC,IAAIA,MAAK,SAASA,MAAK,OAAO,CAAC;AAAA,IAC/B,SAASA,MAAK;AAAA,MACZA,MAAK,QAAQ;AAAA,QACX,SAAS;AAAA,QACT,aACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,UAAU,SAAS,gBAAgB;AACrC,WAAO,UAAUA,MAAK,SAASA,MAAK,OAAO,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EAC/D;AAEA,SAAO,QAAQ,UAAU;AAEzB,MAAI,UAAU,eAAe,cAAc;AACzC,WAAO,WAAWA,MAAK,SAASA,MAAK,MAAM,YAAY,CAAC;AAAA,EAC1D;AAEA,MAAI,UAAU,oBAAoB,kBAAkB,eAAe;AACjE,UAAM,iBAAkB,UAAU,YAAoB,cAAc,CAAC;AACrE,UAAM,QAAQ,kBAAkB;AAChC,WAAO,QAAQA,MAAK;AAAA,MAClB;AAAA,QACE,GAAG;AAAA,QACH,cAAcA,MAAK;AAAA,UACjBA,MAAK,OAAOA,MAAK,OAAO,GAAG,OAAO;AAAA,YAChC,aACE;AAAA,UACJ,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA;AAAA,QACE,sBAAsB;AAAA,QACtB,aAAc,UAAU,YAAoB;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAEA,SAAOA,MAAK,OAAO,QAAQ,EAAE,sBAAsB,MAAM,CAAC;AAC5D;AAEO,SAAS,8BACd,cACoB;AACpB,SAAO,kCAAkC;AAAA,IAAI,CAAC,cAC5C,gCAAgC,WAAW,YAAY;AAAA,EACzD;AACF;AAaO,SAAS,sCACd,SACA,gBAA2B,CAAC,GACjB;AAEX,QAAM,cAAc,oBAAI,IAAqB;AAC7C,aAAW,QAAQ,mCAAmC;AACpD,QAAI,CAAC,KAAK,aAAa;AACrB,kBAAY;AAAA,QACV,KAAK;AAAA,QACL,gCAAgC,MAAM,QAAW,OAAO;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AAGA,QAAM,aAAa,kCAAkC;AAAA,IACnD,CAAC,MAAM,EAAE;AAAA,EACX;AACA,QAAM,WAAW,oBAAI,IAAqB;AAC1C,QAAM,UAAU,CAAC,GAAG,UAAU;AAE9B,SAAO,QAAQ,SAAS,GAAG;AACzB,UAAM,SAAS,QAAQ;AACvB,aAAS,IAAI,QAAQ,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5C,YAAM,OAAO,QAAQ,CAAC;AAEtB,UAAI,CAAC,KAAK,iBAAiB;AAEzB,iBAAS;AAAA,UACP,KAAK;AAAA,UACL,gCAAgC,MAAM,SAAS,OAAO;AAAA,QACxD;AACA,gBAAQ,OAAO,GAAG,CAAC;AACnB;AAAA,MACF;AAGA,YAAM,gBAAgB,KAAK,gBAAgB;AAAA,QAAO,CAAC,SACjD,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAAA,MACxC;AACA,UAAI,CAAC,cAAc,MAAM,CAAC,MAAM,SAAS,IAAI,CAAC,CAAC,EAAG;AAGlD,YAAM,eAAe,KAAK,gBACvB,IAAI,CAAC,SAAS,SAAS,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,EACzD,OAAO,CAAC,MAAoB,MAAM,MAAS;AAE9C,YAAM,kBAAkB,CAAC,GAAG,cAAc,GAAG,aAAa;AAC1D,YAAM,eACJ,gBAAgB,WAAW,IACvB,gBAAgB,CAAC,IACjBA,MAAK,MAAM,eAAe;AAEhC,eAAS;AAAA,QACP,KAAK;AAAA,QACL,gCAAgC,MAAM,cAAc,OAAO;AAAA,MAC7D;AACA,cAAQ,OAAO,GAAG,CAAC;AAAA,IACrB;AAEA,QAAI,QAAQ,WAAW,QAAQ;AAC7B,YAAM,IAAI;AAAA,QACR,mCAAmC,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,MAC1E;AAAA,IACF;AAAA,EACF;AAGA,SAAO,CAAC,GAAG,SAAS,OAAO,GAAG,GAAG,YAAY,OAAO,CAAC;AACvD;","names":["Type","Type","Type","Type","Type","Type"]}