@hirokisakabe/pom 5.5.0 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +1 -1
  2. package/dist/calcYogaLayout/calcYogaLayout.d.ts.map +1 -1
  3. package/dist/calcYogaLayout/calcYogaLayout.js +50 -4
  4. package/dist/calcYogaLayout/fontLoader.d.ts +4 -0
  5. package/dist/calcYogaLayout/fontLoader.d.ts.map +1 -1
  6. package/dist/calcYogaLayout/fontLoader.js +8 -0
  7. package/dist/calcYogaLayout/measureText.d.ts.map +1 -1
  8. package/dist/calcYogaLayout/measureText.js +4 -3
  9. package/dist/icons/index.d.ts +1 -1
  10. package/dist/icons/index.d.ts.map +1 -1
  11. package/dist/icons/index.js +1 -1
  12. package/dist/icons/renderIcon.d.ts +5 -0
  13. package/dist/icons/renderIcon.d.ts.map +1 -1
  14. package/dist/icons/renderIcon.js +39 -0
  15. package/dist/parseXml/parseXml.d.ts +1 -0
  16. package/dist/parseXml/parseXml.d.ts.map +1 -1
  17. package/dist/parseXml/parseXml.js +36 -3
  18. package/dist/registry/definitions/icon.d.ts.map +1 -1
  19. package/dist/registry/definitions/icon.js +4 -2
  20. package/dist/registry/definitions/list.d.ts.map +1 -1
  21. package/dist/registry/definitions/list.js +3 -1
  22. package/dist/registry/definitions/shape.d.ts.map +1 -1
  23. package/dist/registry/definitions/shape.js +2 -0
  24. package/dist/registry/definitions/text.d.ts.map +1 -1
  25. package/dist/registry/definitions/text.js +3 -1
  26. package/dist/renderPptx/nodes/image.js +1 -1
  27. package/dist/renderPptx/nodes/shape.js +1 -1
  28. package/dist/renderPptx/textOptions.d.ts +6 -6
  29. package/dist/renderPptx/utils/backgroundBorder.js +1 -1
  30. package/dist/types.d.ts +3 -2
  31. package/dist/types.d.ts.map +1 -1
  32. package/dist/types.js +2 -1
  33. package/package.json +2 -2
package/README.md CHANGED
@@ -89,7 +89,7 @@ await pptx.writeFile({ fileName: "presentation.pptx" });
89
89
  | Box | Container for single child with padding |
90
90
  | VStack | Vertical stack layout |
91
91
  | HStack | Horizontal stack layout |
92
- | Icon | Lucide icons |
92
+ | Icon | Lucide icons / inline SVG |
93
93
 
94
94
  For detailed node documentation, see [Nodes](./docs/nodes.md).
95
95
 
