@json-to-office/shared-docx 0.33.0 → 0.35.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.
Files changed (45) hide show
  1. package/dist/{chunk-PVZMPANS.js → chunk-436TK3T4.js} +622 -452
  2. package/dist/chunk-436TK3T4.js.map +1 -0
  3. package/dist/{chunk-QDBFYGOR.js → chunk-4FOTCEYP.js} +14 -3
  4. package/dist/chunk-4FOTCEYP.js.map +1 -0
  5. package/dist/{chunk-WAKSQXQA.js → chunk-4ORMKPLQ.js} +2 -2
  6. package/dist/{chunk-BDVZALLE.js → chunk-7FNE5T7M.js} +56 -3
  7. package/dist/chunk-7FNE5T7M.js.map +1 -0
  8. package/dist/{chunk-R5UGQRFE.js → chunk-EKBKTVLD.js} +2 -2
  9. package/dist/{chunk-5QOQVYBJ.js → chunk-G5GIBBUX.js} +5 -3
  10. package/dist/chunk-G5GIBBUX.js.map +1 -0
  11. package/dist/{chunk-UNNSBEER.js → chunk-HHF5AQ7X.js} +2 -2
  12. package/dist/chunk-HHF5AQ7X.js.map +1 -0
  13. package/dist/{chunk-XDMC32YP.js → chunk-KKFRVDJH.js} +6 -6
  14. package/dist/chunk-KKFRVDJH.js.map +1 -0
  15. package/dist/{chunk-LQGORQQI.js → chunk-PQITDZWT.js} +31 -23
  16. package/dist/chunk-PQITDZWT.js.map +1 -0
  17. package/dist/{chunk-I7HBLM3U.js → chunk-UKOAOVPP.js} +2 -2
  18. package/dist/index.d.ts +218 -16
  19. package/dist/index.js +295 -16
  20. package/dist/index.js.map +1 -1
  21. package/dist/schemas/api.d.ts +6 -0
  22. package/dist/schemas/api.js +5 -5
  23. package/dist/schemas/component-defaults.d.ts +76 -29
  24. package/dist/schemas/component-defaults.js +3 -1
  25. package/dist/schemas/component-registry.js +3 -3
  26. package/dist/schemas/components.d.ts +430 -29
  27. package/dist/schemas/components.js +18 -4
  28. package/dist/schemas/document.js +6 -6
  29. package/dist/schemas/export.js +4 -4
  30. package/dist/schemas/generator.js +4 -4
  31. package/dist/schemas/theme.d.ts +336 -14
  32. package/dist/schemas/theme.js +2 -2
  33. package/dist/validation/unified/index.d.ts +231 -23
  34. package/dist/validation/unified/index.js +8 -6
  35. package/package.json +3 -3
  36. package/dist/chunk-5QOQVYBJ.js.map +0 -1
  37. package/dist/chunk-BDVZALLE.js.map +0 -1
  38. package/dist/chunk-LQGORQQI.js.map +0 -1
  39. package/dist/chunk-PVZMPANS.js.map +0 -1
  40. package/dist/chunk-QDBFYGOR.js.map +0 -1
  41. package/dist/chunk-UNNSBEER.js.map +0 -1
  42. package/dist/chunk-XDMC32YP.js.map +0 -1
  43. /package/dist/{chunk-WAKSQXQA.js.map → chunk-4ORMKPLQ.js.map} +0 -0
  44. /package/dist/{chunk-R5UGQRFE.js.map → chunk-EKBKTVLD.js.map} +0 -0
  45. /package/dist/{chunk-I7HBLM3U.js.map → chunk-UKOAOVPP.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schemas/component-registry.ts","../src/schemas/components/report.ts","../src/schemas/components/text-box.ts","../src/schemas/components/toc.ts","../src/schemas/components/highcharts.ts","../src/schemas/components/visual.ts"],"sourcesContent":["/**\n * Component Registry - SINGLE SOURCE OF TRUTH\n *\n * This is the ONLY place where standard components are defined.\n * All schema generators MUST use this registry.\n *\n * Adding a new component: Add it to STANDARD_COMPONENTS_REGISTRY below.\n * It will automatically be included in:\n * - StandardComponentDefinitionSchema (components.ts)\n * - ComponentDefinitionSchema (components.ts)\n * - generateUnifiedDocumentSchema (generator.ts)\n * - Monaco editor autocomplete\n * - Build-time JSON schemas\n */\n\nimport { Type, TSchema } from '@sinclair/typebox';\n// Import directly from individual component files to avoid circular dependency\n// (components.ts imports from this file, so we can't import from components.ts)\nimport { ReportPropsSchema } from './components/report';\nimport {\n SectionPropsSchema,\n createSectionPropsSchema,\n} from './components/section';\nimport { ColumnsPropsSchema } from './components/columns';\nimport { HeadingPropsSchema } from './components/heading';\nimport { ParagraphPropsSchema } from './components/paragraph';\nimport { TextBoxPropsSchema } from './components/text-box';\nimport { ImagePropsSchema } from './components/image';\nimport { StatisticPropsSchema } from './components/statistic';\nimport { TablePropsSchema, createTablePropsSchema } from './components/table';\nimport { ListPropsSchema } from './components/list';\nimport { TocPropsSchema } from './components/toc';\nimport { HighchartsPropsSchema } from './components/highcharts';\nimport { VisualPropsSchema } from './components/visual';\n\n/**\n * Component definition with metadata\n */\nexport interface StandardComponentDefinition {\n /** Component name identifier (e.g., 'heading', 'text', 'toc') */\n name: string;\n /** TypeBox schema for the component's props */\n propsSchema: TSchema;\n /** Whether this component can contain children */\n hasChildren: boolean;\n /**\n * Names of standard components allowed as direct children.\n * Only meaningful when hasChildren is true.\n * Plugin components are always allowed in addition to these.\n * Omit to allow the full recursive union (backward-compat).\n */\n allowedChildren?: readonly string[];\n /**\n * Factory that builds props with a live recursive ref (e.g., for section\n * header/footer, table cell content). When present and a recursive ref is\n * available, used instead of the static `propsSchema`.\n */\n createPropsSchema?: (recursiveRef: TSchema) => TSchema;\n /** Component category for organization */\n category: 'container' | 'content' | 'layout';\n /** Human-readable description */\n description: string;\n /** Special flags for this component */\n special?: {\n /** Has $schema field (only 'docx') */\n hasSchemaField?: boolean;\n };\n}\n\n/**\n * SINGLE SOURCE OF TRUTH for all standard components\n *\n * This is the ONLY place where standard components are defined.\n * All schema generators MUST use this registry.\n *\n * IMPORTANT: When adding a new component:\n * 1. Add the component definition to this array\n * 2. Import its props schema at the top of this file\n * 3. That's it! The component will automatically appear everywhere.\n */\nexport const STANDARD_COMPONENTS_REGISTRY: readonly StandardComponentDefinition[] =\n [\n // ========================================================================\n // Container Components (can contain children)\n // ========================================================================\n {\n name: 'docx',\n propsSchema: ReportPropsSchema,\n hasChildren: true,\n allowedChildren: ['section'],\n category: 'container',\n description:\n 'Main document container - defines the overall document structure. Required as the root component.',\n special: {\n hasSchemaField: true, // Only docx root has $schema field\n },\n },\n {\n name: 'section',\n propsSchema: SectionPropsSchema,\n createPropsSchema: createSectionPropsSchema,\n hasChildren: true,\n allowedChildren: [\n 'heading',\n 'paragraph',\n 'image',\n 'statistic',\n 'table',\n 'list',\n 'toc',\n 'highcharts',\n 'visual',\n 'columns',\n 'text-box',\n ],\n category: 'container',\n description:\n 'Section container - groups related content with optional title. Use for organizing document structure.',\n },\n {\n name: 'columns',\n propsSchema: ColumnsPropsSchema,\n hasChildren: true,\n allowedChildren: [\n 'heading',\n 'paragraph',\n 'image',\n 'statistic',\n 'table',\n 'list',\n 'toc',\n 'highcharts',\n 'visual',\n 'text-box',\n ],\n category: 'layout',\n description:\n 'Multi-column layout - arranges content in 2-4 columns. Great for side-by-side content.',\n },\n {\n name: 'text-box',\n propsSchema: TextBoxPropsSchema,\n hasChildren: true,\n allowedChildren: ['heading', 'paragraph', 'image'],\n category: 'layout',\n description:\n 'Floating text container - allows positioning text anywhere on the page with absolute or relative positioning.',\n },\n\n // ========================================================================\n // Content Components (leaf nodes, no children)\n // ========================================================================\n {\n name: 'heading',\n propsSchema: HeadingPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Heading text - supports levels 1-6 for document hierarchy. Level 1 is largest.',\n },\n {\n name: 'paragraph',\n propsSchema: ParagraphPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Paragraph text - supports formatting like bold, italic, and color. Main content element.',\n },\n {\n name: 'image',\n propsSchema: ImagePropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Image element - displays images with optional caption. Supports various formats.',\n },\n {\n name: 'statistic',\n propsSchema: StatisticPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Statistic display - shows a number with description. Perfect for KPIs and metrics.',\n },\n {\n name: 'table',\n propsSchema: TablePropsSchema,\n createPropsSchema: createTablePropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Data table - displays tabular data with headers. Supports formatting and alignment.',\n },\n {\n name: 'list',\n propsSchema: ListPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'List element - bulleted or numbered list items. Supports nested lists.',\n },\n {\n name: 'toc',\n propsSchema: TocPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Table of contents - automatically generates TOC from document headings. Supports depth ranges and custom styles.',\n },\n {\n name: 'highcharts',\n propsSchema: HighchartsPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Chart component powered by Highcharts - render line, bar, pie, heatmap, and more with rich options.',\n },\n {\n name: 'visual',\n propsSchema: VisualPropsSchema,\n hasChildren: false,\n category: 'content',\n description:\n 'Free-canvas graphic authored as a single pptx slide and embedded as a rasterized PNG. Use for infographics, diagrams and layered compositions that the document flow cannot express.',\n },\n ] as const;\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Get a component definition by name\n */\nexport function getStandardComponent(\n name: string\n): StandardComponentDefinition | undefined {\n return STANDARD_COMPONENTS_REGISTRY.find((c) => c.name === name);\n}\n\n/**\n * Get all standard component names\n */\nexport function getAllStandardComponentNames(): readonly string[] {\n return STANDARD_COMPONENTS_REGISTRY.map((c) => c.name);\n}\n\n/**\n * Get components by category\n */\nexport function getComponentsByCategory(\n category: StandardComponentDefinition['category']\n): readonly StandardComponentDefinition[] {\n return STANDARD_COMPONENTS_REGISTRY.filter((c) => c.category === category);\n}\n\n/**\n * Get container components (components that can have children)\n */\nexport function getContainerComponents(): readonly StandardComponentDefinition[] {\n return STANDARD_COMPONENTS_REGISTRY.filter((c) => c.hasChildren);\n}\n\n/**\n * Get content components (components that cannot have children)\n */\nexport function getContentComponents(): readonly StandardComponentDefinition[] {\n return STANDARD_COMPONENTS_REGISTRY.filter((c) => !c.hasChildren);\n}\n\n/**\n * Check if a component name is a standard component\n */\nexport function isStandardComponent(name: string): boolean {\n return STANDARD_COMPONENTS_REGISTRY.some((c) => c.name === name);\n}\n\n// ============================================================================\n// Schema Generation Helpers\n// ============================================================================\n\n/**\n * True when a props schema rejects `{}`, i.e. the `props` key cannot be omitted.\n *\n * Only object schemas are inspected. Anything else (a union, a bare ref) is\n * treated as demanding props, preserving the previous stricter behavior for\n * shapes this cannot reason about.\n */\nfunction demandsProps(propsSchema: TSchema): boolean {\n const schema = propsSchema as { type?: string; required?: readonly string[] };\n return schema.type !== 'object' || (schema.required?.length ?? 0) > 0;\n}\n\n/**\n * Generate TypeBox schema object for a component.\n *\n * @param component - Component definition from the registry\n * @param childrenType - Schema for children items. For containers this should be\n * a narrowed union of allowed children; for leaves omit it.\n * @returns TypeBox schema object for the component\n */\nexport function createComponentSchemaObject(\n component: StandardComponentDefinition,\n childrenType?: TSchema,\n selfRef?: TSchema\n): TSchema {\n const schema: Record<string, TSchema> = {\n name: Type.Literal(component.name),\n id: Type.Optional(Type.String()),\n enabled: Type.Optional(\n Type.Boolean({\n default: true,\n description:\n 'When false, this component is filtered out and not rendered. Defaults to true. Useful for conditional component inclusion.',\n })\n ),\n };\n\n // Special handling for report component (has $schema field)\n if (component.special?.hasSchemaField) {\n schema.$schema = Type.Optional(Type.String({ format: 'uri' }));\n }\n\n // selfRef (full union) is intentionally passed to createPropsSchema so that\n // header/footer sub-schemas and table cell content can reference any component.\n const propsSchema =\n component.createPropsSchema && selfRef\n ? component.createPropsSchema(selfRef)\n : component.propsSchema;\n\n // `props` is required only when the props schema itself demands a field.\n // The runtime validator treats an omitted `props` as `{}` and lets the props\n // schema decide (see deep-validator.ts), so `section`, `toc`, `image` and\n // `text-box` are legal without the key. Exporting `props` as unconditionally\n // required reddened documents that build: the playground flagged all 23\n // propless sections in the shipped tech-report template while every runtime\n // gate stayed green. The root `docx` node already carried this fix locally in\n // generator.ts; this generalizes it to every component.\n schema.props = demandsProps(propsSchema)\n ? propsSchema\n : Type.Optional(propsSchema);\n\n // Add children support if applicable. The root component requires its\n // `children` array — deep-validator.ts enforces the same rule, but only on\n // the fallback path it takes when the TypeBox check already failed. That\n // made the rule fire only as a side effect of `props` being required, so\n // relaxing `props` above would silently retire it. Nested containers may\n // legitimately be empty.\n if (component.hasChildren && childrenType) {\n schema.children = component.special?.hasSchemaField\n ? Type.Array(childrenType)\n : Type.Optional(Type.Array(childrenType));\n }\n\n return Type.Object(schema, {\n additionalProperties: false,\n description: component.description,\n });\n}\n\n/**\n * Generate an array of TypeBox schemas for all standard components.\n * Uses a flat recursive ref for all containers (legacy behavior).\n *\n * @param recursiveRef - Optional recursive reference for children\n * @returns Array of TypeBox schemas for all components in the registry\n */\nexport function createAllComponentSchemas(\n recursiveRef?: TSchema\n): readonly TSchema[] {\n return STANDARD_COMPONENTS_REGISTRY.map((component) =>\n createComponentSchemaObject(component, recursiveRef)\n );\n}\n\n/**\n * Build all standard component schemas with per-container narrowed children.\n *\n * Resolves containers in dependency order so each container's children union\n * only references its allowedChildren. Plugin schemas are always included in\n * every container's children.\n *\n * @param selfRef - The Type.Recursive self-reference (used as fallback and for plugin children)\n * @param pluginSchemas - Plugin component schemas (always allowed in all containers)\n * @returns schemas array and a byName map for direct lookups\n */\nexport function createAllComponentSchemasNarrowed(\n selfRef: TSchema,\n pluginSchemas: TSchema[] = []\n): { schemas: TSchema[]; byName: Map<string, TSchema> } {\n // Phase 1: Build leaf (non-container) component schemas — no children\n // selfRef is passed so factories (e.g. table) can wire up recursive refs.\n const leafSchemas = new Map<string, TSchema>();\n for (const comp of STANDARD_COMPONENTS_REGISTRY) {\n if (!comp.hasChildren) {\n leafSchemas.set(\n comp.name,\n createComponentSchemaObject(comp, undefined, selfRef)\n );\n }\n }\n\n // Phase 2: Resolve containers in dependency order\n const containers = STANDARD_COMPONENTS_REGISTRY.filter((c) => c.hasChildren);\n const resolved = new Map<string, TSchema>();\n const pending = [...containers];\n\n while (pending.length > 0) {\n const before = pending.length;\n for (let i = pending.length - 1; i >= 0; i--) {\n const comp = pending[i];\n\n if (!comp.allowedChildren) {\n // No allowedChildren declared — fallback to full recursive ref\n resolved.set(\n comp.name,\n createComponentSchemaObject(comp, selfRef, selfRef)\n );\n pending.splice(i, 1);\n continue;\n }\n\n // Check if all container dependencies are resolved\n const containerDeps = comp.allowedChildren.filter((name) =>\n containers.some((c) => c.name === name)\n );\n if (!containerDeps.every((d) => resolved.has(d))) continue;\n\n // Build narrowed children union\n const childSchemas = comp.allowedChildren\n .map((name) => resolved.get(name) ?? leafSchemas.get(name))\n .filter((s): s is TSchema => s !== undefined);\n\n const allChildSchemas = [...childSchemas, ...pluginSchemas];\n const childrenType =\n allChildSchemas.length === 1\n ? allChildSchemas[0]\n : Type.Union(allChildSchemas);\n\n resolved.set(\n comp.name,\n createComponentSchemaObject(comp, childrenType, selfRef)\n );\n pending.splice(i, 1);\n }\n\n if (pending.length === before) {\n throw new Error(\n `Circular allowedChildren among: ${pending.map((c) => c.name).join(', ')}`\n );\n }\n }\n\n // Combine: containers (resolved) + leaves\n const byName = new Map([...resolved, ...leafSchemas]);\n return { schemas: [...byName.values()], byName };\n}\n","/**\n * Report Component Schema\n */\n\nimport { Type, Static, TSchema } from '@sinclair/typebox';\nimport { ComponentDefaultsSchema } from '../component-defaults';\nimport { NoProofWordsSchema } from '../font';\nimport { ThemeOverridesSchema } from '../theme';\n\n// Create a function to generate ReportPropsSchema with recursive component reference\nexport const createReportPropsSchema = (_componentRef?: TSchema) =>\n Type.Object(\n {\n theme: Type.Optional(\n Type.String({\n description: 'Theme name to apply (default: \"minimal\")',\n examples: ['minimal', 'corporate', 'modern'],\n default: 'minimal',\n })\n ),\n themeOverrides: Type.Optional(ThemeOverridesSchema),\n componentDefaults: Type.Optional(ComponentDefaultsSchema),\n language: Type.Optional(\n Type.String({\n pattern: '^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$',\n description:\n 'Default document language (BCP-47 tag, e.g. \"en-US\"). Sets Word\\'s default proofing/spell-check language; individual components can override it locally.',\n examples: ['en-US', 'fr-FR', 'de-DE', 'it-IT', 'es-ES'],\n })\n ),\n noProofWords: Type.Optional(NoProofWordsSchema),\n trackRevisions: Type.Optional(\n Type.Boolean({\n description:\n 'Open the document in track-changes mode: Word marks any further edits as revisions. Set automatically on redline documents produced by the diff engine',\n })\n ),\n metadata: Type.Optional(\n Type.Object(\n {\n title: Type.Optional(\n Type.String({\n description: 'Document title',\n examples: ['Annual Report 2024', 'Technical Documentation'],\n })\n ),\n subtitle: Type.Optional(\n Type.String({\n description: 'Document subtitle',\n })\n ),\n description: Type.Optional(Type.String()),\n author: Type.Optional(Type.String()),\n company: Type.Optional(\n Type.String({\n description:\n 'Company name, written to docProps/custom.xml (Word has no core-property slot for it)',\n })\n ),\n date: Type.Optional(\n Type.String({\n description:\n 'Document date used by {DATE}/{DATETIME} placeholders (defaults to the generation timestamp)',\n })\n ),\n version: Type.Optional(\n Type.String({\n description: 'Document version, written to docProps/custom.xml',\n examples: ['1.0', '2024.3'],\n })\n ),\n tags: Type.Optional(Type.Array(Type.String())),\n },\n {\n description:\n 'Document metadata (title, author, company, version, etc.). Package timestamps (dcterms:created/modified) are not part of this object: they come from the `generatedAt` generation option so repeated builds stay byte-identical.',\n additionalProperties: false,\n }\n )\n ),\n },\n {\n description: 'Report component props',\n additionalProperties: false,\n }\n );\n\nexport const ReportPropsSchema = createReportPropsSchema();\n\nexport type ReportProps = Static<typeof ReportPropsSchema>;\n","/**\n * Text Box Component Schema\n * A floating container that can hold child components (e.g., text, image, columns)\n *\n * Positioning API mirrors existing floating options from text/image for consistency.\n *\n * **Nested Columns Support:**\n * When a `columns` component is nested inside a `text-box`, it automatically renders\n * as a multi-column table instead of a section-level column layout. This allows\n * for columnar content within floating or inline containers.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { FloatingPropertiesSchema } from './common';\nimport { HexColorSchema } from '../font';\n\nexport const TextBoxPropsSchema = Type.Object(\n {\n width: Type.Optional(\n Type.Union(\n [\n Type.Number({\n minimum: 1,\n description: 'Text box width in pixels',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Text box width as percentage (e.g., \"50%\") relative to content width',\n }),\n ],\n {\n description:\n 'Text box width in pixels (number) or as percentage string (e.g., \"50%\")',\n }\n )\n ),\n height: Type.Optional(\n Type.Union(\n [\n Type.Number({\n minimum: 1,\n description: 'Text box height in pixels',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Text box height as percentage (e.g., \"50%\") relative to content height',\n }),\n ],\n {\n description:\n 'Text box height in pixels (number) or as percentage string (e.g., \"50%\")',\n }\n )\n ),\n floating: Type.Optional(FloatingPropertiesSchema),\n style: Type.Optional(\n Type.Object(\n {\n padding: Type.Optional(\n Type.Object(\n {\n top: Type.Optional(Type.Number({ minimum: 0 })),\n right: Type.Optional(Type.Number({ minimum: 0 })),\n bottom: Type.Optional(Type.Number({ minimum: 0 })),\n left: Type.Optional(Type.Number({ minimum: 0 })),\n },\n { additionalProperties: false }\n )\n ),\n border: Type.Optional(\n Type.Object(\n {\n top: Type.Optional(\n // Reuse border schema semantics: style/width/color\n Type.Object(\n {\n style: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dashed'),\n Type.Literal('dotted'),\n Type.Literal('double'),\n Type.Literal('none'),\n ])\n ),\n width: Type.Optional(Type.Number({ minimum: 0 })),\n color: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false }\n )\n ),\n right: Type.Optional(\n Type.Object(\n {\n style: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dashed'),\n Type.Literal('dotted'),\n Type.Literal('double'),\n Type.Literal('none'),\n ])\n ),\n width: Type.Optional(Type.Number({ minimum: 0 })),\n color: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false }\n )\n ),\n bottom: Type.Optional(\n Type.Object(\n {\n style: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dashed'),\n Type.Literal('dotted'),\n Type.Literal('double'),\n Type.Literal('none'),\n ])\n ),\n width: Type.Optional(Type.Number({ minimum: 0 })),\n color: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false }\n )\n ),\n left: Type.Optional(\n Type.Object(\n {\n style: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dashed'),\n Type.Literal('dotted'),\n Type.Literal('double'),\n Type.Literal('none'),\n ])\n ),\n width: Type.Optional(Type.Number({ minimum: 0 })),\n color: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false }\n )\n ),\n },\n { additionalProperties: false }\n )\n ),\n shading: Type.Optional(\n Type.Object(\n {\n // Same domain as every other colour prop and as the border\n // colours above: resolveColor() accepts \"#RRGGBB\" or a theme\n // colour name, and throws on anything else at render time.\n fill: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false }\n )\n ),\n },\n { additionalProperties: false }\n )\n ),\n },\n { additionalProperties: false }\n);\n\nexport type TextBoxProps = Static<typeof TextBoxPropsSchema>;\n","/**\n * Table of Contents Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\n\n/**\n * Kept for back-compat only. Word's TOC field has no numbering switch, so the\n * renderer cannot apply this and logs a warning when it is set; entries inherit\n * the numbering of the heading styles they reference.\n */\nexport const TocStyleSchema = Type.Union(\n [Type.Literal('numeric'), Type.Literal('bullet'), Type.Literal('none')],\n {\n description:\n 'TOC numbering style — accepted but not applied (Word TOC fields carry no numbering switch); setting it logs a warning during generation',\n }\n);\n\nexport const TocScopeSchema = Type.Union(\n [Type.Literal('document'), Type.Literal('section')],\n { description: 'TOC scope: document-wide or section-only' }\n);\n\nexport const TocStyleMappingSchema = Type.Object(\n {\n styleId: Type.String({\n description: 'Custom style ID matching a key in theme.styles',\n }),\n level: Type.Number({\n minimum: 1,\n maximum: 6,\n description: 'TOC level (1-6) to assign to this style',\n }),\n },\n {\n description: 'Mapping of custom style to TOC level',\n additionalProperties: false,\n }\n);\n\nexport const TocDepthRangeSchema = Type.Object(\n {\n from: Type.Optional(\n Type.Number({\n minimum: 1,\n maximum: 6,\n default: 1,\n description:\n 'Starting heading level (1-6). Defaults to 1 if not specified.',\n })\n ),\n to: Type.Optional(\n Type.Number({\n minimum: 1,\n maximum: 6,\n default: 3,\n description:\n 'Ending heading level (1-6). Defaults to 3 if not specified.',\n })\n ),\n },\n {\n description:\n 'Range of heading levels to include in TOC. Specify at least one of \"from\" or \"to\".',\n additionalProperties: false,\n }\n);\n\nexport const TocPropsSchema = Type.Object(\n {\n pageBreak: Type.Optional(\n Type.Boolean({\n description: 'Insert page break before TOC block',\n })\n ),\n depth: Type.Optional(\n Type.Object(\n {\n from: Type.Optional(\n Type.Number({\n minimum: 1,\n maximum: 6,\n default: 1,\n description:\n 'Starting heading level (1-6). Defaults to 1 if not specified.',\n })\n ),\n to: Type.Optional(\n Type.Number({\n minimum: 1,\n maximum: 6,\n default: 3,\n description:\n 'Ending heading level (1-6). Defaults to 3 if not specified.',\n })\n ),\n },\n {\n description:\n 'Range of heading levels to include in TOC. Specify \"from\", \"to\", or both. Defaults: from=1, to=3',\n additionalProperties: false,\n default: { to: 3 },\n }\n )\n ),\n pageNumbersDepth: Type.Optional(\n Type.Object(\n {\n from: Type.Optional(\n Type.Number({\n minimum: 1,\n maximum: 6,\n default: 1,\n description:\n 'Starting heading level (1-6). Defaults to 1 if not specified.',\n })\n ),\n to: Type.Optional(\n Type.Number({\n minimum: 1,\n maximum: 6,\n default: 3,\n description:\n 'Ending heading level (1-6). Defaults to 3 if not specified.',\n })\n ),\n },\n {\n description:\n 'Range of heading levels to show page numbers. Specify \"from\", \"to\", or both. When specified, page numbers are hidden for entries outside this range.',\n additionalProperties: false,\n }\n )\n ),\n numberingStyle: Type.Optional(TocStyleSchema),\n title: Type.Optional(\n Type.String({\n description: 'TOC heading title',\n })\n ),\n includePageNumbers: Type.Optional(\n Type.Boolean({\n default: true,\n description: 'Show page numbers next to entries',\n })\n ),\n numberSeparator: Type.Optional(\n Type.Boolean({\n default: true,\n description:\n 'Use tab separator between entry and page number. True applies \"\\\\t\" (default), false applies \" \"',\n })\n ),\n scope: Type.Optional(\n Type.Union([TocScopeSchema, Type.Literal('auto')], {\n default: 'auto',\n description:\n 'TOC scope: \"document\" for entire document, \"section\" for parent section only, \"auto\" for automatic detection (section if inside section, otherwise document)',\n })\n ),\n styles: Type.Optional(\n Type.Array(TocStyleMappingSchema, {\n description:\n 'Custom style mappings for TOC entries. Maps custom theme styles to TOC levels.',\n })\n ),\n },\n {\n description: 'Table of Contents component props',\n additionalProperties: false,\n }\n);\n\nexport type TocProps = Static<typeof TocPropsSchema>;\n","/**\n * Highcharts Component Schema\n *\n * Standard component for rendering charts using Highcharts export server.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\n\n/**\n * Highcharts component props schema\n * Accepts options that will be passed to Highcharts export server\n */\nexport const HighchartsPropsSchema = Type.Object({\n // Highcharts chart options - can be anything but must at least have chart.width and chart.height\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 // Optional scale factor for export\n scale: Type.Optional(Type.Number()),\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 // Optional Highcharts Export Server URL override\n serverUrl: Type.Optional(\n Type.String({\n description:\n 'Highcharts Export Server URL (default: http://localhost:7801)',\n })\n ),\n // Optional width for rendering (overrides chart width)\n width: Type.Optional(\n Type.Union(\n [\n Type.Number({\n minimum: 1,\n description: 'Image width in pixels',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Image width as percentage (e.g., \"90%\") relative to content width',\n }),\n ],\n {\n description:\n 'Rendered image width in pixels (number) or as percentage string (e.g., \"90%\")',\n }\n )\n ),\n // Optional height for rendering (overrides chart height)\n height: Type.Optional(\n Type.Union(\n [\n Type.Number({\n minimum: 1,\n description: 'Image height in pixels',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Image height as percentage (e.g., \"90%\") relative to content height',\n }),\n ],\n {\n description:\n 'Rendered image height in pixels (number) or as percentage string (e.g., \"90%\")',\n }\n )\n ),\n});\n\nexport type HighchartsProps = Static<typeof HighchartsPropsSchema>;\n","/**\n * Visual Component Schema\n *\n * A `visual` is a free-canvas graphic authored as a single pptx slide and\n * embedded into the document as a rasterized PNG. It unlocks absolute\n * positioning, overlapping shapes and layered art that the docx flow layout\n * cannot express — think infographics, diagrams and hero compositions.\n *\n * The pptx slide is rendered to an image by an injected rasterization service\n * (see `PptxServiceConfig` in @json-to-office/shared), exactly the way the\n * `highcharts` component offloads chart rendering to an export server. At\n * render time the component desugars to a plain `image`.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n MIN_VISUAL_DPI,\n MAX_VISUAL_DPI,\n DEFAULT_VISUAL_DPI,\n} from '@json-to-office/shared';\nimport { PptxSlideContentSchema } from '@json-to-office/shared/schemas/slide-content';\nimport {\n AlignmentSchema,\n SpacingSchema,\n FloatingPropertiesSchema,\n} from './common';\n\n/**\n * Canvas background — a solid color and/or a background image.\n * Mirrors the pptx slide background shape (kept local to avoid coupling\n * shared-docx to shared-pptx; the rasterizer forwards it verbatim).\n */\nexport const VisualCanvasBackgroundSchema = Type.Object(\n {\n color: Type.Optional(\n Type.String({\n description:\n 'Background color (hex like \"#FFFFFF\" or a theme color name)',\n })\n ),\n image: Type.Optional(\n Type.Object(\n {\n path: Type.Optional(Type.String()),\n base64: Type.Optional(Type.String()),\n },\n { additionalProperties: false }\n )\n ),\n },\n { additionalProperties: false }\n);\n\n/**\n * The pptx canvas the visual is drawn on. Width/height are in inches and set\n * both the aspect ratio and the physical print size of the embedded image.\n */\nexport const VisualCanvasSchema = Type.Object(\n {\n width: Type.Number({\n minimum: 0.1,\n description: 'Canvas width in inches (pptx slideWidth)',\n }),\n height: Type.Number({\n minimum: 0.1,\n description: 'Canvas height in inches (pptx slideHeight)',\n }),\n theme: Type.Optional(\n Type.String({ description: 'pptx theme name applied to the slide' })\n ),\n background: Type.Optional(VisualCanvasBackgroundSchema),\n },\n {\n description: 'pptx canvas definition for the visual',\n additionalProperties: false,\n }\n);\n\n// A single pptx slide content element (text, image, shape, table, highcharts,\n// chart) is validated against the real PPTX slide-content union\n// (`PptxSlideContentSchema` from @json-to-office/shared/schemas/slide-content)\n// — same authoring\n// fidelity as a standalone `.pptx.json`. Used directly as the `elements` item\n// schema below.\n\nexport const VisualPropsSchema = Type.Object(\n {\n // ── canvas (drives aspect ratio + physical size) ──\n canvas: VisualCanvasSchema,\n // pptx slide content elements, absolutely positioned on the canvas\n elements: Type.Optional(\n Type.Array(PptxSlideContentSchema, {\n description:\n 'pptx slide content elements (text, image, shape, table, highcharts, chart), positioned with x/y/w/h in inches',\n })\n ),\n\n // ── rasterization ──\n dpi: Type.Optional(\n Type.Number({\n minimum: MIN_VISUAL_DPI,\n maximum: MAX_VISUAL_DPI,\n default: DEFAULT_VISUAL_DPI,\n description: `Raster resolution in DPI (default ${DEFAULT_VISUAL_DPI}, range ${MIN_VISUAL_DPI}-${MAX_VISUAL_DPI}). Higher = sharper + larger.`,\n })\n ),\n serverUrl: Type.Optional(\n Type.String({\n description:\n 'Rasterization service URL override (default from services.pptx)',\n })\n ),\n\n // ── placement in the document (mirrors `image`) ──\n width: Type.Optional(\n Type.Union(\n [\n Type.Number({ minimum: 1, description: 'Rendered width in pixels' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Rendered width as percentage (e.g. \"90%\")',\n }),\n ],\n {\n description:\n 'Rendered width in the document, in pixels (number) or percentage string. Defaults to the canvas physical size.',\n }\n )\n ),\n height: Type.Optional(\n Type.Union([\n Type.Number({ minimum: 1, description: 'Rendered height in pixels' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Rendered height as percentage (e.g. \"90%\")',\n }),\n ])\n ),\n alignment: Type.Optional(AlignmentSchema),\n caption: Type.Optional(\n Type.String({\n description:\n 'Caption (supports rich text with **bold**, *italic*, ***both***)',\n })\n ),\n alt: Type.Optional(\n Type.String({ description: 'Alternative text for accessibility' })\n ),\n spacing: Type.Optional(SpacingSchema),\n floating: Type.Optional(FloatingPropertiesSchema),\n keepNext: Type.Optional(\n Type.Boolean({\n description: 'Keep paragraph with next paragraph on same page',\n })\n ),\n keepLines: Type.Optional(\n Type.Boolean({\n description: 'Keep all lines of paragraph together on same page',\n })\n ),\n },\n {\n description: 'Visual component props (pptx-rendered graphic)',\n additionalProperties: false,\n }\n);\n\nexport type VisualProps = Static<typeof VisualPropsSchema>;\nexport type VisualCanvas = Static<typeof VisualCanvasSchema>;\n"],"mappings":"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","names":["Type","Type","Type","Type","Type","Type","Type","Type"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/validation/unified/error-transformer.ts","../src/validation/unified/deep-validator.ts","../src/validation/unified/base-validator.ts","../src/validation/unified/document-validator.ts"],"sourcesContent":["/**\n * Unified error transformation utilities\n * Converts TypeBox ValueError objects to standardized ValidationError format\n */\n\nimport type { ValueError } from '@sinclair/typebox/value';\nimport type { ValidationError } from '@json-to-office/shared';\nimport { ReportPropsSchema } from '../../schemas/components/report';\nimport {\n isObjectSchema,\n getObjectSchemaPropertyNames,\n getLiteralValue,\n type ErrorFormatterConfig,\n createErrorConfig,\n formatErrorMessage,\n ERROR_EMOJIS,\n} from '@json-to-office/shared';\n\n/**\n * Generate enhanced error message based on error type and context\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 // Handle union errors specially - these are the most common and least helpful\n if (typeStr === '62' || typeStr === 'union') {\n return generateUnionErrorMessage(error);\n }\n\n // Handle additional properties error\n if (error.message?.includes('additionalProperties')) {\n return generateAdditionalPropertiesMessage(error);\n }\n\n // Handle missing required properties\n if (error.message?.includes('Required property')) {\n return generateRequiredPropertyMessage(error);\n }\n\n // Handle type mismatches\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 // Handle literal value errors\n if (typeStr === 'literal') {\n return generateLiteralErrorMessage(error);\n }\n\n // Handle pattern/regex errors\n if (typeStr === 'pattern' || typeStr === 'RegExp') {\n return generatePatternErrorMessage(error);\n }\n\n // Default to original message with some context\n return `At ${path}: ${error.message}`;\n}\n\n/**\n * Generate message for union validation errors\n */\nfunction generateUnionErrorMessage(error: ValueError): string {\n const path = error.path || 'root';\n const value = error.value;\n\n // Try to determine what the user was attempting\n if (path === 'root' || path === '/' || path === '/jsonDefinition') {\n // Root level or jsonDefinition union error - likely a document type issue\n if (value && typeof value === 'object') {\n if ('name' in value) {\n const name = value.name;\n if (name === 'docx') {\n return 'Document structure appears valid but contains invalid component configurations. Check each component for errors.';\n }\n return `Unknown document name '${name}'. Expected 'docx'.`;\n }\n\n // Missing name field\n const valueAny = value as Record<string, unknown>;\n if ('children' in value && Array.isArray(valueAny.children)) {\n return 'Document is missing required \\'name\\' field. Add \"name\": \"docx\" at the root level.';\n }\n\n // Check if it might be a theme\n if ('name' in value || 'styles' in value) {\n return 'This appears to be a theme configuration. Use --type theme or ensure proper document structure.';\n }\n }\n return 'Invalid document structure. Expected a document with name=\"docx\" or a theme configuration.';\n }\n\n // Component-level union error\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 // Default union error message\n return `Value at ${path} doesn't match any of the expected formats. Check the structure and required fields.`;\n}\n\n/**\n * Generate message for additional properties errors\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 // Try to identify the unknown properties\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\n/**\n * Generate message for required property errors\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 for this configuration.`;\n }\n\n return `Missing required property at ${path}. Check that all mandatory fields are present.`;\n}\n\n/**\n * Generate message for type mismatch errors\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 // Provide context-specific messages\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\n/**\n * Generate message for literal value errors\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\n/**\n * Generate message for pattern/regex errors\n */\nfunction generatePatternErrorMessage(error: ValueError): string {\n const path = error.path || 'root';\n\n // Try to provide helpful context based on the path\n if (path.includes('email')) {\n return `Invalid email format at ${path}. Use format: user@example.com`;\n }\n\n if (path.includes('url') || path.includes('link')) {\n return `Invalid URL format at ${path}. Use format: https://example.com`;\n }\n\n if (path.includes('date')) {\n return `Invalid date format at ${path}. Use ISO format: YYYY-MM-DD`;\n }\n\n if (path.includes('phone')) {\n return `Invalid phone number format at ${path}`;\n }\n\n return `Value at ${path} doesn't match the required pattern`;\n}\n\n/**\n * Transform TypeBox ValueError to standardized ValidationError\n */\nexport function transformValueError(\n error: ValueError,\n jsonString?: string,\n config?: ErrorFormatterConfig\n): ValidationError {\n const formatterConfig = createErrorConfig(config);\n\n // Generate enhanced message based on error type\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 // Add suggestion if available and configured\n if (formatterConfig.includeSuggestions) {\n const suggestion = getSuggestion(error, formatterConfig);\n if (suggestion) {\n baseError.suggestion = formatErrorMessage(suggestion, formatterConfig);\n }\n }\n\n // Calculate line and column if JSON string is provided\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\n/**\n * Transform multiple TypeBox errors to ValidationError array\n * Enhanced to collect ALL errors, not just stopping at union failures\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 // Collect all errors, but avoid duplicates at the same path\n for (const error of errors) {\n if (result.length >= maxErrors) break;\n\n // Create a unique key for this error based on path and type\n const errorKey = `${error.path}:${error.type}`;\n\n // Skip if we've already seen an error at this exact path and type\n // This helps avoid duplicate union errors while still showing all unique issues\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\n/**\n * Calculate line and column position in JSON string\n */\nexport function calculatePosition(\n jsonString: string,\n path: string\n): { line: number; column: number } | null {\n try {\n // Convert path like \"/children/0/props/title\" to searchable parts\n const pathParts = path.split('/').filter(Boolean);\n if (pathParts.length === 0) {\n return { line: 1, column: 1 };\n }\n\n // Try to find the last part of the path in the JSON\n const lastPart = pathParts[pathParts.length - 1];\n const searchPattern = `\"${lastPart}\"`;\n const index = jsonString.indexOf(searchPattern);\n\n if (index === -1) {\n // Try to find just the value if it's a property name\n return { line: 1, column: 1 };\n }\n\n // Calculate line and column from index\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\n/**\n * Get helpful suggestion based on error type and context\n */\nfunction getSuggestion(\n error: ValueError,\n config: Required<ErrorFormatterConfig>\n): string | undefined {\n const { type, path, value } = error;\n const typeStr = String(type);\n\n // Enhanced suggestions for union errors\n if (typeStr === '62' || typeStr === 'union') {\n if (path === 'root' || path === '/') {\n if (value && typeof value === 'object') {\n if (!('name' in value)) {\n const msg = 'Add a \"name\" field with value \"docx\" for documents';\n return config.includeEmojis ? `${ERROR_EMOJIS.FIX} ${msg}` : msg;\n }\n if ('props' in value && typeof value.props === 'object') {\n const knownFields = getObjectSchemaPropertyNames(ReportPropsSchema);\n return `Review the props section for unsupported fields. Allowed fields: ${knownFields.join(', ')}`;\n }\n }\n return 'Ensure the document has proper structure: { \"name\": \"docx\", \"props\": {...}, \"children\": [...] }';\n }\n if (path?.includes('/children/')) {\n return 'Check that the component has a valid \"name\" and all required fields for that component type';\n }\n return 'Review the structure and ensure all required fields are present with correct types';\n }\n\n // Suggestions for additional properties errors\n if (error.message?.includes('additionalProperties')) {\n return 'Remove any unknown or unsupported fields. Check documentation for allowed properties.';\n }\n\n // Suggestions for required properties\n if (error.message?.includes('Required property')) {\n return 'Add the missing required field to fix this error';\n }\n\n // Type-specific suggestions\n if (typeStr === 'string') {\n if (path?.includes('alignment')) {\n return 'Use one of: left, center, right, justify';\n }\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 if (path?.includes('fontSize') || path?.includes('size')) {\n return 'Use a number in points (e.g., 12, 14, 16)';\n }\n if (path?.includes('margin') || path?.includes('padding')) {\n return 'Use a number for spacing in points';\n }\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 if (path?.includes('children')) {\n return 'Provide an array of component objects, each with a \"name\" field';\n }\n return 'Provide an array/list 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 if (typeStr === 'pattern' || typeStr === 'RegExp') {\n if (path?.includes('email')) {\n return 'Use valid email format: user@example.com';\n }\n if (path?.includes('url')) {\n return 'Use valid URL format: https://example.com';\n }\n if (path?.includes('date')) {\n return 'Use ISO date format: YYYY-MM-DD';\n }\n return 'Ensure the value matches the required format';\n }\n\n // Path-based suggestions\n if (path?.includes('name') || path?.includes('type')) {\n return 'Use a valid component name: docx, section, columns, heading, paragraph, image, statistic, table, list, toc, text-box, highcharts, or visual';\n }\n\n return undefined;\n}\n\n/**\n * Format validation errors as a summary string\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\n/**\n * Group errors by path for better reporting\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\n/**\n * Create a JSON parse error\n */\nexport function createJsonParseError(\n error: Error,\n jsonString: string\n): ValidationError {\n // Try to extract position from error message\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","/**\n * Deep validation utilities for collecting ALL errors in nested structures\n * This bypasses TypeBox's union short-circuiting to provide comprehensive error reporting\n */\n\nimport { Value } from '@sinclair/typebox/value';\nimport type { TSchema } from '@sinclair/typebox';\nimport type { ValidationError } from '@json-to-office/shared';\nimport { STANDARD_COMPONENTS_REGISTRY } from '../../schemas/component-registry';\nimport { CustomComponentDefinitionSchema } from '../../schemas/custom-components';\nimport { transformValueErrors } from './error-transformer';\n\n// Map of component names to their props schemas, sourced from the registry.\n// This stays in sync as new standard components are added, so the document\n// root ('docx') and every standard child component are recognized here.\nconst COMPONENT_SCHEMAS: Record<string, TSchema> = Object.fromEntries([\n ...STANDARD_COMPONENTS_REGISTRY.map((c) => [c.name, c.propsSchema]),\n ['custom', CustomComponentDefinitionSchema],\n]);\n\n// Root component names that may appear at the top of a document.\nconst ROOT_COMPONENT_NAMES = new Set(\n STANDARD_COMPONENTS_REGISTRY.filter((c) =>\n Boolean(c.special?.hasSchemaField)\n ).map((c) => c.name)\n);\n\n/**\n * Options that tune deep validation.\n *\n * `knownCustomNames` — names of registered plugin components. The deep\n * validator neither flags these as \"unknown component\" nor validates their\n * props here; the plugin layer validates custom props version-aware separately.\n *\n * `allowUnknownFields` — when true, unknown properties are stripped before the\n * per-component check instead of being rejected. The escape hatch for callers\n * migrating onto strict schemas.\n */\nexport interface DeepValidateOptions {\n knownCustomNames?: Set<string>;\n allowUnknownFields?: boolean;\n}\n\n// Image source fields that are mutually exclusive: exactly one may be set.\nconst IMAGE_SOURCE_FIELDS = ['path', 'base64', 'svg'] as const;\n\n/**\n * Names of the image source fields that carry a non-empty value on a props object.\n */\nexport function presentImageSources(props: unknown): string[] {\n if (!props || typeof props !== 'object') return [];\n const p = props as Record<string, unknown>;\n return IMAGE_SOURCE_FIELDS.filter((f) => {\n const v = p[f];\n return typeof v === 'string' && v.trim().length > 0;\n });\n}\n\n/**\n * Collect \"more than one image source\" conflicts anywhere in a document.\n *\n * `path`, `base64`, and `svg` are mutually exclusive on the image component, but\n * all three are optional fields on a single object schema — so a multi-source\n * payload passes TypeBox's structural check and would otherwise be silently\n * resolved by runtime precedence (svg > base64 > path). This walk runs\n * unconditionally and rejects such payloads. It traverses every nested value, so\n * images inside columns, table cells, text boxes, headers/footers, and sections\n * are all covered regardless of container shape.\n */\nexport function collectImageSourceConflicts(data: unknown): ValidationError[] {\n const errors: ValidationError[] = [];\n\n const visit = (node: any, path: string): void => {\n if (Array.isArray(node)) {\n node.forEach((item, i) => visit(item, `${path}/${i}`));\n return;\n }\n if (!node || typeof node !== 'object') return;\n\n if (node.name === 'image') {\n const present = presentImageSources(node.props);\n if (present.length > 1) {\n errors.push({\n path: `${path}/props`,\n message: `Image component accepts only one source, but found ${present\n .map((f) => `\"${f}\"`)\n .join(', ')}. Use exactly one of \"path\", \"base64\", or \"svg\".`,\n code: 'mutually_exclusive',\n });\n }\n }\n\n for (const key of Object.keys(node)) {\n visit(node[key], `${path}/${key}`);\n }\n };\n\n visit(data, '');\n return errors;\n}\n\n// Components that accept a paragraph-style `indent` prop with the mutually\n// exclusive hanging/firstLine pair.\nconst INDENT_COMPONENT_NAMES = new Set(['paragraph', 'heading']);\n\n/**\n * Collect \"hanging and firstLine both set\" indent conflicts anywhere in a\n * document.\n *\n * `hanging` and `firstLine` are mutually exclusive on `props.indent` (they both\n * map to the same w:ind axis — Word keeps only one), but each is an optional\n * field on a single object schema, so a payload carrying both passes TypeBox's\n * structural check. Like the image-source walk above, this runs unconditionally\n * and traverses every nested value, so paragraphs inside columns, table cells,\n * text boxes, headers/footers, and sections are all covered.\n */\nexport function collectIndentConflicts(data: unknown): ValidationError[] {\n const errors: ValidationError[] = [];\n\n const visit = (node: any, path: string): void => {\n if (Array.isArray(node)) {\n node.forEach((item, i) => visit(item, `${path}/${i}`));\n return;\n }\n if (!node || typeof node !== 'object') return;\n\n if (INDENT_COMPONENT_NAMES.has(node.name)) {\n const indent = node.props?.indent;\n if (\n indent &&\n typeof indent === 'object' &&\n indent.hanging !== undefined &&\n indent.firstLine !== undefined\n ) {\n errors.push({\n path: `${path}/props/indent`,\n message:\n 'Indent accepts either \"hanging\" or \"firstLine\", not both. Use exactly one of the two.',\n code: 'mutually_exclusive',\n });\n }\n }\n\n for (const key of Object.keys(node)) {\n visit(node[key], `${path}/${key}`);\n }\n };\n\n visit(data, '');\n return errors;\n}\n\n/**\n * Deep validate a document to collect ALL errors, not just union-level errors\n */\nexport function deepValidateDocument(\n data: any,\n opts: DeepValidateOptions = {}\n): ValidationError[] {\n const allErrors: ValidationError[] = [];\n\n // Validate the document structure\n if (!data || typeof data !== 'object') {\n allErrors.push({\n path: 'root',\n message: 'Document must be an object',\n code: 'invalid_type',\n });\n return allErrors;\n }\n\n // Check name field\n if (!data.name) {\n allErrors.push({\n path: '/name',\n message: 'Missing required field \"name\"',\n code: 'required_property',\n });\n } else if (!ROOT_COMPONENT_NAMES.has(data.name)) {\n const expected = [...ROOT_COMPONENT_NAMES].map((n) => `\"${n}\"`).join(', ');\n allErrors.push({\n path: '/name',\n message: `Invalid name \"${data.name}\". Expected ${expected}`,\n code: 'invalid_value',\n });\n }\n\n // Validate props section when the key is present so explicit `null` (or any\n // falsy non-object) is checked against the component's schema instead of\n // silently passing.\n if (ROOT_COMPONENT_NAMES.has(data.name) && 'props' in data) {\n const propsErrors = validateComponentProps(\n data.name,\n data.props,\n '/props',\n opts\n );\n allErrors.push(...propsErrors);\n }\n\n // Validate the children array. The root component requires one; nested\n // containers may legitimately omit it.\n if (!data.children) {\n allErrors.push({\n path: '/children',\n message: 'Missing required field \"children\"',\n code: 'required_property',\n });\n } else if (!Array.isArray(data.children)) {\n allErrors.push({\n path: '/children',\n message: 'Field \"children\" must be an array',\n code: 'invalid_type',\n });\n }\n\n // Deep-validate the props of every component anywhere in the tree.\n //\n // The earlier implementation only re-validated the root's direct children\n // and one level of `section` children. Two whole-tree blind spots followed:\n // 1. component props nested inside `text-box`/`columns` children — the\n // content of every container lives in the shared `children` field, so\n // anything below the first level went unchecked; and\n // 2. the `header`/`footer` paragraph regions, which the section schema\n // types loosely as an array of `Type.Any()` (or the `'linkToPrevious'`\n // literal) — so their entries' props are never checked by the\n // per-section validation.\n // The in-editor (Monaco) validator runs the generated JSON Schema over the\n // entire document, so it flags both. This walk brings the CLI to parity.\n walkComponentTree(data, '', opts, allErrors);\n\n return allErrors;\n}\n\n/**\n * Recursively validate the props of every component nested under `node`.\n *\n * Walks two kinds of child position to any depth:\n * - the `children` array — the universal container field shared by `docx`,\n * `section`, `columns` and `text-box` (added by the component registry), so\n * a bad prop inside a `text-box` or `columns` child is caught however deeply\n * it is nested; and\n * - the `header` / `footer` paragraph regions under `props` — typed only\n * loosely on the section schema (an array of `Type.Any()`, or the\n * `'linkToPrevious'` literal, which is skipped), so their entries are not\n * deep-checked by the parent's per-component validation.\n *\n * The node's own props are NOT validated here — the caller validates the root\n * props, and every entry is validated as it is visited. `table` and `list`\n * nest their components inside their own recursive props schemas, so those are\n * already covered by `validateComponentProps` and are intentionally not\n * re-walked here.\n */\nfunction walkComponentTree(\n node: any,\n path: string,\n opts: DeepValidateOptions,\n errors: ValidationError[]\n): void {\n if (!node || typeof node !== 'object') return;\n\n // `strictStructure` controls whether a malformed entry (not an object, or\n // missing `name`) is reported here. It is ON for positions the per-component\n // schema leaves unchecked — the `children` array (a sibling field, never seen\n // by props validation) and the `header`/`footer` regions (typed `Type.Any()`\n // on the static section schema) — so the walk is their only structural\n // checker and must match the whole-tree schema the editor runs. It is OFF for\n // `table` cell content, whose structure the table's own props schema already\n // validates; there the walk only adds the prop-constraint errors the loose\n // cell-content ref misses, so reporting structure too would double-report.\n const validateEntry = (\n child: any,\n childPath: string,\n strictStructure: boolean\n ): void => {\n if (!child || typeof child !== 'object') {\n if (strictStructure) {\n errors.push({\n path: childPath,\n message: 'Component must be an object',\n code: 'invalid_type',\n });\n }\n return;\n }\n if (typeof child.name !== 'string' || child.name.length === 0) {\n if (strictStructure) {\n errors.push({\n path: `${childPath}/name`,\n message: 'Component missing required field \"name\"',\n code: 'required_property',\n });\n }\n return;\n }\n\n // Registered plugin components are validated version-aware by the plugin\n // layer; skip their props and subtree so they are neither double-validated\n // nor misreported as unknown.\n if (opts.knownCustomNames?.has(child.name)) return;\n\n // Validate props against the component's schema. When props is omitted,\n // validate an empty object so the schema decides whether props are\n // required (e.g. `section` needs none; `heading` requires text+level).\n if (child.props != null) {\n errors.push(\n ...validateComponentProps(\n child.name,\n child.props,\n `${childPath}/props`,\n opts\n )\n );\n } else if (child.name !== 'custom') {\n errors.push(\n ...validateComponentProps(child.name, {}, `${childPath}/props`, opts)\n );\n }\n\n // Recurse so arbitrarily nested containers are covered.\n walkComponentTree(child, childPath, opts, errors);\n };\n\n // header/footer entries are validated strictly: the static section schema\n // types them as `Type.Any()`, so the editor's whole-tree schema (where they\n // resolve to the component union) is stricter than the per-component check —\n // the walk closes that gap, flagging non-component entries too. A bare\n // `'linkToPrevious'` value is not an array, so it is skipped here.\n for (const region of ['header', 'footer'] as const) {\n const entries = node.props?.[region];\n if (Array.isArray(entries)) {\n entries.forEach((child: any, i: number) =>\n validateEntry(child, `${path}/props/${region}/${i}`, true)\n );\n }\n }\n\n // `table` nests its cell content under `props` (not the shared `children`\n // field), and the static table schema types that content loosely — the\n // cell-content ref accepts any props object, just like the `Type.Any()`\n // header/footer above. So a bad prop deep in a cell (e.g. `font.size` over the\n // cap) slips past the per-component table check; walk each content component\n // so its props are validated against the real schema. Structural problems\n // with a cell are already reported by the table's own props validation, hence\n // the lenient (`false`) entry check to avoid double-reporting.\n if (node.name === 'table' && Array.isArray(node.props?.columns)) {\n node.props.columns.forEach((col: any, c: number) => {\n if (!col || typeof col !== 'object') return;\n const base = `${path}/props/columns/${c}`;\n const headerContent = col.header?.content;\n if (headerContent && typeof headerContent === 'object') {\n validateEntry(headerContent, `${base}/header/content`, false);\n }\n if (Array.isArray(col.cells)) {\n col.cells.forEach((cell: any, r: number) => {\n const content = cell?.content;\n if (content && typeof content === 'object') {\n validateEntry(content, `${base}/cells/${r}/content`, false);\n }\n });\n }\n });\n }\n\n if (Array.isArray(node.children)) {\n node.children.forEach((child: any, i: number) =>\n validateEntry(child, `${path}/children/${i}`, true)\n );\n } else if (node.children != null && path !== '') {\n // `children` is present but not an array on a nested container. The root's\n // `children` is already checked by deepValidateDocument (skipped here via\n // `path !== ''` so it is not reported twice); this branch covers every\n // deeper container (`section`/`columns`/`text-box`) the old one-level walk\n // never reached. Without it a malformed subtree slips through as valid:\n // TypeBox reports only a generic catch-all (which we strip), so an empty\n // error set would otherwise flip the document back to `valid`.\n errors.push({\n path: `${path}/children`,\n message: 'Field \"children\" must be an array',\n code: 'invalid_type',\n });\n }\n}\n\n/**\n * Validate a component's props against its schema\n */\nfunction validateComponentProps(\n componentName: string,\n props: any,\n basePath: string,\n opts: DeepValidateOptions = {}\n): ValidationError[] {\n const errors: ValidationError[] = [];\n\n // Get the schema for this component\n const schema = COMPONENT_SCHEMAS[componentName];\n if (!schema) {\n // Unknown component type. `basePath` always ends in `/props`; anchor the\n // swap to the end so a nested region path like `…/props/header/0/props`\n // becomes `…/props/header/0/name` rather than mangling an earlier `/props`.\n errors.push({\n path: basePath.replace(/\\/props$/, '/name'),\n message: `Unknown component \"${componentName}\"`,\n code: 'unknown_component',\n });\n return errors;\n }\n\n // When unknown fields are explicitly allowed, strip them before checking so\n // additionalProperties:false no longer rejects — required/typed fields are\n // still enforced.\n const toCheck = opts.allowUnknownFields\n ? Value.Clean(schema, Value.Clone(props))\n : props;\n\n // Use TypeBox to validate against the specific schema\n if (!Value.Check(schema, toCheck)) {\n const valueErrors = [...Value.Errors(schema, toCheck)];\n const transformedErrors = transformValueErrors(valueErrors, {\n maxErrors: 100,\n });\n\n // Adjust paths to be relative to the document root\n transformedErrors.forEach((error) => {\n // Combine base path with error path\n const fullPath =\n error.path === 'root'\n ? basePath\n : `${basePath}${error.path.startsWith('/') ? error.path : '/' + error.path}`;\n\n errors.push({\n ...error,\n path: fullPath,\n });\n });\n }\n\n return errors;\n}\n\n/**\n * Combine deep validation with standard validation.\n *\n * Deep validation produces precise, path-aware errors. TypeBox's discriminated-\n * union check, by contrast, often collapses any failure under the root document\n * into a single generic \"Invalid component configuration for 'docx'\" message at\n * `root` — useful as a signal that something is wrong, but actionable only via\n * the deep-validator's output. We always strip that catch-all so it doesn't\n * appear alongside (or, worse, instead of) the real diagnostics.\n */\nexport function comprehensiveValidateDocument(\n data: any,\n existingErrors: ValidationError[] = [],\n opts: DeepValidateOptions = {}\n): ValidationError[] {\n const deepErrors = deepValidateDocument(data, opts);\n\n const filteredExisting = existingErrors.filter(\n (e) => !isGenericUnionCatchAll(e)\n );\n\n return deduplicateErrors([...filteredExisting, ...deepErrors]);\n}\n\n/**\n * Detect TypeBox's generic union/discriminator catch-all error at the document\n * root. These messages name the component type ('docx') but give no actionable\n * detail — the deep validator emits the actual path-level errors instead.\n */\nfunction isGenericUnionCatchAll(error: ValidationError): boolean {\n const atRoot = !error.path || error.path === 'root' || error.path === '/';\n if (!atRoot) return false;\n const msg = error.message || '';\n return (\n /invalid component configurations?/i.test(msg) ||\n /invalid document structure/i.test(msg)\n );\n}\n\n/**\n * Deduplicate errors by path and message\n */\nfunction deduplicateErrors(errors: ValidationError[]): ValidationError[] {\n const seen = new Set<string>();\n const unique: ValidationError[] = [];\n\n for (const error of errors) {\n const key = `${error.path}:${error.message}`;\n if (!seen.has(key)) {\n seen.add(key);\n unique.push(error);\n }\n }\n\n return unique;\n}\n","/**\n * Base validator implementation\n * Core validation logic that eliminates duplication across the codebase\n */\n\nimport { Value } from '@sinclair/typebox/value';\nimport type { Static, TSchema } from '@sinclair/typebox';\nimport type {\n ValidationResult,\n ValidationOptions,\n JsonValidationResult,\n} from './types';\nimport {\n transformValueErrors,\n createJsonParseError,\n formatErrorSummary,\n} from '@json-to-office/shared';\n\n/**\n * Base validation function that all specific validators use\n * This eliminates the repeated Value.Check -> Value.Errors -> map pattern\n */\nexport function validateAgainstSchema<T extends TSchema>(\n schema: T,\n data: unknown,\n options?: ValidationOptions\n): ValidationResult<Static<T>> {\n try {\n // Check if data matches the schema\n if (!Value.Check(schema, data)) {\n // Collect ALL errors (not just the first one)\n const errors = [...Value.Errors(schema, data)];\n const transformedErrors = transformValueErrors(errors, {\n jsonString: options?.jsonString,\n maxErrors: options?.maxErrors || 100, // Default to 100 if not specified\n });\n\n return {\n valid: false,\n errors: transformedErrors,\n };\n }\n\n // Data is valid, apply transformations if requested\n let processedData = data;\n\n if (options?.clean) {\n // Remove unknown properties\n processedData = Value.Clean(schema, Value.Clone(processedData));\n }\n\n if (options?.applyDefaults) {\n // Apply default values\n processedData = Value.Default(schema, processedData);\n }\n\n return {\n valid: true,\n data: processedData as Static<T>,\n };\n } catch (error) {\n // Handle unexpected errors\n return {\n valid: false,\n errors: [\n {\n path: 'root',\n message:\n error instanceof Error ? error.message : 'Unknown validation error',\n code: 'validation_exception',\n },\n ],\n };\n }\n}\n\n/**\n * Validate JSON string or object with schema\n */\nexport function validateJson<T extends TSchema>(\n schema: T,\n jsonInput: string | object,\n options?: ValidationOptions\n): JsonValidationResult<Static<T>> {\n // Handle string input\n if (typeof jsonInput === 'string') {\n // Basic input validation\n if (!jsonInput.trim()) {\n return {\n valid: false,\n errors: [\n {\n path: 'root',\n message: 'Input must be a non-empty string',\n code: 'empty_input',\n },\n ],\n isJsonError: true,\n };\n }\n\n // Try to parse JSON\n let parsed: unknown;\n try {\n parsed = JSON.parse(jsonInput);\n } catch (error) {\n if (error instanceof Error) {\n return {\n valid: false,\n errors: [createJsonParseError(error, jsonInput)],\n isJsonError: true,\n };\n }\n return {\n valid: false,\n errors: [\n {\n path: 'root',\n message: 'Failed to parse JSON',\n code: 'json_parse_error',\n },\n ],\n isJsonError: true,\n };\n }\n\n // Validate parsed object with position calculation\n const result = validateAgainstSchema(schema, parsed, {\n ...options,\n jsonString: jsonInput,\n calculatePosition: true,\n });\n\n return {\n ...result,\n parsed,\n isJsonError: false,\n };\n }\n\n // Handle object input directly\n const result = validateAgainstSchema(schema, jsonInput, options);\n return {\n ...result,\n parsed: jsonInput,\n isJsonError: false,\n };\n}\n\n/**\n * Batch validate multiple items\n */\nexport function validateBatch<T extends TSchema>(\n schema: T,\n items: unknown[],\n options?: ValidationOptions\n): ValidationResult<Static<T>[]> {\n const results: Static<T>[] = [];\n const allErrors: any[] = [];\n let hasErrors = false;\n\n for (let i = 0; i < items.length; i++) {\n const result = validateAgainstSchema(schema, items[i], options);\n\n if (result.valid && result.data) {\n results.push(result.data);\n } else {\n hasErrors = true;\n if (result.errors) {\n // Prefix errors with item index\n const prefixedErrors = result.errors.map((e) => ({\n ...e,\n path: `[${i}]${e.path ? '/' + e.path : ''}`,\n }));\n allErrors.push(...prefixedErrors);\n }\n }\n\n // Stop if we've hit the max errors\n if (options?.maxErrors && allErrors.length >= options.maxErrors) {\n break;\n }\n }\n\n if (hasErrors) {\n return {\n valid: false,\n errors: allErrors.slice(0, options?.maxErrors),\n };\n }\n\n return {\n valid: true,\n data: results,\n };\n}\n\n/**\n * Validate with custom error enhancement\n */\nexport function validateWithEnhancement<T extends TSchema>(\n schema: T,\n data: unknown,\n enhancer: (errors: any[]) => any[],\n options?: ValidationOptions\n): ValidationResult<Static<T>> {\n const result = validateAgainstSchema(schema, data, options);\n\n if (!result.valid && result.errors) {\n result.errors = enhancer(result.errors);\n }\n\n return result;\n}\n\n/**\n * Create a validator function for a specific schema\n */\nexport function createValidator<T extends TSchema>(\n schema: T,\n defaultOptions?: ValidationOptions\n) {\n return (data: unknown, options?: ValidationOptions) => {\n return validateAgainstSchema(schema, data, {\n ...defaultOptions,\n ...options,\n });\n };\n}\n\n/**\n * Create a JSON validator function for a specific schema\n */\nexport function createJsonValidator<T extends TSchema>(\n schema: T,\n defaultOptions?: ValidationOptions\n) {\n return (jsonInput: string | object, options?: ValidationOptions) => {\n return validateJson(schema, jsonInput, {\n ...defaultOptions,\n ...options,\n });\n };\n}\n\n/**\n * Utility to check if validation result is successful with type guard\n */\nexport function isValidationSuccess<T>(\n result: ValidationResult<T>\n): result is ValidationResult<T> & { valid: true; data: T } {\n return result.valid === true && result.data !== undefined;\n}\n\n/**\n * Get validation error summary\n */\nexport function getValidationSummary(result: ValidationResult): string {\n if (result.valid) {\n return 'Validation successful';\n }\n\n if (!result.errors || result.errors.length === 0) {\n return 'Validation failed with unknown error';\n }\n\n return formatErrorSummary(result.errors);\n}\n","/**\n * Document validation implementation\n * Single source of truth for all document validation\n */\n\nimport type { Static } from '@sinclair/typebox';\nimport {\n ComponentDefinitionSchema,\n StandardComponentDefinitionSchema,\n} from '../../schemas/components';\nimport { extractStandardComponentNames } from '@json-to-office/shared';\nimport {\n comprehensiveValidateDocument,\n collectImageSourceConflicts,\n collectIndentConflicts,\n} from './deep-validator';\n\n// JsonComponentDefinitionSchema is just an alias for ComponentDefinitionSchema\nconst JsonComponentDefinitionSchema = ComponentDefinitionSchema;\nimport type { DocumentValidationResult, ValidationOptions } from './types';\nimport { validateAgainstSchema, validateJson } from './base-validator';\n\n/**\n * Validate a document/report component definition\n */\nexport function validateDocument(\n data: unknown,\n options?: ValidationOptions\n): DocumentValidationResult {\n const result = validateAgainstSchema(\n ComponentDefinitionSchema,\n data,\n options\n );\n\n // If validation failed, use deep validation to get all detailed errors\n let finalErrors = result.errors || [];\n let finalValid = result.valid;\n if (!result.valid && data) {\n finalErrors = comprehensiveValidateDocument(data, result.errors, {\n allowUnknownFields: options?.allowUnknownFields,\n knownCustomNames: options?.knownCustomNames,\n });\n // If TypeBox's union check produced only generic catch-all errors and the\n // deep validator finds nothing actionable, treat the document as valid.\n if (finalErrors.length === 0) {\n finalValid = true;\n }\n }\n\n // Image source mutual-exclusivity is a semantic rule the structural schema\n // cannot express, so it runs unconditionally — a multi-source image passes\n // the TypeBox check above.\n const sourceConflicts = collectImageSourceConflicts(data);\n if (sourceConflicts.length > 0) {\n finalErrors = [...finalErrors, ...sourceConflicts];\n finalValid = false;\n }\n\n // Same for indent hanging/firstLine mutual-exclusivity.\n const indentConflicts = collectIndentConflicts(data);\n if (indentConflicts.length > 0) {\n finalErrors = [...finalErrors, ...indentConflicts];\n finalValid = false;\n }\n\n // Add document-specific metadata. Keep `data` populated whenever `valid` is\n // true so `isValidDocument()` (which requires both) stays consistent — when\n // TypeBox failed and the deep validator cleared the doc, fall back to the\n // original input as the data payload.\n const resolvedData =\n result.data ??\n (finalValid\n ? (data as Static<typeof ComponentDefinitionSchema>)\n : undefined);\n const documentResult: DocumentValidationResult = {\n ...result,\n valid: finalValid,\n documentType: 'docx',\n errors: finalErrors,\n data: resolvedData,\n };\n\n // Check if document has custom components\n if (finalValid) {\n const doc = resolvedData as any;\n if (doc && doc.children && Array.isArray(doc.children)) {\n const hasCustom = doc.children.some(\n (c: any) => !isStandardComponentName(c.name)\n );\n documentResult.hasCustomComponents = hasCustom;\n }\n }\n\n return documentResult;\n}\n\n/**\n * Validate a JSON document (string or object)\n */\nexport function validateJsonDocument(\n jsonInput: string | object,\n options?: ValidationOptions\n): DocumentValidationResult {\n // Use the JSON-specific schema which includes the $schema field\n const result = validateJson(\n JsonComponentDefinitionSchema,\n jsonInput,\n options\n );\n\n // If validation failed, use deep validation to get all detailed errors\n let finalErrors = result.errors || [];\n let finalValid = result.valid;\n if (!result.valid && result.parsed) {\n finalErrors = comprehensiveValidateDocument(result.parsed, result.errors, {\n allowUnknownFields: options?.allowUnknownFields,\n knownCustomNames: options?.knownCustomNames,\n });\n if (finalErrors.length === 0) {\n finalValid = true;\n }\n }\n\n // Image source mutual-exclusivity (see validateDocument) — runs always.\n const sourceConflicts = collectImageSourceConflicts(result.parsed);\n if (sourceConflicts.length > 0) {\n finalErrors = [...finalErrors, ...sourceConflicts];\n finalValid = false;\n }\n\n // Indent hanging/firstLine mutual-exclusivity (see validateDocument).\n const indentConflicts = collectIndentConflicts(result.parsed);\n if (indentConflicts.length > 0) {\n finalErrors = [...finalErrors, ...indentConflicts];\n finalValid = false;\n }\n\n // Add document-specific metadata. Keep `data` populated whenever `valid` is\n // true so `isValidDocument()` (which requires both) stays consistent — when\n // TypeBox failed and the deep validator cleared the doc, fall back to the\n // parsed input as the data payload.\n const resolvedData =\n result.data ??\n (finalValid\n ? (result.parsed as Static<typeof ComponentDefinitionSchema>)\n : undefined);\n const documentResult: DocumentValidationResult = {\n ...result,\n valid: finalValid,\n documentType: 'docx',\n errors: finalErrors,\n data: resolvedData,\n };\n\n // Check for custom components\n if (finalValid) {\n const doc = resolvedData as any;\n if (doc && doc.children && Array.isArray(doc.children)) {\n const hasCustom = doc.children.some(\n (c: any) => !isStandardComponentName(c.name)\n );\n documentResult.hasCustomComponents = hasCustom;\n }\n }\n\n return documentResult;\n}\n\n/**\n * Type guard for document validation result\n */\nexport function isValidDocument(\n result: DocumentValidationResult\n): result is DocumentValidationResult & {\n valid: true;\n data: Static<typeof ComponentDefinitionSchema>;\n} {\n return result.valid === true && result.data !== undefined;\n}\n\n/**\n * Extract standard component names from the schema (cached)\n */\nfunction getStandardComponentNames(): string[] {\n return extractStandardComponentNames(StandardComponentDefinitionSchema);\n}\n\n/**\n * Check if a component name is standard\n */\nfunction isStandardComponentName(name: string): boolean {\n const standardNames = getStandardComponentNames();\n return standardNames.includes(name);\n}\n\n/**\n * Create a document validator with default options\n */\nexport function createDocumentValidator(defaultOptions?: ValidationOptions) {\n return {\n validate: (data: unknown, options?: ValidationOptions) =>\n validateDocument(data, { ...defaultOptions, ...options }),\n validateJson: (jsonInput: string | object, options?: ValidationOptions) =>\n validateJsonDocument(jsonInput, { ...defaultOptions, ...options }),\n };\n}\n\n// Export convenient validators with common configurations\nexport const documentValidator = createDocumentValidator({\n clean: true,\n applyDefaults: true,\n maxErrors: 100, // Collect up to 100 errors to show all validation issues\n});\n\nexport const strictDocumentValidator = createDocumentValidator({\n clean: false,\n applyDefaults: false,\n maxErrors: 100, // Increased from 10 to show more errors\n});\n\n/**\n * Legacy compatibility exports\n */\nexport const validateJsonComponent = validateJsonDocument;\nexport const validateDocumentWithSchema = validateDocument;\n"],"mappings":"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","names":["Value","transformValueErrors","result"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schemas/theme.ts"],"sourcesContent":["/**\n * Theme Schema Definitions using TypeBox\n * This file provides TypeBox schemas for theme configuration validation\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n FontDefinitionSchema,\n TextFormattingPropertiesSchema,\n HexColorSchema,\n} from './font';\nimport { IndentSchema } from './components/common';\n\n// ============================================================================\n// Document Margins Schema\n// ============================================================================\n\nexport const DocumentMarginsSchema = Type.Object(\n {\n top: Type.Number({ minimum: 0 }),\n bottom: Type.Number({ minimum: 0 }),\n left: Type.Number({ minimum: 0 }),\n right: Type.Number({ minimum: 0 }),\n header: Type.Number({ minimum: 0 }),\n footer: Type.Number({ minimum: 0 }),\n gutter: Type.Number({ minimum: 0 }),\n },\n { additionalProperties: false, description: 'Document margin configuration' }\n);\n\n// ============================================================================\n// Page Dimensions Schema\n// ============================================================================\n\nexport const PageDimensionsSchema = Type.Object(\n {\n width: Type.Number({ minimum: 0 }),\n height: Type.Number({ minimum: 0 }),\n },\n { additionalProperties: false, description: 'Page dimensions in twips' }\n);\n\n// ============================================================================\n// Page Schema (replaces PageSetupSchema)\n// ============================================================================\n\nexport const PageSchema = Type.Object(\n {\n size: Type.Union(\n [\n Type.Literal('A4'),\n Type.Literal('A3'),\n Type.Literal('LETTER'),\n Type.Literal('LEGAL'),\n Type.Object(\n {\n width: Type.Number({ minimum: 0 }),\n height: Type.Number({ minimum: 0 }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Standard page size or custom dimensions' }\n ),\n margins: DocumentMarginsSchema,\n },\n {\n description: 'Page configuration including dimensions and margins',\n additionalProperties: false,\n }\n);\n\n// ============================================================================\n// Text formatting and font schemas now imported from './font' to avoid cycles\n\n// ============================================================================\n// Fonts Schema\n// ============================================================================\n\nexport const FontsSchema = Type.Object(\n {\n heading: FontDefinitionSchema,\n body: FontDefinitionSchema,\n mono: FontDefinitionSchema,\n light: FontDefinitionSchema,\n },\n {\n additionalProperties: false,\n description: 'Font definitions for different text types',\n }\n);\n\n// ============================================================================\n// Style Definitions Schema\n// ============================================================================\n\n// Paragraph border style support (matches docx BorderStyle)\nconst BorderStyleSchema = Type.Union(\n [\n Type.Literal('single'),\n Type.Literal('dashDotStroked'),\n Type.Literal('dashed'),\n Type.Literal('dashSmallGap'),\n Type.Literal('dotDash'),\n Type.Literal('dotDotDash'),\n Type.Literal('dotted'),\n Type.Literal('double'),\n Type.Literal('doubleWave'),\n Type.Literal('inset'),\n Type.Literal('nil'),\n Type.Literal('none'),\n Type.Literal('outset'),\n Type.Literal('thick'),\n Type.Literal('thickThinLargeGap'),\n Type.Literal('thickThinMediumGap'),\n Type.Literal('thickThinSmallGap'),\n Type.Literal('thinThickLargeGap'),\n Type.Literal('thinThickMediumGap'),\n Type.Literal('thinThickSmallGap'),\n Type.Literal('thinThickThinLargeGap'),\n Type.Literal('thinThickThinMediumGap'),\n Type.Literal('thinThickThinSmallGap'),\n Type.Literal('threeDEmboss'),\n Type.Literal('threeDEngrave'),\n Type.Literal('triple'),\n Type.Literal('wave'),\n ],\n { description: 'Paragraph border style' }\n);\n\nconst BorderDefinitionSchema = Type.Object(\n {\n style: BorderStyleSchema,\n size: Type.Number({\n minimum: 0,\n description: 'Width in eighths of a point (docx sz)',\n }),\n color: HexColorSchema,\n space: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Space between text and border in points',\n })\n ),\n },\n {\n additionalProperties: false,\n description: 'Paragraph border side definition',\n }\n);\n\nconst BordersSchema = Type.Object(\n {\n top: Type.Optional(BorderDefinitionSchema),\n bottom: Type.Optional(BorderDefinitionSchema),\n left: Type.Optional(BorderDefinitionSchema),\n right: Type.Optional(BorderDefinitionSchema),\n },\n { additionalProperties: false, description: 'Paragraph borders (per side)' }\n);\n\n// Alignment schema for paragraph-level alignment (used in styles)\nconst AlignmentSchema = Type.Optional(\n Type.Union([\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('justify'),\n ])\n);\n\n/**\n * Style properties schema that extends text formatting properties\n * with additional style-specific properties (priority, baseStyle, etc.)\n */\nconst StylePropertiesSchema = Type.Object(\n {\n font: Type.Optional(\n Type.Union([\n Type.Literal('heading'),\n Type.Literal('body'),\n Type.Literal('mono'),\n Type.Literal('light'),\n ])\n ),\n ...TextFormattingPropertiesSchema.properties,\n // Paragraph-level alignment (not a font property)\n alignment: AlignmentSchema,\n // Additional properties specific to styles\n priority: Type.Optional(Type.Number()),\n baseStyle: Type.Optional(Type.String()),\n followingStyle: Type.Optional(Type.String()),\n widowControl: Type.Optional(Type.Boolean()),\n keepNext: Type.Optional(Type.Boolean()),\n keepLinesTogether: Type.Optional(Type.Boolean()),\n outlineLevel: Type.Optional(Type.Number()),\n borders: Type.Optional(BordersSchema),\n indent: Type.Optional(IndentSchema),\n },\n { additionalProperties: false }\n);\n\n// ============================================================================\n// Tab Stop Schema\n// ============================================================================\n\n/**\n * Tab stop leader types matching docx.js LeaderType\n */\nconst TabStopLeaderSchema = Type.Union(\n [\n Type.Literal('dot'),\n Type.Literal('hyphen'),\n Type.Literal('middleDot'),\n Type.Literal('none'),\n Type.Literal('underscore'),\n ],\n {\n description:\n 'Tab leader style: dot (dotted), hyphen (dashed), middleDot, none (blank), or underscore',\n }\n);\n\n/**\n * Tab stop type matching docx.js TabStopType\n */\nconst TabStopTypeSchema = Type.Union(\n [\n Type.Literal('left'),\n Type.Literal('right'),\n Type.Literal('center'),\n Type.Literal('bar'),\n Type.Literal('clear'),\n Type.Literal('decimal'),\n Type.Literal('end'),\n Type.Literal('num'),\n Type.Literal('start'),\n ],\n {\n description: 'Tab stop alignment type',\n }\n);\n\n/**\n * Tab stop definition schema\n */\nconst TabStopDefinitionSchema = Type.Object(\n {\n type: TabStopTypeSchema,\n position: Type.Union([\n Type.Number({\n description:\n 'Tab stop position in twips (1/1440 inch). Common: 9026 for right-aligned at page margin',\n }),\n Type.Literal('max', {\n description: 'Use maximum position (TabStopPosition.MAX = 9026 twips)',\n }),\n ]),\n leader: Type.Optional(TabStopLeaderSchema),\n },\n {\n description:\n 'Tab stop configuration with position, alignment, and optional leader',\n additionalProperties: false,\n }\n);\n\n/**\n * TOC style properties schema that extends text formatting properties\n * but EXCLUDES baseStyle to prevent unwanted coupling with Heading styles\n */\nconst TocStylePropertiesSchema = Type.Object(\n {\n font: Type.Optional(\n Type.Union([\n Type.Literal('heading'),\n Type.Literal('body'),\n Type.Literal('mono'),\n Type.Literal('light'),\n ])\n ),\n ...TextFormattingPropertiesSchema.properties,\n // Paragraph-level alignment (not a font property)\n alignment: AlignmentSchema,\n // Tab stops for controlling TOC entry formatting (leader dots, alignment, etc.)\n tabStops: Type.Optional(\n Type.Array(TabStopDefinitionSchema, {\n description:\n 'Tab stops for TOC entries. Use right-aligned tab with leader to create dotted lines to page numbers.',\n default: [{ type: 'right', position: 'max', leader: 'none' }],\n })\n ),\n // Additional properties specific to styles (baseStyle intentionally excluded)\n priority: Type.Optional(Type.Number()),\n followingStyle: Type.Optional(Type.String()),\n widowControl: Type.Optional(Type.Boolean()),\n keepNext: Type.Optional(Type.Boolean()),\n keepLinesTogether: Type.Optional(Type.Boolean()),\n outlineLevel: Type.Optional(Type.Number()),\n borders: Type.Optional(BordersSchema),\n indent: Type.Optional(IndentSchema),\n },\n { additionalProperties: false }\n);\n\nexport const StyleDefinitionsSchema = Type.Object(\n {\n normal: Type.Optional(StylePropertiesSchema),\n heading1: Type.Optional(StylePropertiesSchema),\n heading2: Type.Optional(StylePropertiesSchema),\n heading3: Type.Optional(StylePropertiesSchema),\n heading4: Type.Optional(StylePropertiesSchema),\n heading5: Type.Optional(StylePropertiesSchema),\n heading6: Type.Optional(StylePropertiesSchema),\n title: Type.Optional(StylePropertiesSchema),\n subtitle: Type.Optional(StylePropertiesSchema),\n // TOC entry styles (used by Word to format TOC entries)\n // Note: TOC styles use TocStylePropertiesSchema which excludes baseStyle to prevent coupling with Headings\n TOC1: Type.Optional(TocStylePropertiesSchema),\n TOC2: Type.Optional(TocStylePropertiesSchema),\n TOC3: Type.Optional(TocStylePropertiesSchema),\n TOC4: Type.Optional(TocStylePropertiesSchema),\n TOC5: Type.Optional(TocStylePropertiesSchema),\n TOC6: Type.Optional(TocStylePropertiesSchema),\n },\n {\n additionalProperties: StylePropertiesSchema,\n description:\n 'Style definitions supporting predefined styles (normal, heading1..6, title, subtitle), TOC entry styles (TOC1..TOC6), and arbitrary custom styles.',\n }\n);\n\n// ============================================================================\n// Heading Definition Schema\n// ============================================================================\n\n/**\n * Heading definition schema that uses the same properties as StylePropertiesSchema\n * but adds a required 'level' field.\n */\nexport const HeadingDefinitionSchema = Type.Object(\n {\n level: Type.Union([\n Type.Literal(1),\n Type.Literal(2),\n Type.Literal(3),\n Type.Literal(4),\n Type.Literal(5),\n Type.Literal(6),\n ]),\n ...StylePropertiesSchema.properties,\n },\n { additionalProperties: false }\n);\n\n// ============================================================================\n// Component Defaults Schemas (imported from component-defaults.ts to avoid\n// circular deps: report.ts needs ComponentDefaultsSchema, but the old location\n// here imported from the components barrel which re-exports report.ts)\n// ============================================================================\n\nimport { ComponentDefaultsSchema } from './component-defaults';\n\nexport {\n HeadingComponentDefaultsSchema,\n ParagraphComponentDefaultsSchema,\n ImageComponentDefaultsSchema,\n StatisticComponentDefaultsSchema,\n TableComponentDefaultsSchema,\n SectionComponentDefaultsSchema,\n ColumnsComponentDefaultsSchema,\n ListComponentDefaultsSchema,\n ComponentDefaultsSchema,\n} from './component-defaults';\n\n// ============================================================================\n// Theme Config Schema\n// ============================================================================\n\nexport const ThemeColorsSchema = Type.Object(\n {\n primary: HexColorSchema,\n secondary: HexColorSchema,\n accent: HexColorSchema,\n text: HexColorSchema,\n background: HexColorSchema,\n border: HexColorSchema,\n // Additional semantic color names\n textPrimary: HexColorSchema,\n textSecondary: HexColorSchema,\n textMuted: HexColorSchema,\n borderPrimary: HexColorSchema,\n borderSecondary: HexColorSchema,\n backgroundPrimary: HexColorSchema,\n backgroundSecondary: HexColorSchema,\n // Extra chart-series slots, named to match the PPTX theme so both\n // formats share one palette vocabulary. Optional: the bundled DOCX\n // themes leave them unset and charts skip the empty slots.\n accent4: Type.Optional(HexColorSchema),\n accent5: Type.Optional(HexColorSchema),\n accent6: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false }\n);\n\nexport const ThemeOverridesSchema = Type.Object(\n {\n colors: Type.Optional(Type.Partial(ThemeColorsSchema)),\n fonts: Type.Optional(Type.Partial(FontsSchema)),\n styles: Type.Optional(StyleDefinitionsSchema),\n },\n {\n additionalProperties: false,\n description:\n 'Partial theme deep-merged over the resolved named theme: define or override palette tokens, font roles, and named styles in-document.',\n }\n);\n\nexport const ThemeConfigSchema = Type.Object(\n {\n $schema: Type.Optional(Type.String()),\n name: Type.String(),\n displayName: Type.String(),\n description: Type.String(),\n version: Type.String(),\n colors: Type.Object(\n {\n primary: HexColorSchema,\n secondary: HexColorSchema,\n accent: HexColorSchema,\n text: HexColorSchema,\n background: HexColorSchema,\n border: HexColorSchema,\n // Additional semantic color names\n textPrimary: HexColorSchema,\n textSecondary: HexColorSchema,\n textMuted: HexColorSchema,\n borderPrimary: HexColorSchema,\n borderSecondary: HexColorSchema,\n backgroundPrimary: HexColorSchema,\n backgroundSecondary: HexColorSchema,\n // Extra chart-series slots, named to match the PPTX theme so both\n // formats share one palette vocabulary. Optional: the bundled DOCX\n // themes leave them unset and charts skip the empty slots.\n accent4: Type.Optional(HexColorSchema),\n accent5: Type.Optional(HexColorSchema),\n accent6: Type.Optional(HexColorSchema),\n },\n { additionalProperties: false }\n ),\n fonts: FontsSchema,\n page: PageSchema,\n styles: Type.Optional(StyleDefinitionsSchema),\n componentDefaults: Type.Optional(ComponentDefaultsSchema),\n // House-style \"known words\" allowlist (whole-word, case-insensitive) that\n // should never be flagged as misspelled. The document's `noProofWords` is\n // merged on top of this at render time.\n noProofWords: Type.Optional(\n Type.Array(Type.String({ minLength: 1 }), {\n description:\n 'Words that should never be flagged as misspelled (whole-word, case-insensitive).',\n })\n ),\n },\n {\n additionalProperties: false,\n description: 'Theme configuration',\n }\n);\n\n// ============================================================================\n// TypeScript Types\n// ============================================================================\n\nexport type ThemeConfigJson = Static<typeof ThemeConfigSchema>;\nexport type DocumentMargins = Static<typeof DocumentMarginsSchema>;\nexport type PageDimensions = Static<typeof PageDimensionsSchema>;\nexport type Page = Static<typeof PageSchema>;\nexport type FontDefinition = Static<typeof FontDefinitionSchema>;\nexport type Fonts = Static<typeof FontsSchema>;\nexport type StyleDefinitions = Static<typeof StyleDefinitionsSchema>;\nexport type HeadingDefinition = Static<typeof HeadingDefinitionSchema>;\nexport type {\n HeadingComponentDefaults,\n ParagraphComponentDefaults,\n ImageComponentDefaults,\n StatisticComponentDefaults,\n TableComponentDefaults,\n SectionComponentDefaults,\n ColumnsComponentDefaults,\n ListComponentDefaults,\n ComponentDefaults,\n} from './component-defaults';\n\n// ============================================================================\n// Validation Function\n// ============================================================================\n\nimport { Value } from '@sinclair/typebox/value';\n\nexport function isValidThemeConfig(data: unknown): data is ThemeConfigJson {\n return Value.Check(ThemeConfigSchema, data);\n}\n\n// ============================================================================\n// Minimal Theme Scaffold\n// ============================================================================\n\n/**\n * Build a schema-complete theme to start from.\n *\n * Lives next to `ThemeConfigSchema` on purpose: the return type is the schema's\n * `Static` type, so a required property added to the schema breaks the build\n * here instead of shipping a scaffold that only fails at validation time.\n * Colour patterns are runtime-only, so `theme-scaffold.test.ts` validates the\n * result against the schema as well.\n *\n * Browser-safe (no Node built-ins), so the playground can scaffold new themes\n * from the same source as the CLI.\n *\n * @param name - Theme identifier; defaults to `minimal-theme`\n */\nexport function createMinimalTheme(\n name: string = 'minimal-theme'\n): ThemeConfigJson {\n return {\n name,\n displayName:\n name\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ') || name,\n description: 'A minimal theme with basic styling',\n version: '1.0.0',\n colors: {\n primary: '#2563EB',\n secondary: '#64748B',\n accent: '#F8FAFC',\n text: '#334155',\n background: '#FFFFFF',\n border: '#E2E8F0',\n textPrimary: '#334155',\n textSecondary: '#64748B',\n textMuted: '#94A3B8',\n borderPrimary: '#CBD5E1',\n borderSecondary: '#E2E8F0',\n backgroundPrimary: '#FFFFFF',\n backgroundSecondary: '#F8FAFC',\n },\n fonts: {\n heading: { family: 'Arial', size: 14 },\n body: { family: 'Arial', size: 11 },\n mono: { family: 'Courier New', size: 10 },\n light: { family: 'Arial', size: 10 },\n },\n page: {\n size: 'A4',\n margins: {\n top: 1440,\n bottom: 1440,\n left: 1440,\n right: 1440,\n header: 720,\n footer: 720,\n gutter: 0,\n },\n },\n styles: {\n normal: {\n font: 'body',\n size: 11,\n color: '#334155',\n alignment: 'left',\n lineSpacing: { type: 'multiple', value: 1.15 },\n spacing: { after: 8 },\n },\n },\n };\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schemas/component-defaults.ts","../src/schemas/components/heading.ts","../src/schemas/components/common.ts","../src/schemas/components/revision.ts","../src/schemas/components/paragraph.ts","../src/schemas/components/image.ts","../src/schemas/components/statistic.ts","../src/schemas/components/table.ts","../src/schemas/components/section.ts","../src/schemas/components/columns.ts","../src/schemas/components/list.ts"],"sourcesContent":["/**\n * Component Defaults Schemas\n *\n * Extracted to its own file to avoid circular imports:\n * report.ts needs ComponentDefaultsSchema, but theme.ts (where it was)\n * imports from components.ts barrel which re-exports report.ts.\n *\n * This file imports directly from individual component files.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { HeadingPropsSchema } from './components/heading';\nimport { ParagraphPropsSchema } from './components/paragraph';\nimport { ImagePropsSchema } from './components/image';\nimport { StatisticPropsSchema } from './components/statistic';\nimport { TablePropsSchema } from './components/table';\nimport { SectionPropsSchema } from './components/section';\nimport { ColumnsPropsSchema } from './components/columns';\nimport { ListPropsSchema } from './components/list';\n\n// Create component defaults by making all fields optional (Type.Partial).\n// `revision` (tracked-change segments) is per-instance data and must never\n// be a shared default — it would silently replace every component's text.\nexport const HeadingComponentDefaultsSchema = Type.Partial(\n Type.Omit(HeadingPropsSchema, ['revision'])\n);\nexport const ParagraphComponentDefaultsSchema = Type.Partial(\n Type.Omit(ParagraphPropsSchema, ['revision'])\n);\nexport const ImageComponentDefaultsSchema = Type.Partial(ImagePropsSchema);\nexport const StatisticComponentDefaultsSchema =\n Type.Partial(StatisticPropsSchema);\nexport const TableComponentDefaultsSchema = Type.Partial(TablePropsSchema);\nexport const SectionComponentDefaultsSchema = Type.Partial(SectionPropsSchema);\nexport const ColumnsComponentDefaultsSchema = Type.Partial(ColumnsPropsSchema);\nexport const ListComponentDefaultsSchema = Type.Partial(ListPropsSchema);\n\nexport const ComponentDefaultsSchema = Type.Object(\n {\n heading: Type.Optional(HeadingComponentDefaultsSchema),\n paragraph: Type.Optional(ParagraphComponentDefaultsSchema),\n image: Type.Optional(ImageComponentDefaultsSchema),\n statistic: Type.Optional(StatisticComponentDefaultsSchema),\n table: Type.Optional(TableComponentDefaultsSchema),\n section: Type.Optional(SectionComponentDefaultsSchema),\n columns: Type.Optional(ColumnsComponentDefaultsSchema),\n list: Type.Optional(ListComponentDefaultsSchema),\n },\n { additionalProperties: true } // TODO: add a way to add strict custom component defaults when the plugin/registry paradigm will be implemented\n);\n\n// TypeScript types\nexport type HeadingComponentDefaults = Static<\n typeof HeadingComponentDefaultsSchema\n>;\nexport type ParagraphComponentDefaults = Static<\n typeof ParagraphComponentDefaultsSchema\n>;\nexport type ImageComponentDefaults = Static<\n typeof ImageComponentDefaultsSchema\n>;\nexport type StatisticComponentDefaults = Static<\n typeof StatisticComponentDefaultsSchema\n>;\nexport type TableComponentDefaults = Static<\n typeof TableComponentDefaultsSchema\n>;\nexport type SectionComponentDefaults = Static<\n typeof SectionComponentDefaultsSchema\n>;\nexport type ColumnsComponentDefaults = Static<\n typeof ColumnsComponentDefaultsSchema\n>;\nexport type ListComponentDefaults = Static<typeof ListComponentDefaultsSchema>;\nexport type ComponentDefaults = Static<typeof ComponentDefaultsSchema>;\n","/**\n * Heading Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n FontDefinitionSchema,\n LanguageSchema,\n NoProofSchema,\n NoProofWordsSchema,\n} from '../font';\nimport {\n HeadingLevelSchema,\n JustifiedAlignmentSchema,\n SpacingSchema,\n LineSpacingSchema,\n ParagraphIndentSchema,\n} from './common';\nimport { RevisionSchema } from './revision';\n\nexport const HeadingPropsSchema = Type.Object(\n {\n text: Type.String({\n description: 'Heading text (required)',\n }),\n level: Type.Optional(HeadingLevelSchema),\n // Local font override: allows customizing family/size/color/bold/italic/underline\n // without modifying theme styles. Supports partial overrides.\n font: Type.Optional(Type.Partial(FontDefinitionSchema)),\n // Local language override (BCP-47). Falls back to the document default when omitted.\n language: Type.Optional(LanguageSchema),\n // Disable spell/grammar checking for this heading's text\n noProof: Type.Optional(NoProofSchema),\n // Known-words allowlist for this heading (merged with the document list)\n noProofWords: Type.Optional(NoProofWordsSchema),\n alignment: Type.Optional(JustifiedAlignmentSchema),\n spacing: Type.Optional(SpacingSchema),\n // Paragraph indentation (w:ind) in twips\n indent: Type.Optional(ParagraphIndentSchema),\n lineSpacing: Type.Optional(\n Type.Union([Type.Number({ minimum: 0 }), LineSpacingSchema])\n ),\n pageBreak: Type.Optional(\n Type.Boolean({\n description: 'Insert page break before heading',\n })\n ),\n columnBreak: Type.Optional(\n Type.Boolean({\n description: 'Insert column break before heading',\n })\n ),\n numbering: Type.Optional(\n Type.Boolean({\n description: 'Include in numbering',\n })\n ),\n keepNext: Type.Optional(\n Type.Boolean({\n description: 'Keep heading with next paragraph on same page',\n })\n ),\n keepLines: Type.Optional(\n Type.Boolean({\n description: 'Keep all lines of heading together on same page',\n })\n ),\n revision: Type.Optional(RevisionSchema),\n },\n {\n description: 'Heading component props',\n additionalProperties: false,\n }\n);\n\nexport type HeadingProps = Static<typeof HeadingPropsSchema>;\n","/**\n * Common Types and Schemas for Components\n *\n * Shared type definitions used across multiple component schemas.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { HexColorSchema } from '../font';\n\n// ============================================================================\n// Common Types\n// ============================================================================\n\nexport const AlignmentSchema = Type.Union(\n [Type.Literal('left'), Type.Literal('center'), Type.Literal('right')],\n { description: 'Text alignment options' }\n);\n\nexport const JustifiedAlignmentSchema = Type.Union(\n [\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('justify'),\n ],\n { description: 'Text alignment options including justify' }\n);\n\nexport const HeadingLevelSchema = Type.Union(\n [\n Type.Literal(1),\n Type.Literal(2),\n Type.Literal(3),\n Type.Literal(4),\n Type.Literal(5),\n Type.Literal(6),\n ],\n { description: 'Heading level (1-6)' }\n);\n\nexport const SpacingSchema = Type.Object(\n {\n before: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Spacing before element in points',\n })\n ),\n after: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Spacing after element in points',\n })\n ),\n },\n {\n description: 'Spacing configuration',\n additionalProperties: false,\n }\n);\n\nexport const ListSpacingSchema = Type.Object(\n {\n before: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Spacing before list in points',\n })\n ),\n after: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Spacing after list in points',\n })\n ),\n item: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Spacing between list items in points',\n })\n ),\n },\n {\n description: 'List spacing configuration with item spacing',\n additionalProperties: false,\n }\n);\n\nexport const MarginsSchema = Type.Object(\n {\n top: Type.Optional(Type.Number({ minimum: 0 })),\n bottom: Type.Optional(Type.Number({ minimum: 0 })),\n left: Type.Optional(Type.Number({ minimum: 0 })),\n right: Type.Optional(Type.Number({ minimum: 0 })),\n },\n { description: 'Margin configuration', additionalProperties: false }\n);\n\nexport const BorderSchema = Type.Object(\n {\n style: Type.Optional(\n Type.Union([\n Type.Literal('solid'),\n Type.Literal('dashed'),\n Type.Literal('dotted'),\n Type.Literal('double'),\n Type.Literal('none'),\n ])\n ),\n width: Type.Optional(Type.Number({ minimum: 0 })),\n color: Type.Optional(HexColorSchema),\n },\n { description: 'Border configuration', additionalProperties: false }\n);\n\nexport const LineSpacingSchema = Type.Object(\n {\n type: Type.Union([\n Type.Literal('single'),\n Type.Literal('atLeast'),\n Type.Literal('exactly'),\n Type.Literal('double'),\n Type.Literal('multiple'),\n ]),\n value: Type.Optional(Type.Number({ minimum: 0 })),\n },\n { description: 'Line spacing configuration', additionalProperties: false }\n);\n\nexport const IndentSchema = Type.Object(\n {\n left: Type.Optional(Type.Number({ minimum: 0 })),\n hanging: Type.Optional(Type.Number({ minimum: 0 })),\n },\n { description: 'Indentation configuration', additionalProperties: false }\n);\n\nexport const ParagraphIndentSchema = Type.Object(\n {\n left: Type.Optional(\n Type.Number({\n description: 'Left indentation in twips (1/20 of a point)',\n })\n ),\n right: Type.Optional(\n Type.Number({\n description: 'Right indentation in twips (1/20 of a point)',\n })\n ),\n hanging: Type.Optional(\n Type.Number({\n minimum: 0,\n description:\n 'Hanging indent in twips: first line stays at the left indent, following lines are indented. Mutually exclusive with firstLine.',\n })\n ),\n firstLine: Type.Optional(\n Type.Number({\n minimum: 0,\n description:\n 'First-line indent in twips: only the first line is indented. Mutually exclusive with hanging.',\n })\n ),\n },\n {\n description:\n 'Paragraph indentation (w:ind) in twips. Use either hanging or firstLine, not both.',\n additionalProperties: false,\n }\n);\n\nexport const TabStopTypeSchema = Type.Union(\n [\n Type.Literal('left'),\n Type.Literal('right'),\n Type.Literal('center'),\n Type.Literal('decimal'),\n Type.Literal('bar'),\n ],\n { description: 'Tab stop alignment type' }\n);\n\nexport const TabStopLeaderSchema = Type.Union(\n [\n Type.Literal('dot'),\n Type.Literal('hyphen'),\n Type.Literal('underscore'),\n Type.Literal('middleDot'),\n Type.Literal('none'),\n ],\n { description: 'Leader character filling the space before the tab stop' }\n);\n\nexport const TabStopSchema = Type.Object(\n {\n type: TabStopTypeSchema,\n position: Type.Number({\n minimum: 0,\n description: 'Tab stop position in twips (1/20 of a point)',\n }),\n leader: Type.Optional(TabStopLeaderSchema),\n },\n {\n description: 'Tab stop definition (w:tab in w:tabs)',\n additionalProperties: false,\n }\n);\n\nexport const TabStopsSchema = Type.Array(TabStopSchema, {\n description:\n 'Tab stops for the paragraph. Tab characters (\\\\t) in the text jump to these positions.',\n});\n\n// ============================================================================\n// Floating Positioning Schemas (shared between image, text-box components)\n// ============================================================================\n\nexport const HorizontalPositionRelativeFromSchema = Type.Union(\n [\n Type.Literal('character'),\n Type.Literal('column'),\n Type.Literal('margin'),\n Type.Literal('page'),\n Type.Literal('text'), // VML compatibility for text-box\n ],\n {\n description: 'Horizontal position relative to',\n }\n);\n\nexport const VerticalPositionRelativeFromSchema = Type.Union(\n [\n Type.Literal('margin'),\n Type.Literal('page'),\n Type.Literal('paragraph'),\n Type.Literal('line'),\n Type.Literal('text'), // VML compatibility for text-box\n ],\n {\n description: 'Vertical position relative to',\n }\n);\n\nexport const HorizontalPositionAlignSchema = Type.Union(\n [\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('inside'),\n Type.Literal('outside'),\n ],\n {\n description: 'Horizontal alignment',\n }\n);\n\nexport const VerticalPositionAlignSchema = Type.Union(\n [\n Type.Literal('top'),\n Type.Literal('center'),\n Type.Literal('bottom'),\n Type.Literal('inside'),\n Type.Literal('outside'),\n ],\n {\n description: 'Vertical alignment',\n }\n);\n\nexport const TextWrappingTypeSchema = Type.Union(\n [\n Type.Literal('none'),\n Type.Literal('square'),\n Type.Literal('topAndBottom'),\n Type.Literal('around'), // VML compatibility for text-box\n Type.Literal('tight'), // VML compatibility for text-box\n Type.Literal('through'), // VML compatibility for text-box\n ],\n {\n description: 'Text wrapping type',\n }\n);\n\nexport const TextWrappingSideSchema = Type.Union(\n [\n Type.Literal('bothSides'),\n Type.Literal('left'),\n Type.Literal('right'),\n Type.Literal('largest'),\n ],\n {\n description: 'Text wrapping side',\n }\n);\n\nexport const FloatingPropertiesSchema = Type.Object(\n {\n horizontalPosition: Type.Optional(\n Type.Object(\n {\n relative: Type.Optional(HorizontalPositionRelativeFromSchema),\n align: Type.Optional(HorizontalPositionAlignSchema),\n offset: Type.Optional(\n Type.Union([\n Type.Number({\n description: 'Horizontal offset in twips (1/20 of a point)',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Horizontal offset as percentage (e.g., \"50%\") relative to page or margin width',\n }),\n ])\n ),\n },\n {\n description:\n 'Horizontal positioning (use either align or offset, not both)',\n additionalProperties: false,\n }\n )\n ),\n verticalPosition: Type.Optional(\n Type.Object(\n {\n relative: Type.Optional(VerticalPositionRelativeFromSchema),\n align: Type.Optional(VerticalPositionAlignSchema),\n offset: Type.Optional(\n Type.Union([\n Type.Number({\n description: 'Vertical offset in twips (1/20 of a point)',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Vertical offset as percentage (e.g., \"50%\") relative to page or margin height',\n }),\n ])\n ),\n },\n {\n description:\n 'Vertical positioning (use either align or offset, not both)',\n additionalProperties: false,\n }\n )\n ),\n wrap: Type.Optional(\n Type.Object(\n {\n type: TextWrappingTypeSchema,\n side: Type.Optional(TextWrappingSideSchema),\n margins: Type.Optional(\n Type.Object(\n {\n top: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Top margin in twips' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Top margin as percentage of page height',\n }),\n ])\n ),\n bottom: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Bottom margin in twips' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Bottom margin as percentage of page height',\n }),\n ])\n ),\n left: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Left margin in twips' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Left margin as percentage of page width',\n }),\n ])\n ),\n right: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Right margin in twips' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Right margin as percentage of page width',\n }),\n ])\n ),\n },\n {\n description: 'Distance from text margins',\n additionalProperties: false,\n }\n )\n ),\n },\n {\n description: 'Text wrapping configuration',\n additionalProperties: false,\n }\n )\n ),\n allowOverlap: Type.Optional(\n Type.Boolean({\n description: 'Allow element to overlap with other elements',\n })\n ),\n behindDocument: Type.Optional(\n Type.Boolean({\n description: 'Place element behind document text',\n })\n ),\n lockAnchor: Type.Optional(\n Type.Boolean({\n description: 'Lock the anchor position',\n })\n ),\n layoutInCell: Type.Optional(\n Type.Boolean({\n description: 'Layout element within table cell',\n })\n ),\n zIndex: Type.Optional(\n Type.Number({\n minimum: 0,\n description: 'Z-order for overlapping elements (must be non-negative)',\n })\n ),\n rotation: Type.Optional(\n Type.Number({\n description: 'Rotation angle in degrees',\n })\n ),\n visibility: Type.Optional(\n Type.Union([Type.Literal('hidden'), Type.Literal('inherit')], {\n description: 'Visibility of the floating element',\n })\n ),\n },\n {\n description: 'Floating element properties',\n additionalProperties: false,\n }\n);\n\nexport type HorizontalPositionRelativeFrom = Static<\n typeof HorizontalPositionRelativeFromSchema\n>;\nexport type VerticalPositionRelativeFrom = Static<\n typeof VerticalPositionRelativeFromSchema\n>;\nexport type HorizontalPositionAlign = Static<\n typeof HorizontalPositionAlignSchema\n>;\nexport type VerticalPositionAlign = Static<typeof VerticalPositionAlignSchema>;\nexport type TextWrappingType = Static<typeof TextWrappingTypeSchema>;\nexport type TextWrappingSide = Static<typeof TextWrappingSideSchema>;\nexport type FloatingProperties = Static<typeof FloatingPropertiesSchema>;\n\nexport const NumberingSchema = Type.Object(\n {\n start: Type.Optional(Type.Number({ minimum: 1 })),\n style: Type.Optional(\n Type.Union([\n Type.Literal('decimal'),\n Type.Literal('lowerLetter'),\n Type.Literal('upperLetter'),\n Type.Literal('lowerRoman'),\n Type.Literal('upperRoman'),\n ])\n ),\n separator: Type.Optional(Type.String()),\n },\n {\n description: 'Numbering configuration for lists',\n additionalProperties: false,\n }\n);\n\n// ============================================================================\n// Base Component Props (common fields across all components)\n// ============================================================================\n// Note: BaseComponentFields is currently empty as common properties\n// (className, style, hidden, condition) are not implemented in the rendering engine.\n// These were removed to accurately reflect actual capabilities.\n\nconst BaseComponentFields = {};\n\n// Export BaseComponentPropsSchema\nexport const BaseComponentPropsSchema = Type.Object(BaseComponentFields, {\n description: 'Base component props',\n additionalProperties: true,\n});\n\n// Export BaseComponentFields for use in component definitions\nexport { BaseComponentFields };\n\n// ============================================================================\n// TypeScript Types\n// ============================================================================\n\nexport type Alignment = Static<typeof AlignmentSchema>;\nexport type JustifiedAlignment = Static<typeof JustifiedAlignmentSchema>;\nexport type HeadingLevel = Static<typeof HeadingLevelSchema>;\nexport type Spacing = Static<typeof SpacingSchema>;\nexport type ListSpacing = Static<typeof ListSpacingSchema>;\nexport type LineSpacing = Static<typeof LineSpacingSchema>;\nexport type Indent = Static<typeof IndentSchema>;\nexport type ParagraphIndent = Static<typeof ParagraphIndentSchema>;\nexport type TabStopType = Static<typeof TabStopTypeSchema>;\nexport type TabStopLeader = Static<typeof TabStopLeaderSchema>;\nexport type TabStop = Static<typeof TabStopSchema>;\nexport type TabStops = Static<typeof TabStopsSchema>;\nexport type Numbering = Static<typeof NumberingSchema>;\nexport type Margins = Static<typeof MarginsSchema>;\nexport type Border = Static<typeof BorderSchema>;\nexport type BaseComponentProps = Static<typeof BaseComponentPropsSchema>;\n","/**\n * Revision Schema\n * Tracked-change (redline) metadata for text-bearing components.\n *\n * When a component carries a `revision`, its text is rendered from\n * `revision.segments` as native Word tracked changes (w:ins / w:del)\n * instead of the plain `text` prop. The `text` prop should hold the\n * new (post-change) text so the document degrades gracefully when\n * revisions are ignored.\n */\n\nimport { Type, Static } from '@sinclair/typebox';\n\nexport const RevisionSegmentSchema = Type.Object(\n {\n type: Type.Union(\n [Type.Literal('equal'), Type.Literal('insert'), Type.Literal('delete')],\n {\n description:\n \"Segment kind: 'equal' renders as normal text, 'insert' as a tracked insertion, 'delete' as a tracked deletion\",\n }\n ),\n text: Type.String({\n description: 'Literal text of this segment (rendered without markdown)',\n }),\n },\n {\n description: 'A contiguous run of text sharing one revision state',\n additionalProperties: false,\n }\n);\n\nexport const RevisionSchema = Type.Object(\n {\n author: Type.Optional(\n Type.String({\n description:\n 'Revision author shown in Word (default: \"json-to-office\")',\n })\n ),\n date: Type.Optional(\n Type.String({\n format: 'date-time',\n description:\n 'Revision timestamp (ISO 8601). Defaults to the Unix epoch for deterministic output',\n })\n ),\n segments: Type.Array(RevisionSegmentSchema, {\n minItems: 1,\n description:\n 'Ordered text segments; concatenating equal+insert segments yields the new text, equal+delete the old text',\n }),\n },\n {\n description:\n 'Tracked-change data: renders the component text as native Word revisions (accept/reject in Word)',\n additionalProperties: false,\n }\n);\n\nexport type RevisionSegment = Static<typeof RevisionSegmentSchema>;\nexport type Revision = Static<typeof RevisionSchema>;\n","/**\n * Paragraph Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { SpacingSchema, ParagraphIndentSchema, TabStopsSchema } from './common';\nimport {\n FontDefinitionSchema,\n HexColorSchema,\n LanguageSchema,\n NoProofSchema,\n NoProofWordsSchema,\n} from '../font';\nimport { RevisionSchema } from './revision';\n\n// Frame wrapping type schema\nconst FrameWrapTypeSchema = Type.Union(\n [\n Type.Literal('around'),\n Type.Literal('none'),\n Type.Literal('notBeside'),\n Type.Literal('through'),\n Type.Literal('tight'),\n Type.Literal('auto'),\n ],\n {\n description: 'Frame text wrapping type',\n }\n);\n\n// Frame anchor type schema\nconst FrameAnchorTypeSchema = Type.Union(\n [Type.Literal('margin'), Type.Literal('page'), Type.Literal('text')],\n {\n description: 'Frame anchor type',\n }\n);\n\n// Frame horizontal position alignment schema\nconst FrameHorizontalAlignSchema = Type.Union(\n [\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('inside'),\n Type.Literal('outside'),\n ],\n {\n description: 'Frame horizontal alignment',\n }\n);\n\n// Frame vertical position alignment schema\nconst FrameVerticalAlignSchema = Type.Union(\n [\n Type.Literal('top'),\n Type.Literal('center'),\n Type.Literal('bottom'),\n Type.Literal('inside'),\n Type.Literal('outside'),\n ],\n {\n description: 'Frame vertical alignment',\n }\n);\n\n// Floating frame properties schema\nconst FloatingFramePropertiesSchema = Type.Object(\n {\n horizontalPosition: Type.Optional(\n Type.Object(\n {\n relative: Type.Optional(FrameAnchorTypeSchema),\n align: Type.Optional(FrameHorizontalAlignSchema),\n offset: Type.Optional(\n Type.Union([\n Type.Number({\n description: 'Horizontal offset in twips (1/20 of a point)',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Horizontal offset as percentage (e.g., \"50%\") relative to page or margin width',\n }),\n ])\n ),\n },\n {\n description:\n 'Horizontal positioning (use either align or offset, not both)',\n additionalProperties: false,\n }\n )\n ),\n verticalPosition: Type.Optional(\n Type.Object(\n {\n relative: Type.Optional(FrameAnchorTypeSchema),\n align: Type.Optional(FrameVerticalAlignSchema),\n offset: Type.Optional(\n Type.Union([\n Type.Number({\n description: 'Vertical offset in twips (1/20 of a point)',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Vertical offset as percentage (e.g., \"50%\") relative to page or margin height',\n }),\n ])\n ),\n },\n {\n description:\n 'Vertical positioning (use either align or offset, not both)',\n additionalProperties: false,\n }\n )\n ),\n wrap: Type.Optional(\n Type.Object(\n {\n type: FrameWrapTypeSchema,\n },\n {\n description: 'Text wrapping configuration',\n additionalProperties: false,\n }\n )\n ),\n lockAnchor: Type.Optional(\n Type.Boolean({\n description: 'Lock the anchor position',\n })\n ),\n width: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Frame width in twips (DXA units)',\n })\n ),\n height: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Frame height in twips (DXA units)',\n })\n ),\n },\n {\n description: 'Floating text frame properties',\n additionalProperties: false,\n }\n);\n\n// Alignment type schema (paragraph-level, not font-level)\nconst AlignmentSchema = Type.Union(\n [\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('justify'),\n ],\n {\n description: 'Paragraph text alignment',\n }\n);\n\nexport const ParagraphPropsSchema = Type.Object(\n {\n text: Type.String({\n description: 'Text content (required)',\n }),\n // New nested font object, aligned with theme's FontDefinitionSchema\n // Allow partial overrides (family not required when overriding a subset)\n font: Type.Optional(Type.Partial(FontDefinitionSchema)),\n // Optional reference to a named style from theme.styles (e.g., 'heading1', 'normal')\n themeStyle: Type.Optional(Type.String()),\n // Local language override (BCP-47). Falls back to the document default when omitted.\n language: Type.Optional(LanguageSchema),\n // Disable spell/grammar checking for this paragraph's text\n noProof: Type.Optional(NoProofSchema),\n // Known-words allowlist for this paragraph (merged with the document list)\n noProofWords: Type.Optional(NoProofWordsSchema),\n // Rich-text decoration color for bold segments (kept as top-level behavior\n // option). Same value space as font.color: hex or theme color token.\n boldColor: Type.Optional(HexColorSchema),\n // Paragraph spacing (in points) — limited paragraph-level option allowed\n spacing: Type.Optional(SpacingSchema),\n // Paragraph alignment (moved from font to config level)\n alignment: Type.Optional(AlignmentSchema),\n // Paragraph indentation (w:ind) in twips\n indent: Type.Optional(ParagraphIndentSchema),\n // Tab stops (w:tabs); tab characters (\\t) in text jump to these positions\n tabStops: Type.Optional(TabStopsSchema),\n pageBreak: Type.Optional(\n Type.Boolean({\n description: 'Insert page break before paragraph',\n })\n ),\n columnBreak: Type.Optional(\n Type.Boolean({\n description: 'Insert column break before paragraph',\n })\n ),\n floating: Type.Optional(FloatingFramePropertiesSchema),\n keepNext: Type.Optional(\n Type.Boolean({\n description: 'Keep paragraph with next paragraph on same page',\n })\n ),\n keepLines: Type.Optional(\n Type.Boolean({\n description: 'Keep all lines of paragraph together on same page',\n })\n ),\n id: Type.Optional(\n Type.String({\n description: 'Unique identifier for internal linking (bookmark anchor)',\n })\n ),\n revision: Type.Optional(RevisionSchema),\n },\n {\n description:\n 'Paragraph component props (font nested for theme consistency; no flat font properties)',\n additionalProperties: false,\n }\n);\n\nexport type ParagraphProps = Static<typeof ParagraphPropsSchema>;\n","/**\n * Image Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n AlignmentSchema,\n SpacingSchema,\n FloatingPropertiesSchema,\n} from './common';\n\nexport const ImagePropsSchema = Type.Object(\n {\n path: Type.Optional(\n Type.String({\n description:\n 'Image source URL or file path (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 (e.g., \"data:image/png;base64,iVBORw0KGgo...\") (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). Renders as a vector image (Word 2016+); intrinsic size taken from the SVG viewBox/width/height when width/height omitted.',\n })\n ),\n alt: Type.Optional(\n Type.String({\n description: 'Alternative text for accessibility',\n })\n ),\n width: Type.Optional(\n Type.Union(\n [\n Type.Number({\n minimum: 1,\n description: 'Image width in pixels',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Image width as percentage (e.g., \"90%\") relative to widthRelativeTo (defaults to content width)',\n }),\n ],\n {\n description:\n 'Image width in pixels (number) or as percentage string (e.g., \"90%\")',\n default: '100%',\n }\n )\n ),\n height: Type.Optional(\n Type.Union(\n [\n Type.Number({\n minimum: 1,\n description: 'Image height in pixels',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Image height as percentage (e.g., \"90%\") relative to heightRelativeTo (defaults to content height)',\n }),\n ],\n {\n description:\n 'Image height in pixels (number) or as percentage string (e.g., \"90%\")',\n }\n )\n ),\n widthRelativeTo: Type.Optional(\n Type.Union([Type.Literal('content'), Type.Literal('page')], {\n description:\n 'Reference for width percentages: content (page width minus margins) or page (full page width)',\n default: 'content',\n })\n ),\n heightRelativeTo: Type.Optional(\n Type.Union([Type.Literal('content'), Type.Literal('page')], {\n description:\n 'Reference for height percentages: content (page height minus margins) or page (full page height)',\n default: 'content',\n })\n ),\n alignment: Type.Optional(AlignmentSchema),\n caption: Type.Optional(\n Type.String({\n description:\n 'Image caption (supports rich text with **bold**, *italic*, ***both***)',\n })\n ),\n spacing: Type.Optional(SpacingSchema),\n floating: Type.Optional(FloatingPropertiesSchema),\n keepNext: Type.Optional(\n Type.Boolean({\n description: 'Keep paragraph with next paragraph on same page',\n })\n ),\n keepLines: Type.Optional(\n Type.Boolean({\n description: 'Keep all lines of paragraph together on same page',\n })\n ),\n },\n {\n description: 'Image component props',\n additionalProperties: false,\n }\n);\n\nexport type ImageProps = Static<typeof ImagePropsSchema>;\n","/**\n * Statistic Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { AlignmentSchema, SpacingSchema } from './common';\n\nexport const StatisticPropsSchema = Type.Object(\n {\n number: Type.String({\n description: 'Statistic number/value (required)',\n }),\n description: Type.String({\n description: 'Statistic description (required)',\n }),\n unit: Type.Optional(\n Type.String({\n description: 'Unit of measurement',\n })\n ),\n format: Type.Optional(\n Type.String({\n description: 'Number format pattern',\n })\n ),\n trend: Type.Optional(\n Type.Union([\n Type.Literal('up'),\n Type.Literal('down'),\n Type.Literal('neutral'),\n ])\n ),\n trendValue: Type.Optional(Type.Union([Type.String(), Type.Number()])),\n alignment: Type.Optional(AlignmentSchema),\n spacing: Type.Optional(SpacingSchema),\n size: Type.Optional(\n Type.Union([\n Type.Literal('small'),\n Type.Literal('medium'),\n Type.Literal('large'),\n ])\n ),\n },\n {\n description: 'Statistic component props',\n additionalProperties: false,\n }\n);\n\nexport type StatisticProps = Static<typeof StatisticPropsSchema>;\n","/**\n * Table Component Schema\n */\n\nimport { Type, Static, TSchema } from '@sinclair/typebox';\nimport { HexColorSchema, HexColorOrTransparentSchema } from '../font';\n\n// Define Cell type - can be plain text or a component definition\nconst CellContentSchema = Type.Recursive((This) =>\n Type.Union([\n Type.String(),\n Type.Object(\n {\n name: Type.String(),\n props: Type.Object({}, { additionalProperties: true }),\n children: Type.Optional(Type.Array(This)),\n },\n { additionalProperties: false }\n ),\n ])\n);\n\n// Horizontal alignment schema\nconst HorizontalAlignmentSchema = Type.Union(\n [\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('justify'),\n ],\n { description: 'Horizontal text alignment' }\n);\n\n// Vertical alignment schema\nconst VerticalAlignmentSchema = Type.Union(\n [Type.Literal('top'), Type.Literal('middle'), Type.Literal('bottom')],\n { description: 'Vertical cell alignment' }\n);\n\n// Font configuration schema\nconst FontConfigSchema = Type.Object(\n {\n family: Type.Optional(Type.String({ description: 'Font family name' })),\n size: Type.Optional(\n Type.Number({ minimum: 0, description: 'Font size in points' })\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: 'Per-cell weight (100–900). Overrides `bold` when set.',\n })\n ),\n italic: Type.Optional(Type.Boolean({ description: 'Italic text' })),\n underline: Type.Optional(Type.Boolean({ description: 'Underlined text' })),\n },\n { additionalProperties: false }\n);\n\n// Border color - can be a single string or an object with sides\nconst BorderColorSchema = Type.Union([\n Type.String({ description: 'Border color for all sides (hex without #)' }),\n Type.Object(\n {\n bottom: Type.Optional(\n Type.String({ description: 'Bottom border color (hex without #)' })\n ),\n top: Type.Optional(\n Type.String({ description: 'Top border color (hex without #)' })\n ),\n right: Type.Optional(\n Type.String({ description: 'Right border color (hex without #)' })\n ),\n left: Type.Optional(\n Type.String({ description: 'Left border color (hex without #)' })\n ),\n },\n { additionalProperties: false }\n ),\n]);\n\n// Border size - can be a single number or an object with sides\nconst BorderSizeSchema = Type.Union([\n Type.Number({\n minimum: 0,\n description: 'Border size for all sides in points',\n }),\n Type.Object(\n {\n bottom: Type.Optional(\n Type.Number({ minimum: 0, description: 'Bottom border size in points' })\n ),\n top: Type.Optional(\n Type.Number({ minimum: 0, description: 'Top border size in points' })\n ),\n right: Type.Optional(\n Type.Number({ minimum: 0, description: 'Right border size in points' })\n ),\n left: Type.Optional(\n Type.Number({ minimum: 0, description: 'Left border size in points' })\n ),\n },\n { additionalProperties: false }\n ),\n]);\n\n// Hide borders - can be a boolean or an object with sides\nconst HideBordersSchema = Type.Union([\n Type.Boolean({\n description: 'Hide all borders when true',\n }),\n Type.Object(\n {\n bottom: Type.Optional(\n Type.Boolean({ description: 'Hide bottom border' })\n ),\n top: Type.Optional(Type.Boolean({ description: 'Hide top border' })),\n right: Type.Optional(Type.Boolean({ description: 'Hide right border' })),\n left: Type.Optional(Type.Boolean({ description: 'Hide left border' })),\n insideHorizontal: Type.Optional(\n Type.Boolean({ description: 'Hide horizontal borders between rows' })\n ),\n insideVertical: Type.Optional(\n Type.Boolean({ description: 'Hide vertical borders between columns' })\n ),\n },\n {\n description: 'Selectively hide specific borders',\n additionalProperties: false,\n }\n ),\n]);\n\n// Padding - can be a single number or an object with sides\nconst PaddingSchema = Type.Union([\n Type.Number({ minimum: 0, description: 'Padding for all sides in points' }),\n Type.Object(\n {\n bottom: Type.Optional(\n Type.Number({ minimum: 0, description: 'Bottom padding in points' })\n ),\n top: Type.Optional(\n Type.Number({ minimum: 0, description: 'Top padding in points' })\n ),\n right: Type.Optional(\n Type.Number({ minimum: 0, description: 'Right padding in points' })\n ),\n left: Type.Optional(\n Type.Number({ minimum: 0, description: 'Left padding in points' })\n ),\n },\n { additionalProperties: false }\n ),\n]);\n\n// Cell defaults configuration\nconst CellDefaultsSchema = Type.Object(\n {\n color: Type.Optional(HexColorSchema),\n backgroundColor: Type.Optional(HexColorOrTransparentSchema),\n horizontalAlignment: Type.Optional(HorizontalAlignmentSchema),\n verticalAlignment: Type.Optional(VerticalAlignmentSchema),\n font: Type.Optional(FontConfigSchema),\n borderColor: Type.Optional(BorderColorSchema),\n borderSize: Type.Optional(BorderSizeSchema),\n padding: Type.Optional(PaddingSchema),\n height: Type.Optional(\n Type.Number({ minimum: 0, description: 'Cell height in points' })\n ),\n },\n { additionalProperties: false }\n);\n\n/**\n * Build TablePropsSchema with a given cell-content type.\n * Called with `CellContentSchema` for the static export below, and with a\n * live recursive ref at schema-generation time.\n */\nexport function createTablePropsSchema(componentRef: TSchema): TSchema {\n const cellContent = Type.Union([Type.String(), componentRef]);\n\n const cellFields = {\n color: Type.Optional(HexColorSchema),\n backgroundColor: Type.Optional(HexColorOrTransparentSchema),\n horizontalAlignment: Type.Optional(HorizontalAlignmentSchema),\n verticalAlignment: Type.Optional(VerticalAlignmentSchema),\n font: Type.Optional(FontConfigSchema),\n borderColor: Type.Optional(BorderColorSchema),\n borderSize: Type.Optional(BorderSizeSchema),\n padding: Type.Optional(PaddingSchema),\n height: Type.Optional(\n Type.Number({ minimum: 0, description: 'Cell height in points' })\n ),\n };\n\n const headerSchema = Type.Object(\n {\n ...cellFields,\n content: Type.Optional(cellContent),\n },\n { additionalProperties: false }\n );\n\n const cellSchema = Type.Object(\n {\n ...cellFields,\n content: Type.Optional(cellContent),\n },\n { additionalProperties: false }\n );\n\n const columnSchema = Type.Object(\n {\n width: Type.Optional(\n Type.Union([\n Type.Number({\n minimum: 0,\n description:\n 'Column width in points. When set on some columns, remaining columns will automatically share the leftover table space equally. Leave undefined to distribute space evenly among unspecified columns.',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Column width as percentage of available width (e.g., \"40%\")',\n }),\n ])\n ),\n cellDefaults: Type.Optional(CellDefaultsSchema),\n header: Type.Optional(headerSchema),\n cells: Type.Optional(Type.Array(cellSchema)),\n },\n { additionalProperties: false }\n );\n\n return Type.Object(\n {\n borderColor: Type.Optional(BorderColorSchema),\n borderSize: Type.Optional(BorderSizeSchema),\n hideBorders: Type.Optional(HideBordersSchema),\n cellDefaults: Type.Optional(CellDefaultsSchema),\n headerCellDefaults: Type.Optional(CellDefaultsSchema),\n width: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 100,\n description: 'Table width in percentage (0-100)',\n })\n ),\n columns: Type.Array(columnSchema, {\n description: 'Table columns with headers and cells',\n minItems: 1,\n }),\n keepInOnePage: Type.Optional(\n Type.Boolean({\n description:\n 'Keep table rows together on the same page by setting keepNext on all paragraphs',\n })\n ),\n keepNext: Type.Optional(\n Type.Boolean({\n description:\n 'Set keepNext on the last row to keep it connected to the next element. Works independently of keepInOnePage. Defaults to false.',\n })\n ),\n repeatHeaderOnPageBreak: Type.Optional(\n Type.Boolean({\n description:\n 'Repeat the header row on each page when the table spans multiple pages. Defaults to true.',\n default: true,\n })\n ),\n },\n {\n description: 'Table component props with column-based structure',\n additionalProperties: false,\n }\n );\n}\n\n// Static version for validators, type inference, and theme defaults.\nexport const TablePropsSchema = createTablePropsSchema(CellContentSchema);\n\nexport type TableProps = Static<typeof TablePropsSchema>;\n","/**\n * Section Component Schema\n */\n\nimport { Type, Static, TSchema } from '@sinclair/typebox';\nimport { SpacingSchema } from './common';\n\n// Create a function to generate SectionPropsSchema with recursive component reference\nexport const createSectionPropsSchema = (componentRef?: TSchema) =>\n Type.Object(\n {\n meta: Type.Optional(\n Type.Object(\n {\n title: Type.Optional(\n Type.String({\n description:\n 'Authoring label for this section, shown in editors and outlines. Never rendered — add a heading child for a visible title.',\n })\n ),\n },\n {\n additionalProperties: false,\n description: 'Authoring metadata; has no effect on the document.',\n }\n )\n ),\n header: Type.Optional(\n Type.Union([\n Type.Array(componentRef || Type.Any(), {\n description: 'Section header components',\n }),\n Type.Literal('linkToPrevious', {\n description: 'Link header to previous section',\n }),\n ])\n ),\n footer: Type.Optional(\n Type.Union([\n Type.Array(componentRef || Type.Any(), {\n description: 'Section footer components',\n }),\n Type.Literal('linkToPrevious', {\n description: 'Link footer to previous section',\n }),\n ])\n ),\n pageBreak: Type.Optional(\n Type.Boolean({\n description: 'Insert page break before section',\n default: true,\n })\n ),\n spacing: Type.Optional(SpacingSchema),\n page: Type.Optional(\n Type.Object(\n {\n size: Type.Optional(\n Type.Union([\n Type.Literal('A4'),\n Type.Literal('A3'),\n Type.Literal('LETTER'),\n Type.Literal('LEGAL'),\n Type.Object({\n width: Type.Number({ minimum: 0 }),\n height: Type.Number({ minimum: 0 }),\n }),\n ])\n ),\n margins: Type.Optional(\n Type.Object(\n {\n top: Type.Optional(Type.Number({ minimum: 0 })),\n bottom: Type.Optional(Type.Number({ minimum: 0 })),\n left: Type.Optional(Type.Number({ minimum: 0 })),\n right: Type.Optional(Type.Number({ minimum: 0 })),\n header: Type.Optional(Type.Number({ minimum: 0 })),\n footer: Type.Optional(Type.Number({ minimum: 0 })),\n gutter: Type.Optional(Type.Number({ minimum: 0 })),\n },\n {\n additionalProperties: false,\n }\n )\n ),\n },\n {\n description:\n 'Page configuration override for this section (overrides theme page settings)',\n additionalProperties: false,\n }\n )\n ),\n },\n {\n description: 'Section component props',\n additionalProperties: false,\n }\n );\n\nexport const SectionPropsSchema = createSectionPropsSchema();\n\nexport type SectionProps = Static<typeof SectionPropsSchema>;\n","/**\n * Columns Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\n\n// Single column descriptor\nconst ColumnDescriptorSchema = Type.Object(\n {\n width: Type.Optional(\n Type.Union([\n Type.Number({\n minimum: 1,\n description: 'Column width in points',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Column width as percentage of available width (e.g., \"30%\")',\n }),\n Type.Literal('auto', {\n description:\n 'Auto width: consume remaining space after fixed widths and gaps',\n }),\n ])\n ),\n gap: Type.Optional(\n Type.Union([\n Type.Number({\n minimum: 0,\n description: 'Gap after this column in points',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Gap after this column as percentage of available width (e.g., \"5%\")',\n }),\n ])\n ),\n },\n { additionalProperties: false }\n);\n\nexport const ColumnsPropsSchema = Type.Object(\n {\n columns: Type.Union([\n Type.Number({\n minimum: 1,\n description:\n 'Number of equal-width columns (converter will normalize to array)',\n }),\n Type.Array(ColumnDescriptorSchema, {\n minItems: 1,\n description:\n 'List of columns in order; width and gap can be points, percentages, or auto width',\n }),\n ]),\n gap: Type.Optional(\n Type.Union([\n Type.Number({\n minimum: 0,\n description:\n 'Default gap applied after each column except the last (points)',\n }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description:\n 'Default gap applied after each column except the last as percentage of available width (e.g., \"5%\")',\n }),\n ])\n ),\n },\n {\n description: 'Columns component props',\n additionalProperties: false,\n }\n);\n\nexport type ColumnsProps = Static<typeof ColumnsPropsSchema>;\n","/**\n * List Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n ListSpacingSchema,\n JustifiedAlignmentSchema,\n IndentSchema,\n} from './common';\nimport { RevisionSchema } from './revision';\n\n/**\n * Level format options for docx numbering\n * Maps to docx LevelFormat enum\n */\nexport const LevelFormatSchema = Type.Union(\n [\n Type.Literal('decimal'),\n Type.Literal('upperRoman'),\n Type.Literal('lowerRoman'),\n Type.Literal('upperLetter'),\n Type.Literal('lowerLetter'),\n Type.Literal('bullet'),\n Type.Literal('ordinal'),\n Type.Literal('cardinalText'),\n Type.Literal('ordinalText'),\n Type.Literal('hex'),\n Type.Literal('chicago'),\n Type.Literal('ideographDigital'),\n Type.Literal('japaneseCounting'),\n Type.Literal('aiueo'),\n Type.Literal('iroha'),\n Type.Literal('decimalFullWidth'),\n Type.Literal('decimalHalfWidth'),\n Type.Literal('japaneseLegal'),\n Type.Literal('japaneseDigitalTenThousand'),\n Type.Literal('decimalEnclosedCircle'),\n Type.Literal('decimalFullWidth2'),\n Type.Literal('aiueoFullWidth'),\n Type.Literal('irohaFullWidth'),\n Type.Literal('decimalZero'),\n Type.Literal('ganada'),\n Type.Literal('chosung'),\n Type.Literal('decimalEnclosedFullstop'),\n Type.Literal('decimalEnclosedParen'),\n Type.Literal('decimalEnclosedCircleChinese'),\n Type.Literal('ideographEnclosedCircle'),\n Type.Literal('ideographTraditional'),\n Type.Literal('ideographZodiac'),\n Type.Literal('ideographZodiacTraditional'),\n Type.Literal('taiwaneseCounting'),\n Type.Literal('ideographLegalTraditional'),\n Type.Literal('taiwaneseCountingThousand'),\n Type.Literal('taiwaneseDigital'),\n Type.Literal('chineseCounting'),\n Type.Literal('chineseLegalSimplified'),\n Type.Literal('chineseCountingThousand'),\n Type.Literal('koreanDigital'),\n Type.Literal('koreanCounting'),\n Type.Literal('koreanLegal'),\n Type.Literal('koreanDigital2'),\n Type.Literal('vietnameseCounting'),\n Type.Literal('russianLower'),\n Type.Literal('russianUpper'),\n Type.Literal('none'),\n Type.Literal('numberInDash'),\n Type.Literal('hebrew1'),\n Type.Literal('hebrew2'),\n Type.Literal('arabicAlpha'),\n Type.Literal('arabicAbjad'),\n Type.Literal('hindiVowels'),\n Type.Literal('hindiConsonants'),\n Type.Literal('hindiNumbers'),\n Type.Literal('hindiCounting'),\n Type.Literal('thaiLetters'),\n Type.Literal('thaiNumbers'),\n Type.Literal('thaiCounting'),\n ],\n {\n description: 'Number or bullet format for list levels',\n }\n);\n\n/**\n * Configuration for a single numbering level\n */\nexport const ListLevelPropsSchema = Type.Object(\n {\n level: Type.Number({\n minimum: 0,\n maximum: 8,\n description: 'Nesting level (0 = root, 1 = first sublevel, etc.)',\n }),\n format: Type.Optional(LevelFormatSchema),\n text: Type.Optional(\n Type.String({\n description:\n 'Number format string (e.g., \"%1.\" for \"1.\", \"%1)\" for \"1)\", custom bullet character for bullet format)',\n })\n ),\n alignment: Type.Optional(\n Type.Union(\n [\n Type.Literal('start'),\n Type.Literal('end'),\n Type.Literal('left'),\n Type.Literal('right'),\n Type.Literal('center'),\n ],\n {\n description: 'Alignment of the numbering/bullet',\n }\n )\n ),\n indent: Type.Optional(IndentSchema),\n start: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Starting number for this level (default: 1)',\n })\n ),\n },\n {\n description: 'Configuration for a single list level',\n additionalProperties: false,\n }\n);\n\nexport const ListPropsSchema = Type.Object(\n {\n items: Type.Array(\n Type.Union([\n Type.String(),\n Type.Object(\n {\n text: Type.String(),\n level: Type.Optional(\n Type.Number({\n minimum: 0,\n maximum: 8,\n description: 'Nesting level for this item',\n })\n ),\n revision: Type.Optional(RevisionSchema),\n },\n { additionalProperties: false }\n ),\n ]),\n {\n description: 'List items (required)',\n minItems: 1,\n }\n ),\n reference: Type.Optional(\n Type.String({\n description:\n 'Unique reference ID for this numbering configuration (auto-generated if not provided)',\n })\n ),\n levels: Type.Optional(\n Type.Array(ListLevelPropsSchema, {\n description: 'Configuration for each nesting level',\n minItems: 1,\n maxItems: 9,\n })\n ),\n // Simplified options for common use cases (when levels not specified)\n format: Type.Optional(\n Type.Union(\n [LevelFormatSchema, Type.Literal('numbered'), Type.Literal('none')],\n {\n description:\n 'Format for level 0 (simplified option when levels not specified)',\n }\n )\n ),\n bullet: Type.Optional(\n Type.String({\n description:\n 'Custom bullet character (simplified option when levels not specified)',\n })\n ),\n start: Type.Optional(\n Type.Number({\n minimum: 1,\n description:\n 'Starting number for level 0 (simplified option when levels not specified)',\n })\n ),\n spacing: Type.Optional(ListSpacingSchema),\n alignment: Type.Optional(JustifiedAlignmentSchema),\n indent: Type.Optional(\n Type.Union([Type.Number({ minimum: 0 }), IndentSchema])\n ),\n },\n {\n description: 'List component props',\n additionalProperties: false,\n }\n);\n\nexport type LevelFormat = Static<typeof LevelFormatSchema>;\nexport type ListLevelProps = Static<typeof ListLevelPropsSchema>;\nexport type ListProps = Static<typeof ListPropsSchema>;\n"],"mappings":"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","names":["Type","Type","Type","Type","Type","Type","AlignmentSchema","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type","Type"]}