json2pptx-schema 0.1.1 → 0.2.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/README.md +19 -5
- package/dist/index.d.mts +44 -22
- package/dist/index.d.ts +44 -22
- package/dist/index.js +622 -139
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +622 -139
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../versions/v1/defaults.ts","../runtime/errors.ts","../runtime/migrate.ts","../runtime/normalize.ts","../runtime/validate.ts","../versions/v1/schema.json","../runtime/parse.ts","../versions/v1/types.ts"],"sourcesContent":["import type {\n V1Document,\n V1Outline,\n V1SchemaVersion,\n V1Shadow,\n V1Theme\n} from './types'\n\nexport const DEFAULT_SCHEMA_VERSION: V1SchemaVersion = '1.0.0'\nexport const DEFAULT_TITLE = '未命名演示文稿'\nexport const DEFAULT_WIDTH = 1000\nexport const DEFAULT_HEIGHT = 562.5\n\nexport const DEFAULT_THEME_SHADOW: V1Shadow = {\n h: 3,\n v: 3,\n blur: 2,\n color: '#808080'\n}\n\nexport const DEFAULT_THEME_OUTLINE: V1Outline = {\n width: 2,\n color: '#525252',\n style: 'solid'\n}\n\nexport const DEFAULT_THEME: V1Theme = {\n themeColors: [],\n fontColor: '#333',\n fontName: '',\n backgroundColor: '#fff',\n shadow: DEFAULT_THEME_SHADOW,\n outline: DEFAULT_THEME_OUTLINE\n}\n\nexport const DEFAULT_SLIDE_TYPE = 'content'\nexport const DEFAULT_SLIDE_REMARK = ''\n\nexport const DEFAULT_TEXT_COLOR = '#333'\nexport const DEFAULT_ELEMENT_ROTATE = 0\nexport const DEFAULT_IMAGE_FIXED_RATIO = true\nexport const DEFAULT_SHAPE_FIXED_RATIO = false\nexport const DEFAULT_LINE_STYLE = 'solid'\nexport const DEFAULT_LINE_WIDTH = 2\n\nexport const LEGACY_SLIDE_TYPE_MAP: Record<string, string> = {\n agenda: 'contents',\n section: 'transition',\n ending: 'end'\n}\n\nexport const V1_DEFAULTS: Pick<\n V1Document,\n 'schemaVersion' | 'title' | 'width' | 'height'\n> & {\n theme: V1Theme\n} = {\n schemaVersion: DEFAULT_SCHEMA_VERSION,\n title: DEFAULT_TITLE,\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n theme: DEFAULT_THEME\n}\n","export type SchemaValidationIssue = {\n code: string\n path: string\n message: string\n keyword?: string\n params?: Record<string, unknown>\n}\n\nexport class SchemaValidationError extends Error {\n readonly issues: SchemaValidationIssue[]\n\n constructor(issues: SchemaValidationIssue[], message = 'Schema validation failed') {\n super(message)\n this.name = 'SchemaValidationError'\n this.issues = issues\n }\n}\n\nexport class UnsupportedSchemaVersionError extends Error {\n readonly code = 'UNSUPPORTED_SCHEMA_VERSION'\n readonly supportedVersion: string\n readonly receivedVersion?: string\n\n constructor(receivedVersion: unknown, supportedVersion: string) {\n const received =\n receivedVersion === undefined || receivedVersion === null\n ? undefined\n : String(receivedVersion)\n\n super(\n received\n ? `Unsupported schema version: ${received}. Supported version: ${supportedVersion}.`\n : `Unsupported schema version. Supported version: ${supportedVersion}.`\n )\n\n this.name = 'UnsupportedSchemaVersionError'\n this.supportedVersion = supportedVersion\n this.receivedVersion = received\n }\n}\n","import {\n DEFAULT_SCHEMA_VERSION,\n LEGACY_SLIDE_TYPE_MAP\n} from '../versions/v1/defaults'\nimport type { V1SchemaVersion } from '../versions/v1/types'\nimport { UnsupportedSchemaVersionError } from './errors'\n\ntype UnknownRecord = Record<string, unknown>\n\nconst V1_VERSION_EQUIVALENTS = new Set(['1', '1.0', '1.0.0'])\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction cloneValue<T>(value: T): T {\n if (typeof structuredClone === 'function') {\n return structuredClone(value)\n }\n return JSON.parse(JSON.stringify(value)) as T\n}\n\nfunction normalizeVersion(value: unknown): V1SchemaVersion | null {\n if (typeof value === 'number' && Number.isFinite(value)) {\n if (value === 1) return DEFAULT_SCHEMA_VERSION\n return null\n }\n\n if (typeof value !== 'string') return null\n const trimmed = value.trim()\n if (!trimmed) return null\n if (V1_VERSION_EQUIVALENTS.has(trimmed)) return DEFAULT_SCHEMA_VERSION\n return null\n}\n\nfunction migrateSlideType(type: unknown): unknown {\n if (typeof type !== 'string') return type\n const normalized = type.trim().toLowerCase()\n return LEGACY_SLIDE_TYPE_MAP[normalized] ?? type\n}\n\nexport function migrateDocument(\n input: unknown,\n toVersion: V1SchemaVersion = DEFAULT_SCHEMA_VERSION\n): unknown {\n if (!isRecord(input)) return input\n\n const migrated = cloneValue(input) as UnknownRecord\n const incomingVersion = migrated.schemaVersion ?? migrated.version\n\n if (incomingVersion === undefined) {\n migrated.schemaVersion = toVersion\n } else {\n const normalizedVersion = normalizeVersion(incomingVersion)\n if (!normalizedVersion || normalizedVersion !== toVersion) {\n throw new UnsupportedSchemaVersionError(incomingVersion, toVersion)\n }\n migrated.schemaVersion = toVersion\n }\n\n delete migrated.version\n\n if (isRecord(migrated.theme)) {\n const theme = migrated.theme\n if (typeof theme.fontname === 'string' && theme.fontName === undefined) {\n theme.fontName = theme.fontname\n delete theme.fontname\n }\n }\n\n if (Array.isArray(migrated.slides)) {\n migrated.slides = migrated.slides.map((slide) => {\n if (!isRecord(slide)) return slide\n const nextSlide = cloneValue(slide)\n nextSlide.type = migrateSlideType(nextSlide.type)\n return nextSlide\n })\n }\n\n return migrated\n}\n","import {\n DEFAULT_ELEMENT_ROTATE,\n DEFAULT_HEIGHT,\n DEFAULT_IMAGE_FIXED_RATIO,\n DEFAULT_LINE_STYLE,\n DEFAULT_LINE_WIDTH,\n DEFAULT_SCHEMA_VERSION,\n DEFAULT_SHAPE_FIXED_RATIO,\n DEFAULT_SLIDE_REMARK,\n DEFAULT_SLIDE_TYPE,\n DEFAULT_TEXT_COLOR,\n DEFAULT_THEME,\n DEFAULT_THEME_OUTLINE,\n DEFAULT_THEME_SHADOW,\n DEFAULT_TITLE,\n DEFAULT_WIDTH,\n LEGACY_SLIDE_TYPE_MAP\n} from '../versions/v1/defaults'\nimport type {\n V1Document,\n V1DocumentInput,\n V1Element,\n V1ImageElement,\n V1LineElement,\n V1Outline,\n V1Shadow,\n V1ShapeElement,\n V1Slide,\n V1SlideBackground,\n V1TextElement,\n V1Theme\n} from '../versions/v1/types'\n\ntype UnknownRecord = Record<string, unknown>\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction cloneValue<T>(value: T): T {\n if (typeof structuredClone === 'function') {\n return structuredClone(value)\n }\n return JSON.parse(JSON.stringify(value)) as T\n}\n\nfunction asString(value: unknown, fallback: string): string {\n return typeof value === 'string' ? value : fallback\n}\n\nfunction asNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback\n}\n\nfunction asBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback\n}\n\nfunction asPair(value: unknown, fallback: [number, number]): [number, number] {\n if (!Array.isArray(value) || value.length < 2) return fallback\n return [asNumber(value[0], fallback[0]), asNumber(value[1], fallback[1])]\n}\n\nfunction asLinePoints(value: unknown): [string, string] {\n if (!Array.isArray(value)) return ['', '']\n const first = typeof value[0] === 'string' ? value[0] : ''\n const second = typeof value[1] === 'string' ? value[1] : ''\n return [first, second]\n}\n\nfunction normalizeShadow(value: unknown): V1Shadow {\n const source = isRecord(value) ? value : {}\n return {\n ...source,\n h: asNumber(source.h, DEFAULT_THEME_SHADOW.h),\n v: asNumber(source.v, DEFAULT_THEME_SHADOW.v),\n blur: asNumber(source.blur, DEFAULT_THEME_SHADOW.blur),\n color: asString(source.color, DEFAULT_THEME_SHADOW.color)\n }\n}\n\nfunction normalizeOutline(value: unknown): V1Outline {\n const source = isRecord(value) ? value : {}\n return {\n ...source,\n width: asNumber(source.width, DEFAULT_THEME_OUTLINE.width),\n color: asString(source.color, DEFAULT_THEME_OUTLINE.color),\n style: asString(source.style, DEFAULT_THEME_OUTLINE.style)\n }\n}\n\nfunction normalizeTheme(value: unknown): V1Theme {\n const source = isRecord(value) ? value : {}\n const themeColors = Array.isArray(source.themeColors)\n ? source.themeColors.filter((item): item is string => typeof item === 'string')\n : DEFAULT_THEME.themeColors.slice()\n\n return {\n ...source,\n themeColors,\n fontColor: asString(source.fontColor, DEFAULT_THEME.fontColor),\n fontName: asString(source.fontName, DEFAULT_THEME.fontName),\n backgroundColor: asString(source.backgroundColor, DEFAULT_THEME.backgroundColor),\n shadow: normalizeShadow(source.shadow),\n outline: normalizeOutline(source.outline)\n }\n}\n\nfunction normalizeBackground(\n value: unknown,\n fallbackColor: string\n): V1SlideBackground | undefined {\n if (!isRecord(value)) return undefined\n\n const type =\n typeof value.type === 'string' && value.type.trim().length > 0\n ? value.type\n : 'solid'\n\n const normalized: V1SlideBackground = {\n ...value,\n type\n }\n\n if (type === 'solid' && typeof normalized.color !== 'string') {\n normalized.color = fallbackColor\n }\n\n return normalized\n}\n\nfunction normalizeElement(\n value: unknown,\n slideIndex: number,\n elementIndex: number,\n theme: V1Theme\n): V1Element {\n const fallbackId = `slide-${slideIndex + 1}-element-${elementIndex + 1}`\n\n if (!isRecord(value)) {\n return {\n type: 'unknown',\n id: fallbackId,\n left: 0,\n top: 0,\n rotate: DEFAULT_ELEMENT_ROTATE\n }\n }\n\n const type =\n typeof value.type === 'string' && value.type.trim().length > 0\n ? value.type\n : 'unknown'\n\n const base = {\n ...value,\n type,\n id: asString(value.id, fallbackId),\n left: asNumber(value.left, 0),\n top: asNumber(value.top, 0),\n rotate: asNumber(value.rotate, DEFAULT_ELEMENT_ROTATE)\n }\n\n if (type === 'text') {\n const textElement: V1TextElement = {\n ...base,\n type: 'text',\n width: asNumber(value.width, 0),\n height: asNumber(value.height, 0),\n content: asString(value.content, ''),\n defaultColor: asString(value.defaultColor, theme.fontColor || DEFAULT_TEXT_COLOR),\n defaultFontName: asString(value.defaultFontName, theme.fontName),\n vertical: asBoolean(value.vertical, false)\n }\n return textElement\n }\n\n if (type === 'shape') {\n const width = asNumber(value.width, 0)\n const height = asNumber(value.height, 0)\n const shapeElement: V1ShapeElement = {\n ...base,\n type: 'shape',\n width,\n height,\n path: asString(value.path, ''),\n viewBox: asPair(value.viewBox, [width, height]),\n fill: asString(value.fill, ''),\n fixedRatio: asBoolean(value.fixedRatio, DEFAULT_SHAPE_FIXED_RATIO)\n }\n return shapeElement\n }\n\n if (type === 'line') {\n const lineElement: V1LineElement = {\n ...base,\n type: 'line',\n width: asNumber(value.width, DEFAULT_LINE_WIDTH),\n start: asPair(value.start, [0, 0]),\n end: asPair(value.end, [0, 0]),\n points: asLinePoints(value.points),\n color: asString(value.color, '#000000'),\n style: asString(value.style, DEFAULT_LINE_STYLE)\n }\n return lineElement\n }\n\n if (type === 'image') {\n const imageElement: V1ImageElement = {\n ...base,\n type: 'image',\n width: asNumber(value.width, 0),\n height: asNumber(value.height, 0),\n src: asString(value.src, ''),\n fixedRatio: asBoolean(value.fixedRatio, DEFAULT_IMAGE_FIXED_RATIO)\n }\n return imageElement\n }\n\n return base\n}\n\nfunction normalizeSlide(value: unknown, index: number, theme: V1Theme): V1Slide {\n if (!isRecord(value)) {\n return {\n id: `slide-${index + 1}`,\n type: DEFAULT_SLIDE_TYPE,\n remark: DEFAULT_SLIDE_REMARK,\n elements: []\n }\n }\n\n const rawType = typeof value.type === 'string' ? value.type.trim() : ''\n const normalizedType =\n rawType && LEGACY_SLIDE_TYPE_MAP[rawType.toLowerCase()]\n ? LEGACY_SLIDE_TYPE_MAP[rawType.toLowerCase()]\n : rawType || DEFAULT_SLIDE_TYPE\n\n const sourceElements = Array.isArray(value.elements) ? value.elements : []\n const elements = sourceElements.map((element, elementIndex) =>\n normalizeElement(element, index, elementIndex, theme)\n )\n\n const background = normalizeBackground(value.background, theme.backgroundColor)\n\n return {\n ...value,\n id: asString(value.id, `slide-${index + 1}`),\n type: normalizedType,\n remark: asString(value.remark, DEFAULT_SLIDE_REMARK),\n background,\n elements\n }\n}\n\nexport function normalizeDocument(input: V1DocumentInput): V1Document {\n const source = cloneValue(input)\n\n if (!isRecord(source)) {\n return {\n schemaVersion: DEFAULT_SCHEMA_VERSION,\n title: DEFAULT_TITLE,\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n theme: normalizeTheme(undefined),\n slides: []\n }\n }\n\n const theme = normalizeTheme(source.theme)\n const sourceSlides = Array.isArray(source.slides) ? source.slides : []\n const slides = sourceSlides.map((slide, index) => normalizeSlide(slide, index, theme))\n\n const normalized = {\n ...source,\n schemaVersion: DEFAULT_SCHEMA_VERSION,\n title: asString(source.title, DEFAULT_TITLE),\n width: asNumber(source.width, DEFAULT_WIDTH),\n height: asNumber(source.height, DEFAULT_HEIGHT),\n theme,\n slides\n } as V1Document\n\n delete (normalized as UnknownRecord).version\n\n return normalized\n}\n","import Ajv, { type ErrorObject } from 'ajv'\nimport schemaV1 from '../versions/v1/schema.json'\nimport type { V1DocumentInput } from '../versions/v1/types'\nimport { SchemaValidationError, type SchemaValidationIssue } from './errors'\n\nconst ajv = new Ajv({\n allErrors: true,\n strict: false,\n allowUnionTypes: true\n})\n\nconst validateV1 = ajv.compile(schemaV1)\n\nfunction mapError(error: ErrorObject): SchemaValidationIssue {\n return {\n code: 'SCHEMA_VALIDATION_ERROR',\n path: error.instancePath || '/',\n message: error.message ?? 'Invalid value',\n keyword: error.keyword,\n params:\n error.params && typeof error.params === 'object'\n ? (error.params as Record<string, unknown>)\n : undefined\n }\n}\n\nexport function validateDocument(input: unknown): V1DocumentInput {\n const valid = validateV1(input)\n if (!valid) {\n const issues = (validateV1.errors ?? []).map(mapError)\n throw new SchemaValidationError(issues)\n }\n\n return input as V1DocumentInput\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://json2pptx.dev/schema/v1\",\n \"title\": \"json2pptx document schema v1\",\n \"type\": \"object\",\n \"required\": [\"slides\"],\n \"properties\": {\n \"schemaVersion\": {\n \"const\": \"1.0.0\"\n },\n \"version\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n { \"type\": \"number\" }\n ]\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"width\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"height\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"theme\": {\n \"$ref\": \"#/definitions/theme\"\n },\n \"slides\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/slide\"\n }\n }\n },\n \"additionalProperties\": true,\n \"definitions\": {\n \"shadow\": {\n \"type\": \"object\",\n \"required\": [\"h\", \"v\", \"blur\", \"color\"],\n \"properties\": {\n \"h\": { \"type\": \"number\" },\n \"v\": { \"type\": \"number\" },\n \"blur\": { \"type\": \"number\" },\n \"color\": { \"type\": \"string\" }\n },\n \"additionalProperties\": true\n },\n \"outline\": {\n \"type\": \"object\",\n \"required\": [\"width\", \"color\", \"style\"],\n \"properties\": {\n \"width\": { \"type\": \"number\" },\n \"color\": { \"type\": \"string\" },\n \"style\": { \"type\": \"string\" }\n },\n \"additionalProperties\": true\n },\n \"gradientStop\": {\n \"type\": \"object\",\n \"required\": [\"pos\", \"color\"],\n \"properties\": {\n \"pos\": { \"type\": \"number\" },\n \"color\": { \"type\": \"string\" }\n },\n \"additionalProperties\": true\n },\n \"gradient\": {\n \"type\": \"object\",\n \"required\": [\"type\", \"rotate\", \"colors\"],\n \"properties\": {\n \"type\": { \"type\": \"string\" },\n \"rotate\": { \"type\": \"number\" },\n \"colors\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"items\": {\n \"$ref\": \"#/definitions/gradientStop\"\n }\n }\n },\n \"additionalProperties\": true\n },\n \"theme\": {\n \"type\": \"object\",\n \"properties\": {\n \"themeColors\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n },\n \"fontColor\": { \"type\": \"string\" },\n \"fontName\": { \"type\": \"string\" },\n \"backgroundColor\": { \"type\": \"string\" },\n \"shadow\": { \"$ref\": \"#/definitions/shadow\" },\n \"outline\": { \"$ref\": \"#/definitions/outline\" }\n },\n \"additionalProperties\": true\n },\n \"pair\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"items\": { \"type\": \"number\" }\n },\n \"linePoints\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"items\": { \"type\": \"string\" }\n },\n \"shapeText\": {\n \"type\": \"object\",\n \"required\": [\"content\"],\n \"properties\": {\n \"content\": { \"type\": \"string\" },\n \"defaultColor\": { \"type\": \"string\" },\n \"defaultFontName\": { \"type\": \"string\" },\n \"align\": { \"type\": \"string\" },\n \"lineHeight\": { \"type\": \"number\" },\n \"type\": { \"type\": \"string\" }\n },\n \"additionalProperties\": true\n },\n \"clip\": {\n \"type\": \"object\",\n \"required\": [\"shape\", \"range\"],\n \"properties\": {\n \"shape\": { \"type\": \"string\" },\n \"range\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"items\": {\n \"$ref\": \"#/definitions/pair\"\n }\n }\n },\n \"additionalProperties\": true\n },\n \"filters\": {\n \"type\": \"object\",\n \"properties\": {\n \"opacity\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n { \"type\": \"number\" }\n ]\n },\n \"grayscale\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n { \"type\": \"number\" }\n ]\n },\n \"blur\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n { \"type\": \"number\" }\n ]\n },\n \"sepia\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n { \"type\": \"number\" }\n ]\n },\n \"saturate\": {\n \"oneOf\": [\n { \"type\": \"string\" },\n { \"type\": \"number\" }\n ]\n }\n },\n \"additionalProperties\": true\n },\n \"tableCellStyle\": {\n \"type\": \"object\",\n \"properties\": {\n \"fontname\": { \"type\": \"string\" },\n \"color\": { \"type\": \"string\" },\n \"align\": { \"type\": \"string\" },\n \"fontsize\": { \"type\": \"string\" },\n \"backcolor\": { \"type\": \"string\" }\n },\n \"additionalProperties\": true\n },\n \"tableCell\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": { \"type\": \"string\" },\n \"colspan\": { \"type\": \"number\" },\n \"rowspan\": { \"type\": \"number\" },\n \"text\": { \"type\": \"string\" },\n \"style\": { \"$ref\": \"#/definitions/tableCellStyle\" }\n },\n \"additionalProperties\": true\n },\n \"element\": {\n \"type\": \"object\",\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"type\": \"string\" },\n \"id\": { \"type\": \"string\" },\n \"groupId\": { \"type\": \"string\" },\n \"left\": { \"type\": \"number\" },\n \"top\": { \"type\": \"number\" },\n \"width\": { \"type\": \"number\" },\n \"height\": { \"type\": \"number\" },\n \"rotate\": { \"type\": \"number\" },\n \"lock\": { \"type\": \"boolean\" },\n \"opacity\": { \"type\": \"number\" },\n \"flipH\": { \"type\": \"boolean\" },\n \"flipV\": { \"type\": \"boolean\" },\n \"shadow\": { \"$ref\": \"#/definitions/shadow\" },\n \"outline\": { \"$ref\": \"#/definitions/outline\" }\n },\n \"allOf\": [\n {\n \"if\": {\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"const\": \"text\" }\n }\n },\n \"then\": {\n \"required\": [\"content\", \"left\", \"top\", \"width\", \"height\"],\n \"properties\": {\n \"content\": { \"type\": \"string\" },\n \"defaultColor\": { \"type\": \"string\" },\n \"defaultFontName\": { \"type\": \"string\" },\n \"fill\": { \"type\": \"string\" },\n \"lineHeight\": { \"type\": \"number\" },\n \"paragraphSpace\": { \"type\": \"number\" },\n \"textType\": { \"type\": \"string\" },\n \"vertical\": { \"type\": \"boolean\" },\n \"wordSpace\": { \"type\": \"number\" }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"const\": \"shape\" }\n }\n },\n \"then\": {\n \"required\": [\n \"path\",\n \"viewBox\",\n \"fill\",\n \"left\",\n \"top\",\n \"width\",\n \"height\"\n ],\n \"properties\": {\n \"path\": { \"type\": \"string\" },\n \"viewBox\": { \"$ref\": \"#/definitions/pair\" },\n \"fill\": { \"type\": \"string\" },\n \"fixedRatio\": { \"type\": \"boolean\" },\n \"keypoints\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"number\" }\n },\n \"pathFormula\": { \"type\": \"string\" },\n \"gradient\": { \"$ref\": \"#/definitions/gradient\" },\n \"special\": { \"type\": \"boolean\" },\n \"text\": { \"$ref\": \"#/definitions/shapeText\" }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"const\": \"line\" }\n }\n },\n \"then\": {\n \"required\": [\n \"start\",\n \"end\",\n \"points\",\n \"color\",\n \"width\",\n \"left\",\n \"top\"\n ],\n \"properties\": {\n \"start\": { \"$ref\": \"#/definitions/pair\" },\n \"end\": { \"$ref\": \"#/definitions/pair\" },\n \"points\": { \"$ref\": \"#/definitions/linePoints\" },\n \"broken\": { \"$ref\": \"#/definitions/pair\" },\n \"color\": { \"type\": \"string\" },\n \"style\": { \"type\": \"string\" },\n \"width\": { \"type\": \"number\" }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"const\": \"image\" }\n }\n },\n \"then\": {\n \"required\": [\"src\", \"left\", \"top\", \"width\", \"height\"],\n \"properties\": {\n \"src\": { \"type\": \"string\" },\n \"fixedRatio\": { \"type\": \"boolean\" },\n \"clip\": { \"$ref\": \"#/definitions/clip\" },\n \"filters\": { \"$ref\": \"#/definitions/filters\" },\n \"imageType\": { \"type\": \"string\" },\n \"radius\": { \"type\": \"number\" },\n \"colorMask\": { \"type\": \"string\" }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"const\": \"table\" }\n }\n },\n \"then\": {\n \"required\": [\"left\", \"top\", \"width\", \"height\"],\n \"properties\": {\n \"colWidths\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"number\" }\n },\n \"data\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/tableCell\"\n }\n }\n },\n \"cellMinHeight\": { \"type\": \"number\" }\n }\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"slideBackground\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"type\": \"string\" },\n \"color\": { \"type\": \"string\" },\n \"src\": { \"type\": \"string\" },\n \"gradient\": { \"$ref\": \"#/definitions/gradient\" }\n },\n \"additionalProperties\": true\n },\n \"slide\": {\n \"type\": \"object\",\n \"required\": [\"elements\"],\n \"properties\": {\n \"id\": { \"type\": \"string\" },\n \"type\": { \"type\": \"string\" },\n \"remark\": { \"type\": \"string\" },\n \"background\": { \"$ref\": \"#/definitions/slideBackground\" },\n \"elements\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/element\"\n }\n }\n },\n \"additionalProperties\": true\n }\n }\n}\n","import type { V1Document } from '../versions/v1/types'\nimport { migrateDocument } from './migrate'\nimport { normalizeDocument } from './normalize'\nimport { validateDocument } from './validate'\n\nexport function parseDocument(input: unknown): V1Document {\n const migrated = migrateDocument(input)\n const validated = validateDocument(migrated)\n return normalizeDocument(validated)\n}\n","export const V1_SCHEMA_VERSION = '1.0.0' as const\n\nexport type V1SchemaVersion = typeof V1_SCHEMA_VERSION\n\nexport type V1Outline = {\n width: number\n color: string\n style: string\n [key: string]: unknown\n}\n\nexport type V1Shadow = {\n h: number\n v: number\n blur: number\n color: string\n [key: string]: unknown\n}\n\nexport type V1GradientStop = {\n pos: number\n color: string\n [key: string]: unknown\n}\n\nexport type V1Gradient = {\n type: string\n rotate: number\n colors: V1GradientStop[]\n [key: string]: unknown\n}\n\nexport type V1ThemeInput = {\n themeColors?: string[]\n fontColor?: string\n fontName?: string\n backgroundColor?: string\n shadow?: Partial<V1Shadow>\n outline?: Partial<V1Outline>\n [key: string]: unknown\n}\n\nexport type V1Theme = {\n themeColors: string[]\n fontColor: string\n fontName: string\n backgroundColor: string\n shadow: V1Shadow\n outline: V1Outline\n [key: string]: unknown\n}\n\nexport type V1SlideBackgroundInput = {\n type?: string\n color?: string\n src?: string\n gradient?: V1Gradient\n [key: string]: unknown\n}\n\nexport type V1SlideBackground = {\n type: string\n color?: string\n src?: string\n gradient?: V1Gradient\n [key: string]: unknown\n}\n\nexport type V1ElementBaseInput<T extends string = string> = {\n type: T\n id?: string\n groupId?: string\n left?: number\n top?: number\n width?: number\n height?: number\n rotate?: number\n lock?: boolean\n opacity?: number\n flipH?: boolean\n flipV?: boolean\n outline?: Partial<V1Outline>\n shadow?: Partial<V1Shadow>\n [key: string]: unknown\n}\n\nexport type V1ElementBase<T extends string = string> = V1ElementBaseInput<T> & {\n id: string\n left: number\n top: number\n rotate: number\n}\n\nexport type V1ShapeText = {\n content: string\n defaultColor?: string\n defaultFontName?: string\n align?: string\n lineHeight?: number\n type?: string\n [key: string]: unknown\n}\n\nexport type V1TextElementInput = V1ElementBaseInput<'text'> & {\n content?: string\n defaultColor?: string\n defaultFontName?: string\n fill?: string\n lineHeight?: number\n paragraphSpace?: number\n textType?: string\n vertical?: boolean\n wordSpace?: number\n}\n\nexport type V1TextElement = V1ElementBase<'text'> & {\n width: number\n height: number\n content: string\n defaultColor: string\n defaultFontName: string\n fill?: string\n lineHeight?: number\n paragraphSpace?: number\n textType?: string\n vertical: boolean\n wordSpace?: number\n}\n\nexport type V1ShapeElementInput = V1ElementBaseInput<'shape'> & {\n path?: string\n viewBox?: [number, number]\n fill?: string\n fixedRatio?: boolean\n keypoints?: number[]\n pathFormula?: string\n gradient?: V1Gradient\n special?: boolean\n text?: V1ShapeText\n}\n\nexport type V1ShapeElement = V1ElementBase<'shape'> & {\n width: number\n height: number\n path: string\n viewBox: [number, number]\n fill: string\n fixedRatio: boolean\n keypoints?: number[]\n pathFormula?: string\n gradient?: V1Gradient\n special?: boolean\n text?: V1ShapeText\n}\n\nexport type V1LineElementInput = V1ElementBaseInput<'line'> & {\n start?: [number, number]\n end?: [number, number]\n points?: string[]\n broken?: [number, number]\n color?: string\n style?: string\n width?: number\n}\n\nexport type V1LineElement = V1ElementBase<'line'> & {\n start: [number, number]\n end: [number, number]\n points: [string, string]\n broken?: [number, number]\n color: string\n style: string\n width: number\n}\n\nexport type V1ImageClip = {\n shape: string\n range: [[number, number], [number, number]]\n [key: string]: unknown\n}\n\nexport type V1ImageFilters = {\n opacity?: string | number\n grayscale?: string | number\n blur?: string | number\n sepia?: string | number\n saturate?: string | number\n [key: string]: unknown\n}\n\nexport type V1ImageElementInput = V1ElementBaseInput<'image'> & {\n src?: string\n fixedRatio?: boolean\n clip?: V1ImageClip\n filters?: V1ImageFilters\n imageType?: string\n radius?: number\n colorMask?: string\n}\n\nexport type V1ImageElement = V1ElementBase<'image'> & {\n width: number\n height: number\n src: string\n fixedRatio: boolean\n clip?: V1ImageClip\n filters?: V1ImageFilters\n imageType?: string\n radius?: number\n colorMask?: string\n}\n\nexport type V1UnknownElementInput = V1ElementBaseInput<string>\n\nexport type V1UnknownElement = V1ElementBase<string>\n\nexport type V1ElementInput =\n | V1TextElementInput\n | V1ShapeElementInput\n | V1LineElementInput\n | V1ImageElementInput\n | V1UnknownElementInput\n\nexport type V1Element =\n | V1TextElement\n | V1ShapeElement\n | V1LineElement\n | V1ImageElement\n | V1UnknownElement\n\nexport type V1SlideInput = {\n id?: string\n type?: string\n remark?: string\n background?: V1SlideBackgroundInput\n elements?: V1ElementInput[]\n [key: string]: unknown\n}\n\nexport type V1Slide = {\n id: string\n type: string\n remark: string\n background?: V1SlideBackground\n elements: V1Element[]\n [key: string]: unknown\n}\n\nexport type V1DocumentInput = {\n schemaVersion?: string\n version?: string | number\n title?: string\n width?: number\n height?: number\n theme?: V1ThemeInput\n slides: V1SlideInput[]\n [key: string]: unknown\n}\n\nexport type V1Document = {\n schemaVersion: V1SchemaVersion\n title: string\n width: number\n height: number\n theme: V1Theme\n slides: V1Slide[]\n [key: string]: unknown\n}\n"],"mappings":";AAQO,IAAM,yBAA0C;AAChD,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AAEvB,IAAM,uBAAiC;AAAA,EAC5C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,MAAM;AAAA,EACN,OAAO;AACT;AAEO,IAAM,wBAAmC;AAAA,EAC9C,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AAEO,IAAM,gBAAyB;AAAA,EACpC,aAAa,CAAC;AAAA,EACd,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,IAAM,qBAAqB;AAC3B,IAAM,uBAAuB;AAE7B,IAAM,qBAAqB;AAC3B,IAAM,yBAAyB;AAC/B,IAAM,4BAA4B;AAClC,IAAM,4BAA4B;AAClC,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAE3B,IAAM,wBAAgD;AAAA,EAC3D,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AACV;AAEO,IAAM,cAKT;AAAA,EACF,eAAe;AAAA,EACf,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;;;ACtDO,IAAM,wBAAN,cAAoC,MAAM;AAAA,EAG/C,YAAY,QAAiC,UAAU,4BAA4B;AACjF,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAChB;AACF;AAEO,IAAM,gCAAN,cAA4C,MAAM;AAAA,EAKvD,YAAY,iBAA0B,kBAA0B;AAC9D,UAAM,WACJ,oBAAoB,UAAa,oBAAoB,OACjD,SACA,OAAO,eAAe;AAE5B;AAAA,MACE,WACI,+BAA+B,QAAQ,wBAAwB,gBAAgB,MAC/E,kDAAkD,gBAAgB;AAAA,IACxE;AAdF,SAAS,OAAO;AAgBd,SAAK,OAAO;AACZ,SAAK,mBAAmB;AACxB,SAAK,kBAAkB;AAAA,EACzB;AACF;;;AC9BA,IAAM,yBAAyB,oBAAI,IAAI,CAAC,KAAK,OAAO,OAAO,CAAC;AAE5D,SAAS,SAAS,OAAwC;AACxD,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,WAAc,OAAa;AAClC,MAAI,OAAO,oBAAoB,YAAY;AACzC,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AACA,SAAO,KAAK,MAAM,KAAK,UAAU,KAAK,CAAC;AACzC;AAEA,SAAS,iBAAiB,OAAwC;AAChE,MAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,GAAG;AACvD,QAAI,UAAU,EAAG,QAAO;AACxB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,uBAAuB,IAAI,OAAO,EAAG,QAAO;AAChD,SAAO;AACT;AAEA,SAAS,iBAAiB,MAAwB;AAChD,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,QAAM,aAAa,KAAK,KAAK,EAAE,YAAY;AAC3C,SAAO,sBAAsB,UAAU,KAAK;AAC9C;AAEO,SAAS,gBACd,OACA,YAA6B,wBACpB;AACT,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAE7B,QAAM,WAAW,WAAW,KAAK;AACjC,QAAM,kBAAkB,SAAS,iBAAiB,SAAS;AAE3D,MAAI,oBAAoB,QAAW;AACjC,aAAS,gBAAgB;AAAA,EAC3B,OAAO;AACL,UAAM,oBAAoB,iBAAiB,eAAe;AAC1D,QAAI,CAAC,qBAAqB,sBAAsB,WAAW;AACzD,YAAM,IAAI,8BAA8B,iBAAiB,SAAS;AAAA,IACpE;AACA,aAAS,gBAAgB;AAAA,EAC3B;AAEA,SAAO,SAAS;AAEhB,MAAI,SAAS,SAAS,KAAK,GAAG;AAC5B,UAAM,QAAQ,SAAS;AACvB,QAAI,OAAO,MAAM,aAAa,YAAY,MAAM,aAAa,QAAW;AACtE,YAAM,WAAW,MAAM;AACvB,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,MAAI,MAAM,QAAQ,SAAS,MAAM,GAAG;AAClC,aAAS,SAAS,SAAS,OAAO,IAAI,CAAC,UAAU;AAC/C,UAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,YAAM,YAAY,WAAW,KAAK;AAClC,gBAAU,OAAO,iBAAiB,UAAU,IAAI;AAChD,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AC7CA,SAASA,UAAS,OAAwC;AACxD,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAASC,YAAc,OAAa;AAClC,MAAI,OAAO,oBAAoB,YAAY;AACzC,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AACA,SAAO,KAAK,MAAM,KAAK,UAAU,KAAK,CAAC;AACzC;AAEA,SAAS,SAAS,OAAgB,UAA0B;AAC1D,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEA,SAAS,SAAS,OAAgB,UAA0B;AAC1D,SAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;AACvE;AAEA,SAAS,UAAU,OAAgB,UAA4B;AAC7D,SAAO,OAAO,UAAU,YAAY,QAAQ;AAC9C;AAEA,SAAS,OAAO,OAAgB,UAA8C;AAC5E,MAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,EAAG,QAAO;AACtD,SAAO,CAAC,SAAS,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC1E;AAEA,SAAS,aAAa,OAAkC;AACtD,MAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC,IAAI,EAAE;AACzC,QAAM,QAAQ,OAAO,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,IAAI;AACxD,QAAM,SAAS,OAAO,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,IAAI;AACzD,SAAO,CAAC,OAAO,MAAM;AACvB;AAEA,SAAS,gBAAgB,OAA0B;AACjD,QAAM,SAASD,UAAS,KAAK,IAAI,QAAQ,CAAC;AAC1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,SAAS,OAAO,GAAG,qBAAqB,CAAC;AAAA,IAC5C,GAAG,SAAS,OAAO,GAAG,qBAAqB,CAAC;AAAA,IAC5C,MAAM,SAAS,OAAO,MAAM,qBAAqB,IAAI;AAAA,IACrD,OAAO,SAAS,OAAO,OAAO,qBAAqB,KAAK;AAAA,EAC1D;AACF;AAEA,SAAS,iBAAiB,OAA2B;AACnD,QAAM,SAASA,UAAS,KAAK,IAAI,QAAQ,CAAC;AAC1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,SAAS,OAAO,OAAO,sBAAsB,KAAK;AAAA,IACzD,OAAO,SAAS,OAAO,OAAO,sBAAsB,KAAK;AAAA,IACzD,OAAO,SAAS,OAAO,OAAO,sBAAsB,KAAK;AAAA,EAC3D;AACF;AAEA,SAAS,eAAe,OAAyB;AAC/C,QAAM,SAASA,UAAS,KAAK,IAAI,QAAQ,CAAC;AAC1C,QAAM,cAAc,MAAM,QAAQ,OAAO,WAAW,IAChD,OAAO,YAAY,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ,IAC5E,cAAc,YAAY,MAAM;AAEpC,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA,WAAW,SAAS,OAAO,WAAW,cAAc,SAAS;AAAA,IAC7D,UAAU,SAAS,OAAO,UAAU,cAAc,QAAQ;AAAA,IAC1D,iBAAiB,SAAS,OAAO,iBAAiB,cAAc,eAAe;AAAA,IAC/E,QAAQ,gBAAgB,OAAO,MAAM;AAAA,IACrC,SAAS,iBAAiB,OAAO,OAAO;AAAA,EAC1C;AACF;AAEA,SAAS,oBACP,OACA,eAC+B;AAC/B,MAAI,CAACA,UAAS,KAAK,EAAG,QAAO;AAE7B,QAAM,OACJ,OAAO,MAAM,SAAS,YAAY,MAAM,KAAK,KAAK,EAAE,SAAS,IACzD,MAAM,OACN;AAEN,QAAM,aAAgC;AAAA,IACpC,GAAG;AAAA,IACH;AAAA,EACF;AAEA,MAAI,SAAS,WAAW,OAAO,WAAW,UAAU,UAAU;AAC5D,eAAW,QAAQ;AAAA,EACrB;AAEA,SAAO;AACT;AAEA,SAAS,iBACP,OACA,YACA,cACA,OACW;AACX,QAAM,aAAa,SAAS,aAAa,CAAC,YAAY,eAAe,CAAC;AAEtE,MAAI,CAACA,UAAS,KAAK,GAAG;AACpB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,OACJ,OAAO,MAAM,SAAS,YAAY,MAAM,KAAK,KAAK,EAAE,SAAS,IACzD,MAAM,OACN;AAEN,QAAM,OAAO;AAAA,IACX,GAAG;AAAA,IACH;AAAA,IACA,IAAI,SAAS,MAAM,IAAI,UAAU;AAAA,IACjC,MAAM,SAAS,MAAM,MAAM,CAAC;AAAA,IAC5B,KAAK,SAAS,MAAM,KAAK,CAAC;AAAA,IAC1B,QAAQ,SAAS,MAAM,QAAQ,sBAAsB;AAAA,EACvD;AAEA,MAAI,SAAS,QAAQ;AACnB,UAAM,cAA6B;AAAA,MACjC,GAAG;AAAA,MACH,MAAM;AAAA,MACN,OAAO,SAAS,MAAM,OAAO,CAAC;AAAA,MAC9B,QAAQ,SAAS,MAAM,QAAQ,CAAC;AAAA,MAChC,SAAS,SAAS,MAAM,SAAS,EAAE;AAAA,MACnC,cAAc,SAAS,MAAM,cAAc,MAAM,aAAa,kBAAkB;AAAA,MAChF,iBAAiB,SAAS,MAAM,iBAAiB,MAAM,QAAQ;AAAA,MAC/D,UAAU,UAAU,MAAM,UAAU,KAAK;AAAA,IAC3C;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,SAAS;AACpB,UAAM,QAAQ,SAAS,MAAM,OAAO,CAAC;AACrC,UAAM,SAAS,SAAS,MAAM,QAAQ,CAAC;AACvC,UAAM,eAA+B;AAAA,MACnC,GAAG;AAAA,MACH,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,MAAM,SAAS,MAAM,MAAM,EAAE;AAAA,MAC7B,SAAS,OAAO,MAAM,SAAS,CAAC,OAAO,MAAM,CAAC;AAAA,MAC9C,MAAM,SAAS,MAAM,MAAM,EAAE;AAAA,MAC7B,YAAY,UAAU,MAAM,YAAY,yBAAyB;AAAA,IACnE;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,QAAQ;AACnB,UAAM,cAA6B;AAAA,MACjC,GAAG;AAAA,MACH,MAAM;AAAA,MACN,OAAO,SAAS,MAAM,OAAO,kBAAkB;AAAA,MAC/C,OAAO,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AAAA,MACjC,KAAK,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA,MAC7B,QAAQ,aAAa,MAAM,MAAM;AAAA,MACjC,OAAO,SAAS,MAAM,OAAO,SAAS;AAAA,MACtC,OAAO,SAAS,MAAM,OAAO,kBAAkB;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,SAAS;AACpB,UAAM,eAA+B;AAAA,MACnC,GAAG;AAAA,MACH,MAAM;AAAA,MACN,OAAO,SAAS,MAAM,OAAO,CAAC;AAAA,MAC9B,QAAQ,SAAS,MAAM,QAAQ,CAAC;AAAA,MAChC,KAAK,SAAS,MAAM,KAAK,EAAE;AAAA,MAC3B,YAAY,UAAU,MAAM,YAAY,yBAAyB;AAAA,IACnE;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,eAAe,OAAgB,OAAe,OAAyB;AAC9E,MAAI,CAACA,UAAS,KAAK,GAAG;AACpB,WAAO;AAAA,MACL,IAAI,SAAS,QAAQ,CAAC;AAAA,MACtB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAEA,QAAM,UAAU,OAAO,MAAM,SAAS,WAAW,MAAM,KAAK,KAAK,IAAI;AACrE,QAAM,iBACJ,WAAW,sBAAsB,QAAQ,YAAY,CAAC,IAClD,sBAAsB,QAAQ,YAAY,CAAC,IAC3C,WAAW;AAEjB,QAAM,iBAAiB,MAAM,QAAQ,MAAM,QAAQ,IAAI,MAAM,WAAW,CAAC;AACzE,QAAM,WAAW,eAAe;AAAA,IAAI,CAAC,SAAS,iBAC5C,iBAAiB,SAAS,OAAO,cAAc,KAAK;AAAA,EACtD;AAEA,QAAM,aAAa,oBAAoB,MAAM,YAAY,MAAM,eAAe;AAE9E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,SAAS,MAAM,IAAI,SAAS,QAAQ,CAAC,EAAE;AAAA,IAC3C,MAAM;AAAA,IACN,QAAQ,SAAS,MAAM,QAAQ,oBAAoB;AAAA,IACnD;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,OAAoC;AACpE,QAAM,SAASC,YAAW,KAAK;AAE/B,MAAI,CAACD,UAAS,MAAM,GAAG;AACrB,WAAO;AAAA,MACL,eAAe;AAAA,MACf,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,eAAe,MAAS;AAAA,MAC/B,QAAQ,CAAC;AAAA,IACX;AAAA,EACF;AAEA,QAAM,QAAQ,eAAe,OAAO,KAAK;AACzC,QAAM,eAAe,MAAM,QAAQ,OAAO,MAAM,IAAI,OAAO,SAAS,CAAC;AACrE,QAAM,SAAS,aAAa,IAAI,CAAC,OAAO,UAAU,eAAe,OAAO,OAAO,KAAK,CAAC;AAErF,QAAM,aAAa;AAAA,IACjB,GAAG;AAAA,IACH,eAAe;AAAA,IACf,OAAO,SAAS,OAAO,OAAO,aAAa;AAAA,IAC3C,OAAO,SAAS,OAAO,OAAO,aAAa;AAAA,IAC3C,QAAQ,SAAS,OAAO,QAAQ,cAAc;AAAA,IAC9C;AAAA,IACA;AAAA,EACF;AAEA,SAAQ,WAA6B;AAErC,SAAO;AACT;;;AC9RA,OAAO,SAA+B;;;ACAtC;AAAA,EACE,SAAW;AAAA,EACX,KAAO;AAAA,EACP,OAAS;AAAA,EACT,MAAQ;AAAA,EACR,UAAY,CAAC,QAAQ;AAAA,EACrB,YAAc;AAAA,IACZ,eAAiB;AAAA,MACf,OAAS;AAAA,IACX;AAAA,IACA,SAAW;AAAA,MACT,OAAS;AAAA,QACP,EAAE,MAAQ,SAAS;AAAA,QACnB,EAAE,MAAQ,SAAS;AAAA,MACrB;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP,MAAQ;AAAA,IACV;AAAA,IACA,OAAS;AAAA,MACP,MAAQ;AAAA,MACR,kBAAoB;AAAA,IACtB;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,kBAAoB;AAAA,IACtB;AAAA,IACA,OAAS;AAAA,MACP,MAAQ;AAAA,IACV;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,OAAS;AAAA,QACP,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,sBAAwB;AAAA,EACxB,aAAe;AAAA,IACb,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,UAAY,CAAC,KAAK,KAAK,QAAQ,OAAO;AAAA,MACtC,YAAc;AAAA,QACZ,GAAK,EAAE,MAAQ,SAAS;AAAA,QACxB,GAAK,EAAE,MAAQ,SAAS;AAAA,QACxB,MAAQ,EAAE,MAAQ,SAAS;AAAA,QAC3B,OAAS,EAAE,MAAQ,SAAS;AAAA,MAC9B;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,SAAW;AAAA,MACT,MAAQ;AAAA,MACR,UAAY,CAAC,SAAS,SAAS,OAAO;AAAA,MACtC,YAAc;AAAA,QACZ,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC5B,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC5B,OAAS,EAAE,MAAQ,SAAS;AAAA,MAC9B;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,cAAgB;AAAA,MACd,MAAQ;AAAA,MACR,UAAY,CAAC,OAAO,OAAO;AAAA,MAC3B,YAAc;AAAA,QACZ,KAAO,EAAE,MAAQ,SAAS;AAAA,QAC1B,OAAS,EAAE,MAAQ,SAAS;AAAA,MAC9B;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,UAAY;AAAA,MACV,MAAQ;AAAA,MACR,UAAY,CAAC,QAAQ,UAAU,QAAQ;AAAA,MACvC,YAAc;AAAA,QACZ,MAAQ,EAAE,MAAQ,SAAS;AAAA,QAC3B,QAAU,EAAE,MAAQ,SAAS;AAAA,QAC7B,QAAU;AAAA,UACR,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,OAAS;AAAA,YACP,MAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,OAAS;AAAA,MACP,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC9B;AAAA,QACA,WAAa,EAAE,MAAQ,SAAS;AAAA,QAChC,UAAY,EAAE,MAAQ,SAAS;AAAA,QAC/B,iBAAmB,EAAE,MAAQ,SAAS;AAAA,QACtC,QAAU,EAAE,MAAQ,uBAAuB;AAAA,QAC3C,SAAW,EAAE,MAAQ,wBAAwB;AAAA,MAC/C;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,MAAQ;AAAA,MACN,MAAQ;AAAA,MACR,UAAY;AAAA,MACZ,UAAY;AAAA,MACZ,OAAS,EAAE,MAAQ,SAAS;AAAA,IAC9B;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,UAAY;AAAA,MACZ,UAAY;AAAA,MACZ,OAAS,EAAE,MAAQ,SAAS;AAAA,IAC9B;AAAA,IACA,WAAa;AAAA,MACX,MAAQ;AAAA,MACR,UAAY,CAAC,SAAS;AAAA,MACtB,YAAc;AAAA,QACZ,SAAW,EAAE,MAAQ,SAAS;AAAA,QAC9B,cAAgB,EAAE,MAAQ,SAAS;AAAA,QACnC,iBAAmB,EAAE,MAAQ,SAAS;AAAA,QACtC,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC5B,YAAc,EAAE,MAAQ,SAAS;AAAA,QACjC,MAAQ,EAAE,MAAQ,SAAS;AAAA,MAC7B;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,MAAQ;AAAA,MACN,MAAQ;AAAA,MACR,UAAY,CAAC,SAAS,OAAO;AAAA,MAC7B,YAAc;AAAA,QACZ,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC5B,OAAS;AAAA,UACP,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,UAAY;AAAA,UACZ,OAAS;AAAA,YACP,MAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,SAAW;AAAA,MACT,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ,SAAW;AAAA,UACT,OAAS;AAAA,YACP,EAAE,MAAQ,SAAS;AAAA,YACnB,EAAE,MAAQ,SAAS;AAAA,UACrB;AAAA,QACF;AAAA,QACA,WAAa;AAAA,UACX,OAAS;AAAA,YACP,EAAE,MAAQ,SAAS;AAAA,YACnB,EAAE,MAAQ,SAAS;AAAA,UACrB;AAAA,QACF;AAAA,QACA,MAAQ;AAAA,UACN,OAAS;AAAA,YACP,EAAE,MAAQ,SAAS;AAAA,YACnB,EAAE,MAAQ,SAAS;AAAA,UACrB;AAAA,QACF;AAAA,QACA,OAAS;AAAA,UACP,OAAS;AAAA,YACP,EAAE,MAAQ,SAAS;AAAA,YACnB,EAAE,MAAQ,SAAS;AAAA,UACrB;AAAA,QACF;AAAA,QACA,UAAY;AAAA,UACV,OAAS;AAAA,YACP,EAAE,MAAQ,SAAS;AAAA,YACnB,EAAE,MAAQ,SAAS;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,gBAAkB;AAAA,MAChB,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ,UAAY,EAAE,MAAQ,SAAS;AAAA,QAC/B,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC5B,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC5B,UAAY,EAAE,MAAQ,SAAS;AAAA,QAC/B,WAAa,EAAE,MAAQ,SAAS;AAAA,MAClC;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,WAAa;AAAA,MACX,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ,IAAM,EAAE,MAAQ,SAAS;AAAA,QACzB,SAAW,EAAE,MAAQ,SAAS;AAAA,QAC9B,SAAW,EAAE,MAAQ,SAAS;AAAA,QAC9B,MAAQ,EAAE,MAAQ,SAAS;AAAA,QAC3B,OAAS,EAAE,MAAQ,+BAA+B;AAAA,MACpD;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,SAAW;AAAA,MACT,MAAQ;AAAA,MACR,UAAY,CAAC,MAAM;AAAA,MACnB,YAAc;AAAA,QACZ,MAAQ,EAAE,MAAQ,SAAS;AAAA,QAC3B,IAAM,EAAE,MAAQ,SAAS;AAAA,QACzB,SAAW,EAAE,MAAQ,SAAS;AAAA,QAC9B,MAAQ,EAAE,MAAQ,SAAS;AAAA,QAC3B,KAAO,EAAE,MAAQ,SAAS;AAAA,QAC1B,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC5B,QAAU,EAAE,MAAQ,SAAS;AAAA,QAC7B,QAAU,EAAE,MAAQ,SAAS;AAAA,QAC7B,MAAQ,EAAE,MAAQ,UAAU;AAAA,QAC5B,SAAW,EAAE,MAAQ,SAAS;AAAA,QAC9B,OAAS,EAAE,MAAQ,UAAU;AAAA,QAC7B,OAAS,EAAE,MAAQ,UAAU;AAAA,QAC7B,QAAU,EAAE,MAAQ,uBAAuB;AAAA,QAC3C,SAAW,EAAE,MAAQ,wBAAwB;AAAA,MAC/C;AAAA,MACA,OAAS;AAAA,QACP;AAAA,UACE,IAAM;AAAA,YACJ,UAAY,CAAC,MAAM;AAAA,YACnB,YAAc;AAAA,cACZ,MAAQ,EAAE,OAAS,OAAO;AAAA,YAC5B;AAAA,UACF;AAAA,UACA,MAAQ;AAAA,YACN,UAAY,CAAC,WAAW,QAAQ,OAAO,SAAS,QAAQ;AAAA,YACxD,YAAc;AAAA,cACZ,SAAW,EAAE,MAAQ,SAAS;AAAA,cAC9B,cAAgB,EAAE,MAAQ,SAAS;AAAA,cACnC,iBAAmB,EAAE,MAAQ,SAAS;AAAA,cACtC,MAAQ,EAAE,MAAQ,SAAS;AAAA,cAC3B,YAAc,EAAE,MAAQ,SAAS;AAAA,cACjC,gBAAkB,EAAE,MAAQ,SAAS;AAAA,cACrC,UAAY,EAAE,MAAQ,SAAS;AAAA,cAC/B,UAAY,EAAE,MAAQ,UAAU;AAAA,cAChC,WAAa,EAAE,MAAQ,SAAS;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAM;AAAA,YACJ,UAAY,CAAC,MAAM;AAAA,YACnB,YAAc;AAAA,cACZ,MAAQ,EAAE,OAAS,QAAQ;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,MAAQ;AAAA,YACN,UAAY;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,YAAc;AAAA,cACZ,MAAQ,EAAE,MAAQ,SAAS;AAAA,cAC3B,SAAW,EAAE,MAAQ,qBAAqB;AAAA,cAC1C,MAAQ,EAAE,MAAQ,SAAS;AAAA,cAC3B,YAAc,EAAE,MAAQ,UAAU;AAAA,cAClC,WAAa;AAAA,gBACX,MAAQ;AAAA,gBACR,OAAS,EAAE,MAAQ,SAAS;AAAA,cAC9B;AAAA,cACA,aAAe,EAAE,MAAQ,SAAS;AAAA,cAClC,UAAY,EAAE,MAAQ,yBAAyB;AAAA,cAC/C,SAAW,EAAE,MAAQ,UAAU;AAAA,cAC/B,MAAQ,EAAE,MAAQ,0BAA0B;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAM;AAAA,YACJ,UAAY,CAAC,MAAM;AAAA,YACnB,YAAc;AAAA,cACZ,MAAQ,EAAE,OAAS,OAAO;AAAA,YAC5B;AAAA,UACF;AAAA,UACA,MAAQ;AAAA,YACN,UAAY;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,YAAc;AAAA,cACZ,OAAS,EAAE,MAAQ,qBAAqB;AAAA,cACxC,KAAO,EAAE,MAAQ,qBAAqB;AAAA,cACtC,QAAU,EAAE,MAAQ,2BAA2B;AAAA,cAC/C,QAAU,EAAE,MAAQ,qBAAqB;AAAA,cACzC,OAAS,EAAE,MAAQ,SAAS;AAAA,cAC5B,OAAS,EAAE,MAAQ,SAAS;AAAA,cAC5B,OAAS,EAAE,MAAQ,SAAS;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAM;AAAA,YACJ,UAAY,CAAC,MAAM;AAAA,YACnB,YAAc;AAAA,cACZ,MAAQ,EAAE,OAAS,QAAQ;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,MAAQ;AAAA,YACN,UAAY,CAAC,OAAO,QAAQ,OAAO,SAAS,QAAQ;AAAA,YACpD,YAAc;AAAA,cACZ,KAAO,EAAE,MAAQ,SAAS;AAAA,cAC1B,YAAc,EAAE,MAAQ,UAAU;AAAA,cAClC,MAAQ,EAAE,MAAQ,qBAAqB;AAAA,cACvC,SAAW,EAAE,MAAQ,wBAAwB;AAAA,cAC7C,WAAa,EAAE,MAAQ,SAAS;AAAA,cAChC,QAAU,EAAE,MAAQ,SAAS;AAAA,cAC7B,WAAa,EAAE,MAAQ,SAAS;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAM;AAAA,YACJ,UAAY,CAAC,MAAM;AAAA,YACnB,YAAc;AAAA,cACZ,MAAQ,EAAE,OAAS,QAAQ;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,MAAQ;AAAA,YACN,UAAY,CAAC,QAAQ,OAAO,SAAS,QAAQ;AAAA,YAC7C,YAAc;AAAA,cACZ,WAAa;AAAA,gBACX,MAAQ;AAAA,gBACR,OAAS,EAAE,MAAQ,SAAS;AAAA,cAC9B;AAAA,cACA,MAAQ;AAAA,gBACN,MAAQ;AAAA,gBACR,OAAS;AAAA,kBACP,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,cACF;AAAA,cACA,eAAiB,EAAE,MAAQ,SAAS;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,iBAAmB;AAAA,MACjB,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ,MAAQ,EAAE,MAAQ,SAAS;AAAA,QAC3B,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC5B,KAAO,EAAE,MAAQ,SAAS;AAAA,QAC1B,UAAY,EAAE,MAAQ,yBAAyB;AAAA,MACjD;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,IACA,OAAS;AAAA,MACP,MAAQ;AAAA,MACR,UAAY,CAAC,UAAU;AAAA,MACvB,YAAc;AAAA,QACZ,IAAM,EAAE,MAAQ,SAAS;AAAA,QACzB,MAAQ,EAAE,MAAQ,SAAS;AAAA,QAC3B,QAAU,EAAE,MAAQ,SAAS;AAAA,QAC7B,YAAc,EAAE,MAAQ,gCAAgC;AAAA,QACxD,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA,EACF;AACF;;;ADvXA,IAAM,MAAM,IAAI,IAAI;AAAA,EAClB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,iBAAiB;AACnB,CAAC;AAED,IAAM,aAAa,IAAI,QAAQ,cAAQ;AAEvC,SAAS,SAAS,OAA2C;AAC3D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,MAAM,gBAAgB;AAAA,IAC5B,SAAS,MAAM,WAAW;AAAA,IAC1B,SAAS,MAAM;AAAA,IACf,QACE,MAAM,UAAU,OAAO,MAAM,WAAW,WACnC,MAAM,SACP;AAAA,EACR;AACF;AAEO,SAAS,iBAAiB,OAAiC;AAChE,QAAM,QAAQ,WAAW,KAAK;AAC9B,MAAI,CAAC,OAAO;AACV,UAAM,UAAU,WAAW,UAAU,CAAC,GAAG,IAAI,QAAQ;AACrD,UAAM,IAAI,sBAAsB,MAAM;AAAA,EACxC;AAEA,SAAO;AACT;;;AE7BO,SAAS,cAAc,OAA4B;AACxD,QAAM,WAAW,gBAAgB,KAAK;AACtC,QAAM,YAAY,iBAAiB,QAAQ;AAC3C,SAAO,kBAAkB,SAAS;AACpC;;;ACTO,IAAM,oBAAoB;","names":["isRecord","cloneValue"]}
|
|
1
|
+
{"version":3,"sources":["../versions/v1/defaults.ts","../runtime/errors.ts","../runtime/migrate.ts","../runtime/normalize.ts","../runtime/validate.ts","../versions/v1/schema.json","../runtime/parse.ts","../versions/v1/types.ts"],"sourcesContent":["import type {\n V1Document,\n V1Outline,\n V1SchemaVersion,\n V1Shadow,\n V1Theme\n} from './types'\n\nexport const DEFAULT_SCHEMA_VERSION: V1SchemaVersion = '1.0.0'\nexport const DEFAULT_TITLE = '未命名演示文稿'\nexport const DEFAULT_WIDTH = 1000\nexport const DEFAULT_HEIGHT = 562.5\n\nexport const DEFAULT_THEME_SHADOW: V1Shadow = {\n h: 3,\n v: 3,\n blur: 2,\n color: '#808080'\n}\n\nexport const DEFAULT_THEME_OUTLINE: V1Outline = {\n width: 2,\n color: '#525252',\n style: 'solid'\n}\n\nexport const DEFAULT_THEME: V1Theme = {\n themeColors: [],\n fontColor: '#333',\n fontName: '',\n backgroundColor: '#fff',\n shadow: DEFAULT_THEME_SHADOW,\n outline: DEFAULT_THEME_OUTLINE\n}\n\nexport const DEFAULT_SLIDE_TYPE = 'content'\nexport const DEFAULT_SLIDE_REMARK = ''\n\nexport const DEFAULT_TEXT_COLOR = '#333'\nexport const DEFAULT_ELEMENT_ROTATE = 0\nexport const DEFAULT_IMAGE_FIXED_RATIO = true\nexport const DEFAULT_SHAPE_FIXED_RATIO = false\nexport const DEFAULT_LINE_STYLE = 'solid'\nexport const DEFAULT_LINE_WIDTH = 2\n\nexport const LEGACY_SLIDE_TYPE_MAP: Record<string, string> = {\n agenda: 'contents',\n section: 'transition',\n ending: 'end'\n}\n\nexport const V1_DEFAULTS: Pick<\n V1Document,\n 'schemaVersion' | 'title' | 'width' | 'height'\n> & {\n theme: V1Theme\n} = {\n schemaVersion: DEFAULT_SCHEMA_VERSION,\n title: DEFAULT_TITLE,\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n theme: DEFAULT_THEME\n}\n","export type SchemaValidationIssue = {\n code: string\n path: string\n message: string\n keyword?: string\n params?: Record<string, unknown>\n}\n\nexport class SchemaValidationError extends Error {\n readonly issues: SchemaValidationIssue[]\n\n constructor(issues: SchemaValidationIssue[], message = 'Schema validation failed') {\n super(message)\n this.name = 'SchemaValidationError'\n this.issues = issues\n }\n}\n\nexport class UnsupportedSchemaVersionError extends Error {\n readonly code = 'UNSUPPORTED_SCHEMA_VERSION'\n readonly supportedVersion: string\n readonly receivedVersion?: string\n\n constructor(receivedVersion: unknown, supportedVersion: string) {\n const received =\n receivedVersion === undefined || receivedVersion === null\n ? undefined\n : String(receivedVersion)\n\n super(\n received\n ? `Unsupported schema version: ${received}. Supported version: ${supportedVersion}.`\n : `Unsupported schema version. Supported version: ${supportedVersion}.`\n )\n\n this.name = 'UnsupportedSchemaVersionError'\n this.supportedVersion = supportedVersion\n this.receivedVersion = received\n }\n}\n","import {\n DEFAULT_SCHEMA_VERSION,\n LEGACY_SLIDE_TYPE_MAP\n} from '../versions/v1/defaults'\nimport type { V1SchemaVersion } from '../versions/v1/types'\nimport { UnsupportedSchemaVersionError } from './errors'\n\ntype UnknownRecord = Record<string, unknown>\n\nconst V1_VERSION_EQUIVALENTS = new Set(['1', '1.0', '1.0.0'])\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction cloneValue<T>(value: T): T {\n if (typeof structuredClone === 'function') {\n return structuredClone(value)\n }\n return JSON.parse(JSON.stringify(value)) as T\n}\n\nfunction normalizeVersion(value: unknown): V1SchemaVersion | null {\n if (typeof value === 'number' && Number.isFinite(value)) {\n if (value === 1) return DEFAULT_SCHEMA_VERSION\n return null\n }\n\n if (typeof value !== 'string') return null\n const trimmed = value.trim()\n if (!trimmed) return null\n if (V1_VERSION_EQUIVALENTS.has(trimmed)) return DEFAULT_SCHEMA_VERSION\n return null\n}\n\nfunction migrateSlideType(type: unknown): unknown {\n if (typeof type !== 'string') return type\n const normalized = type.trim().toLowerCase()\n return LEGACY_SLIDE_TYPE_MAP[normalized] ?? type\n}\n\nfunction toFiniteNumber(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value\n if (typeof value !== 'string') return undefined\n const trimmed = value.trim()\n if (!trimmed) return undefined\n const numeric = Number.parseFloat(trimmed)\n return Number.isFinite(numeric) ? numeric : undefined\n}\n\nfunction normalizeGradientType(value: unknown): string {\n if (typeof value !== 'string' || !value.trim()) return 'linear'\n return value === 'line' ? 'linear' : value\n}\n\nfunction normalizeGradientStopPosition(value: unknown): number {\n const numeric = toFiniteNumber(value)\n if (numeric === undefined) return 0\n if (typeof value === 'string' && value.trim().endsWith('%')) {\n return numeric\n }\n if (numeric > 1000) return numeric / 1000\n if (numeric > 100) return numeric / 1000\n return numeric\n}\n\nfunction migrateGradient(value: unknown): unknown {\n if (!isRecord(value)) return value\n\n const gradient = cloneValue(value)\n const sourceColors = Array.isArray(gradient.colors) ? gradient.colors : []\n const rotate = toFiniteNumber(gradient.rotate ?? gradient.rot) ?? 0\n\n gradient.type = normalizeGradientType(gradient.type ?? gradient.path)\n gradient.rotate = rotate\n gradient.colors = sourceColors.map((stop) => {\n if (!isRecord(stop)) return stop\n const nextStop = cloneValue(stop)\n nextStop.pos = normalizeGradientStopPosition(nextStop.pos)\n return nextStop\n })\n\n delete gradient.rot\n delete gradient.path\n\n return gradient\n}\n\nfunction migrateFill(\n fill: unknown,\n options: {\n gradient?: unknown\n pattern?: unknown\n } = {}\n): unknown {\n if (isRecord(options.gradient)) {\n return {\n type: 'gradient',\n gradient: migrateGradient(options.gradient)\n }\n }\n\n if (typeof options.pattern === 'string' && options.pattern.trim()) {\n return {\n type: 'image',\n src: options.pattern\n }\n }\n\n if (typeof fill === 'string') {\n if (!fill.trim()) return undefined\n return {\n type: 'solid',\n color: fill\n }\n }\n\n if (!isRecord(fill)) {\n return fill\n }\n\n if (fill.type === 'color' && typeof fill.value === 'string') {\n return {\n type: 'solid',\n color: fill.value\n }\n }\n\n if (isRecord(fill.gradient)) {\n return {\n type: 'gradient',\n gradient: migrateGradient(fill.gradient)\n }\n }\n\n if (fill.type === 'solid' || (fill.type === undefined && typeof fill.color === 'string')) {\n return {\n ...fill,\n type: 'solid',\n color: fill.color\n }\n }\n\n if (fill.type === 'gradient') {\n return {\n type: 'gradient',\n gradient: migrateGradient(fill.gradient ?? fill.value ?? fill)\n }\n }\n\n if (\n fill.type === 'image' ||\n fill.type === 'pattern' ||\n typeof fill.src === 'string' ||\n isRecord(fill.value)\n ) {\n const imageValue = isRecord(fill.value) ? fill.value : undefined\n const src =\n typeof fill.src === 'string'\n ? fill.src\n : typeof imageValue?.picBase64 === 'string'\n ? imageValue.picBase64\n : undefined\n const opacity = toFiniteNumber(fill.opacity ?? imageValue?.opacity)\n\n if (src) {\n return {\n type: 'image',\n src,\n ...(opacity === undefined ? {} : { opacity })\n }\n }\n }\n\n return fill\n}\n\nfunction migrateElement(element: unknown): unknown {\n if (!isRecord(element)) return element\n\n const nextElement = cloneValue(element)\n nextElement.fill = migrateFill(nextElement.fill, {\n gradient: nextElement.gradient,\n pattern: nextElement.pattern\n })\n delete nextElement.gradient\n delete nextElement.pattern\n return nextElement\n}\n\nexport function migrateDocument(\n input: unknown,\n toVersion: V1SchemaVersion = DEFAULT_SCHEMA_VERSION\n): unknown {\n if (!isRecord(input)) return input\n\n const migrated = cloneValue(input) as UnknownRecord\n const incomingVersion = migrated.schemaVersion ?? migrated.version\n\n if (incomingVersion === undefined) {\n migrated.schemaVersion = toVersion\n } else {\n const normalizedVersion = normalizeVersion(incomingVersion)\n if (!normalizedVersion || normalizedVersion !== toVersion) {\n throw new UnsupportedSchemaVersionError(incomingVersion, toVersion)\n }\n migrated.schemaVersion = toVersion\n }\n\n delete migrated.version\n\n if (isRecord(migrated.theme)) {\n const theme = migrated.theme\n if (typeof theme.fontname === 'string' && theme.fontName === undefined) {\n theme.fontName = theme.fontname\n delete theme.fontname\n }\n }\n\n if (Array.isArray(migrated.slides)) {\n migrated.slides = migrated.slides.map((slide) => {\n if (!isRecord(slide)) return slide\n const nextSlide = cloneValue(slide)\n nextSlide.type = migrateSlideType(nextSlide.type)\n nextSlide.background = migrateFill(nextSlide.background)\n if (Array.isArray(nextSlide.elements)) {\n nextSlide.elements = nextSlide.elements.map((element) => migrateElement(element))\n }\n return nextSlide\n })\n }\n\n return migrated\n}\n","import {\n DEFAULT_ELEMENT_ROTATE,\n DEFAULT_HEIGHT,\n DEFAULT_IMAGE_FIXED_RATIO,\n DEFAULT_LINE_STYLE,\n DEFAULT_LINE_WIDTH,\n DEFAULT_SCHEMA_VERSION,\n DEFAULT_SHAPE_FIXED_RATIO,\n DEFAULT_SLIDE_REMARK,\n DEFAULT_SLIDE_TYPE,\n DEFAULT_TEXT_COLOR,\n DEFAULT_THEME,\n DEFAULT_THEME_OUTLINE,\n DEFAULT_THEME_SHADOW,\n DEFAULT_TITLE,\n DEFAULT_WIDTH,\n LEGACY_SLIDE_TYPE_MAP\n} from '../versions/v1/defaults'\nimport type {\n V1Document,\n V1DocumentInput,\n V1Element,\n V1Fill,\n V1Gradient,\n V1ImageElement,\n V1LineElement,\n V1Outline,\n V1Shadow,\n V1ShapeElement,\n V1Slide,\n V1SlideBackground,\n V1TextElement,\n V1Theme\n} from '../versions/v1/types'\n\ntype UnknownRecord = Record<string, unknown>\nconst TRANSPARENT_FILL = 'rgba(255,255,255,0)'\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction cloneValue<T>(value: T): T {\n if (typeof structuredClone === 'function') {\n return structuredClone(value)\n }\n return JSON.parse(JSON.stringify(value)) as T\n}\n\nfunction asString(value: unknown, fallback: string): string {\n return typeof value === 'string' ? value : fallback\n}\n\nfunction asNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback\n}\n\nfunction asOptionalNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction asBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback\n}\n\nfunction asPair(value: unknown, fallback: [number, number]): [number, number] {\n if (!Array.isArray(value) || value.length < 2) return fallback\n return [asNumber(value[0], fallback[0]), asNumber(value[1], fallback[1])]\n}\n\nfunction asLinePoints(value: unknown): [string, string] {\n if (!Array.isArray(value)) return ['', '']\n const first = typeof value[0] === 'string' ? value[0] : ''\n const second = typeof value[1] === 'string' ? value[1] : ''\n return [first, second]\n}\n\nfunction normalizeShadow(value: unknown): V1Shadow {\n const source = isRecord(value) ? value : {}\n return {\n ...source,\n h: asNumber(source.h, DEFAULT_THEME_SHADOW.h),\n v: asNumber(source.v, DEFAULT_THEME_SHADOW.v),\n blur: asNumber(source.blur, DEFAULT_THEME_SHADOW.blur),\n color: asString(source.color, DEFAULT_THEME_SHADOW.color)\n }\n}\n\nfunction normalizeOutline(value: unknown): V1Outline {\n const source = isRecord(value) ? value : {}\n return {\n ...source,\n width: asNumber(source.width, DEFAULT_THEME_OUTLINE.width),\n color: asString(source.color, DEFAULT_THEME_OUTLINE.color),\n style: asString(source.style, DEFAULT_THEME_OUTLINE.style)\n }\n}\n\nfunction normalizeTheme(value: unknown): V1Theme {\n const source = isRecord(value) ? value : {}\n const themeColors = Array.isArray(source.themeColors)\n ? source.themeColors.filter((item): item is string => typeof item === 'string')\n : DEFAULT_THEME.themeColors.slice()\n\n return {\n ...source,\n themeColors,\n fontColor: asString(source.fontColor, DEFAULT_THEME.fontColor),\n fontName: asString(source.fontName, DEFAULT_THEME.fontName),\n backgroundColor: asString(source.backgroundColor, DEFAULT_THEME.backgroundColor),\n shadow: normalizeShadow(source.shadow),\n outline: normalizeOutline(source.outline)\n }\n}\n\nfunction normalizeGradient(value: unknown): V1Gradient | undefined {\n if (!isRecord(value)) return undefined\n\n const colors = Array.isArray(value.colors)\n ? value.colors\n .filter((stop): stop is UnknownRecord => isRecord(stop))\n .map((stop) => ({\n ...stop,\n pos: asNumber(stop.pos, 0),\n color: asString(stop.color, '#000000')\n }))\n : []\n\n return {\n ...value,\n type: asString(value.type, 'linear'),\n rotate: asNumber(value.rotate, 0),\n colors\n }\n}\n\nfunction normalizeFill(\n value: unknown,\n options: {\n fallbackSolidColor?: string\n required?: boolean\n } = {}\n): V1Fill | undefined {\n if (!isRecord(value)) {\n if (!options.required) return undefined\n return {\n type: 'solid',\n color: options.fallbackSolidColor ?? TRANSPARENT_FILL\n }\n }\n\n if (value.type === 'gradient') {\n return {\n ...value,\n type: 'gradient',\n gradient:\n normalizeGradient(value.gradient) ??\n normalizeGradient(undefined) ?? {\n type: 'linear',\n rotate: 0,\n colors: [\n { pos: 0, color: options.fallbackSolidColor ?? TRANSPARENT_FILL },\n { pos: 100, color: options.fallbackSolidColor ?? TRANSPARENT_FILL }\n ]\n }\n }\n }\n\n if (value.type === 'image') {\n return {\n ...value,\n type: 'image',\n src: asString(value.src, ''),\n ...(asOptionalNumber(value.opacity) === undefined\n ? {}\n : { opacity: asOptionalNumber(value.opacity) })\n }\n }\n\n return {\n ...value,\n type: 'solid',\n color: asString(value.color, options.fallbackSolidColor ?? TRANSPARENT_FILL)\n }\n}\n\nfunction normalizeBackground(\n value: unknown,\n fallbackColor: string\n): V1SlideBackground | undefined {\n return normalizeFill(value, { fallbackSolidColor: fallbackColor })\n}\n\nfunction normalizeElement(\n value: unknown,\n slideIndex: number,\n elementIndex: number,\n theme: V1Theme\n): V1Element {\n const fallbackId = `slide-${slideIndex + 1}-element-${elementIndex + 1}`\n\n if (!isRecord(value)) {\n return {\n type: 'unknown',\n id: fallbackId,\n left: 0,\n top: 0,\n rotate: DEFAULT_ELEMENT_ROTATE\n }\n }\n\n const type =\n typeof value.type === 'string' && value.type.trim().length > 0\n ? value.type\n : 'unknown'\n\n const base = {\n ...value,\n type,\n id: asString(value.id, fallbackId),\n left: asNumber(value.left, 0),\n top: asNumber(value.top, 0),\n rotate: asNumber(value.rotate, DEFAULT_ELEMENT_ROTATE)\n }\n\n if (type === 'text') {\n const textElement: V1TextElement = {\n ...base,\n type: 'text',\n width: asNumber(value.width, 0),\n height: asNumber(value.height, 0),\n content: asString(value.content, ''),\n defaultColor: asString(value.defaultColor, theme.fontColor || DEFAULT_TEXT_COLOR),\n defaultFontName: asString(value.defaultFontName, theme.fontName),\n fill: normalizeFill(value.fill),\n vertical: asBoolean(value.vertical, false)\n }\n return textElement\n }\n\n if (type === 'shape') {\n const width = asNumber(value.width, 0)\n const height = asNumber(value.height, 0)\n const shapeElement: V1ShapeElement = {\n ...base,\n type: 'shape',\n width,\n height,\n path: asString(value.path, ''),\n viewBox: asPair(value.viewBox, [width, height]),\n fill: normalizeFill(value.fill, {\n fallbackSolidColor: TRANSPARENT_FILL,\n required: true\n }) as V1Fill,\n fixedRatio: asBoolean(value.fixedRatio, DEFAULT_SHAPE_FIXED_RATIO)\n }\n return shapeElement\n }\n\n if (type === 'line') {\n const lineElement: V1LineElement = {\n ...base,\n type: 'line',\n width: asNumber(value.width, DEFAULT_LINE_WIDTH),\n start: asPair(value.start, [0, 0]),\n end: asPair(value.end, [0, 0]),\n points: asLinePoints(value.points),\n color: asString(value.color, '#000000'),\n style: asString(value.style, DEFAULT_LINE_STYLE)\n }\n return lineElement\n }\n\n if (type === 'image') {\n const imageElement: V1ImageElement = {\n ...base,\n type: 'image',\n width: asNumber(value.width, 0),\n height: asNumber(value.height, 0),\n src: asString(value.src, ''),\n fixedRatio: asBoolean(value.fixedRatio, DEFAULT_IMAGE_FIXED_RATIO)\n }\n return imageElement\n }\n\n return base\n}\n\nfunction normalizeSlide(value: unknown, index: number, theme: V1Theme): V1Slide {\n if (!isRecord(value)) {\n return {\n id: `slide-${index + 1}`,\n type: DEFAULT_SLIDE_TYPE,\n remark: DEFAULT_SLIDE_REMARK,\n elements: []\n }\n }\n\n const rawType = typeof value.type === 'string' ? value.type.trim() : ''\n const normalizedType =\n rawType && LEGACY_SLIDE_TYPE_MAP[rawType.toLowerCase()]\n ? LEGACY_SLIDE_TYPE_MAP[rawType.toLowerCase()]\n : rawType || DEFAULT_SLIDE_TYPE\n\n const sourceElements = Array.isArray(value.elements) ? value.elements : []\n const elements = sourceElements.map((element, elementIndex) =>\n normalizeElement(element, index, elementIndex, theme)\n )\n\n const background = normalizeBackground(value.background, theme.backgroundColor)\n\n return {\n ...value,\n id: asString(value.id, `slide-${index + 1}`),\n type: normalizedType,\n remark: asString(value.remark, DEFAULT_SLIDE_REMARK),\n background,\n elements\n }\n}\n\nexport function normalizeDocument(input: V1DocumentInput): V1Document {\n const source = cloneValue(input)\n\n if (!isRecord(source)) {\n return {\n schemaVersion: DEFAULT_SCHEMA_VERSION,\n title: DEFAULT_TITLE,\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n theme: normalizeTheme(undefined),\n slides: []\n }\n }\n\n const theme = normalizeTheme(source.theme)\n const sourceSlides = Array.isArray(source.slides) ? source.slides : []\n const slides = sourceSlides.map((slide, index) => normalizeSlide(slide, index, theme))\n\n const normalized = {\n ...source,\n schemaVersion: DEFAULT_SCHEMA_VERSION,\n title: asString(source.title, DEFAULT_TITLE),\n width: asNumber(source.width, DEFAULT_WIDTH),\n height: asNumber(source.height, DEFAULT_HEIGHT),\n theme,\n slides\n } as V1Document\n\n delete (normalized as UnknownRecord).version\n\n return normalized\n}\n","import Ajv, { type ErrorObject } from 'ajv'\nimport schemaV1 from '../versions/v1/schema.json'\nimport type { V1DocumentInput } from '../versions/v1/types'\nimport { SchemaValidationError, type SchemaValidationIssue } from './errors'\n\nconst ajv = new Ajv({\n allErrors: true,\n strict: false,\n allowUnionTypes: true\n})\n\nconst validateV1 = ajv.compile(schemaV1)\n\nfunction mapError(error: ErrorObject): SchemaValidationIssue {\n return {\n code: 'SCHEMA_VALIDATION_ERROR',\n path: error.instancePath || '/',\n message: error.message ?? 'Invalid value',\n keyword: error.keyword,\n params:\n error.params && typeof error.params === 'object'\n ? (error.params as Record<string, unknown>)\n : undefined\n }\n}\n\nexport function validateDocument(input: unknown): V1DocumentInput {\n const valid = validateV1(input)\n if (!valid) {\n const issues = (validateV1.errors ?? []).map(mapError)\n throw new SchemaValidationError(issues)\n }\n\n return input as V1DocumentInput\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://json2pptx.dev/json2pptx-schema/v1\",\n \"title\": \"json2pptx document schema v1\",\n \"type\": \"object\",\n \"required\": [\n \"slides\"\n ],\n \"properties\": {\n \"schemaVersion\": {\n \"const\": \"1.0.0\"\n },\n \"version\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"width\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"height\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"theme\": {\n \"$ref\": \"#/definitions/theme\"\n },\n \"slides\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/slide\"\n }\n }\n },\n \"additionalProperties\": true,\n \"definitions\": {\n \"shadow\": {\n \"type\": \"object\",\n \"required\": [\n \"h\",\n \"v\",\n \"blur\",\n \"color\"\n ],\n \"properties\": {\n \"h\": {\n \"type\": \"number\"\n },\n \"v\": {\n \"type\": \"number\"\n },\n \"blur\": {\n \"type\": \"number\"\n },\n \"color\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"outline\": {\n \"type\": \"object\",\n \"required\": [\n \"width\",\n \"color\",\n \"style\"\n ],\n \"properties\": {\n \"width\": {\n \"type\": \"number\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"gradientStop\": {\n \"type\": \"object\",\n \"required\": [\n \"pos\",\n \"color\"\n ],\n \"properties\": {\n \"pos\": {\n \"type\": \"number\"\n },\n \"color\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"gradient\": {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"rotate\",\n \"colors\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"rotate\": {\n \"type\": \"number\"\n },\n \"colors\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"items\": {\n \"$ref\": \"#/definitions/gradientStop\"\n }\n }\n },\n \"additionalProperties\": true\n },\n \"solidFill\": {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"color\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"solid\"\n },\n \"color\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"gradientFill\": {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"gradient\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"gradient\"\n },\n \"gradient\": {\n \"$ref\": \"#/definitions/gradient\"\n }\n },\n \"additionalProperties\": true\n },\n \"imageFill\": {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"src\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"image\"\n },\n \"src\": {\n \"type\": \"string\"\n },\n \"opacity\": {\n \"type\": \"number\"\n }\n },\n \"additionalProperties\": true\n },\n \"fill\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/solidFill\"\n },\n {\n \"$ref\": \"#/definitions/gradientFill\"\n },\n {\n \"$ref\": \"#/definitions/imageFill\"\n }\n ]\n },\n \"theme\": {\n \"type\": \"object\",\n \"properties\": {\n \"themeColors\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"fontColor\": {\n \"type\": \"string\"\n },\n \"fontName\": {\n \"type\": \"string\"\n },\n \"backgroundColor\": {\n \"type\": \"string\"\n },\n \"shadow\": {\n \"$ref\": \"#/definitions/shadow\"\n },\n \"outline\": {\n \"$ref\": \"#/definitions/outline\"\n }\n },\n \"additionalProperties\": true\n },\n \"pair\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": \"number\"\n }\n },\n \"linePoints\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"shapeText\": {\n \"type\": \"object\",\n \"required\": [\n \"content\"\n ],\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"defaultColor\": {\n \"type\": \"string\"\n },\n \"defaultFontName\": {\n \"type\": \"string\"\n },\n \"align\": {\n \"type\": \"string\"\n },\n \"lineHeight\": {\n \"type\": \"number\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"clip\": {\n \"type\": \"object\",\n \"required\": [\n \"shape\",\n \"range\"\n ],\n \"properties\": {\n \"shape\": {\n \"type\": \"string\"\n },\n \"range\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"items\": {\n \"$ref\": \"#/definitions/pair\"\n }\n }\n },\n \"additionalProperties\": true\n },\n \"filters\": {\n \"type\": \"object\",\n \"properties\": {\n \"opacity\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"grayscale\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"blur\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"sepia\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"saturate\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"additionalProperties\": true\n },\n \"tableCellStyle\": {\n \"type\": \"object\",\n \"properties\": {\n \"fontname\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"align\": {\n \"type\": \"string\"\n },\n \"fontsize\": {\n \"type\": \"string\"\n },\n \"backcolor\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"tableCell\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"colspan\": {\n \"type\": \"number\"\n },\n \"rowspan\": {\n \"type\": \"number\"\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"$ref\": \"#/definitions/tableCellStyle\"\n }\n },\n \"additionalProperties\": true\n },\n \"element\": {\n \"type\": \"object\",\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"groupId\": {\n \"type\": \"string\"\n },\n \"left\": {\n \"type\": \"number\"\n },\n \"top\": {\n \"type\": \"number\"\n },\n \"width\": {\n \"type\": \"number\"\n },\n \"height\": {\n \"type\": \"number\"\n },\n \"rotate\": {\n \"type\": \"number\"\n },\n \"lock\": {\n \"type\": \"boolean\"\n },\n \"opacity\": {\n \"type\": \"number\"\n },\n \"flipH\": {\n \"type\": \"boolean\"\n },\n \"flipV\": {\n \"type\": \"boolean\"\n },\n \"shadow\": {\n \"$ref\": \"#/definitions/shadow\"\n },\n \"outline\": {\n \"$ref\": \"#/definitions/outline\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"text\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"content\",\n \"left\",\n \"top\",\n \"width\",\n \"height\"\n ],\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"defaultColor\": {\n \"type\": \"string\"\n },\n \"defaultFontName\": {\n \"type\": \"string\"\n },\n \"fill\": {\n \"$ref\": \"#/definitions/fill\"\n },\n \"lineHeight\": {\n \"type\": \"number\"\n },\n \"paragraphSpace\": {\n \"type\": \"number\"\n },\n \"textType\": {\n \"type\": \"string\"\n },\n \"vertical\": {\n \"type\": \"boolean\"\n },\n \"wordSpace\": {\n \"type\": \"number\"\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"shape\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"path\",\n \"viewBox\",\n \"fill\",\n \"left\",\n \"top\",\n \"width\",\n \"height\"\n ],\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"viewBox\": {\n \"$ref\": \"#/definitions/pair\"\n },\n \"fill\": {\n \"$ref\": \"#/definitions/fill\"\n },\n \"fixedRatio\": {\n \"type\": \"boolean\"\n },\n \"keypoints\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"number\"\n }\n },\n \"pathFormula\": {\n \"type\": \"string\"\n },\n \"special\": {\n \"type\": \"boolean\"\n },\n \"text\": {\n \"$ref\": \"#/definitions/shapeText\"\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"line\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"start\",\n \"end\",\n \"points\",\n \"color\",\n \"width\",\n \"left\",\n \"top\"\n ],\n \"properties\": {\n \"start\": {\n \"$ref\": \"#/definitions/pair\"\n },\n \"end\": {\n \"$ref\": \"#/definitions/pair\"\n },\n \"points\": {\n \"$ref\": \"#/definitions/linePoints\"\n },\n \"broken\": {\n \"$ref\": \"#/definitions/pair\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"width\": {\n \"type\": \"number\"\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"image\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"src\",\n \"left\",\n \"top\",\n \"width\",\n \"height\"\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\"\n },\n \"fixedRatio\": {\n \"type\": \"boolean\"\n },\n \"clip\": {\n \"$ref\": \"#/definitions/clip\"\n },\n \"filters\": {\n \"$ref\": \"#/definitions/filters\"\n },\n \"imageType\": {\n \"type\": \"string\"\n },\n \"radius\": {\n \"type\": \"number\"\n },\n \"colorMask\": {\n \"type\": \"string\"\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"table\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"left\",\n \"top\",\n \"width\",\n \"height\"\n ],\n \"properties\": {\n \"colWidths\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"number\"\n }\n },\n \"data\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/tableCell\"\n }\n }\n },\n \"cellMinHeight\": {\n \"type\": \"number\"\n }\n }\n }\n }\n ],\n \"additionalProperties\": true\n },\n \"slideBackground\": {\n \"$ref\": \"#/definitions/fill\"\n },\n \"slide\": {\n \"type\": \"object\",\n \"required\": [\n \"elements\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"remark\": {\n \"type\": \"string\"\n },\n \"background\": {\n \"$ref\": \"#/definitions/slideBackground\"\n },\n \"elements\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/element\"\n }\n }\n },\n \"additionalProperties\": true\n }\n }\n}\n","import type { PresentationDocument } from '../versions/v1/types'\nimport { migrateDocument } from './migrate'\nimport { normalizeDocument } from './normalize'\nimport { validateDocument } from './validate'\n\nexport function parseDocument(input: unknown): PresentationDocument {\n const migrated = migrateDocument(input)\n const validated = validateDocument(migrated)\n return normalizeDocument(validated)\n}\n","export const V1_SCHEMA_VERSION = '1.0.0' as const\n\nexport type V1SchemaVersion = typeof V1_SCHEMA_VERSION\n\nexport type V1Outline = {\n width: number\n color: string\n style: string\n [key: string]: unknown\n}\n\nexport type V1Shadow = {\n h: number\n v: number\n blur: number\n color: string\n [key: string]: unknown\n}\n\nexport type V1GradientStop = {\n pos: number\n color: string\n [key: string]: unknown\n}\n\nexport type V1Gradient = {\n type: string\n rotate: number\n colors: V1GradientStop[]\n [key: string]: unknown\n}\n\nexport type V1SolidFillInput = {\n type?: 'solid'\n color?: string\n [key: string]: unknown\n}\n\nexport type V1SolidFill = {\n type: 'solid'\n color: string\n [key: string]: unknown\n}\n\nexport type V1GradientFillInput = {\n type: 'gradient'\n gradient?: V1Gradient\n [key: string]: unknown\n}\n\nexport type V1GradientFill = {\n type: 'gradient'\n gradient: V1Gradient\n [key: string]: unknown\n}\n\nexport type V1ImageFillInput = {\n type: 'image'\n src?: string\n opacity?: number\n [key: string]: unknown\n}\n\nexport type V1ImageFill = {\n type: 'image'\n src: string\n opacity?: number\n [key: string]: unknown\n}\n\nexport type V1FillInput = V1SolidFillInput | V1GradientFillInput | V1ImageFillInput\n\nexport type V1Fill = V1SolidFill | V1GradientFill | V1ImageFill\n\nexport type V1ThemeInput = {\n themeColors?: string[]\n fontColor?: string\n fontName?: string\n backgroundColor?: string\n shadow?: Partial<V1Shadow>\n outline?: Partial<V1Outline>\n [key: string]: unknown\n}\n\nexport type V1Theme = {\n themeColors: string[]\n fontColor: string\n fontName: string\n backgroundColor: string\n shadow: V1Shadow\n outline: V1Outline\n [key: string]: unknown\n}\n\nexport type V1SlideBackgroundInput = V1FillInput\n\nexport type V1SlideBackground = V1Fill\n\nexport type V1ElementBaseInput<T extends string = string> = {\n type: T\n id?: string\n groupId?: string\n left?: number\n top?: number\n width?: number\n height?: number\n rotate?: number\n lock?: boolean\n opacity?: number\n flipH?: boolean\n flipV?: boolean\n outline?: Partial<V1Outline>\n shadow?: Partial<V1Shadow>\n [key: string]: unknown\n}\n\nexport type V1ElementBase<T extends string = string> = V1ElementBaseInput<T> & {\n id: string\n left: number\n top: number\n rotate: number\n}\n\nexport type V1ShapeText = {\n content: string\n defaultColor?: string\n defaultFontName?: string\n align?: string\n lineHeight?: number\n type?: string\n [key: string]: unknown\n}\n\nexport type V1TextElementInput = V1ElementBaseInput<'text'> & {\n content?: string\n defaultColor?: string\n defaultFontName?: string\n fill?: V1FillInput\n lineHeight?: number\n paragraphSpace?: number\n textType?: string\n vertical?: boolean\n wordSpace?: number\n}\n\nexport type V1TextElement = V1ElementBase<'text'> & {\n width: number\n height: number\n content: string\n defaultColor: string\n defaultFontName: string\n fill?: V1Fill\n lineHeight?: number\n paragraphSpace?: number\n textType?: string\n vertical: boolean\n wordSpace?: number\n}\n\nexport type V1ShapeElementInput = V1ElementBaseInput<'shape'> & {\n path?: string\n viewBox?: [number, number]\n fill?: V1FillInput\n fixedRatio?: boolean\n keypoints?: number[]\n pathFormula?: string\n special?: boolean\n text?: V1ShapeText\n}\n\nexport type V1ShapeElement = V1ElementBase<'shape'> & {\n width: number\n height: number\n path: string\n viewBox: [number, number]\n fill: V1Fill\n fixedRatio: boolean\n keypoints?: number[]\n pathFormula?: string\n special?: boolean\n text?: V1ShapeText\n}\n\nexport type V1LineElementInput = V1ElementBaseInput<'line'> & {\n start?: [number, number]\n end?: [number, number]\n points?: string[]\n broken?: [number, number]\n color?: string\n style?: string\n width?: number\n}\n\nexport type V1LineElement = V1ElementBase<'line'> & {\n start: [number, number]\n end: [number, number]\n points: [string, string]\n broken?: [number, number]\n color: string\n style: string\n width: number\n}\n\nexport type V1ImageClip = {\n shape: string\n range: [[number, number], [number, number]]\n [key: string]: unknown\n}\n\nexport type V1ImageFilters = {\n opacity?: string | number\n grayscale?: string | number\n blur?: string | number\n sepia?: string | number\n saturate?: string | number\n [key: string]: unknown\n}\n\nexport type V1ImageElementInput = V1ElementBaseInput<'image'> & {\n src?: string\n fixedRatio?: boolean\n clip?: V1ImageClip\n filters?: V1ImageFilters\n imageType?: string\n radius?: number\n colorMask?: string\n}\n\nexport type V1ImageElement = V1ElementBase<'image'> & {\n width: number\n height: number\n src: string\n fixedRatio: boolean\n clip?: V1ImageClip\n filters?: V1ImageFilters\n imageType?: string\n radius?: number\n colorMask?: string\n}\n\nexport type V1UnknownElementInput = V1ElementBaseInput<string>\n\nexport type V1UnknownElement = V1ElementBase<string>\n\nexport type V1ElementInput =\n | V1TextElementInput\n | V1ShapeElementInput\n | V1LineElementInput\n | V1ImageElementInput\n | V1UnknownElementInput\n\nexport type V1Element =\n | V1TextElement\n | V1ShapeElement\n | V1LineElement\n | V1ImageElement\n | V1UnknownElement\n\nexport type V1SlideInput = {\n id?: string\n type?: string\n remark?: string\n background?: V1SlideBackgroundInput\n elements?: V1ElementInput[]\n [key: string]: unknown\n}\n\nexport type V1Slide = {\n id: string\n type: string\n remark: string\n background?: V1SlideBackground\n elements: V1Element[]\n [key: string]: unknown\n}\n\nexport type V1DocumentInput = {\n schemaVersion?: string\n version?: string | number\n title?: string\n width?: number\n height?: number\n theme?: V1ThemeInput\n slides: V1SlideInput[]\n [key: string]: unknown\n}\n\nexport type V1Document = {\n schemaVersion: V1SchemaVersion\n title: string\n width: number\n height: number\n theme: V1Theme\n slides: V1Slide[]\n [key: string]: unknown\n}\n\nexport type PresentationDocumentInput = V1DocumentInput\n\nexport type PresentationDocument = V1Document\n"],"mappings":"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","names":["isRecord","cloneValue"]}
|
package/package.json
CHANGED