@hirokisakabe/pom 8.3.0 → 8.5.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 +35 -23
- package/dist/autoFit/autoFit.js +1 -1
- package/dist/autoFit/autoFit.js.map +1 -1
- package/dist/autoFit/strategies/reduceFontSize.js +16 -14
- package/dist/autoFit/strategies/reduceFontSize.js.map +1 -1
- package/dist/autoFit/strategies/reduceGapAndPadding.js +13 -20
- package/dist/autoFit/strategies/reduceGapAndPadding.js.map +1 -1
- package/dist/autoFit/strategies/reduceTableRowHeight.js +8 -2
- package/dist/autoFit/strategies/reduceTableRowHeight.js.map +1 -1
- package/dist/autoFit/strategies/uniformScale.js +19 -20
- package/dist/autoFit/strategies/uniformScale.js.map +1 -1
- package/dist/autoFit/strategyResult.js +15 -0
- package/dist/autoFit/strategyResult.js.map +1 -0
- package/dist/buildPptx.d.ts.map +1 -1
- package/dist/buildPptx.js +4 -2
- package/dist/buildPptx.js.map +1 -1
- package/dist/calcYogaLayout/calcYogaLayout.js +16 -27
- package/dist/calcYogaLayout/calcYogaLayout.js.map +1 -1
- package/dist/diagnostics.d.ts +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js.map +1 -1
- package/dist/parseXml/coercionRules.js +43 -8
- package/dist/parseXml/coercionRules.js.map +1 -1
- package/dist/parseXml/parseXml.d.ts +8 -3
- package/dist/parseXml/parseXml.d.ts.map +1 -1
- package/dist/parseXml/parseXml.js +192 -212
- package/dist/parseXml/parseXml.js.map +1 -1
- package/dist/parseXml/serializeXml.d.ts.map +1 -1
- package/dist/parseXml/serializeXml.js +12 -17
- package/dist/parseXml/serializeXml.js.map +1 -1
- package/dist/registry/definitions/arrow.js +2 -2
- package/dist/registry/definitions/arrow.js.map +1 -1
- package/dist/registry/definitions/chart.js +2 -2
- package/dist/registry/definitions/chart.js.map +1 -1
- package/dist/registry/definitions/compositeNodes.js +7 -12
- package/dist/registry/definitions/compositeNodes.js.map +1 -1
- package/dist/registry/definitions/icon.js +2 -2
- package/dist/registry/definitions/icon.js.map +1 -1
- package/dist/registry/definitions/image.js +2 -2
- package/dist/registry/definitions/image.js.map +1 -1
- package/dist/registry/definitions/layer.js +4 -5
- package/dist/registry/definitions/layer.js.map +1 -1
- package/dist/registry/definitions/line.js +2 -2
- package/dist/registry/definitions/line.js.map +1 -1
- package/dist/registry/definitions/list.js +3 -4
- package/dist/registry/definitions/list.js.map +1 -1
- package/dist/registry/definitions/shape.js +2 -2
- package/dist/registry/definitions/shape.js.map +1 -1
- package/dist/registry/definitions/stack.js +3 -4
- package/dist/registry/definitions/stack.js.map +1 -1
- package/dist/registry/definitions/svg.js +2 -2
- package/dist/registry/definitions/svg.js.map +1 -1
- package/dist/registry/definitions/table.js +2 -2
- package/dist/registry/definitions/table.js.map +1 -1
- package/dist/registry/definitions/text.js +2 -2
- package/dist/registry/definitions/text.js.map +1 -1
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/nodeMetadata.js +208 -0
- package/dist/registry/nodeMetadata.js.map +1 -0
- package/dist/registry/nodeRegistry.js +3 -0
- package/dist/registry/nodeRegistry.js.map +1 -1
- package/dist/registry/xmlChildRules.js +55 -0
- package/dist/registry/xmlChildRules.js.map +1 -0
- package/dist/renderPptx/nodes/arrow.js +7 -28
- package/dist/renderPptx/nodes/arrow.js.map +1 -1
- package/dist/renderPptx/nodes/chart.js +2 -7
- package/dist/renderPptx/nodes/chart.js.map +1 -1
- package/dist/renderPptx/nodes/flow.js +6 -13
- package/dist/renderPptx/nodes/flow.js.map +1 -1
- package/dist/renderPptx/nodes/icon.js +4 -2
- package/dist/renderPptx/nodes/icon.js.map +1 -1
- package/dist/renderPptx/nodes/image.js +5 -13
- package/dist/renderPptx/nodes/image.js.map +1 -1
- package/dist/renderPptx/nodes/line.js +9 -33
- package/dist/renderPptx/nodes/line.js.map +1 -1
- package/dist/renderPptx/nodes/list.js +8 -20
- package/dist/renderPptx/nodes/list.js.map +1 -1
- package/dist/renderPptx/nodes/matrix.js +10 -11
- package/dist/renderPptx/nodes/matrix.js.map +1 -1
- package/dist/renderPptx/nodes/processArrow.js +9 -16
- package/dist/renderPptx/nodes/processArrow.js.map +1 -1
- package/dist/renderPptx/nodes/pyramid.js +5 -7
- package/dist/renderPptx/nodes/pyramid.js.map +1 -1
- package/dist/renderPptx/nodes/shape.js +7 -20
- package/dist/renderPptx/nodes/shape.js.map +1 -1
- package/dist/renderPptx/nodes/svg.js +2 -5
- package/dist/renderPptx/nodes/svg.js.map +1 -1
- package/dist/renderPptx/nodes/table.js +2 -5
- package/dist/renderPptx/nodes/table.js.map +1 -1
- package/dist/renderPptx/nodes/text.js +4 -1
- package/dist/renderPptx/nodes/text.js.map +1 -1
- package/dist/renderPptx/nodes/timeline.js +20 -22
- package/dist/renderPptx/nodes/timeline.js.map +1 -1
- package/dist/renderPptx/nodes/tree.js +5 -5
- package/dist/renderPptx/nodes/tree.js.map +1 -1
- package/dist/renderPptx/renderPptx.js +13 -29
- package/dist/renderPptx/renderPptx.js.map +1 -1
- package/dist/renderPptx/textOptions.js +32 -8
- package/dist/renderPptx/textOptions.js.map +1 -1
- package/dist/renderPptx/units.js +11 -1
- package/dist/renderPptx/units.js.map +1 -1
- package/dist/renderPptx/utils/backgroundBorder.js +103 -57
- package/dist/renderPptx/utils/backgroundBorder.js.map +1 -1
- package/dist/renderPptx/utils/contentArea.js +26 -9
- package/dist/renderPptx/utils/contentArea.js.map +1 -1
- package/dist/renderPptx/utils/scaleToFit.js +17 -1
- package/dist/renderPptx/utils/scaleToFit.js.map +1 -1
- package/dist/renderPptx/utils/straightLine.js +41 -0
- package/dist/renderPptx/utils/straightLine.js.map +1 -0
- package/dist/renderPptx/utils/visualStyle.js +113 -0
- package/dist/renderPptx/utils/visualStyle.js.map +1 -0
- package/dist/shared/boxSpacing.js +63 -0
- package/dist/shared/boxSpacing.js.map +1 -0
- package/dist/shared/walkTree.js +1 -7
- package/dist/shared/walkTree.js.map +1 -1
- package/dist/toPositioned/toPositioned.js +1 -1
- package/dist/toPositioned/toPositioned.js.map +1 -1
- package/dist/types.d.ts +1127 -95
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +47 -17
- package/dist/types.js.map +1 -1
- package/dist/validatePositioned/validatePositioned.js +92 -0
- package/dist/validatePositioned/validatePositioned.js.map +1 -0
- package/package.json +4 -3
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -79,6 +79,15 @@ const underlineSchema = z.union([z.boolean(), z.object({
|
|
|
79
79
|
style: underlineStyleSchema.optional(),
|
|
80
80
|
color: z.string().optional()
|
|
81
81
|
})]);
|
|
82
|
+
const textGlowSchema = z.object({
|
|
83
|
+
size: z.number().nonnegative().optional(),
|
|
84
|
+
opacity: z.number().min(0).max(1).optional(),
|
|
85
|
+
color: z.string().optional()
|
|
86
|
+
});
|
|
87
|
+
const textOutlineSchema = z.object({
|
|
88
|
+
size: z.number().nonnegative().optional(),
|
|
89
|
+
color: z.string().optional()
|
|
90
|
+
});
|
|
82
91
|
const alignItemsSchema = z.enum([
|
|
83
92
|
"start",
|
|
84
93
|
"center",
|
|
@@ -307,6 +316,10 @@ const basePOMNodeSchema = z.object({
|
|
|
307
316
|
backgroundGradient: backgroundGradientSchema.optional(),
|
|
308
317
|
backgroundImage: backgroundImageSchema.optional(),
|
|
309
318
|
border: borderStyleSchema.optional(),
|
|
319
|
+
borderTop: borderStyleSchema.optional(),
|
|
320
|
+
borderRight: borderStyleSchema.optional(),
|
|
321
|
+
borderBottom: borderStyleSchema.optional(),
|
|
322
|
+
borderLeft: borderStyleSchema.optional(),
|
|
310
323
|
borderRadius: z.number().optional(),
|
|
311
324
|
opacity: z.number().min(0).max(1).optional(),
|
|
312
325
|
zIndex: z.number().optional(),
|
|
@@ -334,6 +347,7 @@ const textNodeSchema = basePOMNodeSchema.extend({
|
|
|
334
347
|
type: z.literal("text"),
|
|
335
348
|
text: z.string(),
|
|
336
349
|
runs: z.array(textRunSchema).optional(),
|
|
350
|
+
rotate: z.number().optional(),
|
|
337
351
|
fontSize: z.number().optional(),
|
|
338
352
|
color: z.string().optional(),
|
|
339
353
|
textAlign: z.enum([
|
|
@@ -348,7 +362,9 @@ const textNodeSchema = basePOMNodeSchema.extend({
|
|
|
348
362
|
highlight: z.string().optional(),
|
|
349
363
|
fontFamily: z.string().optional(),
|
|
350
364
|
lineHeight: z.number().optional(),
|
|
351
|
-
letterSpacing: z.number().optional()
|
|
365
|
+
letterSpacing: z.number().optional(),
|
|
366
|
+
glow: textGlowSchema.optional(),
|
|
367
|
+
outline: textOutlineSchema.optional()
|
|
352
368
|
});
|
|
353
369
|
const liNodeSchema = z.object({
|
|
354
370
|
text: z.string(),
|
|
@@ -414,7 +430,8 @@ const imageSizingSchema = z.object({
|
|
|
414
430
|
const imageNodeSchema = basePOMNodeSchema.extend({
|
|
415
431
|
type: z.literal("image"),
|
|
416
432
|
src: z.string(),
|
|
417
|
-
sizing: imageSizingSchema.optional()
|
|
433
|
+
sizing: imageSizingSchema.optional(),
|
|
434
|
+
rotate: z.number().optional()
|
|
418
435
|
});
|
|
419
436
|
const iconNameSchema = z.enum(Object.keys(ICON_DATA));
|
|
420
437
|
const iconColorSchema = z.string().regex(/^#?[0-9a-fA-F]{3,8}$/).optional();
|
|
@@ -430,7 +447,8 @@ const iconNodeSchema = basePOMNodeSchema.extend({
|
|
|
430
447
|
size: z.number().positive().max(1024).optional(),
|
|
431
448
|
color: iconColorSchema,
|
|
432
449
|
variant: iconVariantSchema,
|
|
433
|
-
bgColor: iconColorSchema
|
|
450
|
+
bgColor: iconColorSchema,
|
|
451
|
+
rotate: z.number().optional()
|
|
434
452
|
});
|
|
435
453
|
const svgNodeSchema = basePOMNodeSchema.extend({
|
|
436
454
|
type: z.literal("svg"),
|
|
@@ -475,6 +493,7 @@ const shapeNodeSchema = basePOMNodeSchema.extend({
|
|
|
475
493
|
type: z.literal("shape"),
|
|
476
494
|
shapeType: shapeTypeSchema,
|
|
477
495
|
text: z.string().optional(),
|
|
496
|
+
rotate: z.number().optional(),
|
|
478
497
|
fill: fillStyleSchema.optional(),
|
|
479
498
|
line: borderStyleSchema.optional(),
|
|
480
499
|
fontSize: z.number().optional(),
|
|
@@ -530,7 +549,10 @@ const timelineItemSchema = z.object({
|
|
|
530
549
|
const timelineNodeSchema = basePOMNodeSchema.extend({
|
|
531
550
|
type: z.literal("timeline"),
|
|
532
551
|
direction: timelineDirectionSchema.optional(),
|
|
533
|
-
items: z.array(timelineItemSchema)
|
|
552
|
+
items: z.array(timelineItemSchema),
|
|
553
|
+
dateColor: z.string().optional(),
|
|
554
|
+
titleColor: z.string().optional(),
|
|
555
|
+
descriptionColor: z.string().optional()
|
|
534
556
|
});
|
|
535
557
|
const matrixAxisSchema = z.object({
|
|
536
558
|
x: z.string(),
|
|
@@ -546,13 +568,17 @@ const matrixItemSchema = z.object({
|
|
|
546
568
|
label: z.string(),
|
|
547
569
|
x: z.number().min(0).max(1),
|
|
548
570
|
y: z.number().min(0).max(1),
|
|
549
|
-
color: z.string().optional()
|
|
571
|
+
color: z.string().optional(),
|
|
572
|
+
textColor: z.string().optional()
|
|
550
573
|
});
|
|
551
574
|
const matrixNodeSchema = basePOMNodeSchema.extend({
|
|
552
575
|
type: z.literal("matrix"),
|
|
553
576
|
axes: matrixAxisSchema,
|
|
554
577
|
quadrants: matrixQuadrantsSchema.optional(),
|
|
555
|
-
items: z.array(matrixItemSchema)
|
|
578
|
+
items: z.array(matrixItemSchema),
|
|
579
|
+
axisLabelColor: z.string().optional(),
|
|
580
|
+
quadrantLabelColor: z.string().optional(),
|
|
581
|
+
itemLabelColor: z.string().optional()
|
|
556
582
|
});
|
|
557
583
|
const treeLayoutSchema = z.enum(["vertical", "horizontal"]);
|
|
558
584
|
const treeNodeShapeSchema = z.enum([
|
|
@@ -567,6 +593,7 @@ const treeConnectorStyleSchema = z.object({
|
|
|
567
593
|
const treeDataItemSchema = z.lazy(() => z.object({
|
|
568
594
|
label: z.string(),
|
|
569
595
|
color: z.string().optional(),
|
|
596
|
+
textColor: z.string().optional(),
|
|
570
597
|
children: z.array(treeDataItemSchema).optional()
|
|
571
598
|
}));
|
|
572
599
|
const treeNodeSchema = basePOMNodeSchema.extend({
|
|
@@ -574,6 +601,7 @@ const treeNodeSchema = basePOMNodeSchema.extend({
|
|
|
574
601
|
layout: treeLayoutSchema.optional(),
|
|
575
602
|
nodeShape: treeNodeShapeSchema.optional(),
|
|
576
603
|
data: treeDataItemSchema,
|
|
604
|
+
textColor: z.string().optional(),
|
|
577
605
|
connectorStyle: treeConnectorStyleSchema.optional(),
|
|
578
606
|
nodeWidth: z.number().optional(),
|
|
579
607
|
nodeHeight: z.number().optional(),
|
|
@@ -643,11 +671,13 @@ const flowConnectionSchema = z.object({
|
|
|
643
671
|
from: z.string(),
|
|
644
672
|
to: z.string(),
|
|
645
673
|
label: z.string().optional(),
|
|
646
|
-
color: z.string().optional()
|
|
674
|
+
color: z.string().optional(),
|
|
675
|
+
labelColor: z.string().optional()
|
|
647
676
|
});
|
|
648
677
|
const flowConnectorStyleSchema = z.object({
|
|
649
678
|
color: z.string().optional(),
|
|
650
679
|
width: z.number().optional(),
|
|
680
|
+
labelColor: z.string().optional(),
|
|
651
681
|
arrowType: z.enum([
|
|
652
682
|
"none",
|
|
653
683
|
"arrow",
|
|
@@ -699,7 +729,7 @@ const arrowNodeSchema = basePOMNodeSchema.extend({
|
|
|
699
729
|
beginArrow: lineArrowSchema.optional(),
|
|
700
730
|
endArrow: lineArrowSchema.optional()
|
|
701
731
|
});
|
|
702
|
-
const
|
|
732
|
+
const vStackNodeSchema = basePOMNodeSchema.extend({
|
|
703
733
|
type: z.literal("vstack"),
|
|
704
734
|
children: z.array(z.lazy(() => pomNodeSchema)),
|
|
705
735
|
gap: z.number().optional(),
|
|
@@ -707,7 +737,7 @@ const vStackNodeSchemaBase = basePOMNodeSchema.extend({
|
|
|
707
737
|
justifyContent: justifyContentSchema.optional(),
|
|
708
738
|
flexWrap: flexWrapSchema.optional()
|
|
709
739
|
});
|
|
710
|
-
const
|
|
740
|
+
const hStackNodeSchema = basePOMNodeSchema.extend({
|
|
711
741
|
type: z.literal("hstack"),
|
|
712
742
|
children: z.array(z.lazy(() => pomNodeSchema)),
|
|
713
743
|
gap: z.number().optional(),
|
|
@@ -719,7 +749,7 @@ const layerChildSchemaBase = z.lazy(() => pomNodeSchema.and(z.object({
|
|
|
719
749
|
x: z.number(),
|
|
720
750
|
y: z.number()
|
|
721
751
|
})));
|
|
722
|
-
const
|
|
752
|
+
const layerNodeSchema = basePOMNodeSchema.extend({
|
|
723
753
|
type: z.literal("layer"),
|
|
724
754
|
children: z.array(layerChildSchemaBase)
|
|
725
755
|
});
|
|
@@ -729,8 +759,8 @@ const pomNodeSchema = z.lazy(() => z.discriminatedUnion("type", [
|
|
|
729
759
|
olNodeSchema,
|
|
730
760
|
imageNodeSchema,
|
|
731
761
|
tableNodeSchema,
|
|
732
|
-
|
|
733
|
-
|
|
762
|
+
vStackNodeSchema,
|
|
763
|
+
hStackNodeSchema,
|
|
734
764
|
shapeNodeSchema,
|
|
735
765
|
chartNodeSchema,
|
|
736
766
|
timelineNodeSchema,
|
|
@@ -741,7 +771,7 @@ const pomNodeSchema = z.lazy(() => z.discriminatedUnion("type", [
|
|
|
741
771
|
pyramidNodeSchema,
|
|
742
772
|
lineNodeSchema,
|
|
743
773
|
arrowNodeSchema,
|
|
744
|
-
|
|
774
|
+
layerNodeSchema,
|
|
745
775
|
iconNodeSchema,
|
|
746
776
|
svgNodeSchema
|
|
747
777
|
]));
|
|
@@ -761,8 +791,8 @@ const positionedNodeSchema = z.lazy(() => z.union([
|
|
|
761
791
|
olNodeSchema.merge(positionedBaseSchema),
|
|
762
792
|
imageNodeSchema.merge(positionedBaseSchema).extend({ imageData: z.string().optional() }),
|
|
763
793
|
tableNodeSchema.merge(positionedBaseSchema),
|
|
764
|
-
|
|
765
|
-
|
|
794
|
+
vStackNodeSchema.merge(positionedBaseSchema).extend({ children: z.array(z.lazy(() => positionedNodeSchema)) }),
|
|
795
|
+
hStackNodeSchema.merge(positionedBaseSchema).extend({ children: z.array(z.lazy(() => positionedNodeSchema)) }),
|
|
766
796
|
shapeNodeSchema.merge(positionedBaseSchema),
|
|
767
797
|
chartNodeSchema.merge(positionedBaseSchema),
|
|
768
798
|
timelineNodeSchema.merge(positionedBaseSchema),
|
|
@@ -773,7 +803,7 @@ const positionedNodeSchema = z.lazy(() => z.union([
|
|
|
773
803
|
pyramidNodeSchema.merge(positionedBaseSchema),
|
|
774
804
|
lineNodeSchema.merge(positionedBaseSchema),
|
|
775
805
|
arrowNodeSchema.merge(positionedBaseSchema),
|
|
776
|
-
|
|
806
|
+
layerNodeSchema.merge(positionedBaseSchema).extend({ children: z.array(positionedLayerChildSchema) }),
|
|
777
807
|
iconNodeSchema.merge(positionedBaseSchema).extend({ iconImageData: z.string() }),
|
|
778
808
|
svgNodeSchema.merge(positionedBaseSchema).extend({ iconImageData: z.string() })
|
|
779
809
|
]));
|
|
@@ -858,6 +888,6 @@ z.object({
|
|
|
858
888
|
slideNumber: slideNumberOptionsSchema.optional()
|
|
859
889
|
});
|
|
860
890
|
//#endregion
|
|
861
|
-
export { arrowNodeSchema, chartNodeSchema, flowNodeSchema, iconNodeSchema, imageNodeSchema, lineNodeSchema, matrixNodeSchema, olNodeSchema, processArrowNodeSchema, pyramidNodeSchema, shapeNodeSchema, tableNodeSchema, textNodeSchema, timelineNodeSchema, treeNodeSchema, ulNodeSchema };
|
|
891
|
+
export { arrowNodeSchema, chartNodeSchema, flowNodeSchema, hStackNodeSchema, iconNodeSchema, imageNodeSchema, layerNodeSchema, lineNodeSchema, matrixNodeSchema, olNodeSchema, processArrowNodeSchema, pyramidNodeSchema, shapeNodeSchema, svgNodeSchema, tableNodeSchema, textNodeSchema, timelineNodeSchema, treeNodeSchema, ulNodeSchema, vStackNodeSchema };
|
|
862
892
|
|
|
863
893
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ICON_DATA } from \"./icons/iconData.ts\";\nimport { parseLinearGradient } from \"./shared/gradient.ts\";\n\n// ===== Basic Types =====\nconst lengthSchema = z.union([\n z.number(),\n z.literal(\"max\"),\n z.string().regex(/^\\d+%$/),\n]);\n\nconst paddingSchema = z.union([\n z.number(),\n z.object({\n top: z.number().optional(),\n right: z.number().optional(),\n bottom: z.number().optional(),\n left: z.number().optional(),\n }),\n]);\n\nconst borderDashSchema = z.enum([\n \"solid\",\n \"dash\",\n \"dashDot\",\n \"lgDash\",\n \"lgDashDot\",\n \"lgDashDotDot\",\n \"sysDash\",\n \"sysDot\",\n]);\n\nconst borderStyleSchema = z.object({\n color: z.string().optional(),\n width: z.number().optional(),\n dashType: borderDashSchema.optional(),\n});\n\nconst fillStyleSchema = z.object({\n color: z.string().optional(),\n transparency: z.number().optional(),\n});\n\nexport const shadowStyleSchema = z.object({\n type: z.enum([\"outer\", \"inner\"]).optional(),\n opacity: z.number().optional(),\n blur: z.number().optional(),\n angle: z.number().optional(),\n offset: z.number().optional(),\n color: z.string().optional(),\n});\n\nconst bulletNumberTypeSchema = z.enum([\n \"alphaLcParenBoth\",\n \"alphaLcParenR\",\n \"alphaLcPeriod\",\n \"alphaUcParenBoth\",\n \"alphaUcParenR\",\n \"alphaUcPeriod\",\n \"arabicParenBoth\",\n \"arabicParenR\",\n \"arabicPeriod\",\n \"arabicPlain\",\n \"romanLcParenBoth\",\n \"romanLcParenR\",\n \"romanLcPeriod\",\n \"romanUcParenBoth\",\n \"romanUcParenR\",\n \"romanUcPeriod\",\n]);\n\nexport const underlineStyleSchema = z.enum([\n \"dash\",\n \"dashHeavy\",\n \"dashLong\",\n \"dashLongHeavy\",\n \"dbl\",\n \"dotDash\",\n \"dotDotDash\",\n \"dotted\",\n \"dottedHeavy\",\n \"heavy\",\n \"none\",\n \"sng\",\n \"wavy\",\n \"wavyDbl\",\n \"wavyHeavy\",\n]);\n\nexport const underlineSchema = z.union([\n z.boolean(),\n z.object({\n style: underlineStyleSchema.optional(),\n color: z.string().optional(),\n }),\n]);\n\nconst alignItemsSchema = z.enum([\"start\", \"center\", \"end\", \"stretch\"]);\n\nconst alignSelfSchema = z.enum([\"auto\", \"start\", \"center\", \"end\", \"stretch\"]);\n\nconst positionTypeSchema = z.enum([\"relative\", \"absolute\"]);\n\nconst flexWrapSchema = z.enum([\"nowrap\", \"wrap\", \"wrapReverse\"]);\n\nconst justifyContentSchema = z.enum([\n \"start\",\n \"center\",\n \"end\",\n \"spaceBetween\",\n \"spaceAround\",\n \"spaceEvenly\",\n]);\n\nconst shapeTypeSchema = z.enum([\n \"accentBorderCallout1\",\n \"accentBorderCallout2\",\n \"accentBorderCallout3\",\n \"accentCallout1\",\n \"accentCallout2\",\n \"accentCallout3\",\n \"actionButtonBackPrevious\",\n \"actionButtonBeginning\",\n \"actionButtonBlank\",\n \"actionButtonDocument\",\n \"actionButtonEnd\",\n \"actionButtonForwardNext\",\n \"actionButtonHelp\",\n \"actionButtonHome\",\n \"actionButtonInformation\",\n \"actionButtonMovie\",\n \"actionButtonReturn\",\n \"actionButtonSound\",\n \"arc\",\n \"bentArrow\",\n \"bentUpArrow\",\n \"bevel\",\n \"blockArc\",\n \"borderCallout1\",\n \"borderCallout2\",\n \"borderCallout3\",\n \"bracePair\",\n \"bracketPair\",\n \"callout1\",\n \"callout2\",\n \"callout3\",\n \"can\",\n \"chartPlus\",\n \"chartStar\",\n \"chartX\",\n \"chevron\",\n \"chord\",\n \"circularArrow\",\n \"cloud\",\n \"cloudCallout\",\n \"corner\",\n \"cornerTabs\",\n \"cube\",\n \"curvedDownArrow\",\n \"curvedLeftArrow\",\n \"curvedRightArrow\",\n \"curvedUpArrow\",\n \"decagon\",\n \"diagStripe\",\n \"diamond\",\n \"dodecagon\",\n \"donut\",\n \"doubleWave\",\n \"downArrow\",\n \"downArrowCallout\",\n \"ellipse\",\n \"ellipseRibbon\",\n \"ellipseRibbon2\",\n \"flowChartAlternateProcess\",\n \"flowChartCollate\",\n \"flowChartConnector\",\n \"flowChartDecision\",\n \"flowChartDelay\",\n \"flowChartDisplay\",\n \"flowChartDocument\",\n \"flowChartExtract\",\n \"flowChartInputOutput\",\n \"flowChartInternalStorage\",\n \"flowChartMagneticDisk\",\n \"flowChartMagneticDrum\",\n \"flowChartMagneticTape\",\n \"flowChartManualInput\",\n \"flowChartManualOperation\",\n \"flowChartMerge\",\n \"flowChartMultidocument\",\n \"flowChartOfflineStorage\",\n \"flowChartOffpageConnector\",\n \"flowChartOnlineStorage\",\n \"flowChartOr\",\n \"flowChartPredefinedProcess\",\n \"flowChartPreparation\",\n \"flowChartProcess\",\n \"flowChartPunchedCard\",\n \"flowChartPunchedTape\",\n \"flowChartSort\",\n \"flowChartSummingJunction\",\n \"flowChartTerminator\",\n \"folderCorner\",\n \"frame\",\n \"funnel\",\n \"gear6\",\n \"gear9\",\n \"halfFrame\",\n \"heart\",\n \"heptagon\",\n \"hexagon\",\n \"homePlate\",\n \"horizontalScroll\",\n \"irregularSeal1\",\n \"irregularSeal2\",\n \"leftArrow\",\n \"leftArrowCallout\",\n \"leftBrace\",\n \"leftBracket\",\n \"leftCircularArrow\",\n \"leftRightArrow\",\n \"leftRightArrowCallout\",\n \"leftRightCircularArrow\",\n \"leftRightRibbon\",\n \"leftRightUpArrow\",\n \"leftUpArrow\",\n \"lightningBolt\",\n \"line\",\n \"lineInv\",\n \"mathDivide\",\n \"mathEqual\",\n \"mathMinus\",\n \"mathMultiply\",\n \"mathNotEqual\",\n \"mathPlus\",\n \"moon\",\n \"noSmoking\",\n \"nonIsoscelesTrapezoid\",\n \"notchedRightArrow\",\n \"octagon\",\n \"parallelogram\",\n \"pentagon\",\n \"pie\",\n \"pieWedge\",\n \"plaque\",\n \"plaqueTabs\",\n \"plus\",\n \"quadArrow\",\n \"quadArrowCallout\",\n \"rect\",\n \"ribbon\",\n \"ribbon2\",\n \"rightArrow\",\n \"rightArrowCallout\",\n \"rightBrace\",\n \"rightBracket\",\n \"round1Rect\",\n \"round2DiagRect\",\n \"round2SameRect\",\n \"roundRect\",\n \"rtTriangle\",\n \"smileyFace\",\n \"snip1Rect\",\n \"snip2DiagRect\",\n \"snip2SameRect\",\n \"snipRoundRect\",\n \"squareTabs\",\n \"star10\",\n \"star12\",\n \"star16\",\n \"star24\",\n \"star32\",\n \"star4\",\n \"star5\",\n \"star6\",\n \"star7\",\n \"star8\",\n \"stripedRightArrow\",\n \"sun\",\n \"swooshArrow\",\n \"teardrop\",\n \"trapezoid\",\n \"triangle\",\n \"upArrow\",\n \"upArrowCallout\",\n \"upDownArrow\",\n \"upDownArrowCallout\",\n \"uturnArrow\",\n \"verticalScroll\",\n \"wave\",\n \"wedgeEllipseCallout\",\n \"wedgeRectCallout\",\n \"wedgeRoundRectCallout\",\n]);\n\n// ===== TypeScript Types (defined early for recursive references) =====\nexport type ShadowStyle = z.infer<typeof shadowStyleSchema>;\nexport type AlignItems = z.infer<typeof alignItemsSchema>;\nexport type FlexWrap = z.infer<typeof flexWrapSchema>;\nexport type JustifyContent = z.infer<typeof justifyContentSchema>;\nexport type UnderlineStyle = z.infer<typeof underlineStyleSchema>;\nexport type Underline = z.infer<typeof underlineSchema>;\n\n// ===== Background Image =====\nconst backgroundImageSizingSchema = z.enum([\"cover\", \"contain\"]);\n\nconst backgroundImageSchema = z.object({\n src: z.string(),\n sizing: backgroundImageSizingSchema.optional(),\n});\n\n// ===== Background Gradient =====\nconst backgroundGradientSchema = z\n .string()\n .refine((value) => parseLinearGradient(value) !== null, {\n message:\n 'Invalid gradient syntax. Expected: linear-gradient(<angle>deg, <color> <position>%, ...) e.g. \"linear-gradient(135deg, #FF0000 0%, #0000FF 100%)\"',\n });\n\n// ===== Base Node =====\nconst basePOMNodeSchema = z.object({\n id: z.string().optional(),\n w: lengthSchema.optional(),\n h: lengthSchema.optional(),\n grow: z.number().positive().optional(),\n minW: z.number().optional(),\n maxW: z.number().optional(),\n minH: z.number().optional(),\n maxH: z.number().optional(),\n padding: paddingSchema.optional(),\n margin: paddingSchema.optional(),\n backgroundColor: z.string().optional(),\n backgroundGradient: backgroundGradientSchema.optional(),\n backgroundImage: backgroundImageSchema.optional(),\n border: borderStyleSchema.optional(),\n borderRadius: z.number().optional(),\n opacity: z.number().min(0).max(1).optional(),\n zIndex: z.number().optional(),\n position: positionTypeSchema.optional(),\n top: z.number().optional(),\n right: z.number().optional(),\n bottom: z.number().optional(),\n left: z.number().optional(),\n alignSelf: alignSelfSchema.optional(),\n shadow: shadowStyleSchema.optional(),\n});\n\ntype BasePOMNode = z.infer<typeof basePOMNodeSchema>;\n\n// ===== Inline text run (partial bold/italic within a text node) =====\nconst textRunSchema = z.object({\n text: z.string(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: z.boolean().optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n color: z.string().optional(),\n href: z.string().optional(),\n fontFamily: z.string().optional(),\n letterSpacing: z.number().optional(),\n});\n\n// ===== Non-recursive Node Types =====\nexport const textNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"text\"),\n text: z.string(),\n runs: z.array(textRunSchema).optional(),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n lineHeight: z.number().optional(),\n letterSpacing: z.number().optional(),\n});\n\nexport const liNodeSchema = z.object({\n text: z.string(),\n runs: z.array(textRunSchema).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n color: z.string().optional(),\n fontSize: z.number().optional(),\n fontFamily: z.string().optional(),\n});\n\nexport const ulNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"ul\"),\n items: z.array(liNodeSchema),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n lineHeight: z.number().optional(),\n});\n\nexport const olNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"ol\"),\n items: z.array(liNodeSchema),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n lineHeight: z.number().optional(),\n numberType: bulletNumberTypeSchema.optional(),\n numberStartAt: z.number().optional(),\n});\n\nconst imageSizingSchema = z.object({\n type: z.enum([\"contain\", \"cover\", \"crop\"]),\n w: z.number().optional(),\n h: z.number().optional(),\n x: z.number().optional(),\n y: z.number().optional(),\n});\n\nexport const imageNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"image\"),\n src: z.string(),\n sizing: imageSizingSchema.optional(),\n});\n\nconst iconNameSchema = z.enum(Object.keys(ICON_DATA) as [string, ...string[]]);\n\nconst iconColorSchema = z\n .string()\n .regex(/^#?[0-9a-fA-F]{3,8}$/)\n .optional();\n\nconst iconVariantSchema = z\n .enum([\n \"circle-filled\",\n \"circle-outlined\",\n \"square-filled\",\n \"square-outlined\",\n ])\n .optional();\n\nexport const iconNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"icon\"),\n name: iconNameSchema,\n size: z.number().positive().max(1024).optional(),\n color: iconColorSchema,\n variant: iconVariantSchema,\n bgColor: iconColorSchema,\n});\n\nexport type IconNode = z.infer<typeof iconNodeSchema>;\n\nexport const svgNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"svg\"),\n svgContent: z.string(),\n w: z.number().positive().max(1024).optional(),\n h: z.number().positive().max(1024).optional(),\n color: iconColorSchema,\n});\n\nexport type SvgNode = z.infer<typeof svgNodeSchema>;\n\nconst tableCellSchema = z.object({\n text: z.string(),\n runs: z.array(textRunSchema).optional(),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n backgroundColor: z.string().optional(),\n colspan: z.number().int().min(1).optional(),\n rowspan: z.number().int().min(1).optional(),\n});\n\nconst tableRowSchema = z.object({\n cells: z.array(tableCellSchema),\n height: z.number().optional(),\n});\n\nconst tableColumnSchema = z.object({\n width: z.number().optional(),\n});\n\nexport const tableNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"table\"),\n columns: z.array(tableColumnSchema),\n rows: z.array(tableRowSchema),\n defaultRowHeight: z.number().optional(),\n cellBorder: borderStyleSchema.optional(),\n});\n\nexport const shapeNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"shape\"),\n shapeType: shapeTypeSchema,\n text: z.string().optional(),\n fill: fillStyleSchema.optional(),\n line: borderStyleSchema.optional(),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n lineHeight: z.number().optional(),\n});\n\nconst chartTypeSchema = z.enum([\n \"bar\",\n \"line\",\n \"pie\",\n \"area\",\n \"doughnut\",\n \"radar\",\n]);\n\nconst radarStyleSchema = z.enum([\"standard\", \"marker\", \"filled\"]);\n\nconst chartDataSchema = z.object({\n name: z.string().optional(),\n labels: z.array(z.string()),\n values: z.array(z.number()),\n});\n\nexport const chartNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"chart\"),\n chartType: chartTypeSchema,\n data: z.array(chartDataSchema),\n showLegend: z.boolean().optional(),\n showTitle: z.boolean().optional(),\n title: z.string().optional(),\n chartColors: z.array(z.string()).optional(),\n // radar専用オプション\n radarStyle: radarStyleSchema.optional(),\n});\n\nexport type TextNode = z.infer<typeof textNodeSchema>;\nexport type LiNode = z.infer<typeof liNodeSchema>;\nexport type UlNode = z.infer<typeof ulNodeSchema>;\nexport type OlNode = z.infer<typeof olNodeSchema>;\nexport type ImageNode = z.infer<typeof imageNodeSchema>;\nexport type TableNode = z.infer<typeof tableNodeSchema>;\nexport type ShapeNode = z.infer<typeof shapeNodeSchema>;\nexport type ChartNode = z.infer<typeof chartNodeSchema>;\n\n// ===== Timeline Node =====\nconst timelineDirectionSchema = z.enum([\"horizontal\", \"vertical\"]);\n\nconst timelineItemSchema = z.object({\n date: z.string(),\n title: z.string(),\n description: z.string().optional(),\n color: z.string().optional(),\n});\n\nexport const timelineNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"timeline\"),\n direction: timelineDirectionSchema.optional(),\n items: z.array(timelineItemSchema),\n});\n\nexport type TimelineNode = z.infer<typeof timelineNodeSchema>;\n\n// ===== Matrix Node =====\nconst matrixAxisSchema = z.object({\n x: z.string(),\n y: z.string(),\n});\n\nconst matrixQuadrantsSchema = z.object({\n topLeft: z.string(),\n topRight: z.string(),\n bottomLeft: z.string(),\n bottomRight: z.string(),\n});\n\nconst matrixItemSchema = z.object({\n label: z.string(),\n x: z.number().min(0).max(1),\n y: z.number().min(0).max(1),\n color: z.string().optional(),\n});\n\nexport const matrixNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"matrix\"),\n axes: matrixAxisSchema,\n quadrants: matrixQuadrantsSchema.optional(),\n items: z.array(matrixItemSchema),\n});\n\nexport type MatrixNode = z.infer<typeof matrixNodeSchema>;\n\n// ===== Tree Node =====\nconst treeLayoutSchema = z.enum([\"vertical\", \"horizontal\"]);\n\nexport const treeNodeShapeSchema = z.enum([\"rect\", \"roundRect\", \"ellipse\"]);\n\nexport const treeConnectorStyleSchema = z.object({\n color: z.string().optional(),\n width: z.number().optional(),\n});\n\nexport type TreeDataItem = {\n label: string;\n color?: string;\n children?: TreeDataItem[];\n};\n\nconst treeDataItemSchema: z.ZodType<TreeDataItem> = z.lazy(() =>\n z.object({\n label: z.string(),\n color: z.string().optional(),\n children: z.array(treeDataItemSchema).optional(),\n }),\n);\n\nexport const treeNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"tree\"),\n layout: treeLayoutSchema.optional(),\n nodeShape: treeNodeShapeSchema.optional(),\n data: treeDataItemSchema,\n connectorStyle: treeConnectorStyleSchema.optional(),\n nodeWidth: z.number().optional(),\n nodeHeight: z.number().optional(),\n levelGap: z.number().optional(),\n siblingGap: z.number().optional(),\n});\n\nexport type TreeNodeShape = z.infer<typeof treeNodeShapeSchema>;\nexport type TreeConnectorStyle = z.infer<typeof treeConnectorStyleSchema>;\nexport type TreeNode = z.infer<typeof treeNodeSchema>;\n\n// ===== ProcessArrow Node =====\nconst processArrowDirectionSchema = z.enum([\"horizontal\", \"vertical\"]);\n\nconst processArrowStepSchema = z.object({\n label: z.string(),\n color: z.string().optional(),\n textColor: z.string().optional(),\n});\n\nexport const processArrowNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"processArrow\"),\n direction: processArrowDirectionSchema.optional(),\n steps: z.array(processArrowStepSchema),\n itemWidth: z.number().optional(),\n itemHeight: z.number().optional(),\n gap: z.number().optional(),\n fontSize: z.number().optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n});\n\nexport type ProcessArrowNode = z.infer<typeof processArrowNodeSchema>;\n\n// ===== Pyramid Node =====\nconst pyramidDirectionSchema = z.enum([\"up\", \"down\"]);\n\nconst pyramidLevelSchema = z.object({\n label: z.string(),\n color: z.string().optional(),\n textColor: z.string().optional(),\n});\n\nexport const pyramidNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"pyramid\"),\n direction: pyramidDirectionSchema.optional(),\n levels: z.array(pyramidLevelSchema).min(1),\n fontSize: z.number().optional(),\n bold: z.boolean().optional(),\n fontFamily: z.string().optional(),\n});\n\nexport type PyramidNode = z.infer<typeof pyramidNodeSchema>;\n\n// ===== Flow Node =====\nconst flowDirectionSchema = z.enum([\"horizontal\", \"vertical\"]);\n\nconst flowNodeShapeSchema = z.enum([\n \"flowChartTerminator\",\n \"flowChartProcess\",\n \"flowChartDecision\",\n \"flowChartInputOutput\",\n \"flowChartDocument\",\n \"flowChartPredefinedProcess\",\n \"flowChartConnector\",\n \"flowChartPreparation\",\n \"flowChartManualInput\",\n \"flowChartManualOperation\",\n \"flowChartDelay\",\n \"flowChartMagneticDisk\",\n]);\n\nconst flowNodeItemSchema = z.object({\n id: z.string(),\n shape: flowNodeShapeSchema,\n text: z.string(),\n color: z.string().optional(),\n textColor: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n});\n\nconst flowConnectionSchema = z.object({\n from: z.string(),\n to: z.string(),\n label: z.string().optional(),\n color: z.string().optional(),\n});\n\nconst flowConnectorStyleSchema = z.object({\n color: z.string().optional(),\n width: z.number().optional(),\n arrowType: z\n .enum([\"none\", \"arrow\", \"diamond\", \"oval\", \"stealth\", \"triangle\"])\n .optional(),\n});\n\nexport const flowNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"flow\"),\n direction: flowDirectionSchema.optional(),\n nodes: z.array(flowNodeItemSchema),\n connections: z.array(flowConnectionSchema),\n connectorStyle: flowConnectorStyleSchema.optional(),\n nodeWidth: z.number().optional(),\n nodeHeight: z.number().optional(),\n nodeGap: z.number().optional(),\n});\n\nexport type FlowNode = z.infer<typeof flowNodeSchema>;\n\n// ===== Line Node =====\nconst lineArrowTypeSchema = z.enum([\n \"none\",\n \"arrow\",\n \"triangle\",\n \"diamond\",\n \"oval\",\n \"stealth\",\n]);\n\nconst lineArrowOptionsSchema = z.object({\n type: lineArrowTypeSchema.optional(),\n});\n\nexport const lineArrowSchema = z.union([z.boolean(), lineArrowOptionsSchema]);\n\nexport const lineNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"line\"),\n x1: z.number(),\n y1: z.number(),\n x2: z.number(),\n y2: z.number(),\n color: z.string().optional(),\n lineWidth: z.number().optional(),\n dashType: borderDashSchema.optional(),\n beginArrow: lineArrowSchema.optional(),\n endArrow: lineArrowSchema.optional(),\n});\n\nexport type LineArrow = z.infer<typeof lineArrowSchema>;\nexport type LineNode = z.infer<typeof lineNodeSchema>;\n\n// ===== Arrow Node =====\nexport const arrowNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"arrow\"),\n from: z.string(),\n to: z.string(),\n color: z.string().optional(),\n lineWidth: z.number().optional(),\n dashType: borderDashSchema.optional(),\n beginArrow: lineArrowSchema.optional(),\n endArrow: lineArrowSchema.optional(),\n});\n\nexport type ArrowNode = z.infer<typeof arrowNodeSchema>;\n\n// ===== Layer Node =====\n// LayerChild, LayerNode types are defined below after POMNode\n\n// ===== Recursive Types with Explicit Type Definitions =====\n\n// Define the types explicitly to avoid 'any' inference\nexport type VStackNode = BasePOMNode & {\n type: \"vstack\";\n children: POMNode[];\n gap?: number;\n alignItems?: AlignItems;\n justifyContent?: JustifyContent;\n flexWrap?: FlexWrap;\n};\n\nexport type HStackNode = BasePOMNode & {\n type: \"hstack\";\n children: POMNode[];\n gap?: number;\n alignItems?: AlignItems;\n justifyContent?: JustifyContent;\n flexWrap?: FlexWrap;\n};\n\n// Layer の子要素は x, y を必須とする\ntype LayerChild = POMNode & {\n x: number;\n y: number;\n};\n\nexport type LayerNode = BasePOMNode & {\n type: \"layer\";\n children: LayerChild[];\n};\n\nexport type POMNode =\n | TextNode\n | UlNode\n | OlNode\n | ImageNode\n | TableNode\n | VStackNode\n | HStackNode\n | ShapeNode\n | ChartNode\n | TimelineNode\n | MatrixNode\n | TreeNode\n | FlowNode\n | ProcessArrowNode\n | PyramidNode\n | LineNode\n | ArrowNode\n | LayerNode\n | IconNode\n | SvgNode;\n\n// Define schemas using passthrough to maintain type safety\nconst vStackNodeSchemaBase = basePOMNodeSchema.extend({\n type: z.literal(\"vstack\"),\n children: z.array(z.lazy(() => pomNodeSchema)),\n gap: z.number().optional(),\n alignItems: alignItemsSchema.optional(),\n justifyContent: justifyContentSchema.optional(),\n flexWrap: flexWrapSchema.optional(),\n});\n\nconst hStackNodeSchemaBase = basePOMNodeSchema.extend({\n type: z.literal(\"hstack\"),\n children: z.array(z.lazy(() => pomNodeSchema)),\n gap: z.number().optional(),\n alignItems: alignItemsSchema.optional(),\n justifyContent: justifyContentSchema.optional(),\n flexWrap: flexWrapSchema.optional(),\n});\n\nconst layerChildSchemaBase = z.lazy(() =>\n pomNodeSchema.and(\n z.object({\n x: z.number(),\n y: z.number(),\n }),\n ),\n);\n\nconst layerNodeSchemaBase = basePOMNodeSchema.extend({\n type: z.literal(\"layer\"),\n children: z.array(layerChildSchemaBase),\n});\n\nconst pomNodeSchema: z.ZodType<POMNode> = z.lazy(() =>\n z.discriminatedUnion(\"type\", [\n textNodeSchema,\n ulNodeSchema,\n olNodeSchema,\n imageNodeSchema,\n tableNodeSchema,\n vStackNodeSchemaBase,\n hStackNodeSchemaBase,\n shapeNodeSchema,\n chartNodeSchema,\n timelineNodeSchema,\n matrixNodeSchema,\n treeNodeSchema,\n flowNodeSchema,\n processArrowNodeSchema,\n pyramidNodeSchema,\n lineNodeSchema,\n arrowNodeSchema,\n layerNodeSchemaBase,\n iconNodeSchema,\n svgNodeSchema,\n ]),\n);\n\n// ===== Positioned Node Types =====\nconst positionedBaseSchema = z.object({\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n});\n\ntype PositionedBase = z.infer<typeof positionedBaseSchema>;\n\n// Layer の子要素(位置情報付き)\nexport type PositionedLayerChild = PositionedNode & {\n x: number;\n y: number;\n};\n\nexport type PositionedNode =\n | (TextNode & PositionedBase)\n | (UlNode & PositionedBase)\n | (OlNode & PositionedBase)\n | (ImageNode & PositionedBase & { imageData?: string })\n | (TableNode & PositionedBase)\n | (VStackNode & PositionedBase & { children: PositionedNode[] })\n | (HStackNode & PositionedBase & { children: PositionedNode[] })\n | (ShapeNode & PositionedBase)\n | (ChartNode & PositionedBase)\n | (TimelineNode & PositionedBase)\n | (MatrixNode & PositionedBase)\n | (TreeNode & PositionedBase)\n | (FlowNode & PositionedBase)\n | (ProcessArrowNode & PositionedBase)\n | (PyramidNode & PositionedBase)\n | (LineNode & PositionedBase)\n | (ArrowNode & PositionedBase)\n | (LayerNode & PositionedBase & { children: PositionedLayerChild[] })\n | (IconNode &\n PositionedBase & {\n iconImageData: string;\n bgX?: number;\n bgY?: number;\n bgW?: number;\n bgH?: number;\n iconX?: number;\n iconY?: number;\n iconW?: number;\n iconH?: number;\n })\n | (SvgNode & PositionedBase & { iconImageData: string });\n\nconst positionedLayerChildSchema: z.ZodType<PositionedLayerChild> = z.lazy(() =>\n positionedNodeSchema.and(\n z.object({\n x: z.number(),\n y: z.number(),\n }),\n ),\n);\n\nconst positionedNodeSchema: z.ZodType<PositionedNode> = z.lazy(() =>\n z.union([\n textNodeSchema.merge(positionedBaseSchema),\n ulNodeSchema.merge(positionedBaseSchema),\n olNodeSchema.merge(positionedBaseSchema),\n imageNodeSchema.merge(positionedBaseSchema).extend({\n imageData: z.string().optional(),\n }),\n tableNodeSchema.merge(positionedBaseSchema),\n vStackNodeSchemaBase.merge(positionedBaseSchema).extend({\n children: z.array(z.lazy(() => positionedNodeSchema)),\n }),\n hStackNodeSchemaBase.merge(positionedBaseSchema).extend({\n children: z.array(z.lazy(() => positionedNodeSchema)),\n }),\n shapeNodeSchema.merge(positionedBaseSchema),\n chartNodeSchema.merge(positionedBaseSchema),\n timelineNodeSchema.merge(positionedBaseSchema),\n matrixNodeSchema.merge(positionedBaseSchema),\n treeNodeSchema.merge(positionedBaseSchema),\n flowNodeSchema.merge(positionedBaseSchema),\n processArrowNodeSchema.merge(positionedBaseSchema),\n pyramidNodeSchema.merge(positionedBaseSchema),\n lineNodeSchema.merge(positionedBaseSchema),\n arrowNodeSchema.merge(positionedBaseSchema),\n layerNodeSchemaBase.merge(positionedBaseSchema).extend({\n children: z.array(positionedLayerChildSchema),\n }),\n iconNodeSchema.merge(positionedBaseSchema).extend({\n iconImageData: z.string(),\n }),\n svgNodeSchema.merge(positionedBaseSchema).extend({\n iconImageData: z.string(),\n }),\n ]),\n);\n\n// ===== Slide Master Options =====\nconst masterTextObjectSchema = z.object({\n type: z.literal(\"text\"),\n text: z.string(),\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n fontSize: z.number().optional(),\n fontFamily: z.string().optional(),\n color: z.string().optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n});\n\nconst masterImageObjectSchema = z.object({\n type: z.literal(\"image\"),\n src: z.string(),\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n});\n\nconst masterRectObjectSchema = z.object({\n type: z.literal(\"rect\"),\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n fill: fillStyleSchema.optional(),\n border: borderStyleSchema.optional(),\n});\n\nconst masterLineObjectSchema = z.object({\n type: z.literal(\"line\"),\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n line: borderStyleSchema.optional(),\n});\n\nexport const masterObjectSchema = z.discriminatedUnion(\"type\", [\n masterTextObjectSchema,\n masterImageObjectSchema,\n masterRectObjectSchema,\n masterLineObjectSchema,\n]);\n\nconst slideNumberOptionsSchema = z.object({\n x: z.number(),\n y: z.number(),\n w: z.number().optional(),\n h: z.number().optional(),\n fontSize: z.number().optional(),\n fontFamily: z.string().optional(),\n color: z.string().optional(),\n});\n\nconst slideMasterBackgroundSchema = z.union([\n z.object({ color: z.string() }),\n z.object({ path: z.string() }),\n z.object({ data: z.string() }),\n z.object({ image: z.string() }),\n]);\n\nconst slideMasterMarginSchema = z.union([\n z.number(),\n z.object({\n top: z.number().optional(),\n right: z.number().optional(),\n bottom: z.number().optional(),\n left: z.number().optional(),\n }),\n]);\n\nexport const slideMasterOptionsSchema = z.object({\n title: z.string().optional(),\n background: slideMasterBackgroundSchema.optional(),\n margin: slideMasterMarginSchema.optional(),\n objects: z.array(masterObjectSchema).optional(),\n slideNumber: slideNumberOptionsSchema.optional(),\n});\n\nexport type MasterTextObject = z.infer<typeof masterTextObjectSchema>;\nexport type MasterImageObject = z.infer<typeof masterImageObjectSchema>;\nexport type MasterRectObject = z.infer<typeof masterRectObjectSchema>;\nexport type MasterLineObject = z.infer<typeof masterLineObjectSchema>;\nexport type MasterObject = z.infer<typeof masterObjectSchema>;\nexport type SlideNumberOptions = z.infer<typeof slideNumberOptionsSchema>;\nexport type SlideMasterBackground = z.infer<typeof slideMasterBackgroundSchema>;\nexport type SlideMasterMargin = z.infer<typeof slideMasterMarginSchema>;\nexport type SlideMasterOptions = z.infer<typeof slideMasterOptionsSchema>;\n"],"mappings":";;;;AAKA,MAAM,eAAe,EAAE,MAAM;CAC3B,EAAE,OAAO;CACT,EAAE,QAAQ,KAAK;CACf,EAAE,OAAO,CAAC,CAAC,MAAM,QAAQ;AAC3B,CAAC;AAED,MAAM,gBAAgB,EAAE,MAAM,CAC5B,EAAE,OAAO,GACT,EAAE,OAAO;CACP,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS;CACzB,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;CAC5B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;AAC5B,CAAC,CACH,CAAC;AAED,MAAM,mBAAmB,EAAE,KAAK;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,oBAAoB,EAAE,OAAO;CACjC,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,UAAU,iBAAiB,SAAS;AACtC,CAAC;AAED,MAAM,kBAAkB,EAAE,OAAO;CAC/B,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS;AACpC,CAAC;AAED,MAAa,oBAAoB,EAAE,OAAO;CACxC,MAAM,EAAE,KAAK,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,SAAS;CAC1C,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;CAC5B,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;AAC7B,CAAC;AAED,MAAM,yBAAyB,EAAE,KAAK;CACpC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAa,uBAAuB,EAAE,KAAK;CACzC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAa,kBAAkB,EAAE,MAAM,CACrC,EAAE,QAAQ,GACV,EAAE,OAAO;CACP,OAAO,qBAAqB,SAAS;CACrC,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;AAC7B,CAAC,CACH,CAAC;AAED,MAAM,mBAAmB,EAAE,KAAK;CAAC;CAAS;CAAU;CAAO;AAAS,CAAC;AAErE,MAAM,kBAAkB,EAAE,KAAK;CAAC;CAAQ;CAAS;CAAU;CAAO;AAAS,CAAC;AAE5E,MAAM,qBAAqB,EAAE,KAAK,CAAC,YAAY,UAAU,CAAC;AAE1D,MAAM,iBAAiB,EAAE,KAAK;CAAC;CAAU;CAAQ;AAAa,CAAC;AAE/D,MAAM,uBAAuB,EAAE,KAAK;CAClC;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,kBAAkB,EAAE,KAAK;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;C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"}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ICON_DATA } from \"./icons/iconData.ts\";\nimport { parseLinearGradient } from \"./shared/gradient.ts\";\n\n// ===== Basic Types =====\nconst lengthSchema = z.union([\n z.number(),\n z.literal(\"max\"),\n z.string().regex(/^\\d+%$/),\n]);\n\nconst paddingSchema = z.union([\n z.number(),\n z.object({\n top: z.number().optional(),\n right: z.number().optional(),\n bottom: z.number().optional(),\n left: z.number().optional(),\n }),\n]);\n\nconst borderDashSchema = z.enum([\n \"solid\",\n \"dash\",\n \"dashDot\",\n \"lgDash\",\n \"lgDashDot\",\n \"lgDashDotDot\",\n \"sysDash\",\n \"sysDot\",\n]);\n\nconst borderStyleSchema = z.object({\n color: z.string().optional(),\n width: z.number().optional(),\n dashType: borderDashSchema.optional(),\n});\n\nconst fillStyleSchema = z.object({\n color: z.string().optional(),\n transparency: z.number().optional(),\n});\n\nexport const shadowStyleSchema = z.object({\n type: z.enum([\"outer\", \"inner\"]).optional(),\n opacity: z.number().optional(),\n blur: z.number().optional(),\n angle: z.number().optional(),\n offset: z.number().optional(),\n color: z.string().optional(),\n});\n\nconst bulletNumberTypeSchema = z.enum([\n \"alphaLcParenBoth\",\n \"alphaLcParenR\",\n \"alphaLcPeriod\",\n \"alphaUcParenBoth\",\n \"alphaUcParenR\",\n \"alphaUcPeriod\",\n \"arabicParenBoth\",\n \"arabicParenR\",\n \"arabicPeriod\",\n \"arabicPlain\",\n \"romanLcParenBoth\",\n \"romanLcParenR\",\n \"romanLcPeriod\",\n \"romanUcParenBoth\",\n \"romanUcParenR\",\n \"romanUcPeriod\",\n]);\n\nexport const underlineStyleSchema = z.enum([\n \"dash\",\n \"dashHeavy\",\n \"dashLong\",\n \"dashLongHeavy\",\n \"dbl\",\n \"dotDash\",\n \"dotDotDash\",\n \"dotted\",\n \"dottedHeavy\",\n \"heavy\",\n \"none\",\n \"sng\",\n \"wavy\",\n \"wavyDbl\",\n \"wavyHeavy\",\n]);\n\nexport const underlineSchema = z.union([\n z.boolean(),\n z.object({\n style: underlineStyleSchema.optional(),\n color: z.string().optional(),\n }),\n]);\n\nexport const textGlowSchema = z.object({\n size: z.number().nonnegative().optional(),\n opacity: z.number().min(0).max(1).optional(),\n color: z.string().optional(),\n});\n\nexport const textOutlineSchema = z.object({\n size: z.number().nonnegative().optional(),\n color: z.string().optional(),\n});\n\nconst alignItemsSchema = z.enum([\"start\", \"center\", \"end\", \"stretch\"]);\n\nconst alignSelfSchema = z.enum([\"auto\", \"start\", \"center\", \"end\", \"stretch\"]);\n\nconst positionTypeSchema = z.enum([\"relative\", \"absolute\"]);\n\nconst flexWrapSchema = z.enum([\"nowrap\", \"wrap\", \"wrapReverse\"]);\n\nconst justifyContentSchema = z.enum([\n \"start\",\n \"center\",\n \"end\",\n \"spaceBetween\",\n \"spaceAround\",\n \"spaceEvenly\",\n]);\n\nconst shapeTypeSchema = z.enum([\n \"accentBorderCallout1\",\n \"accentBorderCallout2\",\n \"accentBorderCallout3\",\n \"accentCallout1\",\n \"accentCallout2\",\n \"accentCallout3\",\n \"actionButtonBackPrevious\",\n \"actionButtonBeginning\",\n \"actionButtonBlank\",\n \"actionButtonDocument\",\n \"actionButtonEnd\",\n \"actionButtonForwardNext\",\n \"actionButtonHelp\",\n \"actionButtonHome\",\n \"actionButtonInformation\",\n \"actionButtonMovie\",\n \"actionButtonReturn\",\n \"actionButtonSound\",\n \"arc\",\n \"bentArrow\",\n \"bentUpArrow\",\n \"bevel\",\n \"blockArc\",\n \"borderCallout1\",\n \"borderCallout2\",\n \"borderCallout3\",\n \"bracePair\",\n \"bracketPair\",\n \"callout1\",\n \"callout2\",\n \"callout3\",\n \"can\",\n \"chartPlus\",\n \"chartStar\",\n \"chartX\",\n \"chevron\",\n \"chord\",\n \"circularArrow\",\n \"cloud\",\n \"cloudCallout\",\n \"corner\",\n \"cornerTabs\",\n \"cube\",\n \"curvedDownArrow\",\n \"curvedLeftArrow\",\n \"curvedRightArrow\",\n \"curvedUpArrow\",\n \"decagon\",\n \"diagStripe\",\n \"diamond\",\n \"dodecagon\",\n \"donut\",\n \"doubleWave\",\n \"downArrow\",\n \"downArrowCallout\",\n \"ellipse\",\n \"ellipseRibbon\",\n \"ellipseRibbon2\",\n \"flowChartAlternateProcess\",\n \"flowChartCollate\",\n \"flowChartConnector\",\n \"flowChartDecision\",\n \"flowChartDelay\",\n \"flowChartDisplay\",\n \"flowChartDocument\",\n \"flowChartExtract\",\n \"flowChartInputOutput\",\n \"flowChartInternalStorage\",\n \"flowChartMagneticDisk\",\n \"flowChartMagneticDrum\",\n \"flowChartMagneticTape\",\n \"flowChartManualInput\",\n \"flowChartManualOperation\",\n \"flowChartMerge\",\n \"flowChartMultidocument\",\n \"flowChartOfflineStorage\",\n \"flowChartOffpageConnector\",\n \"flowChartOnlineStorage\",\n \"flowChartOr\",\n \"flowChartPredefinedProcess\",\n \"flowChartPreparation\",\n \"flowChartProcess\",\n \"flowChartPunchedCard\",\n \"flowChartPunchedTape\",\n \"flowChartSort\",\n \"flowChartSummingJunction\",\n \"flowChartTerminator\",\n \"folderCorner\",\n \"frame\",\n \"funnel\",\n \"gear6\",\n \"gear9\",\n \"halfFrame\",\n \"heart\",\n \"heptagon\",\n \"hexagon\",\n \"homePlate\",\n \"horizontalScroll\",\n \"irregularSeal1\",\n \"irregularSeal2\",\n \"leftArrow\",\n \"leftArrowCallout\",\n \"leftBrace\",\n \"leftBracket\",\n \"leftCircularArrow\",\n \"leftRightArrow\",\n \"leftRightArrowCallout\",\n \"leftRightCircularArrow\",\n \"leftRightRibbon\",\n \"leftRightUpArrow\",\n \"leftUpArrow\",\n \"lightningBolt\",\n \"line\",\n \"lineInv\",\n \"mathDivide\",\n \"mathEqual\",\n \"mathMinus\",\n \"mathMultiply\",\n \"mathNotEqual\",\n \"mathPlus\",\n \"moon\",\n \"noSmoking\",\n \"nonIsoscelesTrapezoid\",\n \"notchedRightArrow\",\n \"octagon\",\n \"parallelogram\",\n \"pentagon\",\n \"pie\",\n \"pieWedge\",\n \"plaque\",\n \"plaqueTabs\",\n \"plus\",\n \"quadArrow\",\n \"quadArrowCallout\",\n \"rect\",\n \"ribbon\",\n \"ribbon2\",\n \"rightArrow\",\n \"rightArrowCallout\",\n \"rightBrace\",\n \"rightBracket\",\n \"round1Rect\",\n \"round2DiagRect\",\n \"round2SameRect\",\n \"roundRect\",\n \"rtTriangle\",\n \"smileyFace\",\n \"snip1Rect\",\n \"snip2DiagRect\",\n \"snip2SameRect\",\n \"snipRoundRect\",\n \"squareTabs\",\n \"star10\",\n \"star12\",\n \"star16\",\n \"star24\",\n \"star32\",\n \"star4\",\n \"star5\",\n \"star6\",\n \"star7\",\n \"star8\",\n \"stripedRightArrow\",\n \"sun\",\n \"swooshArrow\",\n \"teardrop\",\n \"trapezoid\",\n \"triangle\",\n \"upArrow\",\n \"upArrowCallout\",\n \"upDownArrow\",\n \"upDownArrowCallout\",\n \"uturnArrow\",\n \"verticalScroll\",\n \"wave\",\n \"wedgeEllipseCallout\",\n \"wedgeRectCallout\",\n \"wedgeRoundRectCallout\",\n]);\n\n// ===== TypeScript Types (defined early for recursive references) =====\nexport type ShadowStyle = z.infer<typeof shadowStyleSchema>;\nexport type BorderStyle = z.infer<typeof borderStyleSchema>;\nexport type AlignItems = z.infer<typeof alignItemsSchema>;\nexport type FlexWrap = z.infer<typeof flexWrapSchema>;\nexport type JustifyContent = z.infer<typeof justifyContentSchema>;\nexport type UnderlineStyle = z.infer<typeof underlineStyleSchema>;\nexport type Underline = z.infer<typeof underlineSchema>;\nexport type TextGlow = z.infer<typeof textGlowSchema>;\nexport type TextOutline = z.infer<typeof textOutlineSchema>;\n\n// ===== Background Image =====\nconst backgroundImageSizingSchema = z.enum([\"cover\", \"contain\"]);\n\nconst backgroundImageSchema = z.object({\n src: z.string(),\n sizing: backgroundImageSizingSchema.optional(),\n});\n\n// ===== Background Gradient =====\nconst backgroundGradientSchema = z\n .string()\n .refine((value) => parseLinearGradient(value) !== null, {\n message:\n 'Invalid gradient syntax. Expected: linear-gradient(<angle>deg, <color> <position>%, ...) e.g. \"linear-gradient(135deg, #FF0000 0%, #0000FF 100%)\"',\n });\n\n// ===== Base Node =====\nconst basePOMNodeSchema = z.object({\n id: z.string().optional(),\n w: lengthSchema.optional(),\n h: lengthSchema.optional(),\n grow: z.number().positive().optional(),\n minW: z.number().optional(),\n maxW: z.number().optional(),\n minH: z.number().optional(),\n maxH: z.number().optional(),\n padding: paddingSchema.optional(),\n margin: paddingSchema.optional(),\n backgroundColor: z.string().optional(),\n backgroundGradient: backgroundGradientSchema.optional(),\n backgroundImage: backgroundImageSchema.optional(),\n border: borderStyleSchema.optional(),\n borderTop: borderStyleSchema.optional(),\n borderRight: borderStyleSchema.optional(),\n borderBottom: borderStyleSchema.optional(),\n borderLeft: borderStyleSchema.optional(),\n borderRadius: z.number().optional(),\n opacity: z.number().min(0).max(1).optional(),\n zIndex: z.number().optional(),\n position: positionTypeSchema.optional(),\n top: z.number().optional(),\n right: z.number().optional(),\n bottom: z.number().optional(),\n left: z.number().optional(),\n alignSelf: alignSelfSchema.optional(),\n shadow: shadowStyleSchema.optional(),\n});\n\ntype BasePOMNode = z.infer<typeof basePOMNodeSchema>;\n\n// ===== Inline text run (partial bold/italic within a text node) =====\nconst textRunSchema = z.object({\n text: z.string(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: z.boolean().optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n color: z.string().optional(),\n href: z.string().optional(),\n fontFamily: z.string().optional(),\n letterSpacing: z.number().optional(),\n});\n\n// ===== Non-recursive Node Types =====\nexport const textNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"text\"),\n text: z.string(),\n runs: z.array(textRunSchema).optional(),\n rotate: z.number().optional(),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n lineHeight: z.number().optional(),\n letterSpacing: z.number().optional(),\n glow: textGlowSchema.optional(),\n outline: textOutlineSchema.optional(),\n});\n\nexport const liNodeSchema = z.object({\n text: z.string(),\n runs: z.array(textRunSchema).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n color: z.string().optional(),\n fontSize: z.number().optional(),\n fontFamily: z.string().optional(),\n});\n\nexport const ulNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"ul\"),\n items: z.array(liNodeSchema),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n lineHeight: z.number().optional(),\n});\n\nexport const olNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"ol\"),\n items: z.array(liNodeSchema),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n lineHeight: z.number().optional(),\n numberType: bulletNumberTypeSchema.optional(),\n numberStartAt: z.number().optional(),\n});\n\nconst imageSizingSchema = z.object({\n type: z.enum([\"contain\", \"cover\", \"crop\"]),\n w: z.number().optional(),\n h: z.number().optional(),\n x: z.number().optional(),\n y: z.number().optional(),\n});\n\nexport const imageNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"image\"),\n src: z.string(),\n sizing: imageSizingSchema.optional(),\n rotate: z.number().optional(),\n});\n\nconst iconNameSchema = z.enum(Object.keys(ICON_DATA) as [string, ...string[]]);\n\nconst iconColorSchema = z\n .string()\n .regex(/^#?[0-9a-fA-F]{3,8}$/)\n .optional();\n\nconst iconVariantSchema = z\n .enum([\n \"circle-filled\",\n \"circle-outlined\",\n \"square-filled\",\n \"square-outlined\",\n ])\n .optional();\n\nexport const iconNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"icon\"),\n name: iconNameSchema,\n size: z.number().positive().max(1024).optional(),\n color: iconColorSchema,\n variant: iconVariantSchema,\n bgColor: iconColorSchema,\n rotate: z.number().optional(),\n});\n\nexport type IconNode = z.infer<typeof iconNodeSchema>;\n\nexport const svgNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"svg\"),\n svgContent: z.string(),\n w: z.number().positive().max(1024).optional(),\n h: z.number().positive().max(1024).optional(),\n color: iconColorSchema,\n});\n\nexport type SvgNode = z.infer<typeof svgNodeSchema>;\n\nconst tableCellSchema = z.object({\n text: z.string(),\n runs: z.array(textRunSchema).optional(),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n backgroundColor: z.string().optional(),\n colspan: z.number().int().min(1).optional(),\n rowspan: z.number().int().min(1).optional(),\n});\n\nconst tableRowSchema = z.object({\n cells: z.array(tableCellSchema),\n height: z.number().optional(),\n});\n\nconst tableColumnSchema = z.object({\n width: z.number().optional(),\n});\n\nexport const tableNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"table\"),\n columns: z.array(tableColumnSchema),\n rows: z.array(tableRowSchema),\n defaultRowHeight: z.number().optional(),\n cellBorder: borderStyleSchema.optional(),\n});\n\nexport const shapeNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"shape\"),\n shapeType: shapeTypeSchema,\n text: z.string().optional(),\n rotate: z.number().optional(),\n fill: fillStyleSchema.optional(),\n line: borderStyleSchema.optional(),\n fontSize: z.number().optional(),\n color: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n lineHeight: z.number().optional(),\n});\n\nconst chartTypeSchema = z.enum([\n \"bar\",\n \"line\",\n \"pie\",\n \"area\",\n \"doughnut\",\n \"radar\",\n]);\n\nconst radarStyleSchema = z.enum([\"standard\", \"marker\", \"filled\"]);\n\nconst chartDataSchema = z.object({\n name: z.string().optional(),\n labels: z.array(z.string()),\n values: z.array(z.number()),\n});\n\nexport const chartNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"chart\"),\n chartType: chartTypeSchema,\n data: z.array(chartDataSchema),\n showLegend: z.boolean().optional(),\n showTitle: z.boolean().optional(),\n title: z.string().optional(),\n chartColors: z.array(z.string()).optional(),\n // radar専用オプション\n radarStyle: radarStyleSchema.optional(),\n});\n\nexport type TextNode = z.infer<typeof textNodeSchema>;\nexport type LiNode = z.infer<typeof liNodeSchema>;\nexport type UlNode = z.infer<typeof ulNodeSchema>;\nexport type OlNode = z.infer<typeof olNodeSchema>;\nexport type ImageNode = z.infer<typeof imageNodeSchema>;\nexport type TableNode = z.infer<typeof tableNodeSchema>;\nexport type ShapeNode = z.infer<typeof shapeNodeSchema>;\nexport type ChartNode = z.infer<typeof chartNodeSchema>;\n\n// ===== Timeline Node =====\nconst timelineDirectionSchema = z.enum([\"horizontal\", \"vertical\"]);\n\nconst timelineItemSchema = z.object({\n date: z.string(),\n title: z.string(),\n description: z.string().optional(),\n color: z.string().optional(),\n});\n\nexport const timelineNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"timeline\"),\n direction: timelineDirectionSchema.optional(),\n items: z.array(timelineItemSchema),\n dateColor: z.string().optional(),\n titleColor: z.string().optional(),\n descriptionColor: z.string().optional(),\n});\n\nexport type TimelineNode = z.infer<typeof timelineNodeSchema>;\n\n// ===== Matrix Node =====\nconst matrixAxisSchema = z.object({\n x: z.string(),\n y: z.string(),\n});\n\nconst matrixQuadrantsSchema = z.object({\n topLeft: z.string(),\n topRight: z.string(),\n bottomLeft: z.string(),\n bottomRight: z.string(),\n});\n\nconst matrixItemSchema = z.object({\n label: z.string(),\n x: z.number().min(0).max(1),\n y: z.number().min(0).max(1),\n color: z.string().optional(),\n textColor: z.string().optional(),\n});\n\nexport const matrixNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"matrix\"),\n axes: matrixAxisSchema,\n quadrants: matrixQuadrantsSchema.optional(),\n items: z.array(matrixItemSchema),\n axisLabelColor: z.string().optional(),\n quadrantLabelColor: z.string().optional(),\n itemLabelColor: z.string().optional(),\n});\n\nexport type MatrixNode = z.infer<typeof matrixNodeSchema>;\n\n// ===== Tree Node =====\nconst treeLayoutSchema = z.enum([\"vertical\", \"horizontal\"]);\n\nexport const treeNodeShapeSchema = z.enum([\"rect\", \"roundRect\", \"ellipse\"]);\n\nexport const treeConnectorStyleSchema = z.object({\n color: z.string().optional(),\n width: z.number().optional(),\n});\n\nexport type TreeDataItem = {\n label: string;\n color?: string;\n textColor?: string;\n children?: TreeDataItem[];\n};\n\nconst treeDataItemSchema: z.ZodType<TreeDataItem> = z.lazy(() =>\n z.object({\n label: z.string(),\n color: z.string().optional(),\n textColor: z.string().optional(),\n children: z.array(treeDataItemSchema).optional(),\n }),\n);\n\nexport const treeNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"tree\"),\n layout: treeLayoutSchema.optional(),\n nodeShape: treeNodeShapeSchema.optional(),\n data: treeDataItemSchema,\n textColor: z.string().optional(),\n connectorStyle: treeConnectorStyleSchema.optional(),\n nodeWidth: z.number().optional(),\n nodeHeight: z.number().optional(),\n levelGap: z.number().optional(),\n siblingGap: z.number().optional(),\n});\n\nexport type TreeNodeShape = z.infer<typeof treeNodeShapeSchema>;\nexport type TreeConnectorStyle = z.infer<typeof treeConnectorStyleSchema>;\nexport type TreeNode = z.infer<typeof treeNodeSchema>;\n\n// ===== ProcessArrow Node =====\nconst processArrowDirectionSchema = z.enum([\"horizontal\", \"vertical\"]);\n\nconst processArrowStepSchema = z.object({\n label: z.string(),\n color: z.string().optional(),\n textColor: z.string().optional(),\n});\n\nexport const processArrowNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"processArrow\"),\n direction: processArrowDirectionSchema.optional(),\n steps: z.array(processArrowStepSchema),\n itemWidth: z.number().optional(),\n itemHeight: z.number().optional(),\n gap: z.number().optional(),\n fontSize: z.number().optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n fontFamily: z.string().optional(),\n});\n\nexport type ProcessArrowNode = z.infer<typeof processArrowNodeSchema>;\n\n// ===== Pyramid Node =====\nconst pyramidDirectionSchema = z.enum([\"up\", \"down\"]);\n\nconst pyramidLevelSchema = z.object({\n label: z.string(),\n color: z.string().optional(),\n textColor: z.string().optional(),\n});\n\nexport const pyramidNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"pyramid\"),\n direction: pyramidDirectionSchema.optional(),\n levels: z.array(pyramidLevelSchema).min(1),\n fontSize: z.number().optional(),\n bold: z.boolean().optional(),\n fontFamily: z.string().optional(),\n});\n\nexport type PyramidNode = z.infer<typeof pyramidNodeSchema>;\n\n// ===== Flow Node =====\nconst flowDirectionSchema = z.enum([\"horizontal\", \"vertical\"]);\n\nconst flowNodeShapeSchema = z.enum([\n \"flowChartTerminator\",\n \"flowChartProcess\",\n \"flowChartDecision\",\n \"flowChartInputOutput\",\n \"flowChartDocument\",\n \"flowChartPredefinedProcess\",\n \"flowChartConnector\",\n \"flowChartPreparation\",\n \"flowChartManualInput\",\n \"flowChartManualOperation\",\n \"flowChartDelay\",\n \"flowChartMagneticDisk\",\n]);\n\nconst flowNodeItemSchema = z.object({\n id: z.string(),\n shape: flowNodeShapeSchema,\n text: z.string(),\n color: z.string().optional(),\n textColor: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n});\n\nconst flowConnectionSchema = z.object({\n from: z.string(),\n to: z.string(),\n label: z.string().optional(),\n color: z.string().optional(),\n labelColor: z.string().optional(),\n});\n\nconst flowConnectorStyleSchema = z.object({\n color: z.string().optional(),\n width: z.number().optional(),\n labelColor: z.string().optional(),\n arrowType: z\n .enum([\"none\", \"arrow\", \"diamond\", \"oval\", \"stealth\", \"triangle\"])\n .optional(),\n});\n\nexport const flowNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"flow\"),\n direction: flowDirectionSchema.optional(),\n nodes: z.array(flowNodeItemSchema),\n connections: z.array(flowConnectionSchema),\n connectorStyle: flowConnectorStyleSchema.optional(),\n nodeWidth: z.number().optional(),\n nodeHeight: z.number().optional(),\n nodeGap: z.number().optional(),\n});\n\nexport type FlowNode = z.infer<typeof flowNodeSchema>;\n\n// ===== Line Node =====\nconst lineArrowTypeSchema = z.enum([\n \"none\",\n \"arrow\",\n \"triangle\",\n \"diamond\",\n \"oval\",\n \"stealth\",\n]);\n\nconst lineArrowOptionsSchema = z.object({\n type: lineArrowTypeSchema.optional(),\n});\n\nexport const lineArrowSchema = z.union([z.boolean(), lineArrowOptionsSchema]);\n\nexport const lineNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"line\"),\n x1: z.number(),\n y1: z.number(),\n x2: z.number(),\n y2: z.number(),\n color: z.string().optional(),\n lineWidth: z.number().optional(),\n dashType: borderDashSchema.optional(),\n beginArrow: lineArrowSchema.optional(),\n endArrow: lineArrowSchema.optional(),\n});\n\nexport type LineArrow = z.infer<typeof lineArrowSchema>;\nexport type LineNode = z.infer<typeof lineNodeSchema>;\n\n// ===== Arrow Node =====\nexport const arrowNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"arrow\"),\n from: z.string(),\n to: z.string(),\n color: z.string().optional(),\n lineWidth: z.number().optional(),\n dashType: borderDashSchema.optional(),\n beginArrow: lineArrowSchema.optional(),\n endArrow: lineArrowSchema.optional(),\n});\n\nexport type ArrowNode = z.infer<typeof arrowNodeSchema>;\n\n// ===== Layer Node =====\n// LayerChild, LayerNode types are defined below after POMNode\n\n// ===== Recursive Types with Explicit Type Definitions =====\n\n// Define the types explicitly to avoid 'any' inference\nexport type VStackNode = BasePOMNode & {\n type: \"vstack\";\n children: POMNode[];\n gap?: number;\n alignItems?: AlignItems;\n justifyContent?: JustifyContent;\n flexWrap?: FlexWrap;\n};\n\nexport type HStackNode = BasePOMNode & {\n type: \"hstack\";\n children: POMNode[];\n gap?: number;\n alignItems?: AlignItems;\n justifyContent?: JustifyContent;\n flexWrap?: FlexWrap;\n};\n\n// Layer の子要素は x, y を必須とする\ntype LayerChild = POMNode & {\n x: number;\n y: number;\n};\n\nexport type LayerNode = BasePOMNode & {\n type: \"layer\";\n children: LayerChild[];\n};\n\nexport type POMNode =\n | TextNode\n | UlNode\n | OlNode\n | ImageNode\n | TableNode\n | VStackNode\n | HStackNode\n | ShapeNode\n | ChartNode\n | TimelineNode\n | MatrixNode\n | TreeNode\n | FlowNode\n | ProcessArrowNode\n | PyramidNode\n | LineNode\n | ArrowNode\n | LayerNode\n | IconNode\n | SvgNode;\n\n// Define schemas using passthrough to maintain type safety\nexport const vStackNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"vstack\"),\n children: z.array(z.lazy(() => pomNodeSchema)),\n gap: z.number().optional(),\n alignItems: alignItemsSchema.optional(),\n justifyContent: justifyContentSchema.optional(),\n flexWrap: flexWrapSchema.optional(),\n});\n\nexport const hStackNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"hstack\"),\n children: z.array(z.lazy(() => pomNodeSchema)),\n gap: z.number().optional(),\n alignItems: alignItemsSchema.optional(),\n justifyContent: justifyContentSchema.optional(),\n flexWrap: flexWrapSchema.optional(),\n});\n\nconst layerChildSchemaBase = z.lazy(() =>\n pomNodeSchema.and(\n z.object({\n x: z.number(),\n y: z.number(),\n }),\n ),\n);\n\nexport const layerNodeSchema = basePOMNodeSchema.extend({\n type: z.literal(\"layer\"),\n children: z.array(layerChildSchemaBase),\n});\n\nconst pomNodeSchema: z.ZodType<POMNode> = z.lazy(() =>\n z.discriminatedUnion(\"type\", [\n textNodeSchema,\n ulNodeSchema,\n olNodeSchema,\n imageNodeSchema,\n tableNodeSchema,\n vStackNodeSchema,\n hStackNodeSchema,\n shapeNodeSchema,\n chartNodeSchema,\n timelineNodeSchema,\n matrixNodeSchema,\n treeNodeSchema,\n flowNodeSchema,\n processArrowNodeSchema,\n pyramidNodeSchema,\n lineNodeSchema,\n arrowNodeSchema,\n layerNodeSchema,\n iconNodeSchema,\n svgNodeSchema,\n ]),\n);\n\n// ===== Positioned Node Types =====\nconst positionedBaseSchema = z.object({\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n});\n\ntype PositionedBase = z.infer<typeof positionedBaseSchema>;\n\n// Layer の子要素(位置情報付き)\nexport type PositionedLayerChild = PositionedNode & {\n x: number;\n y: number;\n};\n\nexport type PositionedNode =\n | (TextNode & PositionedBase)\n | (UlNode & PositionedBase)\n | (OlNode & PositionedBase)\n | (ImageNode & PositionedBase & { imageData?: string })\n | (TableNode & PositionedBase)\n | (VStackNode & PositionedBase & { children: PositionedNode[] })\n | (HStackNode & PositionedBase & { children: PositionedNode[] })\n | (ShapeNode & PositionedBase)\n | (ChartNode & PositionedBase)\n | (TimelineNode & PositionedBase)\n | (MatrixNode & PositionedBase)\n | (TreeNode & PositionedBase)\n | (FlowNode & PositionedBase)\n | (ProcessArrowNode & PositionedBase)\n | (PyramidNode & PositionedBase)\n | (LineNode & PositionedBase)\n | (ArrowNode & PositionedBase)\n | (LayerNode & PositionedBase & { children: PositionedLayerChild[] })\n | (IconNode &\n PositionedBase & {\n iconImageData: string;\n bgX?: number;\n bgY?: number;\n bgW?: number;\n bgH?: number;\n iconX?: number;\n iconY?: number;\n iconW?: number;\n iconH?: number;\n })\n | (SvgNode & PositionedBase & { iconImageData: string });\n\nconst positionedLayerChildSchema: z.ZodType<PositionedLayerChild> = z.lazy(() =>\n positionedNodeSchema.and(\n z.object({\n x: z.number(),\n y: z.number(),\n }),\n ),\n);\n\nconst positionedNodeSchema: z.ZodType<PositionedNode> = z.lazy(() =>\n z.union([\n textNodeSchema.merge(positionedBaseSchema),\n ulNodeSchema.merge(positionedBaseSchema),\n olNodeSchema.merge(positionedBaseSchema),\n imageNodeSchema.merge(positionedBaseSchema).extend({\n imageData: z.string().optional(),\n }),\n tableNodeSchema.merge(positionedBaseSchema),\n vStackNodeSchema.merge(positionedBaseSchema).extend({\n children: z.array(z.lazy(() => positionedNodeSchema)),\n }),\n hStackNodeSchema.merge(positionedBaseSchema).extend({\n children: z.array(z.lazy(() => positionedNodeSchema)),\n }),\n shapeNodeSchema.merge(positionedBaseSchema),\n chartNodeSchema.merge(positionedBaseSchema),\n timelineNodeSchema.merge(positionedBaseSchema),\n matrixNodeSchema.merge(positionedBaseSchema),\n treeNodeSchema.merge(positionedBaseSchema),\n flowNodeSchema.merge(positionedBaseSchema),\n processArrowNodeSchema.merge(positionedBaseSchema),\n pyramidNodeSchema.merge(positionedBaseSchema),\n lineNodeSchema.merge(positionedBaseSchema),\n arrowNodeSchema.merge(positionedBaseSchema),\n layerNodeSchema.merge(positionedBaseSchema).extend({\n children: z.array(positionedLayerChildSchema),\n }),\n iconNodeSchema.merge(positionedBaseSchema).extend({\n iconImageData: z.string(),\n }),\n svgNodeSchema.merge(positionedBaseSchema).extend({\n iconImageData: z.string(),\n }),\n ]),\n);\n\n// ===== Slide Master Options =====\nconst masterTextObjectSchema = z.object({\n type: z.literal(\"text\"),\n text: z.string(),\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n fontSize: z.number().optional(),\n fontFamily: z.string().optional(),\n color: z.string().optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n underline: underlineSchema.optional(),\n strike: z.boolean().optional(),\n highlight: z.string().optional(),\n textAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n});\n\nconst masterImageObjectSchema = z.object({\n type: z.literal(\"image\"),\n src: z.string(),\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n});\n\nconst masterRectObjectSchema = z.object({\n type: z.literal(\"rect\"),\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n fill: fillStyleSchema.optional(),\n border: borderStyleSchema.optional(),\n});\n\nconst masterLineObjectSchema = z.object({\n type: z.literal(\"line\"),\n x: z.number(),\n y: z.number(),\n w: z.number(),\n h: z.number(),\n line: borderStyleSchema.optional(),\n});\n\nexport const masterObjectSchema = z.discriminatedUnion(\"type\", [\n masterTextObjectSchema,\n masterImageObjectSchema,\n masterRectObjectSchema,\n masterLineObjectSchema,\n]);\n\nconst slideNumberOptionsSchema = z.object({\n x: z.number(),\n y: z.number(),\n w: z.number().optional(),\n h: z.number().optional(),\n fontSize: z.number().optional(),\n fontFamily: z.string().optional(),\n color: z.string().optional(),\n});\n\nconst slideMasterBackgroundSchema = z.union([\n z.object({ color: z.string() }),\n z.object({ path: z.string() }),\n z.object({ data: z.string() }),\n z.object({ image: z.string() }),\n]);\n\nconst slideMasterMarginSchema = z.union([\n z.number(),\n z.object({\n top: z.number().optional(),\n right: z.number().optional(),\n bottom: z.number().optional(),\n left: z.number().optional(),\n }),\n]);\n\nexport const slideMasterOptionsSchema = z.object({\n title: z.string().optional(),\n background: slideMasterBackgroundSchema.optional(),\n margin: slideMasterMarginSchema.optional(),\n objects: z.array(masterObjectSchema).optional(),\n slideNumber: slideNumberOptionsSchema.optional(),\n});\n\nexport type MasterTextObject = z.infer<typeof masterTextObjectSchema>;\nexport type MasterImageObject = z.infer<typeof masterImageObjectSchema>;\nexport type MasterRectObject = z.infer<typeof masterRectObjectSchema>;\nexport type MasterLineObject = z.infer<typeof masterLineObjectSchema>;\nexport type MasterObject = z.infer<typeof masterObjectSchema>;\nexport type SlideNumberOptions = z.infer<typeof slideNumberOptionsSchema>;\nexport type SlideMasterBackground = z.infer<typeof slideMasterBackgroundSchema>;\nexport type SlideMasterMargin = z.infer<typeof slideMasterMarginSchema>;\nexport type SlideMasterOptions = z.infer<typeof slideMasterOptionsSchema>;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { getNodeDef } from "../registry/nodeRegistry.js";
|
|
2
|
+
import "../registry/index.js";
|
|
3
|
+
//#region src/validatePositioned/validatePositioned.ts
|
|
4
|
+
/** 浮動小数点演算とサブピクセル丸めの揺れを誤検知しないための許容量 (px) */
|
|
5
|
+
const EPSILON = .5;
|
|
6
|
+
/**
|
|
7
|
+
* toPositioned 後の絶対座標ツリーを走査し、レイアウト上の問題を
|
|
8
|
+
* Diagnostic (警告) として報告する。ビルドは止めない。
|
|
9
|
+
*
|
|
10
|
+
* - NODE_OUT_OF_BOUNDS: ノードの矩形がスライド境界からはみ出している
|
|
11
|
+
* - NODE_OVERLAP: VStack / HStack 内の兄弟ノード同士が意図せず重なっている
|
|
12
|
+
*
|
|
13
|
+
* 意図的な重なり (Layer 配下・position="absolute"・負 margin / gap・
|
|
14
|
+
* zIndex 明示) は検出対象外とし、誤検知を避ける。
|
|
15
|
+
*/
|
|
16
|
+
function validatePositioned(node, slideSize, ctx, slideIndex) {
|
|
17
|
+
walk(node, describeNode(node));
|
|
18
|
+
function walk(n, path) {
|
|
19
|
+
let descendantOutOfBounds = false;
|
|
20
|
+
if (n.type === "vstack" || n.type === "hstack" || n.type === "layer") {
|
|
21
|
+
const children = n.children;
|
|
22
|
+
if (n.type !== "layer") reportSiblingOverlap(n, children, path);
|
|
23
|
+
children.forEach((child, i) => {
|
|
24
|
+
descendantOutOfBounds = walk(child, childPath(path, child, i)) || descendantOutOfBounds;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (descendantOutOfBounds) return true;
|
|
28
|
+
return reportOutOfBounds(n, path);
|
|
29
|
+
}
|
|
30
|
+
function reportOutOfBounds(n, path) {
|
|
31
|
+
if (n.type === "line" || n.type === "arrow") return false;
|
|
32
|
+
if ("rotate" in n && n.rotate) return false;
|
|
33
|
+
const over = [];
|
|
34
|
+
if (-n.x > EPSILON) over.push(`left by ${fmt(-n.x)}px`);
|
|
35
|
+
if (-n.y > EPSILON) over.push(`top by ${fmt(-n.y)}px`);
|
|
36
|
+
if (n.x + n.w - slideSize.w > EPSILON) over.push(`right by ${fmt(n.x + n.w - slideSize.w)}px`);
|
|
37
|
+
if (n.y + n.h - slideSize.h > EPSILON) over.push(`bottom by ${fmt(n.y + n.h - slideSize.h)}px`);
|
|
38
|
+
if (over.length === 0) return false;
|
|
39
|
+
ctx.diagnostics.add("NODE_OUT_OF_BOUNDS", `slide ${slideIndex + 1}: ${path} (${fmtRect(n)}) extends beyond the slide bounds (${slideSize.w}x${slideSize.h}): ${over.join(", ")}`);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
function reportSiblingOverlap(n, children, path) {
|
|
43
|
+
if ((n.gap ?? 0) < 0) return;
|
|
44
|
+
const candidates = children.map((child, i) => ({
|
|
45
|
+
child,
|
|
46
|
+
i
|
|
47
|
+
})).filter(({ child }) => !isIntentionalOverlap(child));
|
|
48
|
+
for (let a = 0; a < candidates.length; a++) for (let b = a + 1; b < candidates.length; b++) {
|
|
49
|
+
const { child: ca, i: ia } = candidates[a];
|
|
50
|
+
const { child: cb, i: ib } = candidates[b];
|
|
51
|
+
const w = Math.min(ca.x + ca.w, cb.x + cb.w) - Math.max(ca.x, cb.x);
|
|
52
|
+
const h = Math.min(ca.y + ca.h, cb.y + cb.h) - Math.max(ca.y, cb.y);
|
|
53
|
+
if (w > EPSILON && h > EPSILON) ctx.diagnostics.add("NODE_OVERLAP", `slide ${slideIndex + 1}: ${path}: children ${describeChild(ca, ia)} (${fmtRect(ca)}) and ${describeChild(cb, ib)} (${fmtRect(cb)}) overlap by ${fmt(w)}x${fmt(h)}px`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** 意図的な重なりとして兄弟重なり検査から除外すべき子か */
|
|
58
|
+
function isIntentionalOverlap(n) {
|
|
59
|
+
if (n.position === "absolute") return true;
|
|
60
|
+
if (n.zIndex !== void 0) return true;
|
|
61
|
+
return hasNegativeMargin(n.margin);
|
|
62
|
+
}
|
|
63
|
+
function hasNegativeMargin(margin) {
|
|
64
|
+
if (margin === void 0) return false;
|
|
65
|
+
if (typeof margin === "number") return margin < 0;
|
|
66
|
+
return [
|
|
67
|
+
margin.top,
|
|
68
|
+
margin.right,
|
|
69
|
+
margin.bottom,
|
|
70
|
+
margin.left
|
|
71
|
+
].some((v) => (v ?? 0) < 0);
|
|
72
|
+
}
|
|
73
|
+
function describeNode(n) {
|
|
74
|
+
const tag = getNodeDef(n.type).tagName;
|
|
75
|
+
return n.id ? `<${tag} id="${n.id}">` : `<${tag}>`;
|
|
76
|
+
}
|
|
77
|
+
function describeChild(n, index) {
|
|
78
|
+
return `${describeNode(n)}[${index}]`;
|
|
79
|
+
}
|
|
80
|
+
function childPath(parentPath, child, index) {
|
|
81
|
+
return `${parentPath} > ${describeChild(child, index)}`;
|
|
82
|
+
}
|
|
83
|
+
function fmt(v) {
|
|
84
|
+
return Math.round(v * 10) / 10;
|
|
85
|
+
}
|
|
86
|
+
function fmtRect(n) {
|
|
87
|
+
return `x=${fmt(n.x)}, y=${fmt(n.y)}, w=${fmt(n.w)}, h=${fmt(n.h)}`;
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
export { validatePositioned };
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=validatePositioned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePositioned.js","names":[],"sources":["../../src/validatePositioned/validatePositioned.ts"],"sourcesContent":["import type { BuildContext } from \"../buildContext.ts\";\nimport { getNodeDef } from \"../registry/index.ts\";\nimport type { PositionedNode } from \"../types.ts\";\n\n/** 浮動小数点演算とサブピクセル丸めの揺れを誤検知しないための許容量 (px) */\nconst EPSILON = 0.5;\n\n/**\n * toPositioned 後の絶対座標ツリーを走査し、レイアウト上の問題を\n * Diagnostic (警告) として報告する。ビルドは止めない。\n *\n * - NODE_OUT_OF_BOUNDS: ノードの矩形がスライド境界からはみ出している\n * - NODE_OVERLAP: VStack / HStack 内の兄弟ノード同士が意図せず重なっている\n *\n * 意図的な重なり (Layer 配下・position=\"absolute\"・負 margin / gap・\n * zIndex 明示) は検出対象外とし、誤検知を避ける。\n */\nexport function validatePositioned(\n node: PositionedNode,\n slideSize: { w: number; h: number },\n ctx: BuildContext,\n slideIndex: number,\n): void {\n walk(node, describeNode(node));\n\n function walk(n: PositionedNode, path: string): boolean {\n // はみ出しの原因に最も近いノードを特定できるよう、子孫がはみ出して\n // いる場合は親 (巻き添えではみ出すコンテナ) の報告を抑制する\n let descendantOutOfBounds = false;\n\n if (n.type === \"vstack\" || n.type === \"hstack\" || n.type === \"layer\") {\n const children: PositionedNode[] = n.children;\n if (n.type !== \"layer\") {\n reportSiblingOverlap(n, children, path);\n }\n children.forEach((child, i) => {\n descendantOutOfBounds =\n walk(child, childPath(path, child, i)) || descendantOutOfBounds;\n });\n }\n\n if (descendantOutOfBounds) return true;\n return reportOutOfBounds(n, path);\n }\n\n function reportOutOfBounds(n: PositionedNode, path: string): boolean {\n // Line は線分座標 (x1,y1-x2,y2)、Arrow は id 参照ベースのため矩形判定の対象外\n if (n.type === \"line\" || n.type === \"arrow\") return false;\n // rotate は renderPptx でのみ適用され、回転後の境界はここでは分からない\n if (\"rotate\" in n && n.rotate) return false;\n\n const over: string[] = [];\n if (-n.x > EPSILON) over.push(`left by ${fmt(-n.x)}px`);\n if (-n.y > EPSILON) over.push(`top by ${fmt(-n.y)}px`);\n if (n.x + n.w - slideSize.w > EPSILON) {\n over.push(`right by ${fmt(n.x + n.w - slideSize.w)}px`);\n }\n if (n.y + n.h - slideSize.h > EPSILON) {\n over.push(`bottom by ${fmt(n.y + n.h - slideSize.h)}px`);\n }\n if (over.length === 0) return false;\n\n ctx.diagnostics.add(\n \"NODE_OUT_OF_BOUNDS\",\n `slide ${slideIndex + 1}: ${path} (${fmtRect(n)}) extends beyond the slide bounds (${slideSize.w}x${slideSize.h}): ${over.join(\", \")}`,\n );\n return true;\n }\n\n function reportSiblingOverlap(\n n: Extract<PositionedNode, { type: \"vstack\" | \"hstack\" }>,\n children: PositionedNode[],\n path: string,\n ): void {\n // 負 gap は重ねるための明示指定 (例: ProcessArrow 風の表現) なので対象外\n if ((n.gap ?? 0) < 0) return;\n\n const candidates = children\n .map((child, i) => ({ child, i }))\n .filter(({ child }) => !isIntentionalOverlap(child));\n\n for (let a = 0; a < candidates.length; a++) {\n for (let b = a + 1; b < candidates.length; b++) {\n const { child: ca, i: ia } = candidates[a];\n const { child: cb, i: ib } = candidates[b];\n const w = Math.min(ca.x + ca.w, cb.x + cb.w) - Math.max(ca.x, cb.x);\n const h = Math.min(ca.y + ca.h, cb.y + cb.h) - Math.max(ca.y, cb.y);\n if (w > EPSILON && h > EPSILON) {\n ctx.diagnostics.add(\n \"NODE_OVERLAP\",\n `slide ${slideIndex + 1}: ${path}: children ${describeChild(ca, ia)} (${fmtRect(ca)}) and ${describeChild(cb, ib)} (${fmtRect(cb)}) overlap by ${fmt(w)}x${fmt(h)}px`,\n );\n }\n }\n }\n }\n}\n\n/** 意図的な重なりとして兄弟重なり検査から除外すべき子か */\nfunction isIntentionalOverlap(n: PositionedNode): boolean {\n if (n.position === \"absolute\") return true;\n if (n.zIndex !== undefined) return true;\n return hasNegativeMargin(n.margin);\n}\n\nfunction hasNegativeMargin(margin: PositionedNode[\"margin\"]): boolean {\n if (margin === undefined) return false;\n if (typeof margin === \"number\") return margin < 0;\n return [margin.top, margin.right, margin.bottom, margin.left].some(\n (v) => (v ?? 0) < 0,\n );\n}\n\nfunction describeNode(n: PositionedNode): string {\n const tag = getNodeDef(n.type).tagName;\n return n.id ? `<${tag} id=\"${n.id}\">` : `<${tag}>`;\n}\n\nfunction describeChild(n: PositionedNode, index: number): string {\n return `${describeNode(n)}[${index}]`;\n}\n\nfunction childPath(\n parentPath: string,\n child: PositionedNode,\n index: number,\n): string {\n return `${parentPath} > ${describeChild(child, index)}`;\n}\n\nfunction fmt(v: number): number {\n return Math.round(v * 10) / 10;\n}\n\nfunction fmtRect(n: { x: number; y: number; w: number; h: number }): string {\n return `x=${fmt(n.x)}, y=${fmt(n.y)}, w=${fmt(n.w)}, h=${fmt(n.h)}`;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hirokisakabe/pom",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.5.0",
|
|
4
4
|
"description": "AI-friendly PowerPoint generation with a Flexbox layout engine.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -55,13 +55,13 @@
|
|
|
55
55
|
"@types/pngjs": "6.0.5",
|
|
56
56
|
"@vitest/coverage-v8": "^4.1.8",
|
|
57
57
|
"@vitest/ui": "^4.1.8",
|
|
58
|
+
"dependency-cruiser": "^17.4.3",
|
|
58
59
|
"lucide-static": "^1.17.0",
|
|
59
60
|
"pixelmatch": "7.2.0",
|
|
60
61
|
"pngjs": "7.0.0",
|
|
61
62
|
"size-limit": "^12.1.0",
|
|
62
63
|
"tsdown": "^0.22.2",
|
|
63
|
-
"tsx": "4.22.4"
|
|
64
|
-
"typescript-eslint": "^8.60.1"
|
|
64
|
+
"tsx": "4.22.4"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
67
|
"@resvg/resvg-wasm": "^2.6.2",
|
|
@@ -79,6 +79,7 @@
|
|
|
79
79
|
"fmt:check": "prettier --check .",
|
|
80
80
|
"knip": "knip",
|
|
81
81
|
"lint": "eslint",
|
|
82
|
+
"lint:deps": "depcruise src",
|
|
82
83
|
"typecheck": "tsc --noEmit -p tsconfig.check.json",
|
|
83
84
|
"test": "vitest",
|
|
84
85
|
"test:ui": "vitest --ui",
|