@json-to-office/shared 1.4.0 → 1.6.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.
@@ -1445,7 +1445,7 @@ var PPTX_SLIDE_CONTENT_COMPONENTS = [
1445
1445
  // `text` XOR `runs`: both optional in the schema, one of them mandatory in
1446
1446
  // fact (validation/text-content-conflicts.ts rejects neither and both).
1447
1447
  propsRequired: true,
1448
- description: "Text element - displays text with formatting, positioning and styling options."
1448
+ description: "Text element - displays text with formatting, positioning and styling options. Prefer the named `style` values (title, heading1, body\u2026) and theme color tokens over raw fontSize/hex \u2014 a theme swap must restyle the deck without editing every node."
1449
1449
  },
1450
1450
  {
1451
1451
  name: "image",
@@ -1489,7 +1489,7 @@ var PPTX_SLIDE_CONTENT_COMPONENTS = [
1489
1489
  propsSchema: PptxChartPropsSchema,
1490
1490
  hasChildren: false,
1491
1491
  category: "content",
1492
- description: "Native PowerPoint chart - editable, scalable, no external server needed."
1492
+ description: "Native PowerPoint chart - editable, scalable, no external server needed. Always set series colors (theme-derived, one accent per series) \u2014 the auto-palette reads as default Office."
1493
1493
  }
1494
1494
  ];
