@json-to-office/shared-pptx 0.32.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.
- package/dist/{chunk-AW7OQZCT.js → chunk-AKSSIK5V.js} +2 -2
- package/dist/{chunk-7B7VME2D.js → chunk-C6UX273H.js} +2 -2
- package/dist/{chunk-FGN3B5EM.js → chunk-L7BCW5HU.js} +2 -2
- package/dist/{chunk-M5PJJLWM.js → chunk-N6CABSXM.js} +6 -2
- package/dist/chunk-N6CABSXM.js.map +1 -0
- package/dist/{chunk-AKCHJ2MN.js → chunk-P3YA33LS.js} +8 -3
- package/dist/chunk-P3YA33LS.js.map +1 -0
- package/dist/index.js +5 -5
- package/dist/schemas/component-defaults.d.ts +12 -0
- package/dist/schemas/component-registry.js +2 -2
- package/dist/schemas/component-union.js +3 -3
- package/dist/schemas/components.d.ts +82 -0
- package/dist/schemas/components.js +3 -3
- package/dist/schemas/document.js +4 -4
- package/dist/schemas/generator.js +3 -3
- package/dist/schemas/theme.d.ts +41 -0
- package/dist/schemas/theme.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-AKCHJ2MN.js.map +0 -1
- package/dist/chunk-M5PJJLWM.js.map +0 -1
- /package/dist/{chunk-AW7OQZCT.js.map → chunk-AKSSIK5V.js.map} +0 -0
- /package/dist/{chunk-7B7VME2D.js.map → chunk-C6UX273H.js.map} +0 -0
- /package/dist/{chunk-FGN3B5EM.js.map → chunk-L7BCW5HU.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PptxComponentDefinitionSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-C6UX273H.js";
|
|
4
4
|
|
|
5
5
|
// src/schemas/document.ts
|
|
6
6
|
var PptxJsonComponentDefinitionSchema = PptxComponentDefinitionSchema;
|
|
@@ -18,4 +18,4 @@ export {
|
|
|
18
18
|
PptxJsonComponentDefinitionSchema,
|
|
19
19
|
PPTX_JSON_SCHEMA_URLS
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-AKSSIK5V.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAllPptxComponentSchemas,
|
|
3
3
|
createAllPptxComponentSchemasNarrowed
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-P3YA33LS.js";
|
|
5
5
|
|
|
6
6
|
// src/schemas/component-union.ts
|
|
7
7
|
import { Type } from "@sinclair/typebox";
|
|
@@ -25,4 +25,4 @@ export {
|
|
|
25
25
|
PptxComponentDefinitionSchema,
|
|
26
26
|
PptxSlideContentSchema
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
28
|
+
//# sourceMappingURL=chunk-C6UX273H.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAllPptxComponentSchemasNarrowed
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-P3YA33LS.js";
|
|
4
4
|
|
|
5
5
|
// src/schemas/generator.ts
|
|
6
6
|
import { Type } from "@sinclair/typebox";
|
|
@@ -65,4 +65,4 @@ function generateUnifiedDocumentSchema(options = {}) {
|
|
|
65
65
|
export {
|
|
66
66
|
generateUnifiedDocumentSchema
|
|
67
67
|
};
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
68
|
+
//# sourceMappingURL=chunk-L7BCW5HU.js.map
|
|
@@ -4,7 +4,10 @@ import {
|
|
|
4
4
|
|
|
5
5
|
// src/schemas/theme.ts
|
|
6
6
|
import { Type } from "@sinclair/typebox";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
FontFamilyNameSchema,
|
|
9
|
+
FontRegistrySchema
|
|
10
|
+
} from "@json-to-office/shared";
|
|
8
11
|
import {
|
|
9
12
|
ColorValueSchema,
|
|
10
13
|
STYLE_NAMES
|
|
@@ -114,6 +117,7 @@ var ThemeConfigSchema = Type.Object(
|
|
|
114
117
|
},
|
|
115
118
|
{ additionalProperties: false, description: "Font families" }
|
|
116
119
|
),
|
|
120
|
+
fontRegistry: Type.Optional(FontRegistrySchema),
|
|
117
121
|
defaults: Type.Object(
|
|
118
122
|
{
|
|
119
123
|
fontSize: Type.Number({ description: "Default font size in points" }),
|
|
@@ -155,4 +159,4 @@ export {
|
|
|
155
159
|
STYLE_NAMES2 as STYLE_NAMES,
|
|
156
160
|
StyleNameSchema
|
|
157
161
|
};
|
|
158
|
-
//# sourceMappingURL=chunk-
|
|
162
|
+
//# sourceMappingURL=chunk-N6CABSXM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schemas/theme.ts"],"sourcesContent":["/**\n * PPTX Theme Schema\n * Simplified theme configuration for presentations\n */\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n FontFamilyNameSchema,\n FontRegistrySchema,\n} from '@json-to-office/shared';\nimport {\n ColorValueSchema,\n STYLE_NAMES,\n} from '@json-to-office/shared/schemas/slide-content';\nimport { PptxComponentDefaultsSchema } from './component-defaults';\n\nexport {\n ColorValueSchema,\n SEMANTIC_COLOR_NAMES,\n SEMANTIC_COLOR_ALIASES,\n STYLE_NAMES,\n StyleNameSchema,\n} from '@json-to-office/shared/schemas/slide-content';\nexport type { StyleName } from '@json-to-office/shared/schemas/slide-content';\n\nexport const GridMarginSchema = Type.Union(\n [\n Type.Number({ description: 'Margin in inches (all sides)' }),\n Type.Object(\n {\n top: Type.Number({ description: 'Top margin in inches' }),\n right: Type.Number({ description: 'Right margin in inches' }),\n bottom: Type.Number({ description: 'Bottom margin in inches' }),\n left: Type.Number({ description: 'Left margin in inches' }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Slide margins in inches' }\n);\n\nexport const GridGutterSchema = Type.Union(\n [\n Type.Number({ description: 'Gutter in inches (both axes)' }),\n Type.Object(\n {\n column: Type.Number({ description: 'Column gutter in inches' }),\n row: Type.Number({ description: 'Row gutter in inches' }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Gaps between grid tracks in inches' }\n);\n\nexport const GridConfigSchema = Type.Object(\n {\n columns: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Number of columns (default: 12)',\n })\n ),\n rows: Type.Optional(\n Type.Number({ minimum: 1, description: 'Number of rows (default: 6)' })\n ),\n margin: Type.Optional(GridMarginSchema),\n gutter: Type.Optional(GridGutterSchema),\n },\n { additionalProperties: false, description: 'Grid layout configuration' }\n);\n\nexport type GridMargin = Static<typeof GridMarginSchema>;\nexport type GridGutter = Static<typeof GridGutterSchema>;\nexport type GridConfig = Static<typeof GridConfigSchema>;\n\nconst HexColorSchema = Type.String({\n pattern: '^#?[0-9A-Fa-f]{6}$',\n description: 'Hex color (e.g. #FF0000)',\n});\n\nexport const TextStyleSchema = Type.Object(\n {\n fontSize: Type.Optional(Type.Number()),\n fontFace: Type.Optional(FontFamilyNameSchema),\n fontColor: Type.Optional(ColorValueSchema),\n bold: Type.Optional(Type.Boolean()),\n fontWeight: Type.Optional(Type.Integer({ minimum: 100, maximum: 900 })),\n italic: Type.Optional(Type.Boolean()),\n align: Type.Optional(\n Type.Union([\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('justify'),\n ])\n ),\n lineSpacing: Type.Optional(Type.Number()),\n charSpacing: Type.Optional(Type.Number()),\n paraSpaceAfter: Type.Optional(Type.Number()),\n },\n { additionalProperties: false, description: 'Text style preset' }\n);\n\nexport type TextStyle = Static<typeof TextStyleSchema>;\n\n// ── Theme config ───────────────────────────────────────────────────\n\nexport const ThemeConfigSchema = Type.Object(\n {\n name: Type.String({ description: 'Theme name' }),\n colors: Type.Object(\n {\n primary: HexColorSchema,\n secondary: HexColorSchema,\n accent: HexColorSchema,\n background: HexColorSchema,\n text: HexColorSchema,\n text2: Type.Optional(HexColorSchema),\n background2: Type.Optional(HexColorSchema),\n accent4: Type.Optional(HexColorSchema),\n accent5: Type.Optional(HexColorSchema),\n accent6: Type.Optional(HexColorSchema),\n },\n {\n additionalProperties: false,\n description: 'Theme color palette (10-slot scheme)',\n }\n ),\n fonts: Type.Object(\n {\n heading: FontFamilyNameSchema,\n body: FontFamilyNameSchema,\n },\n { additionalProperties: false, description: 'Font families' }\n ),\n fontRegistry: Type.Optional(FontRegistrySchema),\n defaults: Type.Object(\n {\n fontSize: Type.Number({ description: 'Default font size in points' }),\n fontColor: HexColorSchema,\n },\n { additionalProperties: false, description: 'Default text styling' }\n ),\n styles: Type.Optional(\n Type.Partial(\n Type.Object(\n Object.fromEntries(\n STYLE_NAMES.map((n) => [n, TextStyleSchema])\n ) as Record<string, typeof TextStyleSchema>\n ),\n { additionalProperties: false, description: 'Named text style presets' }\n )\n ),\n componentDefaults: Type.Optional(PptxComponentDefaultsSchema),\n },\n {\n additionalProperties: false,\n description: 'Presentation theme configuration',\n }\n);\n\nexport type ThemeConfigJson = Static<typeof ThemeConfigSchema>;\n\nexport function isValidThemeConfig(data: unknown): data is ThemeConfigJson {\n return typeof data === 'object' && data !== null;\n}\n"],"mappings":"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","names":["ColorValueSchema","STYLE_NAMES"]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
ColorValueSchema,
|
|
3
3
|
GridConfigSchema,
|
|
4
4
|
ThemeConfigSchema
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-N6CABSXM.js";
|
|
6
6
|
import {
|
|
7
7
|
PptxChartPropsSchema,
|
|
8
8
|
PptxComponentDefaultsSchema,
|
|
@@ -19,6 +19,7 @@ import { PPTX_SLIDE_CONTENT_COMPONENTS } from "@json-to-office/shared/schemas/sl
|
|
|
19
19
|
|
|
20
20
|
// src/schemas/components/presentation.ts
|
|
21
21
|
import { Type as Type3 } from "@sinclair/typebox";
|
|
22
|
+
import { FontRegistrySchema } from "@json-to-office/shared";
|
|
22
23
|
|
|
23
24
|
// src/schemas/components/template.ts
|
|
24
25
|
import { Type as Type2 } from "@sinclair/typebox";
|
|
@@ -234,6 +235,7 @@ var PresentationPropsSchema = Type3.Object(
|
|
|
234
235
|
}
|
|
235
236
|
)
|
|
236
237
|
),
|
|
238
|
+
fontRegistry: Type3.Optional(FontRegistrySchema),
|
|
237
239
|
slideWidth: Type3.Optional(
|
|
238
240
|
Type3.Number({
|
|
239
241
|
description: "Slide width in inches (default: 10)",
|
|
@@ -405,7 +407,10 @@ function createPptxComponentSchemaObject(component, recursiveRef, placeholderRef
|
|
|
405
407
|
}
|
|
406
408
|
);
|
|
407
409
|
}
|
|
408
|
-
return Type5.Object(schema, {
|
|
410
|
+
return Type5.Object(schema, {
|
|
411
|
+
additionalProperties: false,
|
|
412
|
+
description: component.description
|
|
413
|
+
});
|
|
409
414
|
}
|
|
410
415
|
function createAllPptxComponentSchemas(recursiveRef) {
|
|
411
416
|
return PPTX_STANDARD_COMPONENTS_REGISTRY.map(
|
|
@@ -482,4 +487,4 @@ export {
|
|
|
482
487
|
createAllPptxComponentSchemas,
|
|
483
488
|
createAllPptxComponentSchemasNarrowed
|
|
484
489
|
};
|
|
485
|
-
//# sourceMappingURL=chunk-
|
|
490
|
+
//# sourceMappingURL=chunk-P3YA33LS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schemas/component-registry.ts","../src/schemas/components/presentation.ts","../src/schemas/components/template.ts","../src/schemas/components/common.ts","../src/schemas/components/slide.ts"],"sourcesContent":["/**\n * PPTX Component Registry - SINGLE SOURCE OF TRUTH\n *\n * This is the ONLY place where standard PPTX components are defined.\n * All schema generators MUST use this registry.\n */\n\nimport { Type, TSchema } from '@sinclair/typebox';\nimport { PPTX_SLIDE_CONTENT_COMPONENTS } from '@json-to-office/shared/schemas/slide-content';\n\n/**\n * Component definition with metadata\n */\nexport interface PptxStandardComponentDefinition {\n name: string;\n propsSchema: TSchema;\n hasChildren: boolean;\n /**\n * Names of standard components allowed as direct children.\n * Only meaningful when hasChildren is true.\n * Plugin components are always allowed in addition to these.\n * Omit to allow the full recursive union (backward-compat).\n */\n allowedChildren?: readonly string[];\n hasPlaceholders?: boolean;\n category: 'container' | 'content' | 'layout';\n description: string;\n special?: {\n hasSchemaField?: boolean;\n };\n}\nimport { PresentationPropsSchema } from './components/presentation';\nimport { SlidePropsSchema } from './components/slide';\n\n/**\n * SINGLE SOURCE OF TRUTH for all standard PPTX components\n */\nexport const PPTX_STANDARD_COMPONENTS_REGISTRY: readonly PptxStandardComponentDefinition[] =\n [\n // ========================================================================\n // Container Components (can contain children)\n // ========================================================================\n {\n name: 'pptx',\n propsSchema: PresentationPropsSchema,\n hasChildren: true,\n allowedChildren: ['slide'],\n category: 'container',\n description:\n 'Main presentation container - defines the overall presentation structure. Required as the root component.',\n special: {\n hasSchemaField: true,\n },\n },\n {\n name: 'slide',\n propsSchema: SlidePropsSchema,\n hasChildren: true,\n allowedChildren: PPTX_SLIDE_CONTENT_COMPONENTS.map(({ name }) => name),\n hasPlaceholders: true,\n category: 'container',\n description:\n 'Slide container - groups content elements on a single slide.',\n },\n\n // Content components are canonical in @json-to-office/shared so DOCX\n // visuals can reuse the exact schemas without depending on shared-pptx.\n ...PPTX_SLIDE_CONTENT_COMPONENTS,\n ] as const;\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nexport function getPptxStandardComponent(\n name: string\n): PptxStandardComponentDefinition | undefined {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.find((c) => c.name === name);\n}\n\nexport function getAllPptxComponentNames(): readonly string[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.map((c) => c.name);\n}\n\nexport function getPptxComponentsByCategory(\n category: PptxStandardComponentDefinition['category']\n): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter(\n (c) => c.category === category\n );\n}\n\nexport function getPptxContainerComponents(): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) => c.hasChildren);\n}\n\nexport function getPptxContentComponents(): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) => !c.hasChildren);\n}\n\nexport function isPptxStandardComponent(name: string): boolean {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.some((c) => c.name === name);\n}\n\n// ============================================================================\n// Schema Generation Helpers\n// ============================================================================\n\nexport function createPptxComponentSchemaObject(\n component: PptxStandardComponentDefinition,\n recursiveRef?: TSchema,\n placeholderRef?: TSchema\n): TSchema {\n const schema: Record<string, TSchema> = {\n name: Type.Literal(component.name),\n id: Type.Optional(Type.String()),\n enabled: Type.Optional(\n Type.Boolean({\n default: true,\n description:\n 'When false, this component is filtered out and not rendered. Defaults to true.',\n })\n ),\n };\n\n if (component.special?.hasSchemaField) {\n schema.$schema = Type.Optional(Type.String({ format: 'uri' }));\n }\n\n schema.props = component.propsSchema;\n\n if (component.hasChildren && recursiveRef) {\n schema.children = Type.Optional(Type.Array(recursiveRef));\n }\n\n if (component.hasPlaceholders && (placeholderRef ?? recursiveRef)) {\n const baseProperties = (component.propsSchema as any).properties ?? {};\n const phRef = placeholderRef ?? recursiveRef!;\n schema.props = Type.Object(\n {\n ...baseProperties,\n placeholders: Type.Optional(\n Type.Record(Type.String(), phRef, {\n description:\n 'Content for named placeholders: { \"title\": { \"name\": \"text\", ... } }',\n })\n ),\n },\n {\n additionalProperties: false,\n description: (component.propsSchema as any).description,\n }\n );\n }\n\n return Type.Object(schema, {\n additionalProperties: false,\n description: component.description,\n });\n}\n\nexport function createAllPptxComponentSchemas(\n recursiveRef?: TSchema\n): readonly TSchema[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.map((component) =>\n createPptxComponentSchemaObject(component, recursiveRef)\n );\n}\n\n/**\n * Build all standard PPTX component schemas with per-container narrowed children.\n *\n * Resolves containers in dependency order so each container's children union\n * only references its allowedChildren. Plugin schemas are always included in\n * every container's children.\n *\n * @param selfRef - The Type.Recursive self-reference (fallback and for plugin children)\n * @param pluginSchemas - Plugin component schemas (always allowed in all containers)\n * @returns Array of TypeBox schemas with narrowed children per container\n */\nexport function createAllPptxComponentSchemasNarrowed(\n selfRef: TSchema,\n pluginSchemas: TSchema[] = []\n): TSchema[] {\n // Phase 1: Build leaf (non-container) component schemas — no children\n const leafSchemas = new Map<string, TSchema>();\n for (const comp of PPTX_STANDARD_COMPONENTS_REGISTRY) {\n if (!comp.hasChildren) {\n leafSchemas.set(\n comp.name,\n createPptxComponentSchemaObject(comp, undefined, selfRef)\n );\n }\n }\n\n // Phase 2: Resolve containers in dependency order\n const containers = PPTX_STANDARD_COMPONENTS_REGISTRY.filter(\n (c) => c.hasChildren\n );\n const resolved = new Map<string, TSchema>();\n const pending = [...containers];\n\n while (pending.length > 0) {\n const before = pending.length;\n for (let i = pending.length - 1; i >= 0; i--) {\n const comp = pending[i];\n\n if (!comp.allowedChildren) {\n // No allowedChildren declared — fallback to full recursive ref\n resolved.set(\n comp.name,\n createPptxComponentSchemaObject(comp, selfRef, selfRef)\n );\n pending.splice(i, 1);\n continue;\n }\n\n // Check if all container dependencies are resolved\n const containerDeps = comp.allowedChildren.filter((name) =>\n containers.some((c) => c.name === name)\n );\n if (!containerDeps.every((d) => resolved.has(d))) continue;\n\n // Build narrowed children union\n const childSchemas = comp.allowedChildren\n .map((name) => resolved.get(name) ?? leafSchemas.get(name))\n .filter((s): s is TSchema => s !== undefined);\n\n const allChildSchemas = [...childSchemas, ...pluginSchemas];\n const childrenType =\n allChildSchemas.length === 1\n ? allChildSchemas[0]\n : Type.Union(allChildSchemas);\n\n resolved.set(\n comp.name,\n createPptxComponentSchemaObject(comp, childrenType, selfRef)\n );\n pending.splice(i, 1);\n }\n\n if (pending.length === before) {\n throw new Error(\n `Circular allowedChildren among: ${pending.map((c) => c.name).join(', ')}`\n );\n }\n }\n\n // Combine: containers (resolved) + leaves\n return [...resolved.values(), ...leafSchemas.values()];\n}\n","/**\n * Presentation Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontRegistrySchema } from '@json-to-office/shared';\nimport { TemplateSlideDefinitionSchema } from './template';\nimport { GridConfigSchema, ThemeConfigSchema } from '../theme';\nimport { PptxComponentDefaultsSchema } from '../component-defaults';\n\nexport const PresentationPropsSchema = Type.Object(\n {\n title: Type.Optional(\n Type.String({ description: 'Presentation title metadata' })\n ),\n author: Type.Optional(\n Type.String({ description: 'Presentation author metadata' })\n ),\n subject: Type.Optional(\n Type.String({ description: 'Presentation subject metadata' })\n ),\n company: Type.Optional(\n Type.String({ description: 'Company name metadata' })\n ),\n theme: Type.Optional(\n Type.Union(\n [\n Type.String({\n description: 'Theme name to apply (default: \"default\")',\n default: 'default',\n }),\n ThemeConfigSchema,\n ],\n {\n description:\n 'Theme to apply: a built-in/custom theme name (default: ' +\n '\"default\"), or an inline theme config object so the document ' +\n 'stays self-contained',\n }\n )\n ),\n fontRegistry: Type.Optional(FontRegistrySchema),\n slideWidth: Type.Optional(\n Type.Number({\n description: 'Slide width in inches (default: 10)',\n default: 10,\n })\n ),\n slideHeight: Type.Optional(\n Type.Number({\n description: 'Slide height in inches (default: 7.5)',\n default: 7.5,\n })\n ),\n rtlMode: Type.Optional(\n Type.Boolean({ description: 'Right-to-left text direction' })\n ),\n language: Type.Optional(\n Type.String({\n pattern: '^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$',\n description:\n 'Default presentation language (BCP-47 tag, e.g. \"en-US\"). Sets the spell-check language for all text; individual text components can override it.',\n examples: ['en-US', 'fr-FR', 'de-DE', 'it-IT', 'es-ES'],\n })\n ),\n pageNumberFormat: Type.Optional(\n Type.Union([Type.Literal('9'), Type.Literal('09')], {\n description:\n 'Format for {PAGE_NUMBER} placeholders: \"9\" = bare number (default), \"09\" = zero-padded',\n default: '9',\n })\n ),\n componentDefaults: Type.Optional(PptxComponentDefaultsSchema),\n grid: Type.Optional(GridConfigSchema),\n templates: Type.Optional(\n Type.Array(TemplateSlideDefinitionSchema, {\n description: 'Template slide definitions (reusable slide templates)',\n })\n ),\n },\n {\n description: 'Presentation container props',\n additionalProperties: false,\n }\n);\n\nexport type PresentationProps = Static<typeof PresentationPropsSchema>;\n","/**\n * Template Slide Definition Schemas\n */\n\nimport { Type, Static, TSchema } from '@sinclair/typebox';\nimport { SlideBackgroundSchema, GridPositionSchema } from './common';\nimport { ColorValueSchema, GridConfigSchema } from '../theme';\nimport { TextPropsSchema } from './text';\nimport { PptxImagePropsSchema } from './image';\nimport { ShapePropsSchema } from './shape';\nimport { PptxTablePropsSchema } from './table';\nimport { PptxChartPropsSchema } from './chart';\nimport { PptxHighchartsPropsSchema } from './highcharts';\n\n// Position helpers (number in inches OR percentage string e.g. \"50%\")\nconst Coord = Type.Union([\n Type.Number({ description: 'Position/size in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Position/size as percentage of slide dimension (e.g., \"50%\")',\n }),\n]);\n\n// Helper: wrap a props schema into { name, props } component format\nfunction contentComponent(name: string, propsSchema: TSchema) {\n return Type.Object({\n name: Type.Literal(name),\n id: Type.Optional(Type.String()),\n enabled: Type.Optional(Type.Boolean({\n default: true,\n description: 'When false, this component is filtered out and not rendered. Defaults to true.',\n })),\n props: propsSchema,\n }, { additionalProperties: false });\n}\n\n// Content component union — same { name, props } format as slide children\nconst TemplateObjectComponentSchema = Type.Union([\n contentComponent('text', TextPropsSchema),\n contentComponent('image', PptxImagePropsSchema),\n contentComponent('shape', ShapePropsSchema),\n contentComponent('table', PptxTablePropsSchema),\n contentComponent('chart', PptxChartPropsSchema),\n contentComponent('highcharts', PptxHighchartsPropsSchema),\n], {\n discriminator: { propertyName: 'name' },\n description: 'Fixed component on a template slide (same format as slide children)',\n});\n\n// Defaults schema — partial component stub (carries styling props, not content)\n// Discriminated union so Monaco can autocomplete prop names per component type\nfunction defaultsComponent(name: string, propsSchema: TSchema) {\n return Type.Object({\n name: Type.Literal(name),\n props: Type.Partial(propsSchema, { description: 'Default props inherited by the component placed in this placeholder' }),\n }, { additionalProperties: false });\n}\n\nconst PlaceholderDefaultsSchema = Type.Union([\n defaultsComponent('text', TextPropsSchema),\n defaultsComponent('image', PptxImagePropsSchema),\n defaultsComponent('shape', ShapePropsSchema),\n defaultsComponent('table', PptxTablePropsSchema),\n defaultsComponent('chart', PptxChartPropsSchema),\n defaultsComponent('highcharts', PptxHighchartsPropsSchema),\n], {\n discriminator: { propertyName: 'name' },\n description: 'Partial component stub — styling defaults only',\n});\n\n// Placeholder definition\nexport const PlaceholderDefinitionSchema = Type.Object({\n name: Type.String({ description: 'Unique placeholder name' }),\n x: Type.Optional(Coord),\n y: Type.Optional(Coord),\n w: Type.Optional(Coord),\n h: Type.Optional(Coord),\n grid: Type.Optional(GridPositionSchema),\n defaults: Type.Optional(PlaceholderDefaultsSchema),\n}, { additionalProperties: false, description: 'Placeholder on a template slide — defaults is a component stub whose props are inherited by the actual component' });\n\n// Template slide definition\nexport const TemplateSlideDefinitionSchema = Type.Object({\n name: Type.String({ description: 'Unique template slide name' }),\n background: Type.Optional(SlideBackgroundSchema),\n margin: Type.Optional(Type.Union([\n Type.Number({ description: 'Margin in inches (all sides)' }),\n Type.Array(Type.Number(), { minItems: 4, maxItems: 4, description: 'Margin [top, right, bottom, left] in inches' }),\n ])),\n slideNumber: Type.Optional(Type.Object({\n x: Coord, y: Coord,\n w: Type.Optional(Coord),\n h: Type.Optional(Coord),\n color: Type.Optional(ColorValueSchema),\n fontSize: Type.Optional(Type.Number({ description: 'Slide number font size in points' })),\n }, { additionalProperties: false, description: 'Slide number position and styling' })),\n objects: Type.Optional(Type.Array(TemplateObjectComponentSchema, { description: 'Fixed components (logos, footers, decorations) — same { name, props } format as slide children' })),\n placeholders: Type.Optional(Type.Array(PlaceholderDefinitionSchema, { description: 'Placeholder regions for slide content' })),\n grid: Type.Optional(GridConfigSchema),\n}, { additionalProperties: false, description: 'Template slide definition (reusable slide template)' });\n\nexport type PlaceholderDefinition = Static<typeof PlaceholderDefinitionSchema>;\nexport type TemplateSlideDefinition = Static<typeof TemplateSlideDefinitionSchema>;\n","/**\n * Common Types and Schemas for PPTX Components\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n ColorValueSchema,\n GradientFillSchema,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport type {\n PptxAlignment,\n VerticalAlignment,\n Shadow,\n GridPosition,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport const PositionSchema = Type.Object(\n {\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'X position as percentage (e.g., \"10%\")',\n }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Y position as percentage (e.g., \"10%\")',\n }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Width as percentage (e.g., \"80%\")',\n }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Height as percentage (e.g., \"20%\")',\n }),\n ])\n ),\n },\n {\n description: 'Position and size in inches or percentages',\n additionalProperties: false,\n }\n);\n\nexport const SlideBackgroundSchema = Type.Object(\n {\n color: Type.Optional(ColorValueSchema),\n gradient: Type.Optional(GradientFillSchema),\n image: Type.Optional(\n Type.Object(\n {\n path: Type.Optional(\n Type.String({ description: 'Image file path or URL' })\n ),\n base64: Type.Optional(\n Type.String({ description: 'Base64-encoded image data' })\n ),\n },\n { description: 'Background image', additionalProperties: false }\n )\n ),\n },\n {\n description: 'Slide background configuration',\n additionalProperties: false,\n }\n);\n\nexport const TransitionSchema = Type.Object(\n {\n type: Type.Optional(\n Type.Union(\n [\n Type.Literal('fade'),\n Type.Literal('push'),\n Type.Literal('wipe'),\n Type.Literal('zoom'),\n Type.Literal('none'),\n ],\n { description: 'Transition effect type' }\n )\n ),\n speed: Type.Optional(\n Type.Union(\n [Type.Literal('slow'), Type.Literal('medium'), Type.Literal('fast')],\n { description: 'Transition speed' }\n )\n ),\n },\n {\n description: 'Slide transition configuration',\n additionalProperties: false,\n }\n);\n\nexport type Position = Static<typeof PositionSchema>;\nexport type SlideBackground = Static<typeof SlideBackgroundSchema>;\nexport type Transition = Static<typeof TransitionSchema>;\n","/**\n * Slide Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { SlideBackgroundSchema, TransitionSchema } from './common';\n\nexport const SlidePropsSchema = Type.Object(\n {\n meta: Type.Optional(\n Type.Object(\n {\n title: Type.Optional(\n Type.String({\n description:\n 'Authoring label for this slide, shown in editors and outlines. Never rendered — slide content is unaffected.',\n })\n ),\n },\n {\n additionalProperties: false,\n description: 'Authoring metadata; has no effect on the presentation.',\n }\n )\n ),\n background: Type.Optional(SlideBackgroundSchema),\n transition: Type.Optional(TransitionSchema),\n notes: Type.Optional(\n Type.String({ description: 'Speaker notes for this slide' })\n ),\n layout: Type.Optional(\n Type.String({\n description: 'Slide layout name (e.g., \"Title Slide\", \"Blank\")',\n })\n ),\n hidden: Type.Optional(\n Type.Boolean({ description: 'Hide this slide from presentation' })\n ),\n template: Type.Optional(\n Type.String({ description: 'Template slide name to apply' })\n ),\n // Note: `placeholders` is added dynamically by the component registry\n // with the recursive component ref, to avoid circular imports.\n },\n {\n description: 'Slide container props',\n additionalProperties: false,\n }\n);\n\nexport type SlideProps = Static<typeof SlidePropsSchema>;\n"],"mappings":"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","names":["Type","Type","Type","ColorValueSchema","Type","Type","Type","Type","Type"]}
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PPTX_JSON_SCHEMA_URLS,
|
|
3
3
|
PptxJsonComponentDefinitionSchema
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AKSSIK5V.js";
|
|
5
5
|
import "./chunk-J4OT5Y5B.js";
|
|
6
6
|
import {
|
|
7
7
|
PptxComponentDefinitionSchema,
|
|
8
8
|
PptxSlideContentSchema,
|
|
9
9
|
PptxStandardComponentDefinitionSchema
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-C6UX273H.js";
|
|
11
11
|
import {
|
|
12
12
|
PPTX_BASE_SCHEMA_METADATA,
|
|
13
13
|
PPTX_COMPONENT_METADATA
|
|
14
14
|
} from "./chunk-RV7W3UXU.js";
|
|
15
15
|
import {
|
|
16
16
|
generateUnifiedDocumentSchema
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-L7BCW5HU.js";
|
|
18
18
|
import {
|
|
19
19
|
PPTX_STANDARD_COMPONENTS_REGISTRY,
|
|
20
20
|
PositionSchema,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
getPptxContentComponents,
|
|
33
33
|
getPptxStandardComponent,
|
|
34
34
|
isPptxStandardComponent
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-P3YA33LS.js";
|
|
36
36
|
import {
|
|
37
37
|
ColorValueSchema,
|
|
38
38
|
SEMANTIC_COLOR_ALIASES,
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
TextStyleSchema,
|
|
43
43
|
ThemeConfigSchema,
|
|
44
44
|
isValidThemeConfig
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-N6CABSXM.js";
|
|
46
46
|
import {
|
|
47
47
|
ChartComponentDefaultsSchema,
|
|
48
48
|
GradientFillSchema,
|
|
@@ -216,6 +216,7 @@ declare const TableComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
216
216
|
fill: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
217
217
|
fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
218
218
|
fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
219
|
+
fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
219
220
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
220
221
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
221
222
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
@@ -273,6 +274,7 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
273
274
|
titleFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
274
275
|
titleColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
275
276
|
titleFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
277
|
+
titleFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
276
278
|
chartColors: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
|
|
277
279
|
dataBorder: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
278
280
|
pt: _sinclair_typebox.TNumber;
|
|
@@ -281,6 +283,7 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
281
283
|
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">]>>;
|
|
282
284
|
legendFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
283
285
|
legendFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
286
|
+
legendFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
284
287
|
legendColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
285
288
|
catAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
286
289
|
catAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
@@ -288,6 +291,7 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
288
291
|
catAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
289
292
|
catAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
290
293
|
catAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
294
|
+
catAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
291
295
|
catGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
292
296
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
293
297
|
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -301,6 +305,7 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
301
305
|
valAxisMajorUnit: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
302
306
|
valAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
303
307
|
valAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
308
|
+
valAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
304
309
|
valAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
305
310
|
valGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
306
311
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
@@ -323,6 +328,7 @@ declare const ChartComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
323
328
|
dataLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
324
329
|
dataLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
325
330
|
dataLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
331
|
+
dataLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
326
332
|
dataLabelFontBold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
327
333
|
dataLabelPosition: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"bestFit">, _sinclair_typebox.TLiteral<"ctr">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"inEnd">, _sinclair_typebox.TLiteral<"outEnd">]>>;
|
|
328
334
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
@@ -552,6 +558,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
552
558
|
fill: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
553
559
|
fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
554
560
|
fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
561
|
+
fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
555
562
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
556
563
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
557
564
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
@@ -609,6 +616,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
609
616
|
titleFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
610
617
|
titleColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
611
618
|
titleFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
619
|
+
titleFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
612
620
|
chartColors: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
|
|
613
621
|
dataBorder: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
614
622
|
pt: _sinclair_typebox.TNumber;
|
|
@@ -617,6 +625,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
617
625
|
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">]>>;
|
|
618
626
|
legendFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
619
627
|
legendFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
628
|
+
legendFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
620
629
|
legendColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
621
630
|
catAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
622
631
|
catAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
@@ -624,6 +633,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
624
633
|
catAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
625
634
|
catAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
626
635
|
catAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
636
|
+
catAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
627
637
|
catGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
628
638
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
629
639
|
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -637,6 +647,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
637
647
|
valAxisMajorUnit: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
638
648
|
valAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
639
649
|
valAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
650
|
+
valAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
640
651
|
valAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
641
652
|
valGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
642
653
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
@@ -659,6 +670,7 @@ declare const PptxComponentDefaultsSchema: _sinclair_typebox.TObject<{
|
|
|
659
670
|
dataLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
660
671
|
dataLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
661
672
|
dataLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
673
|
+
dataLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
662
674
|
dataLabelFontBold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
663
675
|
dataLabelPosition: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"bestFit">, _sinclair_typebox.TLiteral<"ctr">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"inEnd">, _sinclair_typebox.TLiteral<"outEnd">]>>;
|
|
664
676
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
getPptxContentComponents,
|
|
10
10
|
getPptxStandardComponent,
|
|
11
11
|
isPptxStandardComponent
|
|
12
|
-
} from "../chunk-
|
|
13
|
-
import "../chunk-
|
|
12
|
+
} from "../chunk-P3YA33LS.js";
|
|
13
|
+
import "../chunk-N6CABSXM.js";
|
|
14
14
|
import "../chunk-7CKCXKN7.js";
|
|
15
15
|
export {
|
|
16
16
|
PPTX_STANDARD_COMPONENTS_REGISTRY,
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
PptxComponentDefinitionSchema,
|
|
3
3
|
PptxSlideContentSchema,
|
|
4
4
|
PptxStandardComponentDefinitionSchema
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-C6UX273H.js";
|
|
6
|
+
import "../chunk-P3YA33LS.js";
|
|
7
|
+
import "../chunk-N6CABSXM.js";
|
|
8
8
|
import "../chunk-7CKCXKN7.js";
|
|
9
9
|
export {
|
|
10
10
|
PptxComponentDefinitionSchema,
|
|
@@ -57,6 +57,41 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
57
57
|
heading: _sinclair_typebox.TString;
|
|
58
58
|
body: _sinclair_typebox.TString;
|
|
59
59
|
}>;
|
|
60
|
+
fontRegistry: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TObject<{
|
|
61
|
+
id: _sinclair_typebox.TString;
|
|
62
|
+
family: _sinclair_typebox.TString;
|
|
63
|
+
category: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"sans">, _sinclair_typebox.TLiteral<"serif">, _sinclair_typebox.TLiteral<"mono">, _sinclair_typebox.TLiteral<"display">, _sinclair_typebox.TLiteral<"handwriting">]>>;
|
|
64
|
+
sources: _sinclair_typebox.TArray<_sinclair_typebox.TUnion<[_sinclair_typebox.TObject<{
|
|
65
|
+
kind: _sinclair_typebox.TLiteral<"safe">;
|
|
66
|
+
family: _sinclair_typebox.TString;
|
|
67
|
+
}>, _sinclair_typebox.TObject<{
|
|
68
|
+
kind: _sinclair_typebox.TLiteral<"google">;
|
|
69
|
+
family: _sinclair_typebox.TString;
|
|
70
|
+
weights: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TNumber>>;
|
|
71
|
+
italics: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
72
|
+
}>, _sinclair_typebox.TObject<{
|
|
73
|
+
kind: _sinclair_typebox.TLiteral<"file">;
|
|
74
|
+
path: _sinclair_typebox.TString;
|
|
75
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
76
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
77
|
+
}>, _sinclair_typebox.TObject<{
|
|
78
|
+
kind: _sinclair_typebox.TLiteral<"data">;
|
|
79
|
+
data: _sinclair_typebox.TString;
|
|
80
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
81
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
82
|
+
}>, _sinclair_typebox.TObject<{
|
|
83
|
+
kind: _sinclair_typebox.TLiteral<"url">;
|
|
84
|
+
url: _sinclair_typebox.TString;
|
|
85
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
86
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
87
|
+
}>, _sinclair_typebox.TObject<{
|
|
88
|
+
kind: _sinclair_typebox.TLiteral<"variable">;
|
|
89
|
+
url: _sinclair_typebox.TString;
|
|
90
|
+
weight: _sinclair_typebox.TNumber;
|
|
91
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
92
|
+
axes: _sinclair_typebox.TOptional<_sinclair_typebox.TRecord<_sinclair_typebox.TString, _sinclair_typebox.TNumber>>;
|
|
93
|
+
}>]>>;
|
|
94
|
+
}>>>;
|
|
60
95
|
defaults: _sinclair_typebox.TObject<{
|
|
61
96
|
fontSize: _sinclair_typebox.TNumber;
|
|
62
97
|
fontColor: _sinclair_typebox.TString;
|
|
@@ -291,6 +326,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
291
326
|
fill: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
292
327
|
fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
293
328
|
fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
329
|
+
fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
294
330
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
295
331
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
296
332
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
@@ -348,6 +384,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
348
384
|
titleFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
349
385
|
titleColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
350
386
|
titleFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
387
|
+
titleFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
351
388
|
chartColors: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
|
|
352
389
|
dataBorder: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
353
390
|
pt: _sinclair_typebox.TNumber;
|
|
@@ -356,6 +393,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
356
393
|
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">]>>;
|
|
357
394
|
legendFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
358
395
|
legendFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
396
|
+
legendFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
359
397
|
legendColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
360
398
|
catAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
361
399
|
catAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
@@ -363,6 +401,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
363
401
|
catAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
364
402
|
catAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
365
403
|
catAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
404
|
+
catAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
366
405
|
catGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
367
406
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
368
407
|
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -376,6 +415,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
376
415
|
valAxisMajorUnit: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
377
416
|
valAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
378
417
|
valAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
418
|
+
valAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
379
419
|
valAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
380
420
|
valGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
381
421
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
@@ -398,6 +438,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
398
438
|
dataLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
399
439
|
dataLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
400
440
|
dataLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
441
|
+
dataLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
401
442
|
dataLabelFontBold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
402
443
|
dataLabelPosition: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"bestFit">, _sinclair_typebox.TLiteral<"ctr">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"inEnd">, _sinclair_typebox.TLiteral<"outEnd">]>>;
|
|
403
444
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
@@ -413,6 +454,41 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
413
454
|
}>>;
|
|
414
455
|
}>>;
|
|
415
456
|
}>]>>;
|
|
457
|
+
fontRegistry: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TObject<{
|
|
458
|
+
id: _sinclair_typebox.TString;
|
|
459
|
+
family: _sinclair_typebox.TString;
|
|
460
|
+
category: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"sans">, _sinclair_typebox.TLiteral<"serif">, _sinclair_typebox.TLiteral<"mono">, _sinclair_typebox.TLiteral<"display">, _sinclair_typebox.TLiteral<"handwriting">]>>;
|
|
461
|
+
sources: _sinclair_typebox.TArray<_sinclair_typebox.TUnion<[_sinclair_typebox.TObject<{
|
|
462
|
+
kind: _sinclair_typebox.TLiteral<"safe">;
|
|
463
|
+
family: _sinclair_typebox.TString;
|
|
464
|
+
}>, _sinclair_typebox.TObject<{
|
|
465
|
+
kind: _sinclair_typebox.TLiteral<"google">;
|
|
466
|
+
family: _sinclair_typebox.TString;
|
|
467
|
+
weights: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TNumber>>;
|
|
468
|
+
italics: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
469
|
+
}>, _sinclair_typebox.TObject<{
|
|
470
|
+
kind: _sinclair_typebox.TLiteral<"file">;
|
|
471
|
+
path: _sinclair_typebox.TString;
|
|
472
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
473
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
474
|
+
}>, _sinclair_typebox.TObject<{
|
|
475
|
+
kind: _sinclair_typebox.TLiteral<"data">;
|
|
476
|
+
data: _sinclair_typebox.TString;
|
|
477
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
478
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
479
|
+
}>, _sinclair_typebox.TObject<{
|
|
480
|
+
kind: _sinclair_typebox.TLiteral<"url">;
|
|
481
|
+
url: _sinclair_typebox.TString;
|
|
482
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
483
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
484
|
+
}>, _sinclair_typebox.TObject<{
|
|
485
|
+
kind: _sinclair_typebox.TLiteral<"variable">;
|
|
486
|
+
url: _sinclair_typebox.TString;
|
|
487
|
+
weight: _sinclair_typebox.TNumber;
|
|
488
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
489
|
+
axes: _sinclair_typebox.TOptional<_sinclair_typebox.TRecord<_sinclair_typebox.TString, _sinclair_typebox.TNumber>>;
|
|
490
|
+
}>]>>;
|
|
491
|
+
}>>>;
|
|
416
492
|
slideWidth: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
417
493
|
slideHeight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
418
494
|
rtlMode: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
@@ -634,6 +710,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
634
710
|
fill: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
635
711
|
fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
636
712
|
fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
713
|
+
fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
637
714
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
638
715
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
639
716
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
@@ -691,6 +768,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
691
768
|
titleFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
692
769
|
titleColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
693
770
|
titleFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
771
|
+
titleFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
694
772
|
chartColors: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
|
|
695
773
|
dataBorder: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
696
774
|
pt: _sinclair_typebox.TNumber;
|
|
@@ -699,6 +777,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
699
777
|
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">]>>;
|
|
700
778
|
legendFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
701
779
|
legendFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
780
|
+
legendFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
702
781
|
legendColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
703
782
|
catAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
704
783
|
catAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
@@ -706,6 +785,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
706
785
|
catAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
707
786
|
catAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
708
787
|
catAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
788
|
+
catAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
709
789
|
catGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
710
790
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
711
791
|
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -719,6 +799,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
719
799
|
valAxisMajorUnit: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
720
800
|
valAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
721
801
|
valAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
802
|
+
valAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
722
803
|
valAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
723
804
|
valGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
724
805
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
@@ -741,6 +822,7 @@ declare const PresentationPropsSchema: _sinclair_typebox.TObject<{
|
|
|
741
822
|
dataLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
742
823
|
dataLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
743
824
|
dataLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
825
|
+
dataLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
744
826
|
dataLabelFontBold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
745
827
|
dataLabelPosition: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"bestFit">, _sinclair_typebox.TLiteral<"ctr">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"inEnd">, _sinclair_typebox.TLiteral<"outEnd">]>>;
|
|
746
828
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
PptxComponentDefinitionSchema,
|
|
4
4
|
PptxSlideContentSchema,
|
|
5
5
|
PptxStandardComponentDefinitionSchema
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-C6UX273H.js";
|
|
7
7
|
import {
|
|
8
8
|
GridPositionSchema,
|
|
9
9
|
PositionSchema,
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
SlidePropsSchema,
|
|
15
15
|
TransitionSchema,
|
|
16
16
|
VerticalAlignmentSchema
|
|
17
|
-
} from "../chunk-
|
|
18
|
-
import "../chunk-
|
|
17
|
+
} from "../chunk-P3YA33LS.js";
|
|
18
|
+
import "../chunk-N6CABSXM.js";
|
|
19
19
|
import {
|
|
20
20
|
GradientFillSchema,
|
|
21
21
|
GradientStopSchema,
|
package/dist/schemas/document.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PPTX_JSON_SCHEMA_URLS,
|
|
3
3
|
PptxJsonComponentDefinitionSchema
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-AKSSIK5V.js";
|
|
5
5
|
import "../chunk-J4OT5Y5B.js";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-C6UX273H.js";
|
|
7
|
+
import "../chunk-P3YA33LS.js";
|
|
8
|
+
import "../chunk-N6CABSXM.js";
|
|
9
9
|
import "../chunk-7CKCXKN7.js";
|
|
10
10
|
export {
|
|
11
11
|
PPTX_JSON_SCHEMA_URLS,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateUnifiedDocumentSchema
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-L7BCW5HU.js";
|
|
4
|
+
import "../chunk-P3YA33LS.js";
|
|
5
|
+
import "../chunk-N6CABSXM.js";
|
|
6
6
|
import "../chunk-7CKCXKN7.js";
|
|
7
7
|
export {
|
|
8
8
|
generateUnifiedDocumentSchema
|
package/dist/schemas/theme.d.ts
CHANGED
|
@@ -60,6 +60,41 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
|
|
|
60
60
|
heading: _sinclair_typebox.TString;
|
|
61
61
|
body: _sinclair_typebox.TString;
|
|
62
62
|
}>;
|
|
63
|
+
fontRegistry: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TObject<{
|
|
64
|
+
id: _sinclair_typebox.TString;
|
|
65
|
+
family: _sinclair_typebox.TString;
|
|
66
|
+
category: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"sans">, _sinclair_typebox.TLiteral<"serif">, _sinclair_typebox.TLiteral<"mono">, _sinclair_typebox.TLiteral<"display">, _sinclair_typebox.TLiteral<"handwriting">]>>;
|
|
67
|
+
sources: _sinclair_typebox.TArray<_sinclair_typebox.TUnion<[_sinclair_typebox.TObject<{
|
|
68
|
+
kind: _sinclair_typebox.TLiteral<"safe">;
|
|
69
|
+
family: _sinclair_typebox.TString;
|
|
70
|
+
}>, _sinclair_typebox.TObject<{
|
|
71
|
+
kind: _sinclair_typebox.TLiteral<"google">;
|
|
72
|
+
family: _sinclair_typebox.TString;
|
|
73
|
+
weights: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TNumber>>;
|
|
74
|
+
italics: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
75
|
+
}>, _sinclair_typebox.TObject<{
|
|
76
|
+
kind: _sinclair_typebox.TLiteral<"file">;
|
|
77
|
+
path: _sinclair_typebox.TString;
|
|
78
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
79
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
80
|
+
}>, _sinclair_typebox.TObject<{
|
|
81
|
+
kind: _sinclair_typebox.TLiteral<"data">;
|
|
82
|
+
data: _sinclair_typebox.TString;
|
|
83
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
84
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
85
|
+
}>, _sinclair_typebox.TObject<{
|
|
86
|
+
kind: _sinclair_typebox.TLiteral<"url">;
|
|
87
|
+
url: _sinclair_typebox.TString;
|
|
88
|
+
weight: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
89
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
90
|
+
}>, _sinclair_typebox.TObject<{
|
|
91
|
+
kind: _sinclair_typebox.TLiteral<"variable">;
|
|
92
|
+
url: _sinclair_typebox.TString;
|
|
93
|
+
weight: _sinclair_typebox.TNumber;
|
|
94
|
+
italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
95
|
+
axes: _sinclair_typebox.TOptional<_sinclair_typebox.TRecord<_sinclair_typebox.TString, _sinclair_typebox.TNumber>>;
|
|
96
|
+
}>]>>;
|
|
97
|
+
}>>>;
|
|
63
98
|
defaults: _sinclair_typebox.TObject<{
|
|
64
99
|
fontSize: _sinclair_typebox.TNumber;
|
|
65
100
|
fontColor: _sinclair_typebox.TString;
|
|
@@ -294,6 +329,7 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
|
|
|
294
329
|
fill: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
295
330
|
fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
296
331
|
fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
332
|
+
fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
297
333
|
color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
298
334
|
align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
|
|
299
335
|
valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
|
|
@@ -351,6 +387,7 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
|
|
|
351
387
|
titleFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
352
388
|
titleColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
353
389
|
titleFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
390
|
+
titleFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
354
391
|
chartColors: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
|
|
355
392
|
dataBorder: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
356
393
|
pt: _sinclair_typebox.TNumber;
|
|
@@ -359,6 +396,7 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
|
|
|
359
396
|
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">]>>;
|
|
360
397
|
legendFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
361
398
|
legendFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
399
|
+
legendFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
362
400
|
legendColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
363
401
|
catAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
364
402
|
catAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
@@ -366,6 +404,7 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
|
|
|
366
404
|
catAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
367
405
|
catAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
368
406
|
catAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
407
|
+
catAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
369
408
|
catGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
370
409
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
371
410
|
size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
@@ -379,6 +418,7 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
|
|
|
379
418
|
valAxisMajorUnit: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
380
419
|
valAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
381
420
|
valAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
421
|
+
valAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
382
422
|
valAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
383
423
|
valGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
|
|
384
424
|
style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
|
|
@@ -401,6 +441,7 @@ declare const ThemeConfigSchema: _sinclair_typebox.TObject<{
|
|
|
401
441
|
dataLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
402
442
|
dataLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
|
|
403
443
|
dataLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
|
|
444
|
+
dataLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
|
|
404
445
|
dataLabelFontBold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
|
|
405
446
|
dataLabelPosition: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"bestFit">, _sinclair_typebox.TLiteral<"ctr">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"inEnd">, _sinclair_typebox.TLiteral<"outEnd">]>>;
|
|
406
447
|
x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
|
package/dist/schemas/theme.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@json-to-office/shared-pptx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "PPTX-specific schemas, component registry and validation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@sinclair/typebox": "0.34.38",
|
|
27
|
-
"@json-to-office/shared": "^0.
|
|
27
|
+
"@json-to-office/shared": "^0.35.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "20.11.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/component-registry.ts","../src/schemas/components/presentation.ts","../src/schemas/components/template.ts","../src/schemas/components/common.ts","../src/schemas/components/slide.ts"],"sourcesContent":["/**\n * PPTX Component Registry - SINGLE SOURCE OF TRUTH\n *\n * This is the ONLY place where standard PPTX components are defined.\n * All schema generators MUST use this registry.\n */\n\nimport { Type, TSchema } from '@sinclair/typebox';\nimport { PPTX_SLIDE_CONTENT_COMPONENTS } from '@json-to-office/shared/schemas/slide-content';\n\n/**\n * Component definition with metadata\n */\nexport interface PptxStandardComponentDefinition {\n name: string;\n propsSchema: TSchema;\n hasChildren: boolean;\n /**\n * Names of standard components allowed as direct children.\n * Only meaningful when hasChildren is true.\n * Plugin components are always allowed in addition to these.\n * Omit to allow the full recursive union (backward-compat).\n */\n allowedChildren?: readonly string[];\n hasPlaceholders?: boolean;\n category: 'container' | 'content' | 'layout';\n description: string;\n special?: {\n hasSchemaField?: boolean;\n };\n}\nimport { PresentationPropsSchema } from './components/presentation';\nimport { SlidePropsSchema } from './components/slide';\n\n/**\n * SINGLE SOURCE OF TRUTH for all standard PPTX components\n */\nexport const PPTX_STANDARD_COMPONENTS_REGISTRY: readonly PptxStandardComponentDefinition[] =\n [\n // ========================================================================\n // Container Components (can contain children)\n // ========================================================================\n {\n name: 'pptx',\n propsSchema: PresentationPropsSchema,\n hasChildren: true,\n allowedChildren: ['slide'],\n category: 'container',\n description:\n 'Main presentation container - defines the overall presentation structure. Required as the root component.',\n special: {\n hasSchemaField: true,\n },\n },\n {\n name: 'slide',\n propsSchema: SlidePropsSchema,\n hasChildren: true,\n allowedChildren: PPTX_SLIDE_CONTENT_COMPONENTS.map(({ name }) => name),\n hasPlaceholders: true,\n category: 'container',\n description:\n 'Slide container - groups content elements on a single slide.',\n },\n\n // Content components are canonical in @json-to-office/shared so DOCX\n // visuals can reuse the exact schemas without depending on shared-pptx.\n ...PPTX_SLIDE_CONTENT_COMPONENTS,\n ] as const;\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nexport function getPptxStandardComponent(\n name: string\n): PptxStandardComponentDefinition | undefined {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.find((c) => c.name === name);\n}\n\nexport function getAllPptxComponentNames(): readonly string[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.map((c) => c.name);\n}\n\nexport function getPptxComponentsByCategory(\n category: PptxStandardComponentDefinition['category']\n): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter(\n (c) => c.category === category\n );\n}\n\nexport function getPptxContainerComponents(): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) => c.hasChildren);\n}\n\nexport function getPptxContentComponents(): readonly PptxStandardComponentDefinition[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.filter((c) => !c.hasChildren);\n}\n\nexport function isPptxStandardComponent(name: string): boolean {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.some((c) => c.name === name);\n}\n\n// ============================================================================\n// Schema Generation Helpers\n// ============================================================================\n\nexport function createPptxComponentSchemaObject(\n component: PptxStandardComponentDefinition,\n recursiveRef?: TSchema,\n placeholderRef?: TSchema\n): TSchema {\n const schema: Record<string, TSchema> = {\n name: Type.Literal(component.name),\n id: Type.Optional(Type.String()),\n enabled: Type.Optional(\n Type.Boolean({\n default: true,\n description:\n 'When false, this component is filtered out and not rendered. Defaults to true.',\n })\n ),\n };\n\n if (component.special?.hasSchemaField) {\n schema.$schema = Type.Optional(Type.String({ format: 'uri' }));\n }\n\n schema.props = component.propsSchema;\n\n if (component.hasChildren && recursiveRef) {\n schema.children = Type.Optional(Type.Array(recursiveRef));\n }\n\n if (component.hasPlaceholders && (placeholderRef ?? recursiveRef)) {\n const baseProperties = (component.propsSchema as any).properties ?? {};\n const phRef = placeholderRef ?? recursiveRef!;\n schema.props = Type.Object(\n {\n ...baseProperties,\n placeholders: Type.Optional(\n Type.Record(Type.String(), phRef, {\n description:\n 'Content for named placeholders: { \"title\": { \"name\": \"text\", ... } }',\n })\n ),\n },\n {\n additionalProperties: false,\n description: (component.propsSchema as any).description,\n }\n );\n }\n\n return Type.Object(schema, { additionalProperties: false });\n}\n\nexport function createAllPptxComponentSchemas(\n recursiveRef?: TSchema\n): readonly TSchema[] {\n return PPTX_STANDARD_COMPONENTS_REGISTRY.map((component) =>\n createPptxComponentSchemaObject(component, recursiveRef)\n );\n}\n\n/**\n * Build all standard PPTX component schemas with per-container narrowed children.\n *\n * Resolves containers in dependency order so each container's children union\n * only references its allowedChildren. Plugin schemas are always included in\n * every container's children.\n *\n * @param selfRef - The Type.Recursive self-reference (fallback and for plugin children)\n * @param pluginSchemas - Plugin component schemas (always allowed in all containers)\n * @returns Array of TypeBox schemas with narrowed children per container\n */\nexport function createAllPptxComponentSchemasNarrowed(\n selfRef: TSchema,\n pluginSchemas: TSchema[] = []\n): TSchema[] {\n // Phase 1: Build leaf (non-container) component schemas — no children\n const leafSchemas = new Map<string, TSchema>();\n for (const comp of PPTX_STANDARD_COMPONENTS_REGISTRY) {\n if (!comp.hasChildren) {\n leafSchemas.set(\n comp.name,\n createPptxComponentSchemaObject(comp, undefined, selfRef)\n );\n }\n }\n\n // Phase 2: Resolve containers in dependency order\n const containers = PPTX_STANDARD_COMPONENTS_REGISTRY.filter(\n (c) => c.hasChildren\n );\n const resolved = new Map<string, TSchema>();\n const pending = [...containers];\n\n while (pending.length > 0) {\n const before = pending.length;\n for (let i = pending.length - 1; i >= 0; i--) {\n const comp = pending[i];\n\n if (!comp.allowedChildren) {\n // No allowedChildren declared — fallback to full recursive ref\n resolved.set(\n comp.name,\n createPptxComponentSchemaObject(comp, selfRef, selfRef)\n );\n pending.splice(i, 1);\n continue;\n }\n\n // Check if all container dependencies are resolved\n const containerDeps = comp.allowedChildren.filter((name) =>\n containers.some((c) => c.name === name)\n );\n if (!containerDeps.every((d) => resolved.has(d))) continue;\n\n // Build narrowed children union\n const childSchemas = comp.allowedChildren\n .map((name) => resolved.get(name) ?? leafSchemas.get(name))\n .filter((s): s is TSchema => s !== undefined);\n\n const allChildSchemas = [...childSchemas, ...pluginSchemas];\n const childrenType =\n allChildSchemas.length === 1\n ? allChildSchemas[0]\n : Type.Union(allChildSchemas);\n\n resolved.set(\n comp.name,\n createPptxComponentSchemaObject(comp, childrenType, selfRef)\n );\n pending.splice(i, 1);\n }\n\n if (pending.length === before) {\n throw new Error(\n `Circular allowedChildren among: ${pending.map((c) => c.name).join(', ')}`\n );\n }\n }\n\n // Combine: containers (resolved) + leaves\n return [...resolved.values(), ...leafSchemas.values()];\n}\n","/**\n * Presentation Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { TemplateSlideDefinitionSchema } from './template';\nimport { GridConfigSchema, ThemeConfigSchema } from '../theme';\nimport { PptxComponentDefaultsSchema } from '../component-defaults';\n\nexport const PresentationPropsSchema = Type.Object(\n {\n title: Type.Optional(\n Type.String({ description: 'Presentation title metadata' })\n ),\n author: Type.Optional(\n Type.String({ description: 'Presentation author metadata' })\n ),\n subject: Type.Optional(\n Type.String({ description: 'Presentation subject metadata' })\n ),\n company: Type.Optional(\n Type.String({ description: 'Company name metadata' })\n ),\n theme: Type.Optional(\n Type.Union(\n [\n Type.String({\n description: 'Theme name to apply (default: \"default\")',\n default: 'default',\n }),\n ThemeConfigSchema,\n ],\n {\n description:\n 'Theme to apply: a built-in/custom theme name (default: ' +\n '\"default\"), or an inline theme config object so the document ' +\n 'stays self-contained',\n }\n )\n ),\n slideWidth: Type.Optional(\n Type.Number({\n description: 'Slide width in inches (default: 10)',\n default: 10,\n })\n ),\n slideHeight: Type.Optional(\n Type.Number({\n description: 'Slide height in inches (default: 7.5)',\n default: 7.5,\n })\n ),\n rtlMode: Type.Optional(\n Type.Boolean({ description: 'Right-to-left text direction' })\n ),\n language: Type.Optional(\n Type.String({\n pattern: '^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$',\n description:\n 'Default presentation language (BCP-47 tag, e.g. \"en-US\"). Sets the spell-check language for all text; individual text components can override it.',\n examples: ['en-US', 'fr-FR', 'de-DE', 'it-IT', 'es-ES'],\n })\n ),\n pageNumberFormat: Type.Optional(\n Type.Union([Type.Literal('9'), Type.Literal('09')], {\n description:\n 'Format for {PAGE_NUMBER} placeholders: \"9\" = bare number (default), \"09\" = zero-padded',\n default: '9',\n })\n ),\n componentDefaults: Type.Optional(PptxComponentDefaultsSchema),\n grid: Type.Optional(GridConfigSchema),\n templates: Type.Optional(\n Type.Array(TemplateSlideDefinitionSchema, {\n description: 'Template slide definitions (reusable slide templates)',\n })\n ),\n },\n {\n description: 'Presentation container props',\n additionalProperties: false,\n }\n);\n\nexport type PresentationProps = Static<typeof PresentationPropsSchema>;\n","/**\n * Template Slide Definition Schemas\n */\n\nimport { Type, Static, TSchema } from '@sinclair/typebox';\nimport { SlideBackgroundSchema, GridPositionSchema } from './common';\nimport { ColorValueSchema, GridConfigSchema } from '../theme';\nimport { TextPropsSchema } from './text';\nimport { PptxImagePropsSchema } from './image';\nimport { ShapePropsSchema } from './shape';\nimport { PptxTablePropsSchema } from './table';\nimport { PptxChartPropsSchema } from './chart';\nimport { PptxHighchartsPropsSchema } from './highcharts';\n\n// Position helpers (number in inches OR percentage string e.g. \"50%\")\nconst Coord = Type.Union([\n Type.Number({ description: 'Position/size in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Position/size as percentage of slide dimension (e.g., \"50%\")',\n }),\n]);\n\n// Helper: wrap a props schema into { name, props } component format\nfunction contentComponent(name: string, propsSchema: TSchema) {\n return Type.Object({\n name: Type.Literal(name),\n id: Type.Optional(Type.String()),\n enabled: Type.Optional(Type.Boolean({\n default: true,\n description: 'When false, this component is filtered out and not rendered. Defaults to true.',\n })),\n props: propsSchema,\n }, { additionalProperties: false });\n}\n\n// Content component union — same { name, props } format as slide children\nconst TemplateObjectComponentSchema = Type.Union([\n contentComponent('text', TextPropsSchema),\n contentComponent('image', PptxImagePropsSchema),\n contentComponent('shape', ShapePropsSchema),\n contentComponent('table', PptxTablePropsSchema),\n contentComponent('chart', PptxChartPropsSchema),\n contentComponent('highcharts', PptxHighchartsPropsSchema),\n], {\n discriminator: { propertyName: 'name' },\n description: 'Fixed component on a template slide (same format as slide children)',\n});\n\n// Defaults schema — partial component stub (carries styling props, not content)\n// Discriminated union so Monaco can autocomplete prop names per component type\nfunction defaultsComponent(name: string, propsSchema: TSchema) {\n return Type.Object({\n name: Type.Literal(name),\n props: Type.Partial(propsSchema, { description: 'Default props inherited by the component placed in this placeholder' }),\n }, { additionalProperties: false });\n}\n\nconst PlaceholderDefaultsSchema = Type.Union([\n defaultsComponent('text', TextPropsSchema),\n defaultsComponent('image', PptxImagePropsSchema),\n defaultsComponent('shape', ShapePropsSchema),\n defaultsComponent('table', PptxTablePropsSchema),\n defaultsComponent('chart', PptxChartPropsSchema),\n defaultsComponent('highcharts', PptxHighchartsPropsSchema),\n], {\n discriminator: { propertyName: 'name' },\n description: 'Partial component stub — styling defaults only',\n});\n\n// Placeholder definition\nexport const PlaceholderDefinitionSchema = Type.Object({\n name: Type.String({ description: 'Unique placeholder name' }),\n x: Type.Optional(Coord),\n y: Type.Optional(Coord),\n w: Type.Optional(Coord),\n h: Type.Optional(Coord),\n grid: Type.Optional(GridPositionSchema),\n defaults: Type.Optional(PlaceholderDefaultsSchema),\n}, { additionalProperties: false, description: 'Placeholder on a template slide — defaults is a component stub whose props are inherited by the actual component' });\n\n// Template slide definition\nexport const TemplateSlideDefinitionSchema = Type.Object({\n name: Type.String({ description: 'Unique template slide name' }),\n background: Type.Optional(SlideBackgroundSchema),\n margin: Type.Optional(Type.Union([\n Type.Number({ description: 'Margin in inches (all sides)' }),\n Type.Array(Type.Number(), { minItems: 4, maxItems: 4, description: 'Margin [top, right, bottom, left] in inches' }),\n ])),\n slideNumber: Type.Optional(Type.Object({\n x: Coord, y: Coord,\n w: Type.Optional(Coord),\n h: Type.Optional(Coord),\n color: Type.Optional(ColorValueSchema),\n fontSize: Type.Optional(Type.Number({ description: 'Slide number font size in points' })),\n }, { additionalProperties: false, description: 'Slide number position and styling' })),\n objects: Type.Optional(Type.Array(TemplateObjectComponentSchema, { description: 'Fixed components (logos, footers, decorations) — same { name, props } format as slide children' })),\n placeholders: Type.Optional(Type.Array(PlaceholderDefinitionSchema, { description: 'Placeholder regions for slide content' })),\n grid: Type.Optional(GridConfigSchema),\n}, { additionalProperties: false, description: 'Template slide definition (reusable slide template)' });\n\nexport type PlaceholderDefinition = Static<typeof PlaceholderDefinitionSchema>;\nexport type TemplateSlideDefinition = Static<typeof TemplateSlideDefinitionSchema>;\n","/**\n * Common Types and Schemas for PPTX Components\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport {\n ColorValueSchema,\n GradientFillSchema,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport {\n PptxAlignmentSchema,\n VerticalAlignmentSchema,\n ShadowSchema,\n GridPositionSchema,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport type {\n PptxAlignment,\n VerticalAlignment,\n Shadow,\n GridPosition,\n} from '@json-to-office/shared/schemas/slide-content';\n\nexport const PositionSchema = Type.Object(\n {\n x: Type.Optional(\n Type.Union([\n Type.Number({ description: 'X position in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'X position as percentage (e.g., \"10%\")',\n }),\n ])\n ),\n y: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Y position in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Y position as percentage (e.g., \"10%\")',\n }),\n ])\n ),\n w: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Width in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Width as percentage (e.g., \"80%\")',\n }),\n ])\n ),\n h: Type.Optional(\n Type.Union([\n Type.Number({ description: 'Height in inches' }),\n Type.String({\n pattern: '^\\\\d+(\\\\.\\\\d+)?%$',\n description: 'Height as percentage (e.g., \"20%\")',\n }),\n ])\n ),\n },\n {\n description: 'Position and size in inches or percentages',\n additionalProperties: false,\n }\n);\n\nexport const SlideBackgroundSchema = Type.Object(\n {\n color: Type.Optional(ColorValueSchema),\n gradient: Type.Optional(GradientFillSchema),\n image: Type.Optional(\n Type.Object(\n {\n path: Type.Optional(\n Type.String({ description: 'Image file path or URL' })\n ),\n base64: Type.Optional(\n Type.String({ description: 'Base64-encoded image data' })\n ),\n },\n { description: 'Background image', additionalProperties: false }\n )\n ),\n },\n {\n description: 'Slide background configuration',\n additionalProperties: false,\n }\n);\n\nexport const TransitionSchema = Type.Object(\n {\n type: Type.Optional(\n Type.Union(\n [\n Type.Literal('fade'),\n Type.Literal('push'),\n Type.Literal('wipe'),\n Type.Literal('zoom'),\n Type.Literal('none'),\n ],\n { description: 'Transition effect type' }\n )\n ),\n speed: Type.Optional(\n Type.Union(\n [Type.Literal('slow'), Type.Literal('medium'), Type.Literal('fast')],\n { description: 'Transition speed' }\n )\n ),\n },\n {\n description: 'Slide transition configuration',\n additionalProperties: false,\n }\n);\n\nexport type Position = Static<typeof PositionSchema>;\nexport type SlideBackground = Static<typeof SlideBackgroundSchema>;\nexport type Transition = Static<typeof TransitionSchema>;\n","/**\n * Slide Component Schema\n */\n\nimport { Type, Static } from '@sinclair/typebox';\nimport { SlideBackgroundSchema, TransitionSchema } from './common';\n\nexport const SlidePropsSchema = Type.Object(\n {\n meta: Type.Optional(\n Type.Object(\n {\n title: Type.Optional(\n Type.String({\n description:\n 'Authoring label for this slide, shown in editors and outlines. Never rendered — slide content is unaffected.',\n })\n ),\n },\n {\n additionalProperties: false,\n description: 'Authoring metadata; has no effect on the presentation.',\n }\n )\n ),\n background: Type.Optional(SlideBackgroundSchema),\n transition: Type.Optional(TransitionSchema),\n notes: Type.Optional(\n Type.String({ description: 'Speaker notes for this slide' })\n ),\n layout: Type.Optional(\n Type.String({\n description: 'Slide layout name (e.g., \"Title Slide\", \"Blank\")',\n })\n ),\n hidden: Type.Optional(\n Type.Boolean({ description: 'Hide this slide from presentation' })\n ),\n template: Type.Optional(\n Type.String({ description: 'Template slide name to apply' })\n ),\n // Note: `placeholders` is added dynamically by the component registry\n // with the recursive component ref, to avoid circular imports.\n },\n {\n description: 'Slide container props',\n additionalProperties: false,\n }\n);\n\nexport type SlideProps = Static<typeof SlidePropsSchema>;\n"],"mappings":";;;;;;;;;;;;;;;;AAOA,SAAS,QAAAA,aAAqB;AAC9B,SAAS,qCAAqC;;;ACJ9C,SAAS,QAAAC,aAAoB;;;ACA7B,SAAS,QAAAC,aAA6B;;;ACAtC,SAAS,YAAoB;AAC7B;AAAA,EACE,oBAAAC;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASA,IAAM,iBAAiB,KAAK;AAAA,EACjC;AAAA,IACE,GAAG,KAAK;AAAA,MACN,KAAK,MAAM;AAAA,QACT,KAAK,OAAO,EAAE,aAAa,uBAAuB,CAAC;AAAA,QACnD,KAAK,OAAO;AAAA,UACV,SAAS;AAAA,UACT,aAAa;AAAA,QACf,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,GAAG,KAAK;AAAA,MACN,KAAK,MAAM;AAAA,QACT,KAAK,OAAO,EAAE,aAAa,uBAAuB,CAAC;AAAA,QACnD,KAAK,OAAO;AAAA,UACV,SAAS;AAAA,UACT,aAAa;AAAA,QACf,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,GAAG,KAAK;AAAA,MACN,KAAK,MAAM;AAAA,QACT,KAAK,OAAO,EAAE,aAAa,kBAAkB,CAAC;AAAA,QAC9C,KAAK,OAAO;AAAA,UACV,SAAS;AAAA,UACT,aAAa;AAAA,QACf,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,GAAG,KAAK;AAAA,MACN,KAAK,MAAM;AAAA,QACT,KAAK,OAAO,EAAE,aAAa,mBAAmB,CAAC;AAAA,QAC/C,KAAK,OAAO;AAAA,UACV,SAAS;AAAA,UACT,aAAa;AAAA,QACf,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,sBAAsB;AAAA,EACxB;AACF;AAEO,IAAM,wBAAwB,KAAK;AAAA,EACxC;AAAA,IACE,OAAO,KAAK,SAASA,iBAAgB;AAAA,IACrC,UAAU,KAAK,SAAS,kBAAkB;AAAA,IAC1C,OAAO,KAAK;AAAA,MACV,KAAK;AAAA,QACH;AAAA,UACE,MAAM,KAAK;AAAA,YACT,KAAK,OAAO,EAAE,aAAa,yBAAyB,CAAC;AAAA,UACvD;AAAA,UACA,QAAQ,KAAK;AAAA,YACX,KAAK,OAAO,EAAE,aAAa,4BAA4B,CAAC;AAAA,UAC1D;AAAA,QACF;AAAA,QACA,EAAE,aAAa,oBAAoB,sBAAsB,MAAM;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,sBAAsB;AAAA,EACxB;AACF;AAEO,IAAM,mBAAmB,KAAK;AAAA,EACnC;AAAA,IACE,MAAM,KAAK;AAAA,MACT,KAAK;AAAA,QACH;AAAA,UACE,KAAK,QAAQ,MAAM;AAAA,UACnB,KAAK,QAAQ,MAAM;AAAA,UACnB,KAAK,QAAQ,MAAM;AAAA,UACnB,KAAK,QAAQ,MAAM;AAAA,UACnB,KAAK,QAAQ,MAAM;AAAA,QACrB;AAAA,QACA,EAAE,aAAa,yBAAyB;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,OAAO,KAAK;AAAA,MACV,KAAK;AAAA,QACH,CAAC,KAAK,QAAQ,MAAM,GAAG,KAAK,QAAQ,QAAQ,GAAG,KAAK,QAAQ,MAAM,CAAC;AAAA,QACnE,EAAE,aAAa,mBAAmB;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,sBAAsB;AAAA,EACxB;AACF;;;ADvGA,IAAM,QAAQC,MAAK,MAAM;AAAA,EACvBA,MAAK,OAAO,EAAE,aAAa,0BAA0B,CAAC;AAAA,EACtDA,MAAK,OAAO;AAAA,IACV,SAAS;AAAA,IACT,aAAa;AAAA,EACf,CAAC;AACH,CAAC;AAGD,SAAS,iBAAiB,MAAc,aAAsB;AAC5D,SAAOA,MAAK,OAAO;AAAA,IACjB,MAAMA,MAAK,QAAQ,IAAI;AAAA,IACvB,IAAIA,MAAK,SAASA,MAAK,OAAO,CAAC;AAAA,IAC/B,SAASA,MAAK,SAASA,MAAK,QAAQ;AAAA,MAClC,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,OAAO;AAAA,EACT,GAAG,EAAE,sBAAsB,MAAM,CAAC;AACpC;AAGA,IAAM,gCAAgCA,MAAK,MAAM;AAAA,EAC/C,iBAAiB,QAAQ,eAAe;AAAA,EACxC,iBAAiB,SAAS,oBAAoB;AAAA,EAC9C,iBAAiB,SAAS,gBAAgB;AAAA,EAC1C,iBAAiB,SAAS,oBAAoB;AAAA,EAC9C,iBAAiB,SAAS,oBAAoB;AAAA,EAC9C,iBAAiB,cAAc,yBAAyB;AAC1D,GAAG;AAAA,EACD,eAAe,EAAE,cAAc,OAAO;AAAA,EACtC,aAAa;AACf,CAAC;AAID,SAAS,kBAAkB,MAAc,aAAsB;AAC7D,SAAOA,MAAK,OAAO;AAAA,IACjB,MAAMA,MAAK,QAAQ,IAAI;AAAA,IACvB,OAAOA,MAAK,QAAQ,aAAa,EAAE,aAAa,sEAAsE,CAAC;AAAA,EACzH,GAAG,EAAE,sBAAsB,MAAM,CAAC;AACpC;AAEA,IAAM,4BAA4BA,MAAK,MAAM;AAAA,EAC3C,kBAAkB,QAAQ,eAAe;AAAA,EACzC,kBAAkB,SAAS,oBAAoB;AAAA,EAC/C,kBAAkB,SAAS,gBAAgB;AAAA,EAC3C,kBAAkB,SAAS,oBAAoB;AAAA,EAC/C,kBAAkB,SAAS,oBAAoB;AAAA,EAC/C,kBAAkB,cAAc,yBAAyB;AAC3D,GAAG;AAAA,EACD,eAAe,EAAE,cAAc,OAAO;AAAA,EACtC,aAAa;AACf,CAAC;AAGM,IAAM,8BAA8BA,MAAK,OAAO;AAAA,EACrD,MAAMA,MAAK,OAAO,EAAE,aAAa,0BAA0B,CAAC;AAAA,EAC5D,GAAGA,MAAK,SAAS,KAAK;AAAA,EACtB,GAAGA,MAAK,SAAS,KAAK;AAAA,EACtB,GAAGA,MAAK,SAAS,KAAK;AAAA,EACtB,GAAGA,MAAK,SAAS,KAAK;AAAA,EACtB,MAAMA,MAAK,SAAS,kBAAkB;AAAA,EACtC,UAAUA,MAAK,SAAS,yBAAyB;AACnD,GAAG,EAAE,sBAAsB,OAAO,aAAa,wHAAmH,CAAC;AAG5J,IAAM,gCAAgCA,MAAK,OAAO;AAAA,EACvD,MAAMA,MAAK,OAAO,EAAE,aAAa,6BAA6B,CAAC;AAAA,EAC/D,YAAYA,MAAK,SAAS,qBAAqB;AAAA,EAC/C,QAAQA,MAAK,SAASA,MAAK,MAAM;AAAA,IAC/BA,MAAK,OAAO,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC3DA,MAAK,MAAMA,MAAK,OAAO,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,aAAa,8CAA8C,CAAC;AAAA,EACpH,CAAC,CAAC;AAAA,EACF,aAAaA,MAAK,SAASA,MAAK,OAAO;AAAA,IACrC,GAAG;AAAA,IAAO,GAAG;AAAA,IACb,GAAGA,MAAK,SAAS,KAAK;AAAA,IACtB,GAAGA,MAAK,SAAS,KAAK;AAAA,IACtB,OAAOA,MAAK,SAAS,gBAAgB;AAAA,IACrC,UAAUA,MAAK,SAASA,MAAK,OAAO,EAAE,aAAa,mCAAmC,CAAC,CAAC;AAAA,EAC1F,GAAG,EAAE,sBAAsB,OAAO,aAAa,oCAAoC,CAAC,CAAC;AAAA,EACrF,SAASA,MAAK,SAASA,MAAK,MAAM,+BAA+B,EAAE,aAAa,sGAAiG,CAAC,CAAC;AAAA,EACnL,cAAcA,MAAK,SAASA,MAAK,MAAM,6BAA6B,EAAE,aAAa,wCAAwC,CAAC,CAAC;AAAA,EAC7H,MAAMA,MAAK,SAAS,gBAAgB;AACtC,GAAG,EAAE,sBAAsB,OAAO,aAAa,sDAAsD,CAAC;;;AD1F/F,IAAM,0BAA0BC,MAAK;AAAA,EAC1C;AAAA,IACE,OAAOA,MAAK;AAAA,MACVA,MAAK,OAAO,EAAE,aAAa,8BAA8B,CAAC;AAAA,IAC5D;AAAA,IACA,QAAQA,MAAK;AAAA,MACXA,MAAK,OAAO,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC7D;AAAA,IACA,SAASA,MAAK;AAAA,MACZA,MAAK,OAAO,EAAE,aAAa,gCAAgC,CAAC;AAAA,IAC9D;AAAA,IACA,SAASA,MAAK;AAAA,MACZA,MAAK,OAAO,EAAE,aAAa,wBAAwB,CAAC;AAAA,IACtD;AAAA,IACA,OAAOA,MAAK;AAAA,MACVA,MAAK;AAAA,QACH;AAAA,UACEA,MAAK,OAAO;AAAA,YACV,aAAa;AAAA,YACb,SAAS;AAAA,UACX,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA;AAAA,UACE,aACE;AAAA,QAGJ;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAYA,MAAK;AAAA,MACfA,MAAK,OAAO;AAAA,QACV,aAAa;AAAA,QACb,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,aAAaA,MAAK;AAAA,MAChBA,MAAK,OAAO;AAAA,QACV,aAAa;AAAA,QACb,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,SAASA,MAAK;AAAA,MACZA,MAAK,QAAQ,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC9D;AAAA,IACA,UAAUA,MAAK;AAAA,MACbA,MAAK,OAAO;AAAA,QACV,SAAS;AAAA,QACT,aACE;AAAA,QACF,UAAU,CAAC,SAAS,SAAS,SAAS,SAAS,OAAO;AAAA,MACxD,CAAC;AAAA,IACH;AAAA,IACA,kBAAkBA,MAAK;AAAA,MACrBA,MAAK,MAAM,CAACA,MAAK,QAAQ,GAAG,GAAGA,MAAK,QAAQ,IAAI,CAAC,GAAG;AAAA,QAClD,aACE;AAAA,QACF,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,mBAAmBA,MAAK,SAAS,2BAA2B;AAAA,IAC5D,MAAMA,MAAK,SAAS,gBAAgB;AAAA,IACpC,WAAWA,MAAK;AAAA,MACdA,MAAK,MAAM,+BAA+B;AAAA,QACxC,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,sBAAsB;AAAA,EACxB;AACF;;;AG9EA,SAAS,QAAAC,aAAoB;AAGtB,IAAM,mBAAmBC,MAAK;AAAA,EACnC;AAAA,IACE,MAAMA,MAAK;AAAA,MACTA,MAAK;AAAA,QACH;AAAA,UACE,OAAOA,MAAK;AAAA,YACVA,MAAK,OAAO;AAAA,cACV,aACE;AAAA,YACJ,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA;AAAA,UACE,sBAAsB;AAAA,UACtB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAYA,MAAK,SAAS,qBAAqB;AAAA,IAC/C,YAAYA,MAAK,SAAS,gBAAgB;AAAA,IAC1C,OAAOA,MAAK;AAAA,MACVA,MAAK,OAAO,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC7D;AAAA,IACA,QAAQA,MAAK;AAAA,MACXA,MAAK,OAAO;AAAA,QACV,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAAA,IACA,QAAQA,MAAK;AAAA,MACXA,MAAK,QAAQ,EAAE,aAAa,oCAAoC,CAAC;AAAA,IACnE;AAAA,IACA,UAAUA,MAAK;AAAA,MACbA,MAAK,OAAO,EAAE,aAAa,+BAA+B,CAAC;AAAA,IAC7D;AAAA;AAAA;AAAA,EAGF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,sBAAsB;AAAA,EACxB;AACF;;;AJXO,IAAM,oCACX;AAAA;AAAA;AAAA;AAAA,EAIE;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB,CAAC,OAAO;AAAA,IACzB,UAAU;AAAA,IACV,aACE;AAAA,IACF,SAAS;AAAA,MACP,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB,8BAA8B,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI;AAAA,IACrE,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA;AAAA;AAAA,EAIA,GAAG;AACL;AAMK,SAAS,yBACd,MAC6C;AAC7C,SAAO,kCAAkC,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AACtE;AAEO,SAAS,2BAA8C;AAC5D,SAAO,kCAAkC,IAAI,CAAC,MAAM,EAAE,IAAI;AAC5D;AAEO,SAAS,4BACd,UAC4C;AAC5C,SAAO,kCAAkC;AAAA,IACvC,CAAC,MAAM,EAAE,aAAa;AAAA,EACxB;AACF;AAEO,SAAS,6BAAyE;AACvF,SAAO,kCAAkC,OAAO,CAAC,MAAM,EAAE,WAAW;AACtE;AAEO,SAAS,2BAAuE;AACrF,SAAO,kCAAkC,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW;AACvE;AAEO,SAAS,wBAAwB,MAAuB;AAC7D,SAAO,kCAAkC,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AACtE;AAMO,SAAS,gCACd,WACA,cACA,gBACS;AACT,QAAM,SAAkC;AAAA,IACtC,MAAMC,MAAK,QAAQ,UAAU,IAAI;AAAA,IACjC,IAAIA,MAAK,SAASA,MAAK,OAAO,CAAC;AAAA,IAC/B,SAASA,MAAK;AAAA,MACZA,MAAK,QAAQ;AAAA,QACX,SAAS;AAAA,QACT,aACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,UAAU,SAAS,gBAAgB;AACrC,WAAO,UAAUA,MAAK,SAASA,MAAK,OAAO,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EAC/D;AAEA,SAAO,QAAQ,UAAU;AAEzB,MAAI,UAAU,eAAe,cAAc;AACzC,WAAO,WAAWA,MAAK,SAASA,MAAK,MAAM,YAAY,CAAC;AAAA,EAC1D;AAEA,MAAI,UAAU,oBAAoB,kBAAkB,eAAe;AACjE,UAAM,iBAAkB,UAAU,YAAoB,cAAc,CAAC;AACrE,UAAM,QAAQ,kBAAkB;AAChC,WAAO,QAAQA,MAAK;AAAA,MAClB;AAAA,QACE,GAAG;AAAA,QACH,cAAcA,MAAK;AAAA,UACjBA,MAAK,OAAOA,MAAK,OAAO,GAAG,OAAO;AAAA,YAChC,aACE;AAAA,UACJ,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA;AAAA,QACE,sBAAsB;AAAA,QACtB,aAAc,UAAU,YAAoB;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAEA,SAAOA,MAAK,OAAO,QAAQ,EAAE,sBAAsB,MAAM,CAAC;AAC5D;AAEO,SAAS,8BACd,cACoB;AACpB,SAAO,kCAAkC;AAAA,IAAI,CAAC,cAC5C,gCAAgC,WAAW,YAAY;AAAA,EACzD;AACF;AAaO,SAAS,sCACd,SACA,gBAA2B,CAAC,GACjB;AAEX,QAAM,cAAc,oBAAI,IAAqB;AAC7C,aAAW,QAAQ,mCAAmC;AACpD,QAAI,CAAC,KAAK,aAAa;AACrB,kBAAY;AAAA,QACV,KAAK;AAAA,QACL,gCAAgC,MAAM,QAAW,OAAO;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AAGA,QAAM,aAAa,kCAAkC;AAAA,IACnD,CAAC,MAAM,EAAE;AAAA,EACX;AACA,QAAM,WAAW,oBAAI,IAAqB;AAC1C,QAAM,UAAU,CAAC,GAAG,UAAU;AAE9B,SAAO,QAAQ,SAAS,GAAG;AACzB,UAAM,SAAS,QAAQ;AACvB,aAAS,IAAI,QAAQ,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5C,YAAM,OAAO,QAAQ,CAAC;AAEtB,UAAI,CAAC,KAAK,iBAAiB;AAEzB,iBAAS;AAAA,UACP,KAAK;AAAA,UACL,gCAAgC,MAAM,SAAS,OAAO;AAAA,QACxD;AACA,gBAAQ,OAAO,GAAG,CAAC;AACnB;AAAA,MACF;AAGA,YAAM,gBAAgB,KAAK,gBAAgB;AAAA,QAAO,CAAC,SACjD,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAAA,MACxC;AACA,UAAI,CAAC,cAAc,MAAM,CAAC,MAAM,SAAS,IAAI,CAAC,CAAC,EAAG;AAGlD,YAAM,eAAe,KAAK,gBACvB,IAAI,CAAC,SAAS,SAAS,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,EACzD,OAAO,CAAC,MAAoB,MAAM,MAAS;AAE9C,YAAM,kBAAkB,CAAC,GAAG,cAAc,GAAG,aAAa;AAC1D,YAAM,eACJ,gBAAgB,WAAW,IACvB,gBAAgB,CAAC,IACjBA,MAAK,MAAM,eAAe;AAEhC,eAAS;AAAA,QACP,KAAK;AAAA,QACL,gCAAgC,MAAM,cAAc,OAAO;AAAA,MAC7D;AACA,cAAQ,OAAO,GAAG,CAAC;AAAA,IACrB;AAEA,QAAI,QAAQ,WAAW,QAAQ;AAC7B,YAAM,IAAI;AAAA,QACR,mCAAmC,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,MAC1E;AAAA,IACF;AAAA,EACF;AAGA,SAAO,CAAC,GAAG,SAAS,OAAO,GAAG,GAAG,YAAY,OAAO,CAAC;AACvD;","names":["Type","Type","Type","ColorValueSchema","Type","Type","Type","Type","Type"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/theme.ts"],"sourcesContent":["/**\n * PPTX Theme Schema\n * Simplified theme configuration for presentations\n */\nimport { Type, Static } from '@sinclair/typebox';\nimport { FontFamilyNameSchema } from '@json-to-office/shared';\nimport {\n ColorValueSchema,\n STYLE_NAMES,\n} from '@json-to-office/shared/schemas/slide-content';\nimport { PptxComponentDefaultsSchema } from './component-defaults';\n\nexport {\n ColorValueSchema,\n SEMANTIC_COLOR_NAMES,\n SEMANTIC_COLOR_ALIASES,\n STYLE_NAMES,\n StyleNameSchema,\n} from '@json-to-office/shared/schemas/slide-content';\nexport type { StyleName } from '@json-to-office/shared/schemas/slide-content';\n\nexport const GridMarginSchema = Type.Union(\n [\n Type.Number({ description: 'Margin in inches (all sides)' }),\n Type.Object(\n {\n top: Type.Number({ description: 'Top margin in inches' }),\n right: Type.Number({ description: 'Right margin in inches' }),\n bottom: Type.Number({ description: 'Bottom margin in inches' }),\n left: Type.Number({ description: 'Left margin in inches' }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Slide margins in inches' }\n);\n\nexport const GridGutterSchema = Type.Union(\n [\n Type.Number({ description: 'Gutter in inches (both axes)' }),\n Type.Object(\n {\n column: Type.Number({ description: 'Column gutter in inches' }),\n row: Type.Number({ description: 'Row gutter in inches' }),\n },\n { additionalProperties: false }\n ),\n ],\n { description: 'Gaps between grid tracks in inches' }\n);\n\nexport const GridConfigSchema = Type.Object(\n {\n columns: Type.Optional(\n Type.Number({\n minimum: 1,\n description: 'Number of columns (default: 12)',\n })\n ),\n rows: Type.Optional(\n Type.Number({ minimum: 1, description: 'Number of rows (default: 6)' })\n ),\n margin: Type.Optional(GridMarginSchema),\n gutter: Type.Optional(GridGutterSchema),\n },\n { additionalProperties: false, description: 'Grid layout configuration' }\n);\n\nexport type GridMargin = Static<typeof GridMarginSchema>;\nexport type GridGutter = Static<typeof GridGutterSchema>;\nexport type GridConfig = Static<typeof GridConfigSchema>;\n\nconst HexColorSchema = Type.String({\n pattern: '^#?[0-9A-Fa-f]{6}$',\n description: 'Hex color (e.g. #FF0000)',\n});\n\nexport const TextStyleSchema = Type.Object(\n {\n fontSize: Type.Optional(Type.Number()),\n fontFace: Type.Optional(FontFamilyNameSchema),\n fontColor: Type.Optional(ColorValueSchema),\n bold: Type.Optional(Type.Boolean()),\n fontWeight: Type.Optional(Type.Integer({ minimum: 100, maximum: 900 })),\n italic: Type.Optional(Type.Boolean()),\n align: Type.Optional(\n Type.Union([\n Type.Literal('left'),\n Type.Literal('center'),\n Type.Literal('right'),\n Type.Literal('justify'),\n ])\n ),\n lineSpacing: Type.Optional(Type.Number()),\n charSpacing: Type.Optional(Type.Number()),\n paraSpaceAfter: Type.Optional(Type.Number()),\n },\n { additionalProperties: false, description: 'Text style preset' }\n);\n\nexport type TextStyle = Static<typeof TextStyleSchema>;\n\n// ── Theme config ───────────────────────────────────────────────────\n\nexport const ThemeConfigSchema = Type.Object(\n {\n name: Type.String({ description: 'Theme name' }),\n colors: Type.Object(\n {\n primary: HexColorSchema,\n secondary: HexColorSchema,\n accent: HexColorSchema,\n background: HexColorSchema,\n text: HexColorSchema,\n text2: Type.Optional(HexColorSchema),\n background2: Type.Optional(HexColorSchema),\n accent4: Type.Optional(HexColorSchema),\n accent5: Type.Optional(HexColorSchema),\n accent6: Type.Optional(HexColorSchema),\n },\n {\n additionalProperties: false,\n description: 'Theme color palette (10-slot scheme)',\n }\n ),\n fonts: Type.Object(\n {\n heading: FontFamilyNameSchema,\n body: FontFamilyNameSchema,\n },\n { additionalProperties: false, description: 'Font families' }\n ),\n defaults: Type.Object(\n {\n fontSize: Type.Number({ description: 'Default font size in points' }),\n fontColor: HexColorSchema,\n },\n { additionalProperties: false, description: 'Default text styling' }\n ),\n styles: Type.Optional(\n Type.Partial(\n Type.Object(\n Object.fromEntries(\n STYLE_NAMES.map((n) => [n, TextStyleSchema])\n ) as Record<string, typeof TextStyleSchema>\n ),\n { additionalProperties: false, description: 'Named text style presets' }\n )\n ),\n componentDefaults: Type.Optional(PptxComponentDefaultsSchema),\n },\n {\n additionalProperties: false,\n description: 'Presentation theme configuration',\n }\n);\n\nexport type ThemeConfigJson = Static<typeof ThemeConfigSchema>;\n\nexport function isValidThemeConfig(data: unknown): data is ThemeConfigJson {\n return typeof data === 'object' && data !== null;\n}\n"],"mappings":"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","names":["ColorValueSchema","STYLE_NAMES"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|