@@ -1 +1 @@
1
- {"version":3,"file":"calcYogaLayout.d.ts","sourceRoot":"","sources":["../../src/calcYogaLayout/calcYogaLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,WAAW,CAAC,CA0BtB"}
1
+ {"version":3,"file":"calcYogaLayout.d.ts","sourceRoot":"","sources":["../../src/calcYogaLayout/calcYogaLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,WAAW,CAAC,CA0BtB"}
@@ -83,10 +83,50 @@ async function getYoga() {
83
83
  yogaP = loadYoga();
84
84
  return yogaP;
85
85
  }
86
+ /**
87
+ * ノードが交差軸方向(幅)で確定サイズを持つかを判定する
88
+ * - 明示的な w がある場合は確定
89
+ * - alignSelf で stretch 以外が指定されている場合は不確定
90
+ * - 親の alignItems で stretch(デフォルト)以外が指定されている場合は不確定
91
+ */
92
+ function nodeHasDefiniteWidth(node, parentNode) {
93
+ // 明示的な幅がある
94
+ if (node.w !== undefined)
95
+ return true;
96
+ // alignSelf で stretch 以外が明示されている場合は不確定
97
+ if (node.alignSelf !== undefined &&
98
+ node.alignSelf !== "stretch" &&
99
+ node.alignSelf !== "auto") {
100
+ return false;
101
+ }
102
+ // 親がいない場合(ルートノード)は確定
103
+ if (!parentNode)
104
+ return true;
105
+ // 親の alignItems を取得(VStack/HStack のみ持つ、Box 等は undefined でデフォルト stretch)
106
+ let parentAlignItems;
107
+ if (parentNode.type === "vstack") {
108
+ parentAlignItems = parentNode.alignItems;
109
+ }
110
+ else if (parentNode.type === "hstack") {
111
+ parentAlignItems = parentNode.alignItems;
112
+ }
113
+ // VStack/Box(column 方向)の子の場合、交差軸は水平方向
114
+ // alignItems が stretch(デフォルト)なら子は親幅に伸長される
115
+ if (parentNode.type === "vstack" ||
116
+ parentNode.type === "box" ||
117
+ parentNode.type === "layer") {
118
+ return parentAlignItems === undefined || parentAlignItems === "stretch";
119
+ }
120
+ // HStack の子の場合、幅は主軸方向で flex により決まるため確定とみなす
121
+ if (parentNode.type === "hstack") {
122
+ return true;
123
+ }
124
+ return true;
125
+ }
86
126
  /**
87
127
  * POMNode ツリーを再帰的に走査し、YogaNode ツリーを構築する
88
128
  */
89
- async function buildPomWithYogaTree(node, parentYoga, ctx, map, parentNode) {
129
+ async function buildPomWithYogaTree(node, parentYoga, ctx, map, parentNode, grandparentNode) {
90
130
  const yoga = await getYoga();
91
131
  const yn = yoga.Node.create();
92
132
  map.set(node, yn); // 対応する YogaNode をマップに登録
@@ -105,21 +145,27 @@ async function buildPomWithYogaTree(node, parentYoga, ctx, map, parentNode) {
105
145
  node.type !== "table" &&
106
146
  node.type !== "icon") {
107
147
  yn.setFlexGrow(1);
108
- yn.setFlexBasis(0);
148
+ // HStack が確定幅を持つ場合のみ flexBasis=0 で均等分割
149
+ // HStack が auto-sized(親の alignItems が center/start/end 等)の場合、
150
+ // flexBasis=0 だと子要素の自然な幅が失われてレイアウトが崩れるため、
151
+ // flexBasis=auto(デフォルト)のまま維持する
152
+ if (nodeHasDefiniteWidth(parentNode, grandparentNode)) {
153
+ yn.setFlexBasis(0);
154
+ }
109
155
  }
110
156
  parentYoga.insertChild(yn, parentYoga.getChildCount());
111
157
  const def = getNodeDef(node.type);
112
158
  switch (def.category) {
113
159
  case "single-child": {
114
160
  const boxNode = node;
115
- await buildPomWithYogaTree(boxNode.children, yn, ctx, map, node);
161
+ await buildPomWithYogaTree(boxNode.children, yn, ctx, map, node, parentNode);
116
162
  break;
117
163
  }
118
164
  case "multi-child":
119
165
  case "absolute-child": {
120
166
  const containerNode = node;
121
167
  for (const child of containerNode.children) {
122
- await buildPomWithYogaTree(child, yn, ctx, map, node);
168
+ await buildPomWithYogaTree(child, yn, ctx, map, node, parentNode);
123
169
  }
124
170
  break;
125
171
  }
@@ -2,6 +2,10 @@
2
2
  * opentype.js を使用したフォント読み込みモジュール
3
3
  * Node.js とブラウザ両方で動作する
4
4
  */
5
+ /**
6
+ * 指定されたフォントがバンドル済みかどうかを判定する
7
+ */
8
+ export declare function isBundledFont(fontFamily: string): boolean;
5
9
  /**
6
10
  * 指定したテキストの幅を計測する
7
11
  * @param text 計測するテキスト
@@ -1 +1 @@
1
- {"version":3,"file":"fontLoader.d.ts","sourceRoot":"","sources":["../../src/calcYogaLayout/fontLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2DH;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,QAAQ,GAAG,MAAM,GACxB,MAAM,CAGR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAgB5E"}
1
+ {"version":3,"file":"fontLoader.d.ts","sourceRoot":"","sources":["../../src/calcYogaLayout/fontLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8DH;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,QAAQ,GAAG,MAAM,GACxB,MAAM,CAGR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAgB5E"}
@@ -46,6 +46,14 @@ function getFont(weight) {
46
46
  fontCache.set(cacheKey, font);
47
47
  return font;
48
48
  }
49
+ /** バンドル済みフォント名の一覧 */
50
+ const BUNDLED_FONT_NAMES = new Set(["Noto Sans JP"]);
51
+ /**
52
+ * 指定されたフォントがバンドル済みかどうかを判定する
53
+ */
54
+ export function isBundledFont(fontFamily) {
55
+ return BUNDLED_FONT_NAMES.has(fontFamily);
56
+ }
49
57
  /**
50
58
  * 指定したテキストの幅を計測する
51
59
  * @param text 計測するテキスト
@@ -1 +1 @@
1
- {"version":3,"file":"measureText.d.ts","sourceRoot":"","sources":["../../src/calcYogaLayout/measureText.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AA6HnE;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,mBAA4B,GACjC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAmBA"}
1
+ {"version":3,"file":"measureText.d.ts","sourceRoot":"","sources":["../../src/calcYogaLayout/measureText.ts"],"names":[],"mappings":"AAKA,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AA6HnE;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,mBAA4B,GACjC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAoBA"}
@@ -1,4 +1,4 @@
1
- import { measureTextWidth as measureTextWidthOpentype } from "./fontLoader.js";
1
+ import { measureTextWidth as measureTextWidthOpentype, isBundledFont, } from "./fontLoader.js";
2
2
  /**
3
3
  * 文字がCJK(日本語・中国語・韓国語)文字かどうかを判定する
4
4
  */
@@ -108,6 +108,8 @@ function normalizeFontWeight(weight) {
108
108
  */
109
109
  export function measureText(text, maxWidthPx, opts, mode = "auto") {
110
110
  // 計測方法を決定
111
+ // "opentype" / "fallback" が明示指定された場合はそれを優先
112
+ // "auto" の場合はバンドル外フォントならフォールバック計測を使用
111
113
  const shouldUseFallback = (() => {
112
114
  switch (mode) {
113
115
  case "opentype":
@@ -115,8 +117,7 @@ export function measureText(text, maxWidthPx, opts, mode = "auto") {
115
117
  case "fallback":
116
118
  return true;
117
119
  case "auto":
118
- // opentype.js はバンドルされたフォントを使うため常に利用可能
119
- return false;
120
+ return !isBundledFont(opts.fontFamily);
120
121
  }
121
122
  })();
122
123
  if (shouldUseFallback) {
@@ -1,2 +1,2 @@
1
- export { rasterizeIcon } from "./renderIcon.ts";
1
+ export { rasterizeIcon, rasterizeSvgContent } from "./renderIcon.ts";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- export { rasterizeIcon } from "./renderIcon.js";
1
+ export { rasterizeIcon, rasterizeSvgContent } from "./renderIcon.js";
@@ -1,2 +1,7 @@
1
1
  export declare function rasterizeIcon(name: string, size: number, color: string, cache: Map<string, string>): string;
2
+ /**
3
+ * インライン SVG 文字列を指定サイズでラスタライズし、base64 PNG を返す。
4
+ * color が指定された場合、SVG ルートに stroke / fill 属性を設定する。
5
+ */
6
+ export declare function rasterizeSvgContent(svgContent: string, size: number, color: string | undefined, cache: Map<string, string>): string;
2
7
  //# sourceMappingURL=renderIcon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderIcon.d.ts","sourceRoot":"","sources":["../../src/icons/renderIcon.ts"],"names":[],"mappings":"AAWA,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACzB,MAAM,CAYR"}
1
+ {"version":3,"file":"renderIcon.d.ts","sourceRoot":"","sources":["../../src/icons/renderIcon.ts"],"names":[],"mappings":"AAWA,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACzB,MAAM,CAYR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACzB,MAAM,CAuCR"}
@@ -20,3 +20,42 @@ export function rasterizeIcon(name, size, color, cache) {
20
20
  cache.set(key, result);
21
21
  return result;
22
22
  }
23
+ /**
24
+ * インライン SVG 文字列を指定サイズでラスタライズし、base64 PNG を返す。
25
+ * color が指定された場合、SVG ルートに stroke / fill 属性を設定する。
26
+ */
27
+ export function rasterizeSvgContent(svgContent, size, color, cache) {
28
+ const key = `svg:${svgContent}|${size}|${color ?? ""}`;
29
+ const cached = cache.get(key);
30
+ if (cached)
31
+ return cached;
32
+ // SVG に xmlns / width / height を設定し、color があれば stroke / fill を注入
33
+ let svg = svgContent;
34
+ // xmlns が無ければ追加
35
+ if (!svg.includes("xmlns")) {
36
+ svg = svg.replace("<svg", '<svg xmlns="http://www.w3.org/2000/svg"');
37
+ }
38
+ // width / height を上書き
39
+ svg = svg.replace(/<svg([^>]*)>/, (match, attrs) => {
40
+ let newAttrs = attrs
41
+ .replace(/\bwidth\s*=\s*"[^"]*"/g, "")
42
+ .replace(/\bheight\s*=\s*"[^"]*"/g, "");
43
+ newAttrs += ` width="${size}" height="${size}"`;
44
+ // color 指定時は stroke / fill を設定(プリセットアイコンとの一貫性)
45
+ if (color) {
46
+ if (!attrs.includes("stroke=")) {
47
+ newAttrs += ` stroke="${color}"`;
48
+ }
49
+ if (!attrs.includes("fill=")) {
50
+ newAttrs += ` fill="none"`;
51
+ }
52
+ }
53
+ return `<svg${newAttrs}>`;
54
+ });
55
+ const resvg = new Resvg(svg, { fitTo: { mode: "width", value: size } });
56
+ const pngData = resvg.render();
57
+ const pngBuffer = pngData.asPng();
58
+ const result = `image/png;base64,${Buffer.from(pngBuffer).toString("base64")}`;
59
+ cache.set(key, result);
60
+ return result;
61
+ }
@@ -3,6 +3,7 @@ export declare class ParseXmlError extends Error {
3
3
  readonly errors: string[];
4
4
  constructor(errors: string[]);
5
5
  }
6
+ export declare const TAG_TO_TYPE: Record<string, string>;
6
7
  /**
7
8
  * XML 文字列を POMNode 配列に変換する。
8
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"parseXml.d.ts","sourceRoot":"","sources":["../../src/parseXml/parseXml.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,OAAO,EAgBb,MAAM,aAAa,CAAC;AAYrB,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAgB,MAAM,EAAE,MAAM,EAAE,CAAC;gBACrB,MAAM,EAAE,MAAM,EAAE;CAM7B;AAm6BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAiCrD"}
1
+ {"version":3,"file":"parseXml.d.ts","sourceRoot":"","sources":["../../src/parseXml/parseXml.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,OAAO,EAgBb,MAAM,aAAa,CAAC;AAYrB,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAgB,MAAM,EAAE,MAAM,EAAE,CAAC;gBACrB,MAAM,EAAE,MAAM,EAAE;CAM7B;AAGD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoB9C,CAAC;AA67BF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAiCrD"}
@@ -1,4 +1,4 @@
1
- import { XMLParser } from "fast-xml-parser";
1
+ import { XMLBuilder, XMLParser } from "fast-xml-parser";
2
2
  import { textNodeSchema, ulNodeSchema, olNodeSchema, imageNodeSchema, tableNodeSchema, shapeNodeSchema, chartNodeSchema, timelineNodeSchema, matrixNodeSchema, treeNodeSchema, flowNodeSchema, processArrowNodeSchema, pyramidNodeSchema, lineNodeSchema, iconNodeSchema, } from "../types.js";
3
3
  import { NODE_COERCION_MAP, CHILD_ELEMENT_COERCION_MAP, coerceWithRule, coerceFallback, getObjectShapeFromRule, isBooleanObjectUnionRule, } from "./coercionRules.js";
4
4
  // ===== ParseXmlError =====
@@ -12,7 +12,7 @@ export class ParseXmlError extends Error {
12
12
  }
13
13
  }
14
14
  // ===== Tag name → POM node type mapping =====
15
- const TAG_TO_TYPE = {
15
+ export const TAG_TO_TYPE = {
16
16
  Text: "text",
17
17
  Image: "image",
18
18
  Table: "table",
@@ -160,6 +160,7 @@ const CHILD_ELEMENT_PROPS = {
160
160
  tree: new Set(["data"]),
161
161
  ul: new Set(["items"]),
162
162
  ol: new Set(["items"]),
163
+ icon: new Set(["name", "svgContent"]),
163
164
  };
164
165
  function validateLeafNode(nodeType, result, errors) {
165
166
  const schema = leafNodeValidationSchemas[nodeType];
@@ -574,6 +575,33 @@ function convertListChildren(parentTag, childElements, result, errors) {
574
575
  }
575
576
  result.items = items;
576
577
  }
578
+ // SVG 要素を XML 文字列に再構築する
579
+ const svgBuilder = new XMLBuilder({
580
+ preserveOrder: true,
581
+ ignoreAttributes: false,
582
+ attributeNamePrefix: "@_",
583
+ });
584
+ function serializeSvgElement(svgElement) {
585
+ return String(svgBuilder.build([svgElement]));
586
+ }
587
+ function convertIconChildren(childElements, result, errors) {
588
+ if (childElements.length !== 1) {
589
+ errors.push(`<Icon>: Expected exactly one <svg> child element, but found ${childElements.length} child element(s)`);
590
+ return;
591
+ }
592
+ const child = childElements[0];
593
+ const tag = getTagName(child);
594
+ if (tag !== "svg") {
595
+ errors.push(`<Icon>: Expected <svg> child element, but found <${tag}>`);
596
+ return;
597
+ }
598
+ // name と svg の排他バリデーション
599
+ if (result.name !== undefined) {
600
+ errors.push('<Icon>: Cannot specify both "name" attribute and <svg> child element');
601
+ return;
602
+ }
603
+ result.svgContent = serializeSvgElement(child);
604
+ }
577
605
  const CHILD_ELEMENT_CONVERTERS = {
578
606
  ul: (childElements, result, errors) => convertListChildren("Ul", childElements, result, errors),
579
607
  ol: (childElements, result, errors) => convertListChildren("Ol", childElements, result, errors),
@@ -585,6 +613,7 @@ const CHILD_ELEMENT_CONVERTERS = {
585
613
  chart: convertChartChildren,
586
614
  table: convertTableChildren,
587
615
  tree: convertTreeChildren,
616
+ icon: convertIconChildren,
588
617
  };
589
618
  // ===== Node conversion =====
590
619
  function convertElement(node, errors) {
@@ -704,7 +733,7 @@ function convertPomNode(nodeType, tagName, attrs, childElements, textContent, er
704
733
  if (!CONTAINER_TYPES.has(nodeType)) {
705
734
  validateLeafNode(nodeType, result, errors);
706
735
  }
707
- // Normalize icon color / bgColor: add # prefix if missing
736
+ // Icon: normalize color / bgColor and validate name vs svgContent
708
737
  if (nodeType === "icon") {
709
738
  if (typeof result.color === "string" && !result.color.startsWith("#")) {
710
739
  result.color = `#${result.color}`;
@@ -712,6 +741,10 @@ function convertPomNode(nodeType, tagName, attrs, childElements, textContent, er
712
741
  if (typeof result.bgColor === "string" && !result.bgColor.startsWith("#")) {
713
742
  result.bgColor = `#${result.bgColor}`;
714
743
  }
744
+ // name も svgContent もない場合はエラー
745
+ if (result.name === undefined && result.svgContent === undefined) {
746
+ errors.push('<Icon>: Either "name" attribute or <svg> child element is required');
747
+ }
715
748
  }
716
749
  return result;
717
750
  }
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/registry/definitions/icon.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,eAAO,MAAM,WAAW,EAAE,cAqEzB,CAAC"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/registry/definitions/icon.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,eAAO,MAAM,WAAW,EAAE,cA4EzB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { rasterizeIcon } from "../../icons/index.js";
1
+ import { rasterizeIcon, rasterizeSvgContent } from "../../icons/index.js";
2
2
  import { renderIconNode } from "../../renderPptx/nodes/icon.js";
3
3
  import { getContentArea } from "../../renderPptx/utils/contentArea.js";
4
4
  export const iconNodeDef = {
@@ -24,7 +24,9 @@ export const iconNodeDef = {
24
24
  });
25
25
  // 実描画サイズに合わせてラスタライズ(不要に大きい PNG を防ぐ)
26
26
  const rasterSize = Math.max(Math.ceil(n.variant ? iconSize : Math.min(content.w, content.h)), iconSize);
27
- const iconImageData = rasterizeIcon(n.name, rasterSize, n.color ?? "#000000", ctx.iconRasterCache);
27
+ const iconImageData = n.svgContent
28
+ ? rasterizeSvgContent(n.svgContent, rasterSize, n.color, ctx.iconRasterCache)
29
+ : rasterizeIcon(n.name, rasterSize, n.color ?? "#000000", ctx.iconRasterCache);
28
30
  const positioned = {
29
31
  ...n,
30
32
  x: absoluteX,
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/registry/definitions/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AA0DxD,eAAO,MAAM,SAAS,EAAE,cAOvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAOvB,CAAC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/registry/definitions/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AA4DxD,eAAO,MAAM,SAAS,EAAE,cAOvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAOvB,CAAC"}
@@ -5,7 +5,7 @@ function applyListYogaStyle(node, yn, yoga, ctx) {
5
5
  const n = node;
6
6
  const combinedText = n.items.map((item) => item.text).join("\n");
7
7
  const fontSizePx = n.fontSize ?? 24;
8
- const fontFamily = "Noto Sans JP";
8
+ const fontFamily = n.fontFamily ?? "Noto Sans JP";
9
9
  const fontWeight = n.bold ? "bold" : "normal";
10
10
  const spacingMultiple = n.lineHeight ?? 1.3;
11
11
  const fontMetricsRatio = measureFontLineHeightRatio(fontWeight);
@@ -20,6 +20,8 @@ function applyListYogaStyle(node, yn, yoga, ctx) {
20
20
  case yoga.MEASURE_MODE_EXACTLY:
21
21
  case yoga.MEASURE_MODE_AT_MOST:
22
22
  return width;
23
+ default:
24
+ return Number.POSITIVE_INFINITY;
23
25
  }
24
26
  })();
25
27
  const textMaxWidthPx = Math.max(0, maxWidthPx - bulletIndentPx);
@@ -1 +1 @@
1
- {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../../src/registry/definitions/shape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AAMxD,eAAO,MAAM,YAAY,EAAE,cA0C1B,CAAC"}
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../../src/registry/definitions/shape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AAMxD,eAAO,MAAM,YAAY,EAAE,cA4C1B,CAAC"}
@@ -19,6 +19,8 @@ export const shapeNodeDef = {
19
19
  case yoga.MEASURE_MODE_EXACTLY:
20
20
  case yoga.MEASURE_MODE_AT_MOST:
21
21
  return width;
22
+ default:
23
+ return Number.POSITIVE_INFINITY;
22
24
  }
23
25
  })();
24
26
  const { widthPx, heightPx } = measureText(text, maxWidthPx, {
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/registry/definitions/text.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AAMxD,eAAO,MAAM,WAAW,EAAE,cAwCzB,CAAC"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/registry/definitions/text.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AAMxD,eAAO,MAAM,WAAW,EAAE,cA0CzB,CAAC"}
@@ -7,7 +7,7 @@ export const textNodeDef = {
7
7
  const n = node;
8
8
  const text = n.text;
9
9
  const fontSizePx = n.fontSize ?? 24;
10
- const fontFamily = "Noto Sans JP";
10
+ const fontFamily = n.fontFamily ?? "Noto Sans JP";
11
11
  const fontWeight = n.bold ? "bold" : "normal";
12
12
  const lineHeight = 1.3;
13
13
  yn.setMeasureFunc((width, widthMode) => {
@@ -18,6 +18,8 @@ export const textNodeDef = {
18
18
  case yoga.MEASURE_MODE_EXACTLY:
19
19
  case yoga.MEASURE_MODE_AT_MOST:
20
20
  return width;
21
+ default:
22
+ return Number.POSITIVE_INFINITY;
21
23
  }
22
24
  })();
23
25
  const { widthPx, heightPx } = measureText(text, maxWidthPx, {
@@ -9,7 +9,7 @@ export function renderImageNode(node, ctx) {
9
9
  h: pxToIn(content.h),
10
10
  shadow: node.shadow
11
11
  ? {
12
- type: node.shadow.type,
12
+ type: node.shadow.type ?? "outer",
13
13
  opacity: node.shadow.opacity,
14
14
  blur: node.shadow.blur,
15
15
  angle: node.shadow.angle,
@@ -23,7 +23,7 @@ export function renderShapeNode(node, ctx) {
23
23
  : undefined,
24
24
  shadow: node.shadow
25
25
  ? {
26
- type: node.shadow.type,
26
+ type: node.shadow.type ?? "outer",
27
27
  opacity: node.shadow.opacity,
28
28
  blur: node.shadow.blur,
29
29
  angle: node.shadow.angle,
@@ -24,15 +24,15 @@ export declare function createTextOptions(node: TextNode): {
24
24
  valign: "top";
25
25
  margin: number;
26
26
  lineSpacingMultiple: number;
27
- color: string;
28
- bold: boolean;
29
- italic: boolean;
27
+ color: string | undefined;
28
+ bold: boolean | undefined;
29
+ italic: boolean | undefined;
30
30
  underline: {
31
31
  style?: UnderlineStyle;
32
32
  color?: string;
33
- };
34
- strike: "sngStrike";
35
- highlight: string;
33
+ } | undefined;
34
+ strike: "sngStrike" | undefined;
35
+ highlight: string | undefined;
36
36
  };
37
37
  export {};
38
38
  //# sourceMappingURL=textOptions.d.ts.map
@@ -2,7 +2,7 @@ import { getImageData } from "../../shared/measureImage.js";
2
2
  import { pxToIn, pxToPt } from "../units.js";
3
3
  function convertShadow(shadow) {
4
4
  return {
5
- type: shadow.type,
5
+ type: shadow.type ?? "outer",
6
6
  opacity: shadow.opacity,
7
7
  blur: shadow.blur,
8
8
  angle: shadow.angle,
package/dist/types.d.ts CHANGED
@@ -669,9 +669,10 @@ export declare const iconNodeSchema: z.ZodObject<{
669
669
  stretch: "stretch";
670
670
  }>>;
671
671
  type: z.ZodLiteral<"icon">;
672
- name: z.ZodEnum<{
672
+ name: z.ZodOptional<z.ZodEnum<{
673
673
  [x: string]: string;
674
- }>;
674
+ }>>;
675
+ svgContent: z.ZodOptional<z.ZodString>;
675
676
  size: z.ZodOptional<z.ZodNumber>;
676
677
  color: z.ZodOptional<z.ZodString>;
677
678
  variant: z.ZodOptional<z.ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -389,7 +389,8 @@ const iconVariantSchema = z
389
389
  .optional();
390
390
  export const iconNodeSchema = basePOMNodeSchema.extend({
391
391
  type: z.literal("icon"),
392
- name: iconNameSchema,
392
+ name: iconNameSchema.optional(),
393
+ svgContent: z.string().optional(),
393
394
  size: z.number().positive().max(1024).optional(),
394
395
  color: iconColorSchema,
395
396
  variant: iconVariantSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hirokisakabe/pom",
3
- "version": "5.5.0",
3
+ "version": "5.6.0",
4
4
  "description": "AI-friendly PowerPoint generation with a Flexbox layout engine.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -88,7 +88,7 @@
88
88
  "prettier": "3.6.2",
89
89
  "size-limit": "^12.0.1",
90
90
  "tsx": "4.21.0",
91
- "typescript": "5.9.3",
91
+ "typescript": "6.0.2",
92
92
  "typescript-eslint": "^8.47.0",
93
93
  "vitest": "^4.1.0"
94
94
  },