1495
1495
  function createSlideContentComponentSchema(component) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schemas/slide-content.ts","../../src/schemas/slide-content/text.ts","../../src/schemas/slide-content/common.ts","../../src/schemas/slide-content/theme.ts","../../src/schemas/slide-content/image.ts","../../src/schemas/slide-content/shape.ts","../../src/schemas/slide-content/table.ts","../../src/schemas/slide-content/highcharts.ts","../../src/schemas/slide-content/chart.ts"],"sourcesContent":["/**\n * Canonical schemas for leaf content rendered on a PPTX slide.\n *\n * Kept in the format-agnostic shared package because DOCX visuals embed the\n * same content model without depending on the full PPTX schema package.\n */\n\nimport { Type, Static, TSchema } from '@sinclair/typebox';\nimport { TextPropsSchema } from './slide-content/text';\nimport { PptxImagePropsSchema } from './slide-content/image';\nimport { ShapePropsSchema } from './slide-content/shape';\nimport { PptxTablePropsSchema } from './slide-content/table';\nimport { PptxHighchartsPropsSchema } from './slide-content/highcharts';\nimport { PptxChartPropsSchema } from './slide-content/chart';\n\nexport * from './slide-content/common';\nexport * from './slide-content/theme';\nexport * from './slide-content/text';\nexport * from './slide-content/image';\nexport * from './slide-content/shape';\nexport * from './slide-content/table';\nexport * from './slide-content/highcharts';\nexport * from './slide-content/chart';\n\nexport interface PptxSlideContentComponentDescriptor<\n TName extends string = string,\n TPropsSchema extends TSchema = TSchema,\n> {\n readonly name: TName;\n readonly propsSchema: TPropsSchema;\n readonly hasChildren: false;\n readonly category: 'content';\n readonly description: string;\n /**\n * Force `props` to stay required even though the props schema accepts `{}`.\n *\n * Only for components whose content requirement is real but inexpressible in\n * a single TypeBox object — see `pptxComponentRequiresProps`.\n */\n readonly propsRequired?: boolean;\n}\n\n/**\n * Whether a PPTX component must carry a `props` key.\n *\n * The default answer is the props schema's own: a schema that accepts `{}`\n * demands nothing, so the key adds nothing and may be omitted (this mirrors\n * `demandsProps` in shared-docx). Two components override it, because their\n * content requirement is a rule a single TypeBox object cannot state: `text`\n * needs exactly one of `text`/`runs` and `image` exactly one of\n * `path`/`base64`/`svg`, so both leave every field optional and are still\n * unrenderable empty. Declaring it here rather than in each consumer is what\n * keeps the published schema and the runtime validator asking for the same\n * key — they both call this.\n *\n * The override is what the published schema has always said for both, so it is\n * the runtime that moved to meet it. Reading the schema's own answer instead\n * would have loosened the published contract on `image` — a change to what\n * agents are told, made to fix a disagreement about what they are told.\n */\nexport function pptxComponentRequiresProps(component: {\n readonly propsSchema: TSchema;\n readonly propsRequired?: boolean;\n}): boolean {\n if (component.propsRequired !== undefined) return component.propsRequired;\n const schema = component.propsSchema as {\n type?: string;\n required?: readonly string[];\n };\n return schema.type !== 'object' || (schema.required?.length ?? 0) > 0;\n}\n\n/**\n * Single source of truth for PPTX leaf content, in public schema order.\n */\nexport const PPTX_SLIDE_CONTENT_COMPONENTS = [\n {\n name: 'text',\n propsSchema: TextPropsSchema,\n hasChildren: false,\n category: 'content',\n // `text` XOR `runs`: both optional in the schema, one of them mandatory in\n // fact (validation/text-content-conflicts.ts rejects neither and both).\n propsRequired: true,\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 // One of `path`/`base64`/`svg`, so same shape as `text`: a source is\n // mandatory in fact and optional in the schema. Unlike `text` this is only\n // half enforced — the missing key is caught, an empty props object is not,\n // because `image` has no analogue of validation/text-content-conflicts.ts\n // and a sourceless image is an IMAGE_NO_SOURCE warning at generation, not\n // an error. The flag is still not the guess: `image` has required `props`\n // in the published schema since it was first generated, so dropping it\n // here would loosen that contract rather than tighten the runtime.\n propsRequired: true,\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, declared ROW-MAJOR: `props.rows[][]`, an array of rows, each an array of cells, with no structural header — `headerRow: true` styles the first row as one. Note the DOCX `table` is the other way round — columns each carrying their own header and cells — so a table cannot be moved between the formats unchanged.',\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 satisfies readonly PptxSlideContentComponentDescriptor[];\n\nexport type PptxSlideContentComponentName =\n (typeof PPTX_SLIDE_CONTENT_COMPONENTS)[number]['name'];\n\nfunction createSlideContentComponentSchema<\n const TName extends string,\n const TPropsSchema extends TSchema,\n>(component: PptxSlideContentComponentDescriptor<TName, TPropsSchema>) {\n return Type.Object(\n {\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 props: pptxComponentRequiresProps(component)\n ? component.propsSchema\n : Type.Optional(component.propsSchema),\n },\n { additionalProperties: false, description: component.description }\n );\n}\n\n/**\n * A single PPTX slide content element. The explicit id lets JSON-Schema export\n * hoist the union into one shared definition when DOCX visuals embed it.\n */\nexport const PptxSlideContentSchema = Type.Union(\n [\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[0]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[1]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[2]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[3]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[4]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[5]),\n ],\n {\n $id: 'PptxSlideContent',\n discriminator: { propertyName: 'name' },\n description:\n 'A single PPTX slide content element (text, image, shape, table, highcharts, or chart).',\n }\n);\n\nexport type PptxSlideContent = Static<typeof PptxSlideContentSchema>;\n","/**\n * Text Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontFamilyNameSchema } from '../font-catalog';\nimport {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} from './common';\nimport { StyleNameSchema } from './theme';\n\nexport const TextRunSchema = Type.Object(\n {\n text: Type.String({ description: 'Run text content' }),\n color: Type.Optional(\n Type.String({\n description: 'Run color (hex without # or semantic theme name)',\n })\n ),\n bold: Type.Optional(Type.Boolean({ description: 'Bold run' })),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Per-run weight (100–900). Overrides `bold` when set — renderer picks the closest embedded variant via CSS font-matching.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic run' })),\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 run' })),\n fontSize: Type.Optional(\n Type.Number({ minimum: 1, description: 'Run font size in points' })\n ),\n fontFace: Type.Optional(Type.String({ description: 'Run font family' })),\n superscript: Type.Optional(\n Type.Boolean({ description: 'Render run as superscript' })\n ),\n subscript: Type.Optional(\n Type.Boolean({ description: 'Render run as subscript' })\n ),\n charSpacing: Type.Optional(\n Type.Number({ description: 'Character spacing in points' })\n ),\n breakLine: Type.Optional(\n Type.Boolean({ description: 'Insert line break after this run' })\n ),\n },\n {\n description:\n 'A styled text run. Run options override component-level defaults.',\n additionalProperties: false,\n }\n);\n\nexport type TextRun = Static<typeof TextRunSchema>;\n\nexport const TextPropsSchema = Type.Object(\n {\n text: Type.Optional(\n Type.String({\n description:\n 'Text content to display. Mutually exclusive with `runs` — set exactly one of the two.',\n })\n ),\n runs: Type.Optional(\n Type.Array(TextRunSchema, {\n minItems: 1,\n description:\n 'Rich text runs with per-run styling, rendered as one text block. Mutually exclusive with `text` — set exactly one of the two. Component-level props (align, valign, fill, lineSpacing, position…) still apply to the whole block.',\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 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 lineSpacingMultiple: Type.Optional(\n Type.Number({\n minimum: 0.1,\n maximum: 10,\n description:\n 'Line spacing as a multiple of the font size (e.g. 0.9 = 90%). Takes precedence over lineSpacing.',\n })\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\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(\n Type.Number({ description: 'Shadow blur radius in points' })\n ),\n offset: Type.Optional(\n Type.Number({ description: 'Shadow offset in points' })\n ),\n angle: Type.Optional(\n Type.Number({ description: 'Shadow angle in degrees' })\n ),\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({\n minimum: 0,\n description: 'Starting column (0-indexed)',\n }),\n row: Type.Number({ minimum: 0, description: 'Starting row (0-indexed)' }),\n columnSpan: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Number of columns to span (default: 1)',\n })\n ),\n rowSpan: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Number of rows to span (default: 1)',\n })\n ),\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 PptxAlignment = Static<typeof PptxAlignmentSchema>;\nexport type VerticalAlignment = Static<typeof VerticalAlignmentSchema>;\nexport type Shadow = Static<typeof ShadowSchema>;\n","/**\n * Theme primitives shared by PPTX slide content embedded across formats.\n */\n\nimport { Type } from '@sinclair/typebox';\n\nconst HexColorSchema = Type.String({\n pattern: '^#?[0-9A-Fa-f]{6}$',\n description: 'Hex color (e.g. #FF0000)',\n});\n\nexport const SEMANTIC_COLOR_NAMES = [\n 'primary',\n 'secondary',\n 'accent',\n 'background',\n 'text',\n 'text2',\n 'background2',\n 'accent4',\n 'accent5',\n 'accent6',\n] as const;\n\n/** PowerPoint XML aliases that resolve to canonical semantic names at runtime */\nexport const SEMANTIC_COLOR_ALIASES = [\n 'accent1',\n 'accent2',\n 'accent3',\n 'tx1',\n 'tx2',\n 'bg1',\n 'bg2',\n] as const;\n\nexport const ColorValueSchema = Type.Union(\n [\n HexColorSchema,\n ...SEMANTIC_COLOR_NAMES.map((name) => Type.Literal(name)),\n ...SEMANTIC_COLOR_ALIASES.map((name) => Type.Literal(name)),\n ],\n { description: 'Hex color or semantic theme color name' }\n);\n\nexport const STYLE_NAMES = [\n 'title',\n 'subtitle',\n 'heading1',\n 'heading2',\n 'heading3',\n 'body',\n 'caption',\n] as const;\n\nexport const StyleNameSchema = Type.Union(\n STYLE_NAMES.map((name) => Type.Literal(name)),\n { description: 'Predefined style name' }\n);\n\nexport type StyleName = (typeof STYLE_NAMES)[number];\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 {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} 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('arc'),\n Type.Literal('pie'),\n Type.Literal('blockArc'),\n Type.Literal('chord'),\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(\n Type.String({\n description: 'Segment color (hex without # or semantic name)',\n })\n ),\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(\n Type.Boolean({ description: 'Insert line break after this segment' })\n ),\n spaceBefore: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Space before paragraph in points',\n })\n ),\n spaceAfter: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Space after paragraph in points',\n })\n ),\n charSpacing: Type.Optional(\n Type.Number({ description: 'Character spacing in points' })\n ),\n },\n { additionalProperties: false }\n);\n\nexport type TextSegment = Static<typeof TextSegmentSchema>;\n\n/**\n * OOXML `a:pattFill` preset names (ST_PresetPatternVal).\n */\nexport const PATTERN_FILL_PRESETS = [\n 'pct5',\n 'pct10',\n 'pct20',\n 'pct25',\n 'pct30',\n 'pct40',\n 'pct50',\n 'pct60',\n 'pct70',\n 'pct75',\n 'pct80',\n 'pct90',\n 'horz',\n 'vert',\n 'ltHorz',\n 'ltVert',\n 'dkHorz',\n 'dkVert',\n 'narHorz',\n 'narVert',\n 'dashHorz',\n 'dashVert',\n 'cross',\n 'dnDiag',\n 'upDiag',\n 'ltDnDiag',\n 'ltUpDiag',\n 'dkDnDiag',\n 'dkUpDiag',\n 'wdDnDiag',\n 'wdUpDiag',\n 'dashDnDiag',\n 'dashUpDiag',\n 'diagCross',\n 'smCheck',\n 'lgCheck',\n 'smGrid',\n 'lgGrid',\n 'dotGrid',\n 'smConfetti',\n 'lgConfetti',\n 'horzBrick',\n 'diagBrick',\n 'solidDmnd',\n 'openDmnd',\n 'dotDmnd',\n 'plaid',\n 'sphere',\n 'weave',\n 'divot',\n 'shingle',\n 'wave',\n 'trellis',\n 'zigZag',\n] as const;\n\nexport const GradientStopSchema = Type.Object(\n {\n color: Type.String({\n description: 'Stop color (hex without # or semantic theme name)',\n }),\n pos: Type.Number({\n minimum: 0,\n maximum: 100,\n description: 'Stop position along the gradient (0-100)',\n }),\n transparency: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 100,\n description: 'Stop transparency (0-100)',\n })\n ),\n },\n { additionalProperties: false, description: 'Gradient color stop' }\n);\n\nexport const GradientFillSchema = Type.Object(\n {\n type: Type.Union([Type.Literal('linear'), Type.Literal('radial')], {\n description: 'Gradient type',\n }),\n angle: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 360,\n description:\n 'Gradient angle in degrees for linear gradients (0 = left→right, 90 = top→bottom). Default: 0.',\n })\n ),\n stops: Type.Array(GradientStopSchema, {\n minItems: 2,\n description: 'Gradient color stops (at least 2)',\n }),\n focus: Type.Optional(\n Type.Union(\n [\n Type.Literal('center'),\n Type.Literal('topLeft'),\n Type.Literal('topRight'),\n Type.Literal('bottomLeft'),\n Type.Literal('bottomRight'),\n ],\n {\n description: 'Focus point for radial gradients (default: \"center\")',\n }\n )\n ),\n },\n { additionalProperties: false, description: 'Gradient fill configuration' }\n);\n\nexport const PatternFillSchema = Type.Object(\n {\n preset: Type.Union(\n PATTERN_FILL_PRESETS.map((p) => Type.Literal(p)),\n { description: 'OOXML pattern preset name (a:pattFill prst value)' }\n ),\n foreground: Type.String({\n description: 'Pattern foreground color (hex without # or semantic name)',\n }),\n background: Type.String({\n description: 'Pattern background color (hex without # or semantic name)',\n }),\n },\n { additionalProperties: false, description: 'Pattern fill configuration' }\n);\n\nexport type GradientStop = Static<typeof GradientStopSchema>;\nexport type GradientFill = Static<typeof GradientFillSchema>;\nexport type PatternFill = Static<typeof PatternFillSchema>;\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({\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 fill: Type.Optional(\n Type.Object(\n {\n color: Type.Optional(\n Type.String({ description: 'Fill color (hex without #)' })\n ),\n transparency: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 100,\n description: 'Fill transparency (0-100)',\n })\n ),\n gradient: Type.Optional(GradientFillSchema),\n pattern: Type.Optional(PatternFillSchema),\n },\n { additionalProperties: false }\n )\n ),\n line: Type.Optional(\n Type.Object(\n {\n color: Type.Optional(\n Type.String({ description: 'Line color (hex without #)' })\n ),\n width: Type.Optional(\n Type.Number({ minimum: 0, description: 'Line width in points' })\n ),\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(\n Type.Union(\n [\n Type.String({ description: 'Plain text' }),\n Type.Array(TextSegmentSchema, {\n description: 'Rich text segments with per-segment formatting',\n }),\n ],\n { description: 'Text content inside the shape' }\n )\n ),\n fontSize: Type.Optional(\n Type.Number({ minimum: 1, description: 'Font size for shape text' })\n ),\n fontFace: Type.Optional(\n Type.String({ description: 'Font family for shape text' })\n ),\n fontColor: Type.Optional(\n Type.String({ description: 'Font color for shape text (hex without #)' })\n ),\n charSpacing: Type.Optional(\n Type.Number({ description: 'Character spacing in points for shape text' })\n ),\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: '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(\n Type.Number({ description: 'Rotation angle in degrees' })\n ),\n angleRange: Type.Optional(\n Type.Array(Type.Number(), {\n minItems: 2,\n maxItems: 2,\n description:\n 'Shape arc [start, end] angles in degrees (arc/pie/blockArc/chord shapes)',\n })\n ),\n flipH: Type.Optional(\n Type.Boolean({ description: 'Flip shape horizontally' })\n ),\n flipV: Type.Optional(\n Type.Boolean({ description: 'Flip shape vertically' })\n ),\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 {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n GridPositionSchema,\n} 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(\n Type.String({ description: 'Text color (hex without #)' })\n ),\n fill: Type.Optional(\n Type.String({ description: 'Cell background color (hex without #)' })\n ),\n fontSize: Type.Optional(\n Type.Number({ description: 'Font size in points' })\n ),\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(\n Type.Number({ minimum: 1, description: 'Column span' })\n ),\n rowspan: Type.Optional(\n Type.Number({ minimum: 1, description: 'Row span' })\n ),\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({\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 colW: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Uniform column width in inches' }),\n Type.Array(Type.Number(), {\n description: 'Individual column widths in inches',\n }),\n ])\n ),\n rowH: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Uniform row height in inches' }),\n Type.Array(Type.Number(), {\n description: 'Individual row heights in inches',\n }),\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(\n Type.Number({ minimum: 0, description: 'Border width in points' })\n ),\n color: Type.Optional(\n Type.String({ description: 'Border color (hex without #)' })\n ),\n },\n { additionalProperties: false }\n )\n ),\n fill: Type.Optional(\n Type.String({ description: 'Table background color (hex without #)' })\n ),\n fontSize: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Default font size for all cells',\n })\n ),\n fontFace: Type.Optional(\n Type.String({ description: 'Default font family for all cells' })\n ),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Default weight for all cells (100–900). Same sub-family aliasing as the per-cell `fontWeight`; a cell that sets its own `fontWeight` or `bold` opts out.',\n })\n ),\n color: Type.Optional(\n Type.String({\n description: 'Default text color for all cells (hex without #)',\n })\n ),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n headerRow: Type.Optional(\n Type.Boolean({\n description:\n \"Style the first row as a header — bold, on the theme's secondary background. Cells that state their own `bold`, `fill` or `color` keep it. Unlike the DOCX table, which declares its headers structurally, a PPTX table is rows of cells and the first one is a header only because you say so.\",\n })\n ),\n autoPage: Type.Optional(\n Type.Boolean({\n description:\n 'Auto-paginate table across multiple slides when content overflows',\n })\n ),\n autoPageRepeatHeader: Type.Optional(\n Type.Boolean({\n description: 'Repeat first row as header on each auto-paged slide',\n })\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({\n minimum: 0,\n description:\n 'Rounded corner radius in inches. Renders a roundRect shape behind the table.',\n })\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\n/**\n * A position or size, in inches or as a percentage of the slide.\n *\n * Described per axis, exactly as `text`, `image`, `shape` and `table` describe\n * theirs: a bare number with no unit leaves an agent guessing between inches,\n * points and EMU on the one component it reaches for to chart a quarter.\n */\nconst positionValue = (inches: string, percent: string) =>\n Type.Union([\n Type.Number({ description: inches }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: percent,\n }),\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\n/**\n * One series.\n *\n * `labels` and `values` are needed on EVERY series, not just the first: the\n * compiler drops the whole chart the moment one series is missing either. They\n * stay schema-optional only because the compiler still owns that refusal and\n * warns about it by name; the descriptions say so, because \"optional\" alone\n * left an agent to discover it from a rendered file with no chart in it.\n */\nconst ChartDataSeriesSchema = Type.Object(\n {\n name: Type.Optional(Type.String({ description: 'Series name' })),\n labels: Type.Optional(\n Type.Array(Type.String(), {\n description:\n 'Category labels. Needed on every series, not just the first, and the same length as `values`; a series without both `labels` and `values` drops the whole chart.',\n })\n ),\n values: Type.Optional(\n Type.Array(Type.Number(), {\n description:\n 'Data values, one per label. Needed on every series — see `labels`.',\n })\n ),\n sizes: Type.Optional(\n Type.Array(Type.Number(), {\n description: 'Bubble sizes (bubble charts only)',\n })\n ),\n },\n { additionalProperties: false }\n);\n\nconst ChartGridLineSchema = Type.Object(\n {\n style: Type.Optional(\n Type.Union(\n [\n Type.Literal('solid'),\n Type.Literal('dash'),\n Type.Literal('dot'),\n Type.Literal('none'),\n ],\n { description: 'Grid line style' }\n )\n ),\n size: Type.Optional(\n Type.Number({ minimum: 0, description: 'Grid line width (points)' })\n ),\n color: Type.Optional(\n Type.String({ description: 'Grid line color (hex or semantic)' })\n ),\n },\n { additionalProperties: false, description: 'Axis grid line styling' }\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(\n Type.Boolean({ description: 'Show chart legend' })\n ),\n showTitle: Type.Optional(Type.Boolean({ description: 'Show chart title' })),\n showValue: Type.Optional(Type.Boolean({ description: 'Show data values' })),\n showPercent: Type.Optional(\n Type.Boolean({ description: 'Show percentages (pie/doughnut)' })\n ),\n showLabel: Type.Optional(\n Type.Boolean({ description: 'Show category labels on data points' })\n ),\n showSerName: Type.Optional(\n Type.Boolean({ description: 'Show series name on data points' })\n ),\n\n // Title\n title: Type.Optional(Type.String({ description: 'Chart title text' })),\n titleFontSize: Type.Optional(\n Type.Number({ description: 'Title font size (points)' })\n ),\n titleColor: Type.Optional(\n Type.String({ description: 'Title color (hex or semantic)' })\n ),\n titleFontFace: Type.Optional(\n Type.String({ description: 'Title font face' })\n ),\n titleFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Title weight (100–900). Rendered as a sub-family alias — see `dataLabelFontWeight`.',\n })\n ),\n\n // Chart colors\n chartColors: Type.Optional(\n Type.Array(Type.String(), {\n description:\n 'Series colors (hex or semantic theme names). Defaults to theme palette.',\n })\n ),\n\n // Data element border (bars/slices/areas)\n dataBorder: Type.Optional(\n Type.Object(\n {\n pt: Type.Number({\n minimum: 0,\n description: 'Border width (points)',\n }),\n color: Type.String({\n description: 'Border color (hex or semantic)',\n }),\n },\n {\n additionalProperties: false,\n description: 'Outline on data elements (bars, slices, areas)',\n }\n )\n ),\n\n // Legend\n legendPos: Type.Optional(\n Type.Union(\n [\n Type.Literal('b'),\n Type.Literal('l'),\n Type.Literal('r'),\n Type.Literal('t'),\n Type.Literal('tr'),\n ],\n { description: 'Legend position' }\n )\n ),\n legendFontSize: Type.Optional(\n Type.Number({ description: 'Legend font size' })\n ),\n legendFontFace: Type.Optional(\n Type.String({ description: 'Legend font face' })\n ),\n legendFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Legend weight (100–900). Rendered as a sub-family alias — see `dataLabelFontWeight`. PowerPoint gives the legend no bold toggle, so 400 and 700 both render Regular (700 warns).',\n })\n ),\n legendColor: Type.Optional(\n Type.String({ description: 'Legend text color' })\n ),\n\n // Category axis\n catAxisTitle: Type.Optional(\n Type.String({ description: 'Category axis title' })\n ),\n catAxisHidden: Type.Optional(\n Type.Boolean({ description: 'Hide category axis' })\n ),\n catAxisLabelRotate: Type.Optional(\n Type.Number({ description: 'Category axis label rotation (degrees)' })\n ),\n catAxisLabelFontSize: Type.Optional(\n Type.Number({ description: 'Category axis label font size' })\n ),\n catAxisLabelColor: Type.Optional(\n Type.String({\n description: 'Category axis label color (hex or semantic)',\n })\n ),\n catAxisLabelFontFace: Type.Optional(\n Type.String({ description: 'Category axis label font face' })\n ),\n catAxisLabelFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Category axis label weight (100–900). Rendered as a sub-family alias — see `dataLabelFontWeight`.',\n })\n ),\n catGridLine: Type.Optional(ChartGridLineSchema),\n\n // Value axis\n valAxisTitle: Type.Optional(\n Type.String({ description: 'Value axis title' })\n ),\n valAxisHidden: Type.Optional(\n Type.Boolean({ description: 'Hide value axis' })\n ),\n valAxisMinVal: Type.Optional(\n Type.Number({ description: 'Value axis minimum' })\n ),\n valAxisMaxVal: Type.Optional(\n Type.Number({ description: 'Value axis maximum' })\n ),\n valAxisLabelFormatCode: Type.Optional(\n Type.String({\n description: 'Value axis label format (e.g. \"$0.00\", \"#%\")',\n })\n ),\n valAxisMajorUnit: Type.Optional(\n Type.Number({ description: 'Value axis major unit / tick interval' })\n ),\n valAxisLabelColor: Type.Optional(\n Type.String({ description: 'Value axis label color (hex or semantic)' })\n ),\n valAxisLabelFontFace: Type.Optional(\n Type.String({ description: 'Value axis label font face' })\n ),\n valAxisLabelFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Value axis label weight (100–900). Rendered as a sub-family alias — see `dataLabelFontWeight`.',\n })\n ),\n valAxisLabelFontSize: Type.Optional(\n Type.Number({ description: 'Value axis label font size' })\n ),\n valGridLine: Type.Optional(ChartGridLineSchema),\n catAxisLineShow: Type.Optional(\n Type.Boolean({ description: 'Show the category axis line' })\n ),\n valAxisLineShow: Type.Optional(\n Type.Boolean({ description: 'Show the value axis line' })\n ),\n\n // Bar-specific\n barDir: Type.Optional(\n Type.Union([Type.Literal('bar'), Type.Literal('col')], {\n description:\n 'Bar direction: \"bar\" (horizontal) or \"col\" (vertical, default)',\n })\n ),\n barGrouping: Type.Optional(\n Type.Union(\n [\n Type.Literal('clustered'),\n Type.Literal('stacked'),\n Type.Literal('percentStacked'),\n ],\n { description: 'Bar grouping style' }\n )\n ),\n barGapWidthPct: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 500,\n description: 'Bar gap width (0-500%)',\n })\n ),\n barOverlapPct: Type.Optional(\n Type.Number({\n minimum: -100,\n maximum: 100,\n description:\n 'Overlap between series bars (-100 to 100%). 100 = fully overlapped, negative = gap.',\n })\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(\n Type.Number({ description: 'Line width (points)' })\n ),\n lineDataSymbolSize: Type.Optional(\n Type.Number({\n minimum: 2,\n maximum: 72,\n description: 'Line data point marker size (points)',\n })\n ),\n\n // Pie/doughnut-specific\n firstSliceAng: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 359,\n description: 'Angle of first slice (degrees)',\n })\n ),\n holeSize: Type.Optional(\n Type.Number({\n minimum: 10,\n maximum: 90,\n description: 'Doughnut hole size (%)',\n })\n ),\n\n // Radar-specific\n radarStyle: Type.Optional(\n Type.Union(\n [\n Type.Literal('standard'),\n Type.Literal('marker'),\n Type.Literal('filled'),\n ],\n { description: 'Radar chart style' }\n )\n ),\n\n // Data labels\n dataLabelColor: Type.Optional(\n Type.String({ description: 'Data label text color' })\n ),\n dataLabelFontSize: Type.Optional(\n Type.Number({ description: 'Data label font size' })\n ),\n dataLabelFontFace: Type.Optional(\n Type.String({ description: 'Data label font face' })\n ),\n dataLabelFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Data label weight (100–900); overrides `dataLabelFontBold`. PowerPoint chart labels carry no numeric weight, so a non-RIBBI weight renders by rewriting the font face to the matching sub-family (\"Inter\" at 300 → \"Inter Light\") — 400 and 700 stay on the family and use the bold toggle. Falls back to the theme body font when the sibling font face is unset.',\n })\n ),\n dataLabelFontBold: Type.Optional(\n Type.Boolean({ description: 'Bold data labels' })\n ),\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('X position in inches', 'X as percentage')),\n y: Type.Optional(positionValue('Y position in inches', 'Y as percentage')),\n w: Type.Optional(positionValue('Width in inches', 'Width as percentage')),\n h: Type.Optional(positionValue('Height in inches', 'Height as percentage')),\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","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type"]}
1
+ {"version":3,"sources":["../../src/schemas/slide-content.ts","../../src/schemas/slide-content/text.ts","../../src/schemas/slide-content/common.ts","../../src/schemas/slide-content/theme.ts","../../src/schemas/slide-content/image.ts","../../src/schemas/slide-content/shape.ts","../../src/schemas/slide-content/table.ts","../../src/schemas/slide-content/highcharts.ts","../../src/schemas/slide-content/chart.ts"],"sourcesContent":["/**\n * Canonical schemas for leaf content rendered on a PPTX slide.\n *\n * Kept in the format-agnostic shared package because DOCX visuals embed the\n * same content model without depending on the full PPTX schema package.\n */\n\nimport { Type, Static, TSchema } from '@sinclair/typebox';\nimport { TextPropsSchema } from './slide-content/text';\nimport { PptxImagePropsSchema } from './slide-content/image';\nimport { ShapePropsSchema } from './slide-content/shape';\nimport { PptxTablePropsSchema } from './slide-content/table';\nimport { PptxHighchartsPropsSchema } from './slide-content/highcharts';\nimport { PptxChartPropsSchema } from './slide-content/chart';\n\nexport * from './slide-content/common';\nexport * from './slide-content/theme';\nexport * from './slide-content/text';\nexport * from './slide-content/image';\nexport * from './slide-content/shape';\nexport * from './slide-content/table';\nexport * from './slide-content/highcharts';\nexport * from './slide-content/chart';\n\nexport interface PptxSlideContentComponentDescriptor<\n TName extends string = string,\n TPropsSchema extends TSchema = TSchema,\n> {\n readonly name: TName;\n readonly propsSchema: TPropsSchema;\n readonly hasChildren: false;\n readonly category: 'content';\n readonly description: string;\n /**\n * Force `props` to stay required even though the props schema accepts `{}`.\n *\n * Only for components whose content requirement is real but inexpressible in\n * a single TypeBox object — see `pptxComponentRequiresProps`.\n */\n readonly propsRequired?: boolean;\n}\n\n/**\n * Whether a PPTX component must carry a `props` key.\n *\n * The default answer is the props schema's own: a schema that accepts `{}`\n * demands nothing, so the key adds nothing and may be omitted (this mirrors\n * `demandsProps` in shared-docx). Two components override it, because their\n * content requirement is a rule a single TypeBox object cannot state: `text`\n * needs exactly one of `text`/`runs` and `image` exactly one of\n * `path`/`base64`/`svg`, so both leave every field optional and are still\n * unrenderable empty. Declaring it here rather than in each consumer is what\n * keeps the published schema and the runtime validator asking for the same\n * key — they both call this.\n *\n * The override is what the published schema has always said for both, so it is\n * the runtime that moved to meet it. Reading the schema's own answer instead\n * would have loosened the published contract on `image` — a change to what\n * agents are told, made to fix a disagreement about what they are told.\n */\nexport function pptxComponentRequiresProps(component: {\n readonly propsSchema: TSchema;\n readonly propsRequired?: boolean;\n}): boolean {\n if (component.propsRequired !== undefined) return component.propsRequired;\n const schema = component.propsSchema as {\n type?: string;\n required?: readonly string[];\n };\n return schema.type !== 'object' || (schema.required?.length ?? 0) > 0;\n}\n\n/**\n * Single source of truth for PPTX leaf content, in public schema order.\n */\nexport const PPTX_SLIDE_CONTENT_COMPONENTS = [\n {\n name: 'text',\n propsSchema: TextPropsSchema,\n hasChildren: false,\n category: 'content',\n // `text` XOR `runs`: both optional in the schema, one of them mandatory in\n // fact (validation/text-content-conflicts.ts rejects neither and both).\n propsRequired: true,\n description:\n 'Text element - displays text with formatting, positioning and styling options. Prefer the named `style` values (title, heading1, body…) and theme color tokens over raw fontSize/hex — a theme swap must restyle the deck without editing every node.',\n },\n {\n name: 'image',\n propsSchema: PptxImagePropsSchema,\n hasChildren: false,\n category: 'content',\n // One of `path`/`base64`/`svg`, so same shape as `text`: a source is\n // mandatory in fact and optional in the schema. Unlike `text` this is only\n // half enforced — the missing key is caught, an empty props object is not,\n // because `image` has no analogue of validation/text-content-conflicts.ts\n // and a sourceless image is an IMAGE_NO_SOURCE warning at generation, not\n // an error. The flag is still not the guess: `image` has required `props`\n // in the published schema since it was first generated, so dropping it\n // here would loosen that contract rather than tighten the runtime.\n propsRequired: true,\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, declared ROW-MAJOR: `props.rows[][]`, an array of rows, each an array of cells, with no structural header — `headerRow: true` styles the first row as one. Note the DOCX `table` is the other way round — columns each carrying their own header and cells — so a table cannot be moved between the formats unchanged.',\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. Always set series colors (theme-derived, one accent per series) — the auto-palette reads as default Office.',\n },\n] as const satisfies readonly PptxSlideContentComponentDescriptor[];\n\nexport type PptxSlideContentComponentName =\n (typeof PPTX_SLIDE_CONTENT_COMPONENTS)[number]['name'];\n\nfunction createSlideContentComponentSchema<\n const TName extends string,\n const TPropsSchema extends TSchema,\n>(component: PptxSlideContentComponentDescriptor<TName, TPropsSchema>) {\n return Type.Object(\n {\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 props: pptxComponentRequiresProps(component)\n ? component.propsSchema\n : Type.Optional(component.propsSchema),\n },\n { additionalProperties: false, description: component.description }\n );\n}\n\n/**\n * A single PPTX slide content element. The explicit id lets JSON-Schema export\n * hoist the union into one shared definition when DOCX visuals embed it.\n */\nexport const PptxSlideContentSchema = Type.Union(\n [\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[0]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[1]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[2]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[3]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[4]),\n createSlideContentComponentSchema(PPTX_SLIDE_CONTENT_COMPONENTS[5]),\n ],\n {\n $id: 'PptxSlideContent',\n discriminator: { propertyName: 'name' },\n description:\n 'A single PPTX slide content element (text, image, shape, table, highcharts, or chart).',\n }\n);\n\nexport type PptxSlideContent = Static<typeof PptxSlideContentSchema>;\n","/**\n * Text Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontFamilyNameSchema } from '../font-catalog';\nimport {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} from './common';\nimport { StyleNameSchema } from './theme';\n\nexport const TextRunSchema = Type.Object(\n {\n text: Type.String({ description: 'Run text content' }),\n color: Type.Optional(\n Type.String({\n description: 'Run color (hex without # or semantic theme name)',\n })\n ),\n bold: Type.Optional(Type.Boolean({ description: 'Bold run' })),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Per-run weight (100–900). Overrides `bold` when set — renderer picks the closest embedded variant via CSS font-matching.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic run' })),\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 run' })),\n fontSize: Type.Optional(\n Type.Number({ minimum: 1, description: 'Run font size in points' })\n ),\n fontFace: Type.Optional(Type.String({ description: 'Run font family' })),\n superscript: Type.Optional(\n Type.Boolean({ description: 'Render run as superscript' })\n ),\n subscript: Type.Optional(\n Type.Boolean({ description: 'Render run as subscript' })\n ),\n charSpacing: Type.Optional(\n Type.Number({ description: 'Character spacing in points' })\n ),\n breakLine: Type.Optional(\n Type.Boolean({ description: 'Insert line break after this run' })\n ),\n },\n {\n description:\n 'A styled text run. Run options override component-level defaults.',\n additionalProperties: false,\n }\n);\n\nexport type TextRun = Static<typeof TextRunSchema>;\n\nexport const TextPropsSchema = Type.Object(\n {\n text: Type.Optional(\n Type.String({\n description:\n 'Text content to display. Mutually exclusive with `runs` — set exactly one of the two.',\n })\n ),\n runs: Type.Optional(\n Type.Array(TextRunSchema, {\n minItems: 1,\n description:\n 'Rich text runs with per-run styling, rendered as one text block. Mutually exclusive with `text` — set exactly one of the two. Component-level props (align, valign, fill, lineSpacing, position…) still apply to the whole block.',\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 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 lineSpacingMultiple: Type.Optional(\n Type.Number({\n minimum: 0.1,\n maximum: 10,\n description:\n 'Line spacing as a multiple of the font size (e.g. 0.9 = 90%). Takes precedence over lineSpacing.',\n })\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\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(\n Type.Number({ description: 'Shadow blur radius in points' })\n ),\n offset: Type.Optional(\n Type.Number({ description: 'Shadow offset in points' })\n ),\n angle: Type.Optional(\n Type.Number({ description: 'Shadow angle in degrees' })\n ),\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({\n minimum: 0,\n description: 'Starting column (0-indexed)',\n }),\n row: Type.Number({ minimum: 0, description: 'Starting row (0-indexed)' }),\n columnSpan: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Number of columns to span (default: 1)',\n })\n ),\n rowSpan: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Number of rows to span (default: 1)',\n })\n ),\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 PptxAlignment = Static<typeof PptxAlignmentSchema>;\nexport type VerticalAlignment = Static<typeof VerticalAlignmentSchema>;\nexport type Shadow = Static<typeof ShadowSchema>;\n","/**\n * Theme primitives shared by PPTX slide content embedded across formats.\n */\n\nimport { Type } from '@sinclair/typebox';\n\nconst HexColorSchema = Type.String({\n pattern: '^#?[0-9A-Fa-f]{6}$',\n description: 'Hex color (e.g. #FF0000)',\n});\n\nexport const SEMANTIC_COLOR_NAMES = [\n 'primary',\n 'secondary',\n 'accent',\n 'background',\n 'text',\n 'text2',\n 'background2',\n 'accent4',\n 'accent5',\n 'accent6',\n] as const;\n\n/** PowerPoint XML aliases that resolve to canonical semantic names at runtime */\nexport const SEMANTIC_COLOR_ALIASES = [\n 'accent1',\n 'accent2',\n 'accent3',\n 'tx1',\n 'tx2',\n 'bg1',\n 'bg2',\n] as const;\n\nexport const ColorValueSchema = Type.Union(\n [\n HexColorSchema,\n ...SEMANTIC_COLOR_NAMES.map((name) => Type.Literal(name)),\n ...SEMANTIC_COLOR_ALIASES.map((name) => Type.Literal(name)),\n ],\n { description: 'Hex color or semantic theme color name' }\n);\n\nexport const STYLE_NAMES = [\n 'title',\n 'subtitle',\n 'heading1',\n 'heading2',\n 'heading3',\n 'body',\n 'caption',\n] as const;\n\nexport const StyleNameSchema = Type.Union(\n STYLE_NAMES.map((name) => Type.Literal(name)),\n { description: 'Predefined style name' }\n);\n\nexport type StyleName = (typeof STYLE_NAMES)[number];\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 {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} 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('arc'),\n Type.Literal('pie'),\n Type.Literal('blockArc'),\n Type.Literal('chord'),\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(\n Type.String({\n description: 'Segment color (hex without # or semantic name)',\n })\n ),\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(\n Type.Boolean({ description: 'Insert line break after this segment' })\n ),\n spaceBefore: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Space before paragraph in points',\n })\n ),\n spaceAfter: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Space after paragraph in points',\n })\n ),\n charSpacing: Type.Optional(\n Type.Number({ description: 'Character spacing in points' })\n ),\n },\n { additionalProperties: false }\n);\n\nexport type TextSegment = Static<typeof TextSegmentSchema>;\n\n/**\n * OOXML `a:pattFill` preset names (ST_PresetPatternVal).\n */\nexport const PATTERN_FILL_PRESETS = [\n 'pct5',\n 'pct10',\n 'pct20',\n 'pct25',\n 'pct30',\n 'pct40',\n 'pct50',\n 'pct60',\n 'pct70',\n 'pct75',\n 'pct80',\n 'pct90',\n 'horz',\n 'vert',\n 'ltHorz',\n 'ltVert',\n 'dkHorz',\n 'dkVert',\n 'narHorz',\n 'narVert',\n 'dashHorz',\n 'dashVert',\n 'cross',\n 'dnDiag',\n 'upDiag',\n 'ltDnDiag',\n 'ltUpDiag',\n 'dkDnDiag',\n 'dkUpDiag',\n 'wdDnDiag',\n 'wdUpDiag',\n 'dashDnDiag',\n 'dashUpDiag',\n 'diagCross',\n 'smCheck',\n 'lgCheck',\n 'smGrid',\n 'lgGrid',\n 'dotGrid',\n 'smConfetti',\n 'lgConfetti',\n 'horzBrick',\n 'diagBrick',\n 'solidDmnd',\n 'openDmnd',\n 'dotDmnd',\n 'plaid',\n 'sphere',\n 'weave',\n 'divot',\n 'shingle',\n 'wave',\n 'trellis',\n 'zigZag',\n] as const;\n\nexport const GradientStopSchema = Type.Object(\n {\n color: Type.String({\n description: 'Stop color (hex without # or semantic theme name)',\n }),\n pos: Type.Number({\n minimum: 0,\n maximum: 100,\n description: 'Stop position along the gradient (0-100)',\n }),\n transparency: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 100,\n description: 'Stop transparency (0-100)',\n })\n ),\n },\n { additionalProperties: false, description: 'Gradient color stop' }\n);\n\nexport const GradientFillSchema = Type.Object(\n {\n type: Type.Union([Type.Literal('linear'), Type.Literal('radial')], {\n description: 'Gradient type',\n }),\n angle: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 360,\n description:\n 'Gradient angle in degrees for linear gradients (0 = left→right, 90 = top→bottom). Default: 0.',\n })\n ),\n stops: Type.Array(GradientStopSchema, {\n minItems: 2,\n description: 'Gradient color stops (at least 2)',\n }),\n focus: Type.Optional(\n Type.Union(\n [\n Type.Literal('center'),\n Type.Literal('topLeft'),\n Type.Literal('topRight'),\n Type.Literal('bottomLeft'),\n Type.Literal('bottomRight'),\n ],\n {\n description: 'Focus point for radial gradients (default: \"center\")',\n }\n )\n ),\n },\n { additionalProperties: false, description: 'Gradient fill configuration' }\n);\n\nexport const PatternFillSchema = Type.Object(\n {\n preset: Type.Union(\n PATTERN_FILL_PRESETS.map((p) => Type.Literal(p)),\n { description: 'OOXML pattern preset name (a:pattFill prst value)' }\n ),\n foreground: Type.String({\n description: 'Pattern foreground color (hex without # or semantic name)',\n }),\n background: Type.String({\n description: 'Pattern background color (hex without # or semantic name)',\n }),\n },\n { additionalProperties: false, description: 'Pattern fill configuration' }\n);\n\nexport type GradientStop = Static<typeof GradientStopSchema>;\nexport type GradientFill = Static<typeof GradientFillSchema>;\nexport type PatternFill = Static<typeof PatternFillSchema>;\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({\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 fill: Type.Optional(\n Type.Object(\n {\n color: Type.Optional(\n Type.String({ description: 'Fill color (hex without #)' })\n ),\n transparency: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 100,\n description: 'Fill transparency (0-100)',\n })\n ),\n gradient: Type.Optional(GradientFillSchema),\n pattern: Type.Optional(PatternFillSchema),\n },\n { additionalProperties: false }\n )\n ),\n line: Type.Optional(\n Type.Object(\n {\n color: Type.Optional(\n Type.String({ description: 'Line color (hex without #)' })\n ),\n width: Type.Optional(\n Type.Number({ minimum: 0, description: 'Line width in points' })\n ),\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(\n Type.Union(\n [\n Type.String({ description: 'Plain text' }),\n Type.Array(TextSegmentSchema, {\n description: 'Rich text segments with per-segment formatting',\n }),\n ],\n { description: 'Text content inside the shape' }\n )\n ),\n fontSize: Type.Optional(\n Type.Number({ minimum: 1, description: 'Font size for shape text' })\n ),\n fontFace: Type.Optional(\n Type.String({ description: 'Font family for shape text' })\n ),\n fontColor: Type.Optional(\n Type.String({ description: 'Font color for shape text (hex without #)' })\n ),\n charSpacing: Type.Optional(\n Type.Number({ description: 'Character spacing in points for shape text' })\n ),\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: '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(\n Type.Number({ description: 'Rotation angle in degrees' })\n ),\n angleRange: Type.Optional(\n Type.Array(Type.Number(), {\n minItems: 2,\n maxItems: 2,\n description:\n 'Shape arc [start, end] angles in degrees (arc/pie/blockArc/chord shapes)',\n })\n ),\n flipH: Type.Optional(\n Type.Boolean({ description: 'Flip shape horizontally' })\n ),\n flipV: Type.Optional(\n Type.Boolean({ description: 'Flip shape vertically' })\n ),\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 {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n GridPositionSchema,\n} 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(\n Type.String({ description: 'Text color (hex without #)' })\n ),\n fill: Type.Optional(\n Type.String({ description: 'Cell background color (hex without #)' })\n ),\n fontSize: Type.Optional(\n Type.Number({ description: 'Font size in points' })\n ),\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(\n Type.Number({ minimum: 1, description: 'Column span' })\n ),\n rowspan: Type.Optional(\n Type.Number({ minimum: 1, description: 'Row span' })\n ),\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({\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 colW: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Uniform column width in inches' }),\n Type.Array(Type.Number(), {\n description: 'Individual column widths in inches',\n }),\n ])\n ),\n rowH: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Uniform row height in inches' }),\n Type.Array(Type.Number(), {\n description: 'Individual row heights in inches',\n }),\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(\n Type.Number({ minimum: 0, description: 'Border width in points' })\n ),\n color: Type.Optional(\n Type.String({ description: 'Border color (hex without #)' })\n ),\n },\n { additionalProperties: false }\n )\n ),\n fill: Type.Optional(\n Type.String({ description: 'Table background color (hex without #)' })\n ),\n fontSize: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Default font size for all cells',\n })\n ),\n fontFace: Type.Optional(\n Type.String({ description: 'Default font family for all cells' })\n ),\n fontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Default weight for all cells (100–900). Same sub-family aliasing as the per-cell `fontWeight`; a cell that sets its own `fontWeight` or `bold` opts out.',\n })\n ),\n color: Type.Optional(\n Type.String({\n description: 'Default text color for all cells (hex without #)',\n })\n ),\n align: Type.Optional(PptxAlignmentSchema),\n valign: Type.Optional(VerticalAlignmentSchema),\n headerRow: Type.Optional(\n Type.Boolean({\n description:\n \"Style the first row as a header — bold, on the theme's secondary background. Cells that state their own `bold`, `fill` or `color` keep it. Unlike the DOCX table, which declares its headers structurally, a PPTX table is rows of cells and the first one is a header only because you say so.\",\n })\n ),\n autoPage: Type.Optional(\n Type.Boolean({\n description:\n 'Auto-paginate table across multiple slides when content overflows',\n })\n ),\n autoPageRepeatHeader: Type.Optional(\n Type.Boolean({\n description: 'Repeat first row as header on each auto-paged slide',\n })\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({\n minimum: 0,\n description:\n 'Rounded corner radius in inches. Renders a roundRect shape behind the table.',\n })\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\n/**\n * A position or size, in inches or as a percentage of the slide.\n *\n * Described per axis, exactly as `text`, `image`, `shape` and `table` describe\n * theirs: a bare number with no unit leaves an agent guessing between inches,\n * points and EMU on the one component it reaches for to chart a quarter.\n */\nconst positionValue = (inches: string, percent: string) =>\n Type.Union([\n Type.Number({ description: inches }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: percent,\n }),\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\n/**\n * One series.\n *\n * `labels` and `values` are needed on EVERY series, not just the first: the\n * compiler drops the whole chart the moment one series is missing either. They\n * stay schema-optional only because the compiler still owns that refusal and\n * warns about it by name; the descriptions say so, because \"optional\" alone\n * left an agent to discover it from a rendered file with no chart in it.\n */\nconst ChartDataSeriesSchema = Type.Object(\n {\n name: Type.Optional(Type.String({ description: 'Series name' })),\n labels: Type.Optional(\n Type.Array(Type.String(), {\n description:\n 'Category labels. Needed on every series, not just the first, and the same length as `values`; a series without both `labels` and `values` drops the whole chart.',\n })\n ),\n values: Type.Optional(\n Type.Array(Type.Number(), {\n description:\n 'Data values, one per label. Needed on every series — see `labels`.',\n })\n ),\n sizes: Type.Optional(\n Type.Array(Type.Number(), {\n description: 'Bubble sizes (bubble charts only)',\n })\n ),\n },\n { additionalProperties: false }\n);\n\nconst ChartGridLineSchema = Type.Object(\n {\n style: Type.Optional(\n Type.Union(\n [\n Type.Literal('solid'),\n Type.Literal('dash'),\n Type.Literal('dot'),\n Type.Literal('none'),\n ],\n { description: 'Grid line style' }\n )\n ),\n size: Type.Optional(\n Type.Number({ minimum: 0, description: 'Grid line width (points)' })\n ),\n color: Type.Optional(\n Type.String({ description: 'Grid line color (hex or semantic)' })\n ),\n },\n { additionalProperties: false, description: 'Axis grid line styling' }\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(\n Type.Boolean({ description: 'Show chart legend' })\n ),\n showTitle: Type.Optional(Type.Boolean({ description: 'Show chart title' })),\n showValue: Type.Optional(Type.Boolean({ description: 'Show data values' })),\n showPercent: Type.Optional(\n Type.Boolean({ description: 'Show percentages (pie/doughnut)' })\n ),\n showLabel: Type.Optional(\n Type.Boolean({ description: 'Show category labels on data points' })\n ),\n showSerName: Type.Optional(\n Type.Boolean({ description: 'Show series name on data points' })\n ),\n\n // Title\n title: Type.Optional(Type.String({ description: 'Chart title text' })),\n titleFontSize: Type.Optional(\n Type.Number({ description: 'Title font size (points)' })\n ),\n titleColor: Type.Optional(\n Type.String({ description: 'Title color (hex or semantic)' })\n ),\n titleFontFace: Type.Optional(\n Type.String({ description: 'Title font face' })\n ),\n titleFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Title weight (100–900). Rendered as a sub-family alias — see `dataLabelFontWeight`.',\n })\n ),\n\n // Chart colors\n chartColors: Type.Optional(\n Type.Array(Type.String(), {\n description:\n 'Series colors (hex or semantic theme names). Defaults to theme palette.',\n })\n ),\n\n // Data element border (bars/slices/areas)\n dataBorder: Type.Optional(\n Type.Object(\n {\n pt: Type.Number({\n minimum: 0,\n description: 'Border width (points)',\n }),\n color: Type.String({\n description: 'Border color (hex or semantic)',\n }),\n },\n {\n additionalProperties: false,\n description: 'Outline on data elements (bars, slices, areas)',\n }\n )\n ),\n\n // Legend\n legendPos: Type.Optional(\n Type.Union(\n [\n Type.Literal('b'),\n Type.Literal('l'),\n Type.Literal('r'),\n Type.Literal('t'),\n Type.Literal('tr'),\n ],\n { description: 'Legend position' }\n )\n ),\n legendFontSize: Type.Optional(\n Type.Number({ description: 'Legend font size' })\n ),\n legendFontFace: Type.Optional(\n Type.String({ description: 'Legend font face' })\n ),\n legendFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Legend weight (100–900). Rendered as a sub-family alias — see `dataLabelFontWeight`. PowerPoint gives the legend no bold toggle, so 400 and 700 both render Regular (700 warns).',\n })\n ),\n legendColor: Type.Optional(\n Type.String({ description: 'Legend text color' })\n ),\n\n // Category axis\n catAxisTitle: Type.Optional(\n Type.String({ description: 'Category axis title' })\n ),\n catAxisHidden: Type.Optional(\n Type.Boolean({ description: 'Hide category axis' })\n ),\n catAxisLabelRotate: Type.Optional(\n Type.Number({ description: 'Category axis label rotation (degrees)' })\n ),\n catAxisLabelFontSize: Type.Optional(\n Type.Number({ description: 'Category axis label font size' })\n ),\n catAxisLabelColor: Type.Optional(\n Type.String({\n description: 'Category axis label color (hex or semantic)',\n })\n ),\n catAxisLabelFontFace: Type.Optional(\n Type.String({ description: 'Category axis label font face' })\n ),\n catAxisLabelFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Category axis label weight (100–900). Rendered as a sub-family alias — see `dataLabelFontWeight`.',\n })\n ),\n catGridLine: Type.Optional(ChartGridLineSchema),\n\n // Value axis\n valAxisTitle: Type.Optional(\n Type.String({ description: 'Value axis title' })\n ),\n valAxisHidden: Type.Optional(\n Type.Boolean({ description: 'Hide value axis' })\n ),\n valAxisMinVal: Type.Optional(\n Type.Number({ description: 'Value axis minimum' })\n ),\n valAxisMaxVal: Type.Optional(\n Type.Number({ description: 'Value axis maximum' })\n ),\n valAxisLabelFormatCode: Type.Optional(\n Type.String({\n description: 'Value axis label format (e.g. \"$0.00\", \"#%\")',\n })\n ),\n valAxisMajorUnit: Type.Optional(\n Type.Number({ description: 'Value axis major unit / tick interval' })\n ),\n valAxisLabelColor: Type.Optional(\n Type.String({ description: 'Value axis label color (hex or semantic)' })\n ),\n valAxisLabelFontFace: Type.Optional(\n Type.String({ description: 'Value axis label font face' })\n ),\n valAxisLabelFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Value axis label weight (100–900). Rendered as a sub-family alias — see `dataLabelFontWeight`.',\n })\n ),\n valAxisLabelFontSize: Type.Optional(\n Type.Number({ description: 'Value axis label font size' })\n ),\n valGridLine: Type.Optional(ChartGridLineSchema),\n catAxisLineShow: Type.Optional(\n Type.Boolean({ description: 'Show the category axis line' })\n ),\n valAxisLineShow: Type.Optional(\n Type.Boolean({ description: 'Show the value axis line' })\n ),\n\n // Bar-specific\n barDir: Type.Optional(\n Type.Union([Type.Literal('bar'), Type.Literal('col')], {\n description:\n 'Bar direction: \"bar\" (horizontal) or \"col\" (vertical, default)',\n })\n ),\n barGrouping: Type.Optional(\n Type.Union(\n [\n Type.Literal('clustered'),\n Type.Literal('stacked'),\n Type.Literal('percentStacked'),\n ],\n { description: 'Bar grouping style' }\n )\n ),\n barGapWidthPct: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 500,\n description: 'Bar gap width (0-500%)',\n })\n ),\n barOverlapPct: Type.Optional(\n Type.Number({\n minimum: -100,\n maximum: 100,\n description:\n 'Overlap between series bars (-100 to 100%). 100 = fully overlapped, negative = gap.',\n })\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(\n Type.Number({ description: 'Line width (points)' })\n ),\n lineDataSymbolSize: Type.Optional(\n Type.Number({\n minimum: 2,\n maximum: 72,\n description: 'Line data point marker size (points)',\n })\n ),\n\n // Pie/doughnut-specific\n firstSliceAng: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 359,\n description: 'Angle of first slice (degrees)',\n })\n ),\n holeSize: Type.Optional(\n Type.Number({\n minimum: 10,\n maximum: 90,\n description: 'Doughnut hole size (%)',\n })\n ),\n\n // Radar-specific\n radarStyle: Type.Optional(\n Type.Union(\n [\n Type.Literal('standard'),\n Type.Literal('marker'),\n Type.Literal('filled'),\n ],\n { description: 'Radar chart style' }\n )\n ),\n\n // Data labels\n dataLabelColor: Type.Optional(\n Type.String({ description: 'Data label text color' })\n ),\n dataLabelFontSize: Type.Optional(\n Type.Number({ description: 'Data label font size' })\n ),\n dataLabelFontFace: Type.Optional(\n Type.String({ description: 'Data label font face' })\n ),\n dataLabelFontWeight: Type.Optional(\n Type.Integer({\n minimum: 100,\n maximum: 900,\n description:\n 'Data label weight (100–900); overrides `dataLabelFontBold`. PowerPoint chart labels carry no numeric weight, so a non-RIBBI weight renders by rewriting the font face to the matching sub-family (\"Inter\" at 300 → \"Inter Light\") — 400 and 700 stay on the family and use the bold toggle. Falls back to the theme body font when the sibling font face is unset.',\n })\n ),\n dataLabelFontBold: Type.Optional(\n Type.Boolean({ description: 'Bold data labels' })\n ),\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('X position in inches', 'X as percentage')),\n y: Type.Optional(positionValue('Y position in inches', 'Y as percentage')),\n w: Type.Optional(positionValue('Width in inches', 'Width as percentage')),\n h: Type.Optional(positionValue('Height in inches', 'Height as percentage')),\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","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type"]}
@@ -17,7 +17,7 @@ import {
17
17
  isUnionSchema,
18
18
  transformValueError,
19
19
  transformValueErrors
20
- } from "../../chunk-ZKD5BAMU.js";
20
+ } from "../../chunk-LLBCT7WL.js";
21
21
  export {
22
22
  DEFAULT_ERROR_CONFIG,
23
23
  ERROR_EMOJIS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-to-office/shared",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "Format-agnostic shared types, schemas and validation utilities",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -51,7 +51,8 @@
51
51
  "@sinclair/typebox": "0.34.38",
52
52
  "ajv": "8.17.1",
53
53
  "ajv-formats": "3.0.1",
54
- "subset-font": "^2.5.0"
54
+ "subset-font": "^2.5.0",
55
+ "@json-to-office/quality": "^1.6.0"
55
56
  },
56
57
  "devDependencies": {
57
58
  "@types/node": "20.11.0",
@@ -1,41 +0,0 @@
1
- // src/fonts/sources/url-allowlist.ts
2
- var FONT_URL_ALLOWLIST = [
3
- "fonts.gstatic.com",
4
- "fonts.googleapis.com",
5
- "cdn.jsdelivr.net"
6
- ];
7
- function isAllowedFontUrl(url) {
8
- let parsed;
9
- try {
10
- parsed = new URL(url);
11
- } catch {
12
- return false;
13
- }
14
- if (parsed.protocol !== "https:") return false;
15
- return FONT_URL_ALLOWLIST.includes(parsed.hostname.toLowerCase());
16
- }
17
-
18
- // src/fonts/sources/format.ts
19
- function detectFontFormat(buf) {
20
- if (buf.length < 4) return "unknown";
21
- const b0 = buf[0], b1 = buf[1], b2 = buf[2], b3 = buf[3];
22
- if (b0 === 0 && b1 === 1 && b2 === 0 && b3 === 0 || b0 === 116 && b1 === 114 && b2 === 117 && b3 === 101 || b0 === 116 && b1 === 121 && b2 === 112 && b3 === 49) {
23
- return "ttf";
24
- }
25
- if (b0 === 79 && b1 === 84 && b2 === 84 && b3 === 79) return "otf";
26
- if (b0 === 119 && b1 === 79 && b2 === 70 && b3 === 70) return "woff";
27
- if (b0 === 119 && b1 === 79 && b2 === 70 && b3 === 50) return "woff2";
28
- if (buf.length >= 36 && buf[34] === 76 && buf[35] === 80) return "eot";
29
- if (b0 === 128 && b1 === 1) return "pfb";
30
- if (buf.length >= 14 && buf.slice(0, 14).toString("ascii") === "%!PS-AdobeFont") {
31
- return "pfb";
32
- }
33
- return "unknown";
34
- }
35
-
36
- export {
37
- FONT_URL_ALLOWLIST,
38
- isAllowedFontUrl,
39
- detectFontFormat
40
- };
41
- //# sourceMappingURL=chunk-FDSJYZ5W.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/fonts/sources/url-allowlist.ts","../src/fonts/sources/format.ts"],"sourcesContent":["/**\n * Hostname allowlist for font fetchers.\n *\n * `url-fetcher` and `variable-fetcher` can be handed arbitrary URLs via\n * `FontRegistryEntry.sources`, which may originate from document JSON. Without\n * a guard, a malicious doc could point fetchers at internal hosts (SSRF), the\n * filesystem (`file://`), or the IMDS endpoint. Limit downloads to the hosts\n * our catalog + UPSTREAM_OVERRIDES actually target.\n *\n * Keep the list small and HTTPS-only. Expansions should be deliberate code\n * reviews, not config-driven — the cost of a new domain is the code change.\n */\n\nexport const FONT_URL_ALLOWLIST: readonly string[] = [\n 'fonts.gstatic.com',\n 'fonts.googleapis.com',\n 'cdn.jsdelivr.net',\n];\n\nexport function isAllowedFontUrl(url: string): boolean {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n return false;\n }\n if (parsed.protocol !== 'https:') return false;\n return FONT_URL_ALLOWLIST.includes(parsed.hostname.toLowerCase());\n}\n","/**\n * Font format detection from magic bytes.\n * Source: OpenType spec + WOFF1/WOFF2 W3C specs.\n */\n\nimport type { ResolvedFontSource } from '../types';\n\nexport function detectFontFormat(buf: Buffer): ResolvedFontSource['format'] {\n if (buf.length < 4) return 'unknown';\n\n const b0 = buf[0],\n b1 = buf[1],\n b2 = buf[2],\n b3 = buf[3];\n\n // TTF: 0x00010000 (SFNT) or 'true' (0x74727565) or 'typ1' (0x74797031)\n if (\n (b0 === 0x00 && b1 === 0x01 && b2 === 0x00 && b3 === 0x00) ||\n (b0 === 0x74 && b1 === 0x72 && b2 === 0x75 && b3 === 0x65) ||\n (b0 === 0x74 && b1 === 0x79 && b2 === 0x70 && b3 === 0x31)\n ) {\n return 'ttf';\n }\n // OTF: 'OTTO'\n if (b0 === 0x4f && b1 === 0x54 && b2 === 0x54 && b3 === 0x4f) return 'otf';\n // WOFF: 'wOFF'\n if (b0 === 0x77 && b1 === 0x4f && b2 === 0x46 && b3 === 0x46) return 'woff';\n // WOFF2: 'wOF2'\n if (b0 === 0x77 && b1 === 0x4f && b2 === 0x46 && b3 === 0x32) return 'woff2';\n // EOT: version bytes at offset 8-11 — rougher signature\n if (buf.length >= 36 && buf[34] === 0x4c && buf[35] === 0x50) return 'eot';\n // PostScript Type 1 (.pfb) — binary container marker byte 0x80 followed by\n // segment type 0x01 (ASCII). Also match the text-form ASCII header\n // \"%!PS-AdobeFont\". Note: .pfm (metric files) have no reliable magic and\n // stay in 'unknown' — same treatment (rejection at the loader).\n if (b0 === 0x80 && b1 === 0x01) return 'pfb';\n if (\n buf.length >= 14 &&\n buf.slice(0, 14).toString('ascii') === '%!PS-AdobeFont'\n ) {\n return 'pfb';\n }\n\n return 'unknown';\n}\n\n/**\n * Formats we detect but cannot legally embed in an OOXML document:\n * WOFF/WOFF2 are web-only containers; PostScript (.pfb) is explicitly\n * disallowed by Microsoft's embedding guidance.\n */\nexport const UNEMBEDDABLE_FORMATS = new Set<ResolvedFontSource['format']>([\n 'woff',\n 'woff2',\n 'pfb',\n]);\n"],"mappings":";AAaO,IAAM,qBAAwC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,iBAAiB,KAAsB;AACrD,MAAI;AACJ,MAAI;AACF,aAAS,IAAI,IAAI,GAAG;AAAA,EACtB,QAAQ;AACN,WAAO;AAAA,EACT;AACA,MAAI,OAAO,aAAa,SAAU,QAAO;AACzC,SAAO,mBAAmB,SAAS,OAAO,SAAS,YAAY,CAAC;AAClE;;;ACrBO,SAAS,iBAAiB,KAA2C;AAC1E,MAAI,IAAI,SAAS,EAAG,QAAO;AAE3B,QAAM,KAAK,IAAI,CAAC,GACd,KAAK,IAAI,CAAC,GACV,KAAK,IAAI,CAAC,GACV,KAAK,IAAI,CAAC;AAGZ,MACG,OAAO,KAAQ,OAAO,KAAQ,OAAO,KAAQ,OAAO,KACpD,OAAO,OAAQ,OAAO,OAAQ,OAAO,OAAQ,OAAO,OACpD,OAAO,OAAQ,OAAO,OAAQ,OAAO,OAAQ,OAAO,IACrD;AACA,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,GAAM,QAAO;AAErE,MAAI,OAAO,OAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,GAAM,QAAO;AAErE,MAAI,OAAO,OAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,GAAM,QAAO;AAErE,MAAI,IAAI,UAAU,MAAM,IAAI,EAAE,MAAM,MAAQ,IAAI,EAAE,MAAM,GAAM,QAAO;AAKrE,MAAI,OAAO,OAAQ,OAAO,EAAM,QAAO;AACvC,MACE,IAAI,UAAU,MACd,IAAI,MAAM,GAAG,EAAE,EAAE,SAAS,OAAO,MAAM,kBACvC;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/validation/unified/schema-utils.ts","../src/validation/unified/error-formatter-config.ts","../src/validation/unified/error-transformer.ts"],"sourcesContent":["import type { TSchema, TUnion, TObject, TLiteral } from '@sinclair/typebox';\n\nconst componentNamesCache = new Map<unknown, string[]>();\n\nexport function isUnionSchema(schema: TSchema): schema is TUnion {\n return 'anyOf' in schema && Array.isArray(schema.anyOf);\n}\n\nexport function isObjectSchema(schema: TSchema): schema is TObject {\n return schema.type === 'object' && 'properties' in schema;\n}\n\nexport function isLiteralSchema(schema: TSchema): schema is TLiteral {\n return 'const' in schema;\n}\n\nexport function getObjectSchemaPropertyNames(schema: TSchema): string[] {\n if (isObjectSchema(schema)) {\n return Object.keys(schema.properties);\n }\n return [];\n}\n\nexport function getLiteralValue(schema: TSchema): unknown {\n if (isLiteralSchema(schema)) {\n return schema.const;\n }\n return undefined;\n}\n\nexport function extractStandardComponentNames(schema: TSchema): string[] {\n if (componentNamesCache.has(schema)) {\n return componentNamesCache.get(schema)!;\n }\n\n const names: string[] = [];\n\n if ('anyOf' in schema && Array.isArray(schema.anyOf)) {\n for (const componentSchema of schema.anyOf) {\n if (isObjectSchema(componentSchema)) {\n const nameProperty = componentSchema.properties?.name;\n if (nameProperty && isLiteralSchema(nameProperty)) {\n const nameValue = getLiteralValue(nameProperty);\n if (typeof nameValue === 'string') {\n names.push(nameValue);\n }\n }\n }\n }\n } else if (isObjectSchema(schema)) {\n const nameProperty = schema.properties?.name ?? schema.properties?.type;\n if (nameProperty && isLiteralSchema(nameProperty)) {\n const nameValue = getLiteralValue(nameProperty);\n if (typeof nameValue === 'string') {\n names.push(nameValue);\n }\n }\n }\n\n componentNamesCache.set(schema, names);\n return names;\n}\n\nexport function clearComponentNamesCache(): void {\n componentNamesCache.clear();\n}\n\nexport function getSchemaMetadata(schema: TSchema): {\n type?: string;\n properties?: string[];\n literal?: unknown;\n} {\n const metadata: {\n type?: string;\n properties?: string[];\n literal?: unknown;\n } = {};\n\n if ('type' in schema) {\n metadata.type = String(schema.type);\n }\n\n if (isObjectSchema(schema)) {\n metadata.properties = getObjectSchemaPropertyNames(schema);\n }\n\n if (isLiteralSchema(schema)) {\n metadata.literal = getLiteralValue(schema);\n }\n\n return metadata;\n}\n","export interface ErrorFormatterConfig {\n includeEmojis?: boolean;\n verbosity?: 'minimal' | 'normal' | 'detailed';\n includeSuggestions?: boolean;\n includePath?: boolean;\n maxMessageLength?: number;\n includeDocLinks?: boolean;\n colorSupport?: boolean;\n}\n\nfunction isCI(): boolean {\n if (typeof process === 'undefined' || !process.env) return false;\n return !!(process.env.CI || process.env.GITHUB_ACTIONS || process.env.GITLAB_CI);\n}\n\nfunction hasColorSupport(): boolean {\n if (typeof process === 'undefined') return false;\n if (process.env?.NO_COLOR) return false;\n if (process.env?.FORCE_COLOR) return true;\n if (process.stdout?.isTTY) return true;\n return !isCI();\n}\n\nexport const DEFAULT_ERROR_CONFIG: Required<ErrorFormatterConfig> = {\n includeEmojis: !isCI(),\n verbosity: 'normal',\n includeSuggestions: true,\n includePath: true,\n maxMessageLength: 0,\n includeDocLinks: false,\n colorSupport: hasColorSupport(),\n};\n\nexport function createErrorConfig(\n config?: ErrorFormatterConfig\n): Required<ErrorFormatterConfig> {\n return { ...DEFAULT_ERROR_CONFIG, ...config };\n}\n\nexport const ERROR_EMOJIS = {\n ERROR: '\\u274c',\n WARNING: '\\u26a0\\ufe0f',\n FIX: '\\ud83d\\udd27',\n INFO: '\\u2139\\ufe0f',\n SUCCESS: '\\u2705',\n};\n\nexport function formatErrorMessage(\n message: string,\n config: Required<ErrorFormatterConfig>\n): string {\n if (config.maxMessageLength > 0 && message.length > config.maxMessageLength) {\n return message.substring(0, config.maxMessageLength) + '...';\n }\n return message;\n}\n","import type { ValueError } from '@sinclair/typebox/value';\nimport type { ValidationError } from './types';\nimport {\n isObjectSchema,\n getObjectSchemaPropertyNames,\n getLiteralValue,\n} from './schema-utils';\nimport {\n ErrorFormatterConfig,\n createErrorConfig,\n formatErrorMessage,\n} from './error-formatter-config';\n\nexport type { TransformedError } from './types';\n\nfunction generateEnhancedMessage(\n error: ValueError,\n _config: Required<ErrorFormatterConfig>\n): string {\n const typeStr = String(error.type || '');\n const path = error.path || 'root';\n\n if (typeStr === '62' || typeStr === 'union') {\n return generateUnionErrorMessage(error);\n }\n\n if (error.message?.includes('additionalProperties')) {\n return generateAdditionalPropertiesMessage(error);\n }\n\n if (error.message?.includes('Required property')) {\n return generateRequiredPropertyMessage(error);\n }\n\n if (\n typeStr === 'string' ||\n typeStr === 'number' ||\n typeStr === 'boolean' ||\n typeStr === 'array' ||\n typeStr === 'object'\n ) {\n return generateTypeMismatchMessage(error);\n }\n\n if (typeStr === 'literal') {\n return generateLiteralErrorMessage(error);\n }\n\n if (typeStr === 'pattern' || typeStr === 'RegExp') {\n return generatePatternErrorMessage(error);\n }\n\n return `At ${path}: ${error.message}`;\n}\n\nfunction generateUnionErrorMessage(error: ValueError): string {\n const path = error.path || 'root';\n const value = error.value;\n\n if (path === 'root' || path === '/' || path === '/jsonDefinition') {\n if (value && typeof value === 'object') {\n if ('name' in value) {\n return `Invalid component configuration for '${(value as any).name}'. Check that all required fields are present.`;\n }\n if ('children' in value && Array.isArray((value as any).children)) {\n return 'Document is missing required \\'name\\' field.';\n }\n }\n return 'Invalid document structure. Check required fields.';\n }\n\n if (path.includes('/children/')) {\n if (value && typeof value === 'object' && 'name' in value) {\n const componentType = (value as any).name;\n return `Invalid component configuration for type '${componentType}'. Check that all required fields are present and correctly formatted.`;\n }\n return 'Invalid component structure. Each component must have a \"name\" field and valid configuration.';\n }\n\n return `Value at ${path} doesn't match any of the expected formats. Check the structure and required fields.`;\n}\n\nfunction generateAdditionalPropertiesMessage(error: ValueError): string {\n const path = error.path || 'root';\n const value = error.value;\n\n if (typeof value === 'object' && value !== null) {\n const schema = error.schema;\n if (schema && isObjectSchema(schema)) {\n const knownProps = getObjectSchemaPropertyNames(schema);\n const actualProps = Object.keys(value);\n const unknownProps = actualProps.filter((p) => !knownProps.includes(p));\n\n if (unknownProps.length > 0) {\n return (\n `Unknown properties at ${path}: ${unknownProps.join(', ')}. ` +\n `Allowed properties are: ${knownProps.join(', ')}`\n );\n }\n }\n }\n\n return `Additional properties not allowed at ${path}. Check for typos or unsupported fields.`;\n}\n\nfunction generateRequiredPropertyMessage(error: ValueError): string {\n const path = error.path || 'root';\n const match = error.message?.match(/Required property '([^']+)'/);\n\n if (match) {\n const propName = match[1];\n return `Missing required field '${propName}' at ${path}. This field is mandatory.`;\n }\n\n return `Missing required property at ${path}. Check that all mandatory fields are present.`;\n}\n\nfunction generateTypeMismatchMessage(error: ValueError): string {\n const path = error.path || 'root';\n const expectedType = String(error.type);\n const actualType = Array.isArray(error.value) ? 'array' : typeof error.value;\n\n if (path.includes('alignment')) {\n return `Invalid alignment value at ${path}. Expected one of: left, center, right, justify`;\n }\n\n if (path.includes('color')) {\n return `Invalid color value at ${path}. Use hex format (#RRGGBB), rgb(r,g,b), or a named color`;\n }\n\n if (path.includes('fontSize') || path.includes('size')) {\n return `Invalid size value at ${path}. Expected a number (in points)`;\n }\n\n if (\n path.includes('margin') ||\n path.includes('padding') ||\n path.includes('spacing')\n ) {\n return `Invalid spacing value at ${path}. Expected a number or spacing object with top/bottom/left/right`;\n }\n\n return `Type mismatch at ${path}: Expected ${expectedType} but got ${actualType}`;\n}\n\nfunction generateLiteralErrorMessage(error: ValueError): string {\n const path = error.path || 'root';\n const expected = error.schema\n ? JSON.stringify(getLiteralValue(error.schema))\n : 'specific value';\n const actual = JSON.stringify(error.value);\n\n return `Invalid value at ${path}: Expected exactly ${expected} but got ${actual}`;\n}\n\nfunction generatePatternErrorMessage(error: ValueError): string {\n const path = error.path || 'root';\n\n if (path.includes('email')) {\n return `Invalid email format at ${path}. Use format: user@example.com`;\n }\n if (path.includes('url') || path.includes('link')) {\n return `Invalid URL format at ${path}. Use format: https://example.com`;\n }\n if (path.includes('date')) {\n return `Invalid date format at ${path}. Use ISO format: YYYY-MM-DD`;\n }\n\n return `Value at ${path} doesn't match the required pattern`;\n}\n\nexport function transformValueError(\n error: ValueError,\n jsonString?: string,\n config?: ErrorFormatterConfig\n): ValidationError {\n const formatterConfig = createErrorConfig(config);\n\n const enhancedMessage = generateEnhancedMessage(error, formatterConfig);\n\n const baseError: ValidationError = {\n path: error.path || 'root',\n message: formatErrorMessage(\n enhancedMessage || error.message,\n formatterConfig\n ),\n code: String(error.type || 'validation_error'),\n value: error.value,\n };\n\n if (formatterConfig.includeSuggestions) {\n const suggestion = getSuggestion(error, formatterConfig);\n if (suggestion) {\n baseError.suggestion = formatErrorMessage(suggestion, formatterConfig);\n }\n }\n\n if (jsonString && error.path) {\n const position = calculatePosition(jsonString, error.path);\n if (position) {\n baseError.line = position.line;\n baseError.column = position.column;\n }\n }\n\n return baseError;\n}\n\nexport function transformValueErrors(\n errors: ValueError[],\n options?: {\n jsonString?: string;\n maxErrors?: number;\n }\n): ValidationError[] {\n const maxErrors = options?.maxErrors ?? Number.MAX_SAFE_INTEGER;\n const result: ValidationError[] = [];\n const seenPaths = new Set<string>();\n\n for (const error of errors) {\n if (result.length >= maxErrors) break;\n\n const errorKey = `${error.path}:${error.type}`;\n\n if (!seenPaths.has(errorKey)) {\n seenPaths.add(errorKey);\n result.push(transformValueError(error, options?.jsonString, undefined));\n }\n }\n\n return result;\n}\n\nexport function calculatePosition(\n jsonString: string,\n path: string\n): { line: number; column: number } | null {\n try {\n const pathParts = path.split('/').filter(Boolean);\n if (pathParts.length === 0) {\n return { line: 1, column: 1 };\n }\n\n const lastPart = pathParts[pathParts.length - 1];\n const searchPattern = `\"${lastPart}\"`;\n const index = jsonString.indexOf(searchPattern);\n\n if (index === -1) {\n return { line: 1, column: 1 };\n }\n\n const beforeError = jsonString.substring(0, index);\n const lines = beforeError.split('\\n');\n const line = lines.length;\n const column = lines[lines.length - 1].length + 1;\n\n return { line, column };\n } catch {\n return null;\n }\n}\n\nfunction getSuggestion(\n error: ValueError,\n _config: Required<ErrorFormatterConfig>\n): string | undefined {\n const { type, path } = error;\n const typeStr = String(type);\n\n if (typeStr === '62' || typeStr === 'union') {\n if (path === 'root' || path === '/') {\n return 'Ensure the document has proper structure with a root \"name\" field';\n }\n if (path?.includes('/children/')) {\n return 'Check that the component has a valid \"name\" and all required fields';\n }\n return 'Review the structure and ensure all required fields are present with correct types';\n }\n\n if (error.message?.includes('additionalProperties')) {\n return 'Remove any unknown or unsupported fields.';\n }\n\n if (error.message?.includes('Required property')) {\n return 'Add the missing required field to fix this error';\n }\n\n if (typeStr === 'string') {\n if (path?.includes('color')) {\n return 'Use a valid color format (hex: #RRGGBB, rgb: rgb(r,g,b), or named color)';\n }\n return 'Provide a text string value';\n }\n\n if (typeStr === 'number') {\n return 'Provide a numeric value';\n }\n\n if (typeStr === 'boolean') {\n return 'Use true or false (without quotes)';\n }\n\n if (typeStr === 'array') {\n return 'Provide an array of values using square brackets []';\n }\n\n if (typeStr === 'object') {\n return 'Provide an object with key-value pairs using curly braces {}';\n }\n\n if (typeStr === 'literal') {\n const expected = error.schema\n ? JSON.stringify(getLiteralValue(error.schema))\n : 'specific value';\n return `Use exactly this value: ${expected}`;\n }\n\n return undefined;\n}\n\nexport function formatErrorSummary(errors: ValidationError[]): string {\n if (errors.length === 0) return 'No errors';\n\n if (errors.length === 1) {\n return errors[0].message;\n }\n\n const summary = errors\n .slice(0, 3)\n .map((e) => `${e.path}: ${e.message}`)\n .join(', ');\n\n if (errors.length > 3) {\n return `${summary} and ${errors.length - 3} more...`;\n }\n\n return summary;\n}\n\nexport function groupErrorsByPath(\n errors: ValidationError[]\n): Map<string, ValidationError[]> {\n const grouped = new Map<string, ValidationError[]>();\n\n for (const error of errors) {\n const path = error.path || 'root';\n const group = grouped.get(path) || [];\n group.push(error);\n grouped.set(path, group);\n }\n\n return grouped;\n}\n\nexport function createJsonParseError(\n error: Error,\n jsonString: string\n): ValidationError {\n const match = error.message.match(/position (\\d+)/);\n const position = match ? parseInt(match[1], 10) : 0;\n\n let line = 1;\n let column = 1;\n\n if (position > 0) {\n const lines = jsonString.substring(0, position).split('\\n');\n line = lines.length;\n column = lines[lines.length - 1].length + 1;\n }\n\n return {\n path: 'root',\n message: `JSON Parse Error: ${error.message}`,\n code: 'json_parse_error',\n line,\n column,\n suggestion: 'Check for missing commas, quotes, or brackets',\n };\n}\n"],"mappings":"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","names":[]}