@json-to-office/shared-pptx 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-NCBBMAVS.js → chunk-7CKCXKN7.js} +15 -3
- package/dist/{chunk-NCBBMAVS.js.map → chunk-7CKCXKN7.js.map} +1 -1
- package/dist/{chunk-3TK45DVZ.js → chunk-7O7XPZXS.js} +2 -2
- package/dist/{chunk-HYJ6MU3F.js → chunk-B7HWVX62.js} +2 -2
- package/dist/{chunk-ZMZKHRBS.js → chunk-M5PJJLWM.js} +2 -2
- package/dist/{chunk-BIJP7NTG.js → chunk-X2MWLKFW.js} +2 -2
- package/dist/{chunk-G3FMM4FX.js → chunk-ZJTUC7DA.js} +8 -4
- package/dist/{chunk-G3FMM4FX.js.map → chunk-ZJTUC7DA.js.map} +1 -1
- package/dist/index.d.ts +22 -2
- package/dist/index.js +53 -7
- package/dist/index.js.map +1 -1
- package/dist/schemas/component-defaults.d.ts +120 -4
- package/dist/schemas/component-defaults.js +1 -1
- package/dist/schemas/component-registry.js +3 -3
- package/dist/schemas/component-union.js +4 -4
- package/dist/schemas/components.d.ts +151 -5
- package/dist/schemas/components.js +14 -4
- package/dist/schemas/document.js +5 -5
- package/dist/schemas/generator.js +4 -4
- package/dist/schemas/theme.d.ts +60 -2
- package/dist/schemas/theme.js +2 -2
- package/package.json +2 -2
- /package/dist/{chunk-3TK45DVZ.js.map → chunk-7O7XPZXS.js.map} +0 -0
- /package/dist/{chunk-HYJ6MU3F.js.map → chunk-B7HWVX62.js.map} +0 -0
- /package/dist/{chunk-ZMZKHRBS.js.map → chunk-M5PJJLWM.js.map} +0 -0
- /package/dist/{chunk-BIJP7NTG.js.map → chunk-X2MWLKFW.js.map} +0 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/validation/image-source-conflicts.ts","../src/validation/unified/index.ts","../src/validation/unified/deep-validator.ts","../src/index.ts"],"sourcesContent":["/**\n * Image source conflict detection (PPTX)\n *\n * Mirrors core-docx: `path`, `base64`, and `svg` are mutually exclusive on the\n * image component, but all three are optional fields on a single object schema —\n * so a multi-source payload passes the structural check and would otherwise be\n * silently resolved by runtime precedence (svg > base64 > path). This walk runs\n * unconditionally during validation and rejects such payloads. It traverses every\n * nested value, so images inside slides, grids, containers, and table cells are\n * all covered regardless of container shape.\n */\n\nimport type { ValidationError } from '@json-to-office/shared';\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 presentation.\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 * Unified validation facade for PPTX.\n *\n * Mirrors the shared-docx `validate` / `validateStrict` API surface the CLI\n * consumes, so `jto pptx validate` gets real schema validation instead of the\n * historical unconditional pass.\n */\n\nimport { Value } from '@sinclair/typebox/value';\nimport type { ValidationError } from '@json-to-office/shared';\nimport { transformValueErrors } from '@json-to-office/shared';\nimport { ThemeConfigSchema } from '../../schemas/theme';\nimport { collectImageSourceConflicts } from '../image-source-conflicts';\nimport {\n comprehensiveValidatePresentation,\n type DeepValidateOptions,\n} from './deep-validator';\n\nexport {\n deepValidatePresentation,\n comprehensiveValidatePresentation,\n} from './deep-validator';\nexport type { DeepValidateOptions } from './deep-validator';\n\nexport interface PptxValidationResult {\n valid: boolean;\n errors: ValidationError[];\n warnings?: ValidationError[];\n documentType?: 'pptx';\n data?: unknown;\n}\n\nfunction parseJsonInput(jsonInput: string | object): {\n parsed?: unknown;\n error?: ValidationError;\n} {\n if (typeof jsonInput !== 'string') return { parsed: jsonInput };\n try {\n return { parsed: JSON.parse(jsonInput) };\n } catch (err: any) {\n return {\n error: {\n path: 'root',\n message: `Invalid JSON: ${err?.message ?? String(err)}`,\n code: 'json_parse_error',\n },\n };\n }\n}\n\n/**\n * Validate a presentation component tree.\n *\n * The deep walk is the source of truth: it re-implements everything the\n * recursive discriminated union checks (component names, per-component props\n * schemas, container narrowing) with precise paths, so we run it directly\n * instead of the union check whose failures collapse into a generic root\n * error. Image-source mutual exclusivity is a semantic rule the structural\n * schema cannot express, so it runs unconditionally on top.\n */\nexport function validatePresentationDocument(\n data: unknown,\n opts: DeepValidateOptions = {}\n): PptxValidationResult {\n const errors = comprehensiveValidatePresentation(data, [], opts);\n errors.push(...collectImageSourceConflicts(data));\n const valid = errors.length === 0;\n return {\n valid,\n errors,\n documentType: 'pptx',\n data: valid ? data : undefined,\n };\n}\n\n/**\n * Validate a presentation from a JSON string or object.\n */\nexport function validateJsonPresentationDocument(\n jsonInput: string | object,\n opts: DeepValidateOptions = {}\n): PptxValidationResult {\n const { parsed, error } = parseJsonInput(jsonInput);\n if (error) return { valid: false, errors: [error], documentType: 'pptx' };\n return validatePresentationDocument(parsed, opts);\n}\n\n/**\n * Validate a PPTX theme config.\n */\nexport function validatePptxTheme(data: unknown): PptxValidationResult {\n if (Value.Check(ThemeConfigSchema, data)) {\n return { valid: true, errors: [], data };\n }\n const valueErrors = [...Value.Errors(ThemeConfigSchema, data)];\n const errors = transformValueErrors(valueErrors, { maxErrors: 100 });\n return { valid: false, errors };\n}\n\n/**\n * Validate a PPTX theme from a JSON string or object.\n */\nexport function validateJsonPptxTheme(\n jsonInput: string | object\n): PptxValidationResult {\n const { parsed, error } = parseJsonInput(jsonInput);\n if (error) return { valid: false, errors: [error] };\n return validatePptxTheme(parsed);\n}\n\n/**\n * Simple validation API — the entry point the CLI consumes.\n */\nexport const validate = {\n document: (data: unknown) => validatePresentationDocument(data),\n jsonDocument: (jsonInput: string | object) =>\n validateJsonPresentationDocument(jsonInput),\n theme: (data: unknown) => validatePptxTheme(data),\n jsonTheme: (jsonInput: string | object) => validateJsonPptxTheme(jsonInput),\n isDocument: (data: unknown) => validatePresentationDocument(data).valid,\n isTheme: (data: unknown) => validatePptxTheme(data).valid,\n};\n\n/**\n * Strict validation API. PPTX deep validation never cleans or applies\n * defaults, so this is currently an alias kept for docx API parity — the CLI\n * picks one of the two based on its --strict flag.\n */\nexport const validateStrict = {\n document: (data: unknown) => validatePresentationDocument(data),\n jsonDocument: (jsonInput: string | object) =>\n validateJsonPresentationDocument(jsonInput),\n theme: (data: unknown) => validatePptxTheme(data),\n jsonTheme: (jsonInput: string | object) => validateJsonPptxTheme(jsonInput),\n};\n","/**\n * Deep validation utilities for collecting ALL errors in nested structures.\n *\n * Mirrors the docx deep validator: the recursive discriminated union\n * (PptxComponentDefinitionSchema) short-circuits on the first mismatch and\n * collapses failures into a generic root error, so this walk visits every\n * component in the tree and validates its props against the real per-component\n * schema, producing precise, path-aware errors.\n */\n\nimport { Value } from '@sinclair/typebox/value';\nimport type { TSchema } from '@sinclair/typebox';\nimport type { ValidationError } from '@json-to-office/shared';\nimport { transformValueErrors } from '@json-to-office/shared';\nimport {\n PPTX_STANDARD_COMPONENTS_REGISTRY,\n getPptxStandardComponent,\n} from '../../schemas/component-registry';\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 presentation\n// root ('pptx') and every standard child component are recognized here.\nconst COMPONENT_SCHEMAS: Record<string, TSchema> = Object.fromEntries(\n PPTX_STANDARD_COMPONENTS_REGISTRY.map((c) => [c.name, c.propsSchema])\n);\n\n// Root component names that may appear at the top of a presentation.\nconst ROOT_COMPONENT_NAMES = new Set(\n PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) =>\n Boolean(c.special?.hasSchemaField)\n ).map((c) => c.name)\n);\n\n// Top-level keys allowed on a component object. The recursive union enforces\n// this via additionalProperties:false; the walk re-checks it so a typo like\n// \"porps\" is reported at a precise path instead of a generic union failure.\nconst COMPONENT_OBJECT_KEYS = new Set([\n 'name',\n 'id',\n 'enabled',\n 'props',\n 'children',\n]);\nconst CUSTOM_COMPONENT_OBJECT_KEYS = new Set([\n ...COMPONENT_OBJECT_KEYS,\n 'version',\n]);\nconst ROOT_OBJECT_KEYS = new Set([...COMPONENT_OBJECT_KEYS, '$schema']);\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 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/**\n * Deep validate a presentation to collect ALL errors, not just union-level errors.\n */\nexport function deepValidatePresentation(\n data: any,\n opts: DeepValidateOptions = {}\n): ValidationError[] {\n const allErrors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n allErrors.push({\n path: 'root',\n message: 'Presentation must be an object',\n code: 'invalid_type',\n });\n return allErrors;\n }\n\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 for (const key of Object.keys(data)) {\n if (!ROOT_OBJECT_KEYS.has(key)) {\n allErrors.push({\n path: `/${key}`,\n message: `Unknown field \"${key}\" on the root component`,\n code: 'unknown_field',\n });\n }\n }\n\n // Validate props when the key is present so explicit `null` (or any falsy\n // non-object) is checked against the component's schema instead of silently\n // passing.\n if (!('props' in data)) {\n allErrors.push({\n path: '/props',\n message: 'Missing required field \"props\"',\n code: 'required_property',\n });\n } else if (ROOT_COMPONENT_NAMES.has(data.name)) {\n allErrors.push(\n ...validateComponentProps(data.name, data.props, '/props', opts)\n );\n }\n\n // The root requires a children array (the slides); nested containers may\n // legitimately omit theirs.\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 walkComponentTree(data, '', opts, allErrors);\n\n return allErrors;\n}\n\n/**\n * Recursively validate every component nested under `node`.\n *\n * Walks two kinds of child position to any depth:\n * - the `children` array — `pptx` holds slides, `slide` holds content\n * components. The registry's `allowedChildren` narrows what each container\n * accepts, and leaf components must not carry children at all; and\n * - a slide's `props.placeholders` record — added dynamically by the\n * component registry on top of the static SlidePropsSchema, so its values\n * are not covered by the slide's own props validation and this walk is\n * their only checker.\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.\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 const validateEntry = (child: any, childPath: string): void => {\n if (!child || typeof child !== 'object' || Array.isArray(child)) {\n errors.push({\n path: childPath,\n message: 'Component must be an object',\n code: 'invalid_type',\n });\n return;\n }\n if (typeof child.name !== 'string' || child.name.length === 0) {\n errors.push({\n path: `${childPath}/name`,\n message: 'Component missing required field \"name\"',\n code: 'required_property',\n });\n return;\n }\n\n // Registered plugin props are validated version-aware by the plugin layer.\n // Their children still need walking: custom containers may hold authored\n // standard components, and those must obey the same prop/tree contract as\n // standard components elsewhere in the presentation.\n const isCustomComponent = opts.knownCustomNames?.has(child.name) ?? false;\n const allowedObjectKeys = isCustomComponent\n ? CUSTOM_COMPONENT_OBJECT_KEYS\n : COMPONENT_OBJECT_KEYS;\n\n for (const key of Object.keys(child)) {\n if (!allowedObjectKeys.has(key)) {\n errors.push({\n path: `${childPath}/${key}`,\n message: `Unknown field \"${key}\" on component \"${child.name}\"`,\n code: 'unknown_field',\n });\n }\n }\n\n if (isCustomComponent) {\n walkComponentTree(child, childPath, opts, errors);\n return;\n }\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. `slide` needs none; `text` requires text).\n const propsPath = `${childPath}/props`;\n if (child.props != null) {\n errors.push(\n ...validateComponentProps(child.name, child.props, propsPath, opts)\n );\n } else {\n errors.push(...validateComponentProps(child.name, {}, propsPath, opts));\n }\n\n const def = getPptxStandardComponent(child.name);\n if (def && !def.hasChildren && child.children != null) {\n errors.push({\n path: `${childPath}/children`,\n message: `Component \"${child.name}\" does not accept children`,\n code: 'invalid_value',\n });\n return;\n }\n\n // Recurse so arbitrarily nested containers are covered.\n walkComponentTree(child, childPath, opts, errors);\n };\n\n const parentDef = getPptxStandardComponent(node.name);\n\n // A slide's `placeholders` record maps placeholder names to full components\n // ({ \"title\": { \"name\": \"text\", ... } }). The static SlidePropsSchema does\n // not include the field (it is injected with the recursive ref at schema\n // generation time), so validateComponentProps strips it before checking the\n // slide's own props — each value is validated here instead.\n if (node.name === 'slide' && node.props && typeof node.props === 'object') {\n const placeholders = node.props.placeholders;\n if (\n placeholders &&\n typeof placeholders === 'object' &&\n !Array.isArray(placeholders)\n ) {\n for (const [key, child] of Object.entries(placeholders)) {\n validateEntry(child, `${path}/props/placeholders/${key}`);\n }\n } else if (placeholders != null) {\n errors.push({\n path: `${path}/props/placeholders`,\n message:\n 'Field \"placeholders\" must be an object mapping placeholder names to components',\n code: 'invalid_type',\n });\n }\n }\n\n if (Array.isArray(node.children)) {\n node.children.forEach((child: any, i: number) => {\n const childPath = `${path}/children/${i}`;\n // Enforce the registry's container narrowing (pptx → slide,\n // slide → content) for known components; unknown names are already\n // reported by validateComponentProps inside validateEntry.\n if (\n parentDef?.allowedChildren &&\n child &&\n typeof child === 'object' &&\n typeof child.name === 'string' &&\n getPptxStandardComponent(child.name) &&\n !parentDef.allowedChildren.includes(child.name)\n ) {\n const expected = parentDef.allowedChildren\n .map((n) => `\"${n}\"`)\n .join(', ');\n errors.push({\n path: `${childPath}/name`,\n message: `Component \"${child.name}\" is not allowed inside \"${node.name}\". Expected ${expected}`,\n code: 'invalid_value',\n });\n }\n validateEntry(child, childPath);\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 deepValidatePresentation (skipped here\n // via `path !== ''` so it is not reported twice).\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 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 path like `…/props/placeholders/title/props`\n // becomes `…/props/placeholders/title/name` rather than mangling an\n // 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 // A slide's `placeholders` field is injected at schema-generation time and\n // absent from the static props schema; its values are walked separately, so\n // strip it here to avoid a false additionalProperties rejection.\n let toCheck = props;\n if (\n componentName === 'slide' &&\n props &&\n typeof props === 'object' &&\n 'placeholders' in props\n ) {\n const rest = { ...props };\n delete rest.placeholders;\n toCheck = rest;\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 if (opts.allowUnknownFields) {\n toCheck = Value.Clean(schema, Value.Clone(toCheck));\n }\n\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 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 into a\n * single generic \"Invalid component configuration for 'pptx'\" 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 comprehensiveValidatePresentation(\n data: any,\n existingErrors: ValidationError[] = [],\n opts: DeepValidateOptions = {}\n): ValidationError[] {\n const deepErrors = deepValidatePresentation(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 ('pptx') 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","export const PPTX_SHARED_VERSION = '1.0.0';\n\n// Component Schemas\nexport {\n PositionSchema,\n SlideBackgroundSchema,\n TransitionSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n PresentationPropsSchema,\n SlidePropsSchema,\n TextPropsSchema,\n PptxImagePropsSchema,\n ShapePropsSchema,\n ShapeTypeSchema,\n PptxTablePropsSchema,\n PptxHighchartsPropsSchema,\n PptxStandardComponentDefinitionSchema,\n PptxComponentDefinitionSchema,\n PptxSlideContentSchema,\n} from './schemas/components';\n\nexport type {\n Position,\n SlideBackground,\n Transition,\n VerticalAlignment,\n Shadow,\n PresentationProps,\n SlideProps,\n TextProps,\n PptxImageProps,\n ShapeType,\n ShapeProps,\n TextSegment,\n PptxTableProps,\n PptxHighchartsProps,\n PptxComponentDefinition,\n PptxSlideContent,\n} from './schemas/components';\n\n// Chart (not re-exported from components barrel)\nexport { PptxChartPropsSchema } from './schemas/components/chart';\nexport type { PptxChartProps } from './schemas/components/chart';\n\n// Component Registry\nexport {\n PPTX_STANDARD_COMPONENTS_REGISTRY,\n getPptxStandardComponent,\n getAllPptxComponentNames,\n getPptxComponentsByCategory,\n getPptxContainerComponents,\n getPptxContentComponents,\n isPptxStandardComponent,\n createPptxComponentSchemaObject,\n createAllPptxComponentSchemas,\n} from './schemas/component-registry';\n\nexport type { PptxStandardComponentDefinition } from './schemas/component-registry';\n\n// Document Schema\nexport {\n PptxJsonComponentDefinitionSchema,\n PPTX_JSON_SCHEMA_URLS,\n} from './schemas/document';\n\nexport type { PptxJsonComponentDefinition } from './schemas/document';\n\n// Schema Export Metadata\nexport {\n PPTX_COMPONENT_METADATA,\n PPTX_BASE_SCHEMA_METADATA,\n} from './schemas/export';\n\n// Component Defaults\nexport {\n PptxComponentDefaultsSchema,\n TextComponentDefaultsSchema,\n ImageComponentDefaultsSchema,\n ShapeComponentDefaultsSchema,\n TableComponentDefaultsSchema,\n HighchartsComponentDefaultsSchema,\n ChartComponentDefaultsSchema,\n} from './schemas/component-defaults';\nexport type {\n PptxComponentDefaults,\n TextComponentDefaults,\n ImageComponentDefaults,\n ShapeComponentDefaults,\n TableComponentDefaults,\n HighchartsComponentDefaults,\n ChartComponentDefaults,\n} from './schemas/component-defaults';\n\n// Theme\nexport {\n ThemeConfigSchema,\n ColorValueSchema,\n SEMANTIC_COLOR_NAMES,\n SEMANTIC_COLOR_ALIASES,\n STYLE_NAMES,\n StyleNameSchema,\n TextStyleSchema,\n isValidThemeConfig,\n} from './schemas/theme';\nexport type { ThemeConfigJson, StyleName, TextStyle } from './schemas/theme';\n\n// Schema Generator\nexport { generateUnifiedDocumentSchema } from './schemas/generator';\nexport type {\n VersionedPropsEntry,\n CustomComponentInfo,\n GenerateSchemaOptions,\n} from './schemas/generator';\n\n// Types\nexport type { ReportComponent } from './types/components';\n\n// Image source conflict detection (path/base64/svg mutual exclusivity)\nexport {\n collectImageSourceConflicts,\n presentImageSources,\n} from './validation/image-source-conflicts';\n\n// Unified validation facade (deep, path-aware validation of whole presentations\n// and themes) — the API the CLI's `pptx validate` consumes.\nexport {\n validate,\n validateStrict,\n validatePresentationDocument,\n validateJsonPresentationDocument,\n validatePptxTheme,\n validateJsonPptxTheme,\n deepValidatePresentation,\n comprehensiveValidatePresentation,\n} from './validation/unified';\nexport type {\n PptxValidationResult,\n DeepValidateOptions,\n} from './validation/unified';\n\n// Re-export shared validation utilities for convenience\nexport {\n transformValueError,\n transformValueErrors,\n DEFAULT_ERROR_CONFIG,\n createErrorConfig,\n} from '@json-to-office/shared';\n\nexport type {\n ErrorFormatterConfig,\n ValidationError,\n} from '@json-to-office/shared';\n\n// Re-export shared utilities\nexport {\n latestVersion,\n isValidSemver,\n parseSemver,\n compareSemver,\n} from '@json-to-office/shared';\nexport type { ParsedSemver } from '@json-to-office/shared';\n\n// Re-export schema utils\nexport {\n fixSchemaReferences,\n convertToJsonSchema,\n createComponentSchema,\n exportSchemaToFile,\n} from '@json-to-office/shared';\nexport type { ComponentSchemaConfig } from '@json-to-office/shared';\n"],"mappings":"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","names":["Value","transformValueErrors","Value","transformValueErrors","transformValueErrors"]}
|
|
1
|
+
{"version":3,"sources":["../src/validation/image-source-conflicts.ts","../src/validation/text-content-conflicts.ts","../src/validation/unified/index.ts","../src/validation/unified/deep-validator.ts","../src/index.ts"],"sourcesContent":["/**\n * Image source conflict detection (PPTX)\n *\n * Mirrors core-docx: `path`, `base64`, and `svg` are mutually exclusive on the\n * image component, but all three are optional fields on a single object schema —\n * so a multi-source payload passes the structural check and would otherwise be\n * silently resolved by runtime precedence (svg > base64 > path). This walk runs\n * unconditionally during validation and rejects such payloads. It traverses every\n * nested value, so images inside slides, grids, containers, and table cells are\n * all covered regardless of container shape.\n */\n\nimport type { ValidationError } from '@json-to-office/shared';\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 presentation.\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 * Text content conflict detection (PPTX)\n *\n * `text` and `runs` are mutually exclusive on the text component, but both are\n * optional fields on a single object schema — so a payload carrying both (or\n * neither) passes the structural check and would otherwise be silently resolved\n * by runtime precedence. This walk runs unconditionally during validation and\n * rejects such payloads. It traverses every nested value, so text components\n * inside slides, placeholders, and template objects are all covered.\n *\n * Placeholder `defaults` stubs are exempt from the \"neither\" rule: they carry\n * styling defaults only, and the actual content arrives with the component\n * placed in the placeholder.\n */\n\nimport type { ValidationError } from '@json-to-office/shared';\n\n/**\n * Collect `text`/`runs` mutual-exclusivity conflicts anywhere in a presentation.\n */\nexport function collectTextContentConflicts(data: unknown): ValidationError[] {\n const errors: ValidationError[] = [];\n\n const visit = (node: any, path: string, parentKey: string): void => {\n if (Array.isArray(node)) {\n node.forEach((item, i) => visit(item, `${path}/${i}`, parentKey));\n return;\n }\n if (!node || typeof node !== 'object') return;\n\n if (node.name === 'text' && node.props && typeof node.props === 'object') {\n const hasText = typeof node.props.text === 'string';\n const hasRuns = Array.isArray(node.props.runs);\n if (hasText && hasRuns) {\n errors.push({\n path: `${path}/props`,\n message:\n 'Text component accepts either \"text\" or \"runs\", not both. Use exactly one of the two.',\n code: 'mutually_exclusive',\n });\n } else if (!hasText && !hasRuns && parentKey !== 'defaults') {\n errors.push({\n path: `${path}/props`,\n message:\n 'Text component requires content: set either \"text\" or \"runs\".',\n code: 'required_property',\n });\n }\n }\n\n for (const key of Object.keys(node)) {\n visit(node[key], `${path}/${key}`, key);\n }\n };\n\n visit(data, '', '');\n return errors;\n}\n","/**\n * Unified validation facade for PPTX.\n *\n * Mirrors the shared-docx `validate` / `validateStrict` API surface the CLI\n * consumes, so `jto pptx validate` gets real schema validation instead of the\n * historical unconditional pass.\n */\n\nimport { Value } from '@sinclair/typebox/value';\nimport type { ValidationError } from '@json-to-office/shared';\nimport { transformValueErrors } from '@json-to-office/shared';\nimport { ThemeConfigSchema } from '../../schemas/theme';\nimport { collectImageSourceConflicts } from '../image-source-conflicts';\nimport { collectTextContentConflicts } from '../text-content-conflicts';\nimport {\n comprehensiveValidatePresentation,\n type DeepValidateOptions,\n} from './deep-validator';\n\nexport {\n deepValidatePresentation,\n comprehensiveValidatePresentation,\n} from './deep-validator';\nexport type { DeepValidateOptions } from './deep-validator';\n\nexport interface PptxValidationResult {\n valid: boolean;\n errors: ValidationError[];\n warnings?: ValidationError[];\n documentType?: 'pptx';\n data?: unknown;\n}\n\nfunction parseJsonInput(jsonInput: string | object): {\n parsed?: unknown;\n error?: ValidationError;\n} {\n if (typeof jsonInput !== 'string') return { parsed: jsonInput };\n try {\n return { parsed: JSON.parse(jsonInput) };\n } catch (err: any) {\n return {\n error: {\n path: 'root',\n message: `Invalid JSON: ${err?.message ?? String(err)}`,\n code: 'json_parse_error',\n },\n };\n }\n}\n\n/**\n * Validate a presentation component tree.\n *\n * The deep walk is the source of truth: it re-implements everything the\n * recursive discriminated union checks (component names, per-component props\n * schemas, container narrowing) with precise paths, so we run it directly\n * instead of the union check whose failures collapse into a generic root\n * error. Image-source mutual exclusivity is a semantic rule the structural\n * schema cannot express, so it runs unconditionally on top.\n */\nexport function validatePresentationDocument(\n data: unknown,\n opts: DeepValidateOptions = {}\n): PptxValidationResult {\n const errors = comprehensiveValidatePresentation(data, [], opts);\n errors.push(...collectImageSourceConflicts(data));\n errors.push(...collectTextContentConflicts(data));\n const valid = errors.length === 0;\n return {\n valid,\n errors,\n documentType: 'pptx',\n data: valid ? data : undefined,\n };\n}\n\n/**\n * Validate a presentation from a JSON string or object.\n */\nexport function validateJsonPresentationDocument(\n jsonInput: string | object,\n opts: DeepValidateOptions = {}\n): PptxValidationResult {\n const { parsed, error } = parseJsonInput(jsonInput);\n if (error) return { valid: false, errors: [error], documentType: 'pptx' };\n return validatePresentationDocument(parsed, opts);\n}\n\n/**\n * Validate a PPTX theme config.\n */\nexport function validatePptxTheme(data: unknown): PptxValidationResult {\n if (Value.Check(ThemeConfigSchema, data)) {\n return { valid: true, errors: [], data };\n }\n const valueErrors = [...Value.Errors(ThemeConfigSchema, data)];\n const errors = transformValueErrors(valueErrors, { maxErrors: 100 });\n return { valid: false, errors };\n}\n\n/**\n * Validate a PPTX theme from a JSON string or object.\n */\nexport function validateJsonPptxTheme(\n jsonInput: string | object\n): PptxValidationResult {\n const { parsed, error } = parseJsonInput(jsonInput);\n if (error) return { valid: false, errors: [error] };\n return validatePptxTheme(parsed);\n}\n\n/**\n * Simple validation API — the entry point the CLI consumes.\n */\nexport const validate = {\n document: (data: unknown) => validatePresentationDocument(data),\n jsonDocument: (jsonInput: string | object) =>\n validateJsonPresentationDocument(jsonInput),\n theme: (data: unknown) => validatePptxTheme(data),\n jsonTheme: (jsonInput: string | object) => validateJsonPptxTheme(jsonInput),\n isDocument: (data: unknown) => validatePresentationDocument(data).valid,\n isTheme: (data: unknown) => validatePptxTheme(data).valid,\n};\n\n/**\n * Strict validation API. PPTX deep validation never cleans or applies\n * defaults, so this is currently an alias kept for docx API parity — the CLI\n * picks one of the two based on its --strict flag.\n */\nexport const validateStrict = {\n document: (data: unknown) => validatePresentationDocument(data),\n jsonDocument: (jsonInput: string | object) =>\n validateJsonPresentationDocument(jsonInput),\n theme: (data: unknown) => validatePptxTheme(data),\n jsonTheme: (jsonInput: string | object) => validateJsonPptxTheme(jsonInput),\n};\n","/**\n * Deep validation utilities for collecting ALL errors in nested structures.\n *\n * Mirrors the docx deep validator: the recursive discriminated union\n * (PptxComponentDefinitionSchema) short-circuits on the first mismatch and\n * collapses failures into a generic root error, so this walk visits every\n * component in the tree and validates its props against the real per-component\n * schema, producing precise, path-aware errors.\n */\n\nimport { Value } from '@sinclair/typebox/value';\nimport type { TSchema } from '@sinclair/typebox';\nimport type { ValidationError } from '@json-to-office/shared';\nimport { transformValueErrors } from '@json-to-office/shared';\nimport {\n PPTX_STANDARD_COMPONENTS_REGISTRY,\n getPptxStandardComponent,\n} from '../../schemas/component-registry';\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 presentation\n// root ('pptx') and every standard child component are recognized here.\nconst COMPONENT_SCHEMAS: Record<string, TSchema> = Object.fromEntries(\n PPTX_STANDARD_COMPONENTS_REGISTRY.map((c) => [c.name, c.propsSchema])\n);\n\n// Root component names that may appear at the top of a presentation.\nconst ROOT_COMPONENT_NAMES = new Set(\n PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) =>\n Boolean(c.special?.hasSchemaField)\n ).map((c) => c.name)\n);\n\n// Top-level keys allowed on a component object. The recursive union enforces\n// this via additionalProperties:false; the walk re-checks it so a typo like\n// \"porps\" is reported at a precise path instead of a generic union failure.\nconst COMPONENT_OBJECT_KEYS = new Set([\n 'name',\n 'id',\n 'enabled',\n 'props',\n 'children',\n]);\nconst CUSTOM_COMPONENT_OBJECT_KEYS = new Set([\n ...COMPONENT_OBJECT_KEYS,\n 'version',\n]);\nconst ROOT_OBJECT_KEYS = new Set([...COMPONENT_OBJECT_KEYS, '$schema']);\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 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/**\n * Deep validate a presentation to collect ALL errors, not just union-level errors.\n */\nexport function deepValidatePresentation(\n data: any,\n opts: DeepValidateOptions = {}\n): ValidationError[] {\n const allErrors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n allErrors.push({\n path: 'root',\n message: 'Presentation must be an object',\n code: 'invalid_type',\n });\n return allErrors;\n }\n\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 for (const key of Object.keys(data)) {\n if (!ROOT_OBJECT_KEYS.has(key)) {\n allErrors.push({\n path: `/${key}`,\n message: `Unknown field \"${key}\" on the root component`,\n code: 'unknown_field',\n });\n }\n }\n\n // Validate props when the key is present so explicit `null` (or any falsy\n // non-object) is checked against the component's schema instead of silently\n // passing.\n if (!('props' in data)) {\n allErrors.push({\n path: '/props',\n message: 'Missing required field \"props\"',\n code: 'required_property',\n });\n } else if (ROOT_COMPONENT_NAMES.has(data.name)) {\n allErrors.push(\n ...validateComponentProps(data.name, data.props, '/props', opts)\n );\n }\n\n // The root requires a children array (the slides); nested containers may\n // legitimately omit theirs.\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 walkComponentTree(data, '', opts, allErrors);\n\n return allErrors;\n}\n\n/**\n * Recursively validate every component nested under `node`.\n *\n * Walks two kinds of child position to any depth:\n * - the `children` array — `pptx` holds slides, `slide` holds content\n * components. The registry's `allowedChildren` narrows what each container\n * accepts, and leaf components must not carry children at all; and\n * - a slide's `props.placeholders` record — added dynamically by the\n * component registry on top of the static SlidePropsSchema, so its values\n * are not covered by the slide's own props validation and this walk is\n * their only checker.\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.\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 const validateEntry = (child: any, childPath: string): void => {\n if (!child || typeof child !== 'object' || Array.isArray(child)) {\n errors.push({\n path: childPath,\n message: 'Component must be an object',\n code: 'invalid_type',\n });\n return;\n }\n if (typeof child.name !== 'string' || child.name.length === 0) {\n errors.push({\n path: `${childPath}/name`,\n message: 'Component missing required field \"name\"',\n code: 'required_property',\n });\n return;\n }\n\n // Registered plugin props are validated version-aware by the plugin layer.\n // Their children still need walking: custom containers may hold authored\n // standard components, and those must obey the same prop/tree contract as\n // standard components elsewhere in the presentation.\n const isCustomComponent = opts.knownCustomNames?.has(child.name) ?? false;\n const allowedObjectKeys = isCustomComponent\n ? CUSTOM_COMPONENT_OBJECT_KEYS\n : COMPONENT_OBJECT_KEYS;\n\n for (const key of Object.keys(child)) {\n if (!allowedObjectKeys.has(key)) {\n errors.push({\n path: `${childPath}/${key}`,\n message: `Unknown field \"${key}\" on component \"${child.name}\"`,\n code: 'unknown_field',\n });\n }\n }\n\n if (isCustomComponent) {\n walkComponentTree(child, childPath, opts, errors);\n return;\n }\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. `slide` needs none; `text` requires text).\n const propsPath = `${childPath}/props`;\n if (child.props != null) {\n errors.push(\n ...validateComponentProps(child.name, child.props, propsPath, opts)\n );\n } else {\n errors.push(...validateComponentProps(child.name, {}, propsPath, opts));\n }\n\n const def = getPptxStandardComponent(child.name);\n if (def && !def.hasChildren && child.children != null) {\n errors.push({\n path: `${childPath}/children`,\n message: `Component \"${child.name}\" does not accept children`,\n code: 'invalid_value',\n });\n return;\n }\n\n // Recurse so arbitrarily nested containers are covered.\n walkComponentTree(child, childPath, opts, errors);\n };\n\n const parentDef = getPptxStandardComponent(node.name);\n\n // A slide's `placeholders` record maps placeholder names to full components\n // ({ \"title\": { \"name\": \"text\", ... } }). The static SlidePropsSchema does\n // not include the field (it is injected with the recursive ref at schema\n // generation time), so validateComponentProps strips it before checking the\n // slide's own props — each value is validated here instead.\n if (node.name === 'slide' && node.props && typeof node.props === 'object') {\n const placeholders = node.props.placeholders;\n if (\n placeholders &&\n typeof placeholders === 'object' &&\n !Array.isArray(placeholders)\n ) {\n for (const [key, child] of Object.entries(placeholders)) {\n validateEntry(child, `${path}/props/placeholders/${key}`);\n }\n } else if (placeholders != null) {\n errors.push({\n path: `${path}/props/placeholders`,\n message:\n 'Field \"placeholders\" must be an object mapping placeholder names to components',\n code: 'invalid_type',\n });\n }\n }\n\n if (Array.isArray(node.children)) {\n node.children.forEach((child: any, i: number) => {\n const childPath = `${path}/children/${i}`;\n // Enforce the registry's container narrowing (pptx → slide,\n // slide → content) for known components; unknown names are already\n // reported by validateComponentProps inside validateEntry.\n if (\n parentDef?.allowedChildren &&\n child &&\n typeof child === 'object' &&\n typeof child.name === 'string' &&\n getPptxStandardComponent(child.name) &&\n !parentDef.allowedChildren.includes(child.name)\n ) {\n const expected = parentDef.allowedChildren\n .map((n) => `\"${n}\"`)\n .join(', ');\n errors.push({\n path: `${childPath}/name`,\n message: `Component \"${child.name}\" is not allowed inside \"${node.name}\". Expected ${expected}`,\n code: 'invalid_value',\n });\n }\n validateEntry(child, childPath);\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 deepValidatePresentation (skipped here\n // via `path !== ''` so it is not reported twice).\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 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 path like `…/props/placeholders/title/props`\n // becomes `…/props/placeholders/title/name` rather than mangling an\n // 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 // A slide's `placeholders` field is injected at schema-generation time and\n // absent from the static props schema; its values are walked separately, so\n // strip it here to avoid a false additionalProperties rejection.\n let toCheck = props;\n if (\n componentName === 'slide' &&\n props &&\n typeof props === 'object' &&\n 'placeholders' in props\n ) {\n const rest = { ...props };\n delete rest.placeholders;\n toCheck = rest;\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 if (opts.allowUnknownFields) {\n toCheck = Value.Clean(schema, Value.Clone(toCheck));\n }\n\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 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 into a\n * single generic \"Invalid component configuration for 'pptx'\" 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 comprehensiveValidatePresentation(\n data: any,\n existingErrors: ValidationError[] = [],\n opts: DeepValidateOptions = {}\n): ValidationError[] {\n const deepErrors = deepValidatePresentation(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 ('pptx') 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","export const PPTX_SHARED_VERSION = '1.0.0';\n\n// Component Schemas\nexport {\n PositionSchema,\n SlideBackgroundSchema,\n TransitionSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n PresentationPropsSchema,\n SlidePropsSchema,\n TextPropsSchema,\n TextRunSchema,\n PptxImagePropsSchema,\n ShapePropsSchema,\n ShapeTypeSchema,\n GradientStopSchema,\n GradientFillSchema,\n PatternFillSchema,\n PATTERN_FILL_PRESETS,\n PptxTablePropsSchema,\n PptxHighchartsPropsSchema,\n PptxStandardComponentDefinitionSchema,\n PptxComponentDefinitionSchema,\n PptxSlideContentSchema,\n} from './schemas/components';\n\nexport type {\n Position,\n SlideBackground,\n Transition,\n VerticalAlignment,\n Shadow,\n PresentationProps,\n SlideProps,\n TextProps,\n TextRun,\n PptxImageProps,\n ShapeType,\n ShapeProps,\n TextSegment,\n GradientStop,\n GradientFill,\n PatternFill,\n PptxTableProps,\n PptxHighchartsProps,\n PptxComponentDefinition,\n PptxSlideContent,\n} from './schemas/components';\n\n// Chart (not re-exported from components barrel)\nexport { PptxChartPropsSchema } from './schemas/components/chart';\nexport type { PptxChartProps } from './schemas/components/chart';\n\n// Component Registry\nexport {\n PPTX_STANDARD_COMPONENTS_REGISTRY,\n getPptxStandardComponent,\n getAllPptxComponentNames,\n getPptxComponentsByCategory,\n getPptxContainerComponents,\n getPptxContentComponents,\n isPptxStandardComponent,\n createPptxComponentSchemaObject,\n createAllPptxComponentSchemas,\n} from './schemas/component-registry';\n\nexport type { PptxStandardComponentDefinition } from './schemas/component-registry';\n\n// Document Schema\nexport {\n PptxJsonComponentDefinitionSchema,\n PPTX_JSON_SCHEMA_URLS,\n} from './schemas/document';\n\nexport type { PptxJsonComponentDefinition } from './schemas/document';\n\n// Schema Export Metadata\nexport {\n PPTX_COMPONENT_METADATA,\n PPTX_BASE_SCHEMA_METADATA,\n} from './schemas/export';\n\n// Component Defaults\nexport {\n PptxComponentDefaultsSchema,\n TextComponentDefaultsSchema,\n ImageComponentDefaultsSchema,\n ShapeComponentDefaultsSchema,\n TableComponentDefaultsSchema,\n HighchartsComponentDefaultsSchema,\n ChartComponentDefaultsSchema,\n} from './schemas/component-defaults';\nexport type {\n PptxComponentDefaults,\n TextComponentDefaults,\n ImageComponentDefaults,\n ShapeComponentDefaults,\n TableComponentDefaults,\n HighchartsComponentDefaults,\n ChartComponentDefaults,\n} from './schemas/component-defaults';\n\n// Theme\nexport {\n ThemeConfigSchema,\n ColorValueSchema,\n SEMANTIC_COLOR_NAMES,\n SEMANTIC_COLOR_ALIASES,\n STYLE_NAMES,\n StyleNameSchema,\n TextStyleSchema,\n isValidThemeConfig,\n} from './schemas/theme';\nexport type { ThemeConfigJson, StyleName, TextStyle } from './schemas/theme';\n\n// Schema Generator\nexport { generateUnifiedDocumentSchema } from './schemas/generator';\nexport type {\n VersionedPropsEntry,\n CustomComponentInfo,\n GenerateSchemaOptions,\n} from './schemas/generator';\n\n// Types\nexport type { ReportComponent } from './types/components';\n\n// Image source conflict detection (path/base64/svg mutual exclusivity)\nexport {\n collectImageSourceConflicts,\n presentImageSources,\n} from './validation/image-source-conflicts';\n\n// Text content conflict detection (text/runs mutual exclusivity)\nexport { collectTextContentConflicts } from './validation/text-content-conflicts';\n\n// Unified validation facade (deep, path-aware validation of whole presentations\n// and themes) — the API the CLI's `pptx validate` consumes.\nexport {\n validate,\n validateStrict,\n validatePresentationDocument,\n validateJsonPresentationDocument,\n validatePptxTheme,\n validateJsonPptxTheme,\n deepValidatePresentation,\n comprehensiveValidatePresentation,\n} from './validation/unified';\nexport type {\n PptxValidationResult,\n DeepValidateOptions,\n} from './validation/unified';\n\n// Re-export shared validation utilities for convenience\nexport {\n transformValueError,\n transformValueErrors,\n DEFAULT_ERROR_CONFIG,\n createErrorConfig,\n} from '@json-to-office/shared';\n\nexport type {\n ErrorFormatterConfig,\n ValidationError,\n} from '@json-to-office/shared';\n\n// Re-export shared utilities\nexport {\n latestVersion,\n isValidSemver,\n parseSemver,\n compareSemver,\n} from '@json-to-office/shared';\nexport type { ParsedSemver } from '@json-to-office/shared';\n\n// Re-export schema utils\nexport {\n fixSchemaReferences,\n convertToJsonSchema,\n createComponentSchema,\n exportSchemaToFile,\n} from '@json-to-office/shared';\nexport type { ComponentSchemaConfig } from '@json-to-office/shared';\n"],"mappings":"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","names":["Value","transformValueErrors","Value","transformValueErrors","transformValueErrors"]}
|
|
@@ -3,6 +3,24 @@ import { Static } from '@sinclair/typebox';
|
|
|
3
3
|
|
|
4
4
|
declare const TextComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
5
5
|
text: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
6
|
+
runs: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TObject<{
|
|
7
|
+
text: _sinclair_typebox.TString;
|
|
8
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
9
|
+
bold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
10
|
+
fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
11
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
12
|
+
underline: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TBoolean, _sinclair_typebox.TObject<{
|
|
13
|
+
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"sng">, _sinclair_typebox.TLiteral<"dbl">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dotted">]>>;
|
|
14
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
15
|
+
}>]>>;
|
|
16
|
+
strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
17
|
+
fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
18
|
+
fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
19
|
+
superscript: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
20
|
+
subscript: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
21
|
+
charSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
22
|
+
breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
23
|
+
}>>>;
|
|
6
24
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
7
25
|
y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
8
26
|
w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
@@ -47,6 +65,7 @@ declare const TextComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
47
65
|
tooltip: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
48
66
|
}>>;
|
|
49
67
|
lineSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
68
|
+
lineSpacingMultiple: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
50
69
|
charSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
51
70
|
paraSpaceBefore: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
52
71
|
paraSpaceAfter: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -95,14 +114,29 @@ declare const ImageComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
95
114
|
}>>;
|
|
96
115
|
}>;
|
|
97
116
|
declare const ShapeComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
98
|
-
type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"rect">, _sinclair_typebox.TLiteral<"roundRect">, _sinclair_typebox.TLiteral<"ellipse">, _sinclair_typebox.TLiteral<"triangle">, _sinclair_typebox.TLiteral<"diamond">, _sinclair_typebox.TLiteral<"pentagon">, _sinclair_typebox.TLiteral<"hexagon">, _sinclair_typebox.TLiteral<"star5">, _sinclair_typebox.TLiteral<"star6">, _sinclair_typebox.TLiteral<"line">, _sinclair_typebox.TLiteral<"arrow">, _sinclair_typebox.TLiteral<"chevron">, _sinclair_typebox.TLiteral<"cloud">, _sinclair_typebox.TLiteral<"heart">, _sinclair_typebox.TLiteral<"lightning">]>>;
|
|
117
|
+
type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"rect">, _sinclair_typebox.TLiteral<"roundRect">, _sinclair_typebox.TLiteral<"ellipse">, _sinclair_typebox.TLiteral<"triangle">, _sinclair_typebox.TLiteral<"diamond">, _sinclair_typebox.TLiteral<"pentagon">, _sinclair_typebox.TLiteral<"hexagon">, _sinclair_typebox.TLiteral<"star5">, _sinclair_typebox.TLiteral<"star6">, _sinclair_typebox.TLiteral<"line">, _sinclair_typebox.TLiteral<"arc">, _sinclair_typebox.TLiteral<"pie">, _sinclair_typebox.TLiteral<"blockArc">, _sinclair_typebox.TLiteral<"chord">, _sinclair_typebox.TLiteral<"arrow">, _sinclair_typebox.TLiteral<"chevron">, _sinclair_typebox.TLiteral<"cloud">, _sinclair_typebox.TLiteral<"heart">, _sinclair_typebox.TLiteral<"lightning">]>>;
|
|
99
118
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
100
119
|
y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
101
120
|
w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
102
121
|
h: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
103
122
|
fill: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
104
|
-
color: _sinclair_typebox.TString
|
|
123
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
105
124
|
transparency: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
125
|
+
gradient: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
126
|
+
type: _sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"linear">, _sinclair_typebox.TLiteral<"radial">]>;
|
|
127
|
+
angle: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
128
|
+
stops: _sinclair_typebox.TArray<_sinclair_typebox.TObject<{
|
|
129
|
+
color: _sinclair_typebox.TString;
|
|
130
|
+
pos: _sinclair_typebox.TNumber;
|
|
131
|
+
transparency: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
132
|
+
}>>;
|
|
133
|
+
focus: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"topLeft">, _sinclair_typebox.TLiteral<"topRight">, _sinclair_typebox.TLiteral<"bottomLeft">, _sinclair_typebox.TLiteral<"bottomRight">]>>;
|
|
134
|
+
}>>;
|
|
135
|
+
pattern: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
136
|
+
preset: _sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"pct5" | "pct10" | "pct20" | "pct25" | "pct30" | "pct40" | "pct50" | "pct60" | "pct70" | "pct75" | "pct80" | "pct90" | "horz" | "vert" | "ltHorz" | "ltVert" | "dkHorz" | "dkVert" | "narHorz" | "narVert" | "dashHorz" | "dashVert" | "cross" | "dnDiag" | "upDiag" | "ltDnDiag" | "ltUpDiag" | "dkDnDiag" | "dkUpDiag" | "wdDnDiag" | "wdUpDiag" | "dashDnDiag" | "dashUpDiag" | "diagCross" | "smCheck" | "lgCheck" | "smGrid" | "lgGrid" | "dotGrid" | "smConfetti" | "lgConfetti" | "horzBrick" | "diagBrick" | "solidDmnd" | "openDmnd" | "dotDmnd" | "plaid" | "sphere" | "weave" | "divot" | "shingle" | "wave" | "trellis" | "zigZag">[]>;
|
|
137
|
+
foreground: _sinclair_typebox.TString;
|
|
138
|
+
background: _sinclair_typebox.TString;
|
|
139
|
+
}>>;
|
|
106
140
|
}>>;
|
|
107
141
|
line: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
108
142
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
@@ -132,6 +166,9 @@ declare const ShapeComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
132
166
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
133
167
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
134
168
|
rotate: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
169
|
+
angleRange: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TNumber>>;
|
|
170
|
+
flipH: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
171
|
+
flipV: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
135
172
|
shadow: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
136
173
|
type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"outer">, _sinclair_typebox.TLiteral<"inner">]>>;
|
|
137
174
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TString, ...(_sinclair_typebox.TLiteral<"text" | "primary" | "secondary" | "accent" | "background" | "text2" | "background2" | "accent4" | "accent5" | "accent6"> | _sinclair_typebox.TLiteral<"accent1" | "accent2" | "accent3" | "tx1" | "tx2" | "bg1" | "bg2">)[]]>>;
|
|
@@ -237,6 +274,10 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
237
274
|
titleColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
238
275
|
titleFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
239
276
|
chartColors: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
|
|
277
|
+
dataBorder: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
278
|
+
pt: _sinclair_typebox.TNumber;
|
|
279
|
+
color: _sinclair_typebox.TString;
|
|
280
|
+
}>>;
|
|
240
281
|
legendPos: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"tr">]>>;
|
|
241
282
|
legendFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
242
283
|
legendFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
@@ -246,6 +287,12 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
246
287
|
catAxisLabelRotate: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
247
288
|
catAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
248
289
|
catAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
290
|
+
catAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
291
|
+
catGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
292
|
+
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
293
|
+
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
294
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
295
|
+
}>>;
|
|
249
296
|
valAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
250
297
|
valAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
251
298
|
valAxisMinVal: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -253,12 +300,23 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
253
300
|
valAxisLabelFormatCode: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
254
301
|
valAxisMajorUnit: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
255
302
|
valAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
303
|
+
valAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
304
|
+
valAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
305
|
+
valGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
306
|
+
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
307
|
+
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
308
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
309
|
+
}>>;
|
|
310
|
+
catAxisLineShow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
311
|
+
valAxisLineShow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
256
312
|
barDir: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"bar">, _sinclair_typebox.TLiteral<"col">]>>;
|
|
257
313
|
barGrouping: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"clustered">, _sinclair_typebox.TLiteral<"stacked">, _sinclair_typebox.TLiteral<"percentStacked">]>>;
|
|
258
314
|
barGapWidthPct: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
315
|
+
barOverlapPct: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
259
316
|
lineSmooth: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
260
317
|
lineDataSymbol: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"circle">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"diamond">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">, _sinclair_typebox.TLiteral<"square">, _sinclair_typebox.TLiteral<"triangle">]>>;
|
|
261
318
|
lineSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
319
|
+
lineDataSymbolSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
262
320
|
firstSliceAng: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
263
321
|
holeSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
264
322
|
radarStyle: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"standard">, _sinclair_typebox.TLiteral<"marker">, _sinclair_typebox.TLiteral<"filled">]>>;
|
|
@@ -281,6 +339,24 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
281
339
|
declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
282
340
|
text: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
283
341
|
text: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
342
|
+
runs: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TObject<{
|
|
343
|
+
text: _sinclair_typebox.TString;
|
|
344
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
345
|
+
bold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
346
|
+
fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
347
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
348
|
+
underline: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TBoolean, _sinclair_typebox.TObject<{
|
|
349
|
+
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"sng">, _sinclair_typebox.TLiteral<"dbl">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dotted">]>>;
|
|
350
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
351
|
+
}>]>>;
|
|
352
|
+
strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
353
|
+
fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
354
|
+
fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
355
|
+
superscript: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
356
|
+
subscript: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
357
|
+
charSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
358
|
+
breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
359
|
+
}>>>;
|
|
284
360
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
285
361
|
y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
286
362
|
w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
@@ -325,6 +401,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
325
401
|
tooltip: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
326
402
|
}>>;
|
|
327
403
|
lineSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
404
|
+
lineSpacingMultiple: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
328
405
|
charSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
329
406
|
paraSpaceBefore: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
330
407
|
paraSpaceAfter: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -373,14 +450,29 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
373
450
|
}>>;
|
|
374
451
|
}>>;
|
|
375
452
|
shape: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
376
|
-
type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"rect">, _sinclair_typebox.TLiteral<"roundRect">, _sinclair_typebox.TLiteral<"ellipse">, _sinclair_typebox.TLiteral<"triangle">, _sinclair_typebox.TLiteral<"diamond">, _sinclair_typebox.TLiteral<"pentagon">, _sinclair_typebox.TLiteral<"hexagon">, _sinclair_typebox.TLiteral<"star5">, _sinclair_typebox.TLiteral<"star6">, _sinclair_typebox.TLiteral<"line">, _sinclair_typebox.TLiteral<"arrow">, _sinclair_typebox.TLiteral<"chevron">, _sinclair_typebox.TLiteral<"cloud">, _sinclair_typebox.TLiteral<"heart">, _sinclair_typebox.TLiteral<"lightning">]>>;
|
|
453
|
+
type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"rect">, _sinclair_typebox.TLiteral<"roundRect">, _sinclair_typebox.TLiteral<"ellipse">, _sinclair_typebox.TLiteral<"triangle">, _sinclair_typebox.TLiteral<"diamond">, _sinclair_typebox.TLiteral<"pentagon">, _sinclair_typebox.TLiteral<"hexagon">, _sinclair_typebox.TLiteral<"star5">, _sinclair_typebox.TLiteral<"star6">, _sinclair_typebox.TLiteral<"line">, _sinclair_typebox.TLiteral<"arc">, _sinclair_typebox.TLiteral<"pie">, _sinclair_typebox.TLiteral<"blockArc">, _sinclair_typebox.TLiteral<"chord">, _sinclair_typebox.TLiteral<"arrow">, _sinclair_typebox.TLiteral<"chevron">, _sinclair_typebox.TLiteral<"cloud">, _sinclair_typebox.TLiteral<"heart">, _sinclair_typebox.TLiteral<"lightning">]>>;
|
|
377
454
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
378
455
|
y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
379
456
|
w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
380
457
|
h: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
381
458
|
fill: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
382
|
-
color: _sinclair_typebox.TString
|
|
459
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
383
460
|
transparency: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
461
|
+
gradient: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
462
|
+
type: _sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"linear">, _sinclair_typebox.TLiteral<"radial">]>;
|
|
463
|
+
angle: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
464
|
+
stops: _sinclair_typebox.TArray<_sinclair_typebox.TObject<{
|
|
465
|
+
color: _sinclair_typebox.TString;
|
|
466
|
+
pos: _sinclair_typebox.TNumber;
|
|
467
|
+
transparency: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
468
|
+
}>>;
|
|
469
|
+
focus: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"topLeft">, _sinclair_typebox.TLiteral<"topRight">, _sinclair_typebox.TLiteral<"bottomLeft">, _sinclair_typebox.TLiteral<"bottomRight">]>>;
|
|
470
|
+
}>>;
|
|
471
|
+
pattern: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
472
|
+
preset: _sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"pct5" | "pct10" | "pct20" | "pct25" | "pct30" | "pct40" | "pct50" | "pct60" | "pct70" | "pct75" | "pct80" | "pct90" | "horz" | "vert" | "ltHorz" | "ltVert" | "dkHorz" | "dkVert" | "narHorz" | "narVert" | "dashHorz" | "dashVert" | "cross" | "dnDiag" | "upDiag" | "ltDnDiag" | "ltUpDiag" | "dkDnDiag" | "dkUpDiag" | "wdDnDiag" | "wdUpDiag" | "dashDnDiag" | "dashUpDiag" | "diagCross" | "smCheck" | "lgCheck" | "smGrid" | "lgGrid" | "dotGrid" | "smConfetti" | "lgConfetti" | "horzBrick" | "diagBrick" | "solidDmnd" | "openDmnd" | "dotDmnd" | "plaid" | "sphere" | "weave" | "divot" | "shingle" | "wave" | "trellis" | "zigZag">[]>;
|
|
473
|
+
foreground: _sinclair_typebox.TString;
|
|
474
|
+
background: _sinclair_typebox.TString;
|
|
475
|
+
}>>;
|
|
384
476
|
}>>;
|
|
385
477
|
line: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
386
478
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
@@ -410,6 +502,9 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
410
502
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
411
503
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
412
504
|
rotate: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
505
|
+
angleRange: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TNumber>>;
|
|
506
|
+
flipH: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
507
|
+
flipV: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
413
508
|
shadow: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
414
509
|
type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"outer">, _sinclair_typebox.TLiteral<"inner">]>>;
|
|
415
510
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TString, ...(_sinclair_typebox.TLiteral<"text" | "primary" | "secondary" | "accent" | "background" | "text2" | "background2" | "accent4" | "accent5" | "accent6"> | _sinclair_typebox.TLiteral<"accent1" | "accent2" | "accent3" | "tx1" | "tx2" | "bg1" | "bg2">)[]]>>;
|
|
@@ -515,6 +610,10 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
515
610
|
titleColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
516
611
|
titleFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
517
612
|
chartColors: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
|
|
613
|
+
dataBorder: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
614
|
+
pt: _sinclair_typebox.TNumber;
|
|
615
|
+
color: _sinclair_typebox.TString;
|
|
616
|
+
}>>;
|
|
518
617
|
legendPos: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"tr">]>>;
|
|
519
618
|
legendFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
520
619
|
legendFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
@@ -524,6 +623,12 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
524
623
|
catAxisLabelRotate: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
525
624
|
catAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
526
625
|
catAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
626
|
+
catAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
627
|
+
catGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
628
|
+
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
629
|
+
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
630
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
631
|
+
}>>;
|
|
527
632
|
valAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
528
633
|
valAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
529
634
|
valAxisMinVal: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -531,12 +636,23 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
531
636
|
valAxisLabelFormatCode: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
532
637
|
valAxisMajorUnit: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
533
638
|
valAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
639
|
+
valAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
640
|
+
valAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
641
|
+
valGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
642
|
+
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
643
|
+
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
644
|
+
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
645
|
+
}>>;
|
|
646
|
+
catAxisLineShow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
647
|
+
valAxisLineShow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
534
648
|
barDir: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"bar">, _sinclair_typebox.TLiteral<"col">]>>;
|
|
535
649
|
barGrouping: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"clustered">, _sinclair_typebox.TLiteral<"stacked">, _sinclair_typebox.TLiteral<"percentStacked">]>>;
|
|
536
650
|
barGapWidthPct: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
651
|
+
barOverlapPct: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
537
652
|
lineSmooth: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
538
653
|
lineDataSymbol: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"circle">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"diamond">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">, _sinclair_typebox.TLiteral<"square">, _sinclair_typebox.TLiteral<"triangle">]>>;
|
|
539
654
|
lineSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
655
|
+
lineDataSymbolSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
540
656
|
firstSliceAng: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
541
657
|
holeSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
542
658
|
radarStyle: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"standard">, _sinclair_typebox.TLiteral<"marker">, _sinclair_typebox.TLiteral<"filled">]>>;
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
getPptxContentComponents,
|
|
10
10
|
getPptxStandardComponent,
|
|
11
11
|
isPptxStandardComponent
|
|
12
|
-
} from "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
12
|
+
} from "../chunk-ZJTUC7DA.js";
|
|
13
|
+
import "../chunk-M5PJJLWM.js";
|
|
14
|
+
import "../chunk-7CKCXKN7.js";
|
|
15
15
|
export {
|
|
16
16
|
PPTX_STANDARD_COMPONENTS_REGISTRY,
|
|
17
17
|
createAllPptxComponentSchemas,
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
PptxComponentDefinitionSchema,
|
|
3
3
|
PptxSlideContentSchema,
|
|
4
4
|
PptxStandardComponentDefinitionSchema
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-B7HWVX62.js";
|
|
6
|
+
import "../chunk-ZJTUC7DA.js";
|
|
7
|
+
import "../chunk-M5PJJLWM.js";
|
|
8
|
+
import "../chunk-7CKCXKN7.js";
|
|
9
9
|
export {
|
|
10
10
|
PptxComponentDefinitionSchema,
|
|
11
11
|
PptxSlideContentSchema,
|