@hirokisakabe/pom 8.5.0 → 8.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.
- package/README.md +27 -24
- package/dist/calcYogaLayout/fontLoader.js +30 -1
- package/dist/calcYogaLayout/fontLoader.js.map +1 -1
- package/dist/parseXml/coercionRules.js +6 -0
- package/dist/parseXml/coercionRules.js.map +1 -1
- package/dist/parseXml/parseXml.d.ts.map +1 -1
- package/dist/parseXml/parseXml.js +9 -5
- package/dist/parseXml/parseXml.js.map +1 -1
- package/dist/parseXml/serializeXml.d.ts +3 -2
- package/dist/parseXml/serializeXml.d.ts.map +1 -1
- package/dist/parseXml/serializeXml.js +3 -2
- package/dist/parseXml/serializeXml.js.map +1 -1
- package/dist/registry/definitions/text.js +1 -1
- package/dist/registry/definitions/text.js.map +1 -1
- package/dist/registry/xmlChildRules.js +10 -0
- package/dist/registry/xmlChildRules.js.map +1 -1
- package/dist/renderPptx/nodes/list.js +14 -2
- package/dist/renderPptx/nodes/list.js.map +1 -1
- package/dist/renderPptx/nodes/shape.js +21 -16
- package/dist/renderPptx/nodes/shape.js.map +1 -1
- package/dist/renderPptx/nodes/table.js +22 -15
- package/dist/renderPptx/nodes/table.js.map +1 -1
- package/dist/renderPptx/nodes/text.js +5 -2
- package/dist/renderPptx/nodes/text.js.map +1 -1
- package/dist/renderPptx/textOptions.js +41 -4
- package/dist/renderPptx/textOptions.js.map +1 -1
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +14 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,22 +14,27 @@ function renderShapeNode(node, ctx) {
|
|
|
14
14
|
shadow: convertShadow(node.shadow),
|
|
15
15
|
rotate: node.rotate
|
|
16
16
|
};
|
|
17
|
-
if (node.text)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
17
|
+
if (node.text) {
|
|
18
|
+
const fontSizePx = node.fontSize ?? 24;
|
|
19
|
+
const lineHeight = node.lineHeight ?? 1.3;
|
|
20
|
+
ctx.slide.addText(node.text, {
|
|
21
|
+
...shapeOptions,
|
|
22
|
+
shape: node.shapeType,
|
|
23
|
+
fontSize: pxToPt(fontSizePx),
|
|
24
|
+
fontFace: node.fontFamily ?? "Noto Sans JP",
|
|
25
|
+
color: node.color,
|
|
26
|
+
bold: node.bold,
|
|
27
|
+
italic: node.italic,
|
|
28
|
+
underline: convertUnderline(node.underline),
|
|
29
|
+
strike: convertStrike(node.strike),
|
|
30
|
+
subscript: node.subscript,
|
|
31
|
+
superscript: node.superscript,
|
|
32
|
+
highlight: node.highlight,
|
|
33
|
+
align: node.textAlign ?? "center",
|
|
34
|
+
valign: "middle",
|
|
35
|
+
lineSpacing: pxToPt(fontSizePx * lineHeight)
|
|
36
|
+
});
|
|
37
|
+
} else ctx.slide.addShape(node.shapeType, shapeOptions);
|
|
33
38
|
}
|
|
34
39
|
//#endregion
|
|
35
40
|
export { renderShapeNode };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape.js","names":[],"sources":["../../../src/renderPptx/nodes/shape.ts"],"sourcesContent":["import type { PositionedNode } from \"../../types.ts\";\nimport type { RenderContext } from \"../types.ts\";\nimport { pxToPt } from \"../units.ts\";\nimport { convertUnderline, convertStrike } from \"../textOptions.ts\";\nimport { getContentAreaIn } from \"../utils/contentArea.ts\";\nimport { convertBorderLine, convertShadow } from \"../utils/visualStyle.ts\";\n\ntype ShapePositionedNode = Extract<PositionedNode, { type: \"shape\" }>;\n\nexport function renderShapeNode(\n node: ShapePositionedNode,\n ctx: RenderContext,\n): void {\n const shapeOptions = {\n ...getContentAreaIn(node),\n fill: node.fill\n ? {\n color: node.fill.color,\n transparency: node.fill.transparency,\n }\n : undefined,\n line: node.line ? convertBorderLine(node.line) : undefined,\n shadow: convertShadow(node.shadow),\n rotate: node.rotate,\n };\n\n if (node.text) {\n // テキストがある場合:addTextでshapeを指定\n ctx.slide.addText(node.text, {\n ...shapeOptions,\n shape: node.shapeType,\n fontSize: pxToPt(
|
|
1
|
+
{"version":3,"file":"shape.js","names":[],"sources":["../../../src/renderPptx/nodes/shape.ts"],"sourcesContent":["import type { PositionedNode } from \"../../types.ts\";\nimport type { RenderContext } from \"../types.ts\";\nimport { pxToPt } from \"../units.ts\";\nimport { convertUnderline, convertStrike } from \"../textOptions.ts\";\nimport { getContentAreaIn } from \"../utils/contentArea.ts\";\nimport { convertBorderLine, convertShadow } from \"../utils/visualStyle.ts\";\n\ntype ShapePositionedNode = Extract<PositionedNode, { type: \"shape\" }>;\n\nexport function renderShapeNode(\n node: ShapePositionedNode,\n ctx: RenderContext,\n): void {\n const shapeOptions = {\n ...getContentAreaIn(node),\n fill: node.fill\n ? {\n color: node.fill.color,\n transparency: node.fill.transparency,\n }\n : undefined,\n line: node.line ? convertBorderLine(node.line) : undefined,\n shadow: convertShadow(node.shadow),\n rotate: node.rotate,\n };\n\n if (node.text) {\n const fontSizePx = node.fontSize ?? 24;\n const lineHeight = node.lineHeight ?? 1.3;\n // テキストがある場合:addTextでshapeを指定\n ctx.slide.addText(node.text, {\n ...shapeOptions,\n shape: node.shapeType,\n fontSize: pxToPt(fontSizePx),\n fontFace: node.fontFamily ?? \"Noto Sans JP\",\n color: node.color,\n bold: node.bold,\n italic: node.italic,\n underline: convertUnderline(node.underline),\n strike: convertStrike(node.strike),\n subscript: node.subscript,\n superscript: node.superscript,\n highlight: node.highlight,\n align: node.textAlign ?? \"center\",\n valign: \"middle\" as const,\n // Text と同じく行送りを固定値 (spcPts) で指定し、計測高さ\n // (行数 × fontSize × lineHeight) と実描画の行高さを一致させる (#846)。\n // valign middle のためテキストブロックは枠内中央に配置され、\n // Text のような描画 y 補正は不要\n lineSpacing: pxToPt(fontSizePx * lineHeight),\n });\n } else {\n // テキストがない場合:addShapeを使用\n ctx.slide.addShape(node.shapeType, shapeOptions);\n }\n}\n"],"mappings":";;;;;AASA,SAAgB,gBACd,MACA,KACM;CACN,MAAM,eAAe;EACnB,GAAG,iBAAiB,IAAI;EACxB,MAAM,KAAK,OACP;GACE,OAAO,KAAK,KAAK;GACjB,cAAc,KAAK,KAAK;EAC1B,IACA,KAAA;EACJ,MAAM,KAAK,OAAO,kBAAkB,KAAK,IAAI,IAAI,KAAA;EACjD,QAAQ,cAAc,KAAK,MAAM;EACjC,QAAQ,KAAK;CACf;CAEA,IAAI,KAAK,MAAM;EACb,MAAM,aAAa,KAAK,YAAY;EACpC,MAAM,aAAa,KAAK,cAAc;EAEtC,IAAI,MAAM,QAAQ,KAAK,MAAM;GAC3B,GAAG;GACH,OAAO,KAAK;GACZ,UAAU,OAAO,UAAU;GAC3B,UAAU,KAAK,cAAc;GAC7B,OAAO,KAAK;GACZ,MAAM,KAAK;GACX,QAAQ,KAAK;GACb,WAAW,iBAAiB,KAAK,SAAS;GAC1C,QAAQ,cAAc,KAAK,MAAM;GACjC,WAAW,KAAK;GAChB,aAAa,KAAK;GAClB,WAAW,KAAK;GAChB,OAAO,KAAK,aAAa;GACzB,QAAQ;GAKR,aAAa,OAAO,aAAa,UAAU;EAC7C,CAAC;CACH,OAEE,IAAI,MAAM,SAAS,KAAK,WAAW,YAAY;AAEnD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { pxToIn, pxToPt, rectPxToIn } from "../units.js";
|
|
2
2
|
import { getContentArea } from "../utils/contentArea.js";
|
|
3
|
-
import { convertStrike, convertUnderline } from "../textOptions.js";
|
|
3
|
+
import { convertStrike, convertUnderline, resolveSubSup } from "../textOptions.js";
|
|
4
4
|
import { resolveColumnWidths, resolveRowHeights } from "../../shared/tableUtils.js";
|
|
5
5
|
//#region src/renderPptx/nodes/table.ts
|
|
6
6
|
function renderTableNode(node, ctx) {
|
|
@@ -14,6 +14,8 @@ function renderTableNode(node, ctx) {
|
|
|
14
14
|
italic: cell.italic,
|
|
15
15
|
underline: convertUnderline(cell.underline),
|
|
16
16
|
strike: convertStrike(cell.strike),
|
|
17
|
+
subscript: cell.subscript,
|
|
18
|
+
superscript: cell.superscript,
|
|
17
19
|
highlight: cell.highlight,
|
|
18
20
|
align: cell.textAlign ?? "left",
|
|
19
21
|
fill: cell.backgroundColor ? { color: cell.backgroundColor } : void 0,
|
|
@@ -21,20 +23,25 @@ function renderTableNode(node, ctx) {
|
|
|
21
23
|
rowspan: cell.rowspan
|
|
22
24
|
};
|
|
23
25
|
if (cell.runs && cell.runs.length > 0) return {
|
|
24
|
-
text: cell.runs.map((run) =>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
text: cell.runs.map((run) => {
|
|
27
|
+
const runSubSup = resolveSubSup(run, cell);
|
|
28
|
+
return {
|
|
29
|
+
text: run.text,
|
|
30
|
+
options: {
|
|
31
|
+
fontSize: pxToPt(cell.fontSize ?? 18),
|
|
32
|
+
fontFace: run.fontFamily ?? cellFontFace,
|
|
33
|
+
color: run.color ?? cell.color,
|
|
34
|
+
bold: run.bold ?? cell.bold,
|
|
35
|
+
italic: run.italic ?? cell.italic,
|
|
36
|
+
underline: convertUnderline(run.underline ?? cell.underline),
|
|
37
|
+
strike: convertStrike(run.strike ?? cell.strike),
|
|
38
|
+
subscript: runSubSup.subscript,
|
|
39
|
+
superscript: runSubSup.superscript,
|
|
40
|
+
highlight: run.highlight ?? cell.highlight,
|
|
41
|
+
...run.href ? { hyperlink: { url: run.href } } : {}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}),
|
|
38
45
|
options: {
|
|
39
46
|
align: cell.textAlign ?? "left",
|
|
40
47
|
fill: cell.backgroundColor ? { color: cell.backgroundColor } : void 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","names":[],"sources":["../../../src/renderPptx/nodes/table.ts"],"sourcesContent":["import type { PositionedNode } from \"../../types.ts\";\nimport type { RenderContext } from \"../types.ts\";\nimport {\n resolveColumnWidths,\n resolveRowHeights,\n} from \"../../shared/tableUtils.ts\";\nimport { pxToIn, pxToPt, rectPxToIn } from \"../units.ts\";\nimport {
|
|
1
|
+
{"version":3,"file":"table.js","names":[],"sources":["../../../src/renderPptx/nodes/table.ts"],"sourcesContent":["import type { PositionedNode } from \"../../types.ts\";\nimport type { RenderContext } from \"../types.ts\";\nimport {\n resolveColumnWidths,\n resolveRowHeights,\n} from \"../../shared/tableUtils.ts\";\nimport { pxToIn, pxToPt, rectPxToIn } from \"../units.ts\";\nimport {\n convertUnderline,\n convertStrike,\n resolveSubSup,\n} from \"../textOptions.ts\";\nimport { getContentArea } from \"../utils/contentArea.ts\";\n\ntype TablePositionedNode = Extract<PositionedNode, { type: \"table\" }>;\n\nexport function renderTableNode(\n node: TablePositionedNode,\n ctx: RenderContext,\n): void {\n const tableRows = node.rows.map((row) =>\n row.cells.map((cell) => {\n const cellFontFace = cell.fontFamily;\n const cellOptions: Record<string, unknown> = {\n fontSize: pxToPt(cell.fontSize ?? 18),\n fontFace: cellFontFace,\n color: cell.color,\n bold: cell.bold,\n italic: cell.italic,\n underline: convertUnderline(cell.underline),\n strike: convertStrike(cell.strike),\n subscript: cell.subscript,\n superscript: cell.superscript,\n highlight: cell.highlight,\n align: cell.textAlign ?? \"left\",\n fill: cell.backgroundColor\n ? { color: cell.backgroundColor }\n : undefined,\n colspan: cell.colspan,\n rowspan: cell.rowspan,\n };\n\n if (cell.runs && cell.runs.length > 0) {\n const textItems = cell.runs.map((run) => {\n const runSubSup = resolveSubSup(run, cell);\n return {\n text: run.text,\n options: {\n fontSize: pxToPt(cell.fontSize ?? 18),\n fontFace: run.fontFamily ?? cellFontFace,\n color: run.color ?? cell.color,\n bold: run.bold ?? cell.bold,\n italic: run.italic ?? cell.italic,\n underline: convertUnderline(run.underline ?? cell.underline),\n strike: convertStrike(run.strike ?? cell.strike),\n subscript: runSubSup.subscript,\n superscript: runSubSup.superscript,\n highlight: run.highlight ?? cell.highlight,\n ...(run.href ? { hyperlink: { url: run.href } } : {}),\n },\n };\n });\n return {\n text: textItems,\n options: {\n align: cell.textAlign ?? \"left\",\n fill: cell.backgroundColor\n ? { color: cell.backgroundColor }\n : undefined,\n colspan: cell.colspan,\n rowspan: cell.rowspan,\n },\n };\n }\n\n return {\n text: cell.text,\n options: cellOptions,\n };\n }),\n );\n\n const content = getContentArea(node);\n const tableOptions: Record<string, unknown> = {\n ...rectPxToIn(content),\n colW: resolveColumnWidths(node, content.w).map((width) => pxToIn(width)),\n rowH: resolveRowHeights(node).map((height) => pxToIn(height)),\n margin: 0,\n };\n\n if (node.cellBorder) {\n tableOptions.border = {\n color: node.cellBorder.color ?? \"000000\",\n pt:\n node.cellBorder.width !== undefined ? pxToPt(node.cellBorder.width) : 1,\n type: node.cellBorder.dashType ?? \"solid\",\n };\n }\n\n ctx.slide.addTable(tableRows, tableOptions);\n}\n"],"mappings":";;;;;AAgBA,SAAgB,gBACd,MACA,KACM;CACN,MAAM,YAAY,KAAK,KAAK,KAAK,QAC/B,IAAI,MAAM,KAAK,SAAS;EACtB,MAAM,eAAe,KAAK;EAC1B,MAAM,cAAuC;GAC3C,UAAU,OAAO,KAAK,YAAY,EAAE;GACpC,UAAU;GACV,OAAO,KAAK;GACZ,MAAM,KAAK;GACX,QAAQ,KAAK;GACb,WAAW,iBAAiB,KAAK,SAAS;GAC1C,QAAQ,cAAc,KAAK,MAAM;GACjC,WAAW,KAAK;GAChB,aAAa,KAAK;GAClB,WAAW,KAAK;GAChB,OAAO,KAAK,aAAa;GACzB,MAAM,KAAK,kBACP,EAAE,OAAO,KAAK,gBAAgB,IAC9B,KAAA;GACJ,SAAS,KAAK;GACd,SAAS,KAAK;EAChB;EAEA,IAAI,KAAK,QAAQ,KAAK,KAAK,SAAS,GAoBlC,OAAO;GACL,MApBgB,KAAK,KAAK,KAAK,QAAQ;IACvC,MAAM,YAAY,cAAc,KAAK,IAAI;IACzC,OAAO;KACL,MAAM,IAAI;KACV,SAAS;MACP,UAAU,OAAO,KAAK,YAAY,EAAE;MACpC,UAAU,IAAI,cAAc;MAC5B,OAAO,IAAI,SAAS,KAAK;MACzB,MAAM,IAAI,QAAQ,KAAK;MACvB,QAAQ,IAAI,UAAU,KAAK;MAC3B,WAAW,iBAAiB,IAAI,aAAa,KAAK,SAAS;MAC3D,QAAQ,cAAc,IAAI,UAAU,KAAK,MAAM;MAC/C,WAAW,UAAU;MACrB,aAAa,UAAU;MACvB,WAAW,IAAI,aAAa,KAAK;MACjC,GAAI,IAAI,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,KAAK,EAAE,IAAI,CAAC;KACrD;IACF;GACF,CAEgB;GACd,SAAS;IACP,OAAO,KAAK,aAAa;IACzB,MAAM,KAAK,kBACP,EAAE,OAAO,KAAK,gBAAgB,IAC9B,KAAA;IACJ,SAAS,KAAK;IACd,SAAS,KAAK;GAChB;EACF;EAGF,OAAO;GACL,MAAM,KAAK;GACX,SAAS;EACX;CACF,CAAC,CACH;CAEA,MAAM,UAAU,eAAe,IAAI;CACnC,MAAM,eAAwC;EAC5C,GAAG,WAAW,OAAO;EACrB,MAAM,oBAAoB,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,OAAO,KAAK,CAAC;EACvE,MAAM,kBAAkB,IAAI,CAAC,CAAC,KAAK,WAAW,OAAO,MAAM,CAAC;EAC5D,QAAQ;CACV;CAEA,IAAI,KAAK,YACP,aAAa,SAAS;EACpB,OAAO,KAAK,WAAW,SAAS;EAChC,IACE,KAAK,WAAW,UAAU,KAAA,IAAY,OAAO,KAAK,WAAW,KAAK,IAAI;EACxE,MAAM,KAAK,WAAW,YAAY;CACpC;CAGF,IAAI,MAAM,SAAS,WAAW,YAAY;AAC5C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { pxToPt } from "../units.js";
|
|
2
|
-
import { convertGlow, convertOutline, convertStrike, convertUnderline, createTextOptions } from "../textOptions.js";
|
|
2
|
+
import { convertGlow, convertOutline, convertStrike, convertUnderline, createTextOptions, resolveSubSup } from "../textOptions.js";
|
|
3
3
|
//#region src/renderPptx/nodes/text.ts
|
|
4
4
|
function renderTextNode(node, ctx) {
|
|
5
5
|
const textOptions = createTextOptions(node);
|
|
@@ -8,6 +8,7 @@ function renderTextNode(node, ctx) {
|
|
|
8
8
|
const fontFamily = node.fontFamily ?? "Noto Sans JP";
|
|
9
9
|
const textItems = node.runs.map((run) => {
|
|
10
10
|
const letterSpacingPx = run.letterSpacing ?? node.letterSpacing;
|
|
11
|
+
const subSup = resolveSubSup(run, node);
|
|
11
12
|
return {
|
|
12
13
|
text: run.text,
|
|
13
14
|
options: {
|
|
@@ -18,6 +19,8 @@ function renderTextNode(node, ctx) {
|
|
|
18
19
|
italic: run.italic ?? node.italic,
|
|
19
20
|
underline: convertUnderline(run.underline ?? node.underline),
|
|
20
21
|
strike: convertStrike(run.strike ?? node.strike),
|
|
22
|
+
subscript: subSup.subscript,
|
|
23
|
+
superscript: subSup.superscript,
|
|
21
24
|
highlight: run.highlight ?? node.highlight,
|
|
22
25
|
glow: convertGlow(node.glow),
|
|
23
26
|
outline: convertOutline(node.outline),
|
|
@@ -35,7 +38,7 @@ function renderTextNode(node, ctx) {
|
|
|
35
38
|
align: textOptions.align,
|
|
36
39
|
valign: textOptions.valign,
|
|
37
40
|
margin: textOptions.margin,
|
|
38
|
-
|
|
41
|
+
lineSpacing: textOptions.lineSpacing
|
|
39
42
|
});
|
|
40
43
|
} else ctx.slide.addText(node.text ?? "", textOptions);
|
|
41
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","names":[],"sources":["../../../src/renderPptx/nodes/text.ts"],"sourcesContent":["import type { PositionedNode } from \"../../types.ts\";\nimport type { RenderContext } from \"../types.ts\";\nimport {\n createTextOptions,\n convertUnderline,\n convertStrike,\n convertGlow,\n convertOutline,\n} from \"../textOptions.ts\";\nimport { pxToPt } from \"../units.ts\";\n\ntype TextPositionedNode = Extract<PositionedNode, { type: \"text\" }>;\n\nexport function renderTextNode(\n node: TextPositionedNode,\n ctx: RenderContext,\n): void {\n const textOptions = createTextOptions(node);\n\n if (node.runs && node.runs.length > 0) {\n const fontSizePx = node.fontSize ?? 24;\n const fontFamily = node.fontFamily ?? \"Noto Sans JP\";\n const textItems = node.runs.map((run) => {\n const letterSpacingPx = run.letterSpacing ?? node.letterSpacing;\n return {\n text: run.text,\n options: {\n fontSize: pxToPt(fontSizePx),\n fontFace: run.fontFamily ?? fontFamily,\n color: run.color ?? node.color,\n bold: run.bold ?? node.bold,\n italic: run.italic ?? node.italic,\n underline: convertUnderline(run.underline ?? node.underline),\n strike: convertStrike(run.strike ?? node.strike),\n highlight: run.highlight ?? node.highlight,\n // glow / outline はノード単位指定のみ (run 単位はスコープ外)\n glow: convertGlow(node.glow),\n outline: convertOutline(node.outline),\n charSpacing:\n letterSpacingPx !== undefined ? pxToPt(letterSpacingPx) : undefined,\n ...(run.href ? { hyperlink: { url: run.href } } : {}),\n },\n };\n });\n ctx.slide.addText(textItems, {\n x: textOptions.x,\n y: textOptions.y,\n w: textOptions.w,\n h: textOptions.h,\n rotate: textOptions.rotate,\n align: textOptions.align,\n valign: textOptions.valign,\n margin: textOptions.margin,\n
|
|
1
|
+
{"version":3,"file":"text.js","names":[],"sources":["../../../src/renderPptx/nodes/text.ts"],"sourcesContent":["import type { PositionedNode } from \"../../types.ts\";\nimport type { RenderContext } from \"../types.ts\";\nimport {\n createTextOptions,\n convertUnderline,\n convertStrike,\n convertGlow,\n convertOutline,\n resolveSubSup,\n} from \"../textOptions.ts\";\nimport { pxToPt } from \"../units.ts\";\n\ntype TextPositionedNode = Extract<PositionedNode, { type: \"text\" }>;\n\nexport function renderTextNode(\n node: TextPositionedNode,\n ctx: RenderContext,\n): void {\n const textOptions = createTextOptions(node);\n\n if (node.runs && node.runs.length > 0) {\n const fontSizePx = node.fontSize ?? 24;\n const fontFamily = node.fontFamily ?? \"Noto Sans JP\";\n const textItems = node.runs.map((run) => {\n const letterSpacingPx = run.letterSpacing ?? node.letterSpacing;\n const subSup = resolveSubSup(run, node);\n return {\n text: run.text,\n options: {\n fontSize: pxToPt(fontSizePx),\n fontFace: run.fontFamily ?? fontFamily,\n color: run.color ?? node.color,\n bold: run.bold ?? node.bold,\n italic: run.italic ?? node.italic,\n underline: convertUnderline(run.underline ?? node.underline),\n strike: convertStrike(run.strike ?? node.strike),\n subscript: subSup.subscript,\n superscript: subSup.superscript,\n highlight: run.highlight ?? node.highlight,\n // glow / outline はノード単位指定のみ (run 単位はスコープ外)\n glow: convertGlow(node.glow),\n outline: convertOutline(node.outline),\n charSpacing:\n letterSpacingPx !== undefined ? pxToPt(letterSpacingPx) : undefined,\n ...(run.href ? { hyperlink: { url: run.href } } : {}),\n },\n };\n });\n ctx.slide.addText(textItems, {\n x: textOptions.x,\n y: textOptions.y,\n w: textOptions.w,\n h: textOptions.h,\n rotate: textOptions.rotate,\n align: textOptions.align,\n valign: textOptions.valign,\n margin: textOptions.margin,\n lineSpacing: textOptions.lineSpacing,\n });\n } else {\n ctx.slide.addText(node.text ?? \"\", textOptions);\n }\n}\n"],"mappings":";;;AAcA,SAAgB,eACd,MACA,KACM;CACN,MAAM,cAAc,kBAAkB,IAAI;CAE1C,IAAI,KAAK,QAAQ,KAAK,KAAK,SAAS,GAAG;EACrC,MAAM,aAAa,KAAK,YAAY;EACpC,MAAM,aAAa,KAAK,cAAc;EACtC,MAAM,YAAY,KAAK,KAAK,KAAK,QAAQ;GACvC,MAAM,kBAAkB,IAAI,iBAAiB,KAAK;GAClD,MAAM,SAAS,cAAc,KAAK,IAAI;GACtC,OAAO;IACL,MAAM,IAAI;IACV,SAAS;KACP,UAAU,OAAO,UAAU;KAC3B,UAAU,IAAI,cAAc;KAC5B,OAAO,IAAI,SAAS,KAAK;KACzB,MAAM,IAAI,QAAQ,KAAK;KACvB,QAAQ,IAAI,UAAU,KAAK;KAC3B,WAAW,iBAAiB,IAAI,aAAa,KAAK,SAAS;KAC3D,QAAQ,cAAc,IAAI,UAAU,KAAK,MAAM;KAC/C,WAAW,OAAO;KAClB,aAAa,OAAO;KACpB,WAAW,IAAI,aAAa,KAAK;KAEjC,MAAM,YAAY,KAAK,IAAI;KAC3B,SAAS,eAAe,KAAK,OAAO;KACpC,aACE,oBAAoB,KAAA,IAAY,OAAO,eAAe,IAAI,KAAA;KAC5D,GAAI,IAAI,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,KAAK,EAAE,IAAI,CAAC;IACrD;GACF;EACF,CAAC;EACD,IAAI,MAAM,QAAQ,WAAW;GAC3B,GAAG,YAAY;GACf,GAAG,YAAY;GACf,GAAG,YAAY;GACf,GAAG,YAAY;GACf,QAAQ,YAAY;GACpB,OAAO,YAAY;GACnB,QAAQ,YAAY;GACpB,QAAQ,YAAY;GACpB,aAAa,YAAY;EAC3B,CAAC;CACH,OACE,IAAI,MAAM,QAAQ,KAAK,QAAQ,IAAI,WAAW;AAElD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { measureFontVerticalMetricsRatio } from "../calcYogaLayout/fontLoader.js";
|
|
2
|
+
import { pxToIn, pxToPt } from "./units.js";
|
|
2
3
|
import { getContentAreaIn } from "./utils/contentArea.js";
|
|
3
4
|
//#region src/renderPptx/textOptions.ts
|
|
4
5
|
/**
|
|
@@ -20,6 +21,22 @@ function convertStrike(strike) {
|
|
|
20
21
|
if (strike) return "sngStrike";
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
24
|
+
* run と親 (node / cell / li) の subscript / superscript を相互排他に解決する。
|
|
25
|
+
* OOXML の baseline 値で表現される性質上、両方 true は意味を持たないため、
|
|
26
|
+
* run 側で sub/sup のいずれかが指定された場合は親の指定をまるごと無効化する
|
|
27
|
+
* (片方だけ指定して反対側を親から漏らさない)。
|
|
28
|
+
*/
|
|
29
|
+
function resolveSubSup(run, parent) {
|
|
30
|
+
if (run.subscript !== void 0 || run.superscript !== void 0) return {
|
|
31
|
+
subscript: run.subscript,
|
|
32
|
+
superscript: run.superscript
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
subscript: parent.subscript,
|
|
36
|
+
superscript: parent.superscript
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
23
40
|
* glow プロパティを pptxgenjs 形式に変換する
|
|
24
41
|
* size はユーザー入力 px、pptxgenjs の glow.size は pt。
|
|
25
42
|
* pptxgenjs は省略時デフォルトを Object.assign で合成するため undefined を
|
|
@@ -44,24 +61,44 @@ function convertOutline(outline) {
|
|
|
44
61
|
color: outline.color ?? "FFFFFF"
|
|
45
62
|
};
|
|
46
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* 行内でグリフ ink が上下中央に来るようにするための描画 y 補正量 (px)
|
|
66
|
+
*
|
|
67
|
+
* レンダラ (LibreOffice / PowerPoint) は固定行送り (spcPts) のとき
|
|
68
|
+
* baseline を「行下端 − winDescent × fontSize」に置くため、グリフ ink
|
|
69
|
+
* (typoAscender + typoDescender) は行内で下寄りになり、同じ gap でも
|
|
70
|
+
* テキスト上側の視覚余白が広く下側が狭く見える (#846)。
|
|
71
|
+
* baseline の実位置と「ink を行内中央に置いたときの baseline 位置」の
|
|
72
|
+
* 差分を返し、呼び出し側でテキストフレームをその分だけ上へずらす。
|
|
73
|
+
*/
|
|
74
|
+
function calcGlyphCenteringShiftPx(fontSizePx, lineHeight, fontWeight) {
|
|
75
|
+
const lineHeightPx = fontSizePx * lineHeight;
|
|
76
|
+
const metrics = measureFontVerticalMetricsRatio(fontWeight);
|
|
77
|
+
return lineHeightPx - metrics.winDescent * fontSizePx - ((lineHeightPx - (metrics.typoAscender + metrics.typoDescender) * fontSizePx) / 2 + metrics.typoAscender * fontSizePx);
|
|
78
|
+
}
|
|
47
79
|
function createTextOptions(node) {
|
|
48
80
|
const fontSizePx = node.fontSize ?? 24;
|
|
49
81
|
const fontFamily = node.fontFamily ?? "Noto Sans JP";
|
|
50
82
|
const lineHeight = node.lineHeight ?? 1.3;
|
|
83
|
+
const area = getContentAreaIn(node);
|
|
84
|
+
const glyphShiftPx = calcGlyphCenteringShiftPx(fontSizePx, lineHeight, node.bold ? "bold" : "normal");
|
|
51
85
|
return {
|
|
52
|
-
...
|
|
86
|
+
...area,
|
|
87
|
+
y: area.y - pxToIn(glyphShiftPx),
|
|
53
88
|
fontSize: pxToPt(fontSizePx),
|
|
54
89
|
fontFace: fontFamily,
|
|
55
90
|
align: node.textAlign ?? "left",
|
|
56
91
|
valign: "top",
|
|
57
92
|
margin: 0,
|
|
58
|
-
|
|
93
|
+
lineSpacing: pxToPt(fontSizePx * lineHeight),
|
|
59
94
|
rotate: node.rotate,
|
|
60
95
|
color: node.color,
|
|
61
96
|
bold: node.bold,
|
|
62
97
|
italic: node.italic,
|
|
63
98
|
underline: convertUnderline(node.underline),
|
|
64
99
|
strike: convertStrike(node.strike),
|
|
100
|
+
subscript: node.subscript,
|
|
101
|
+
superscript: node.superscript,
|
|
65
102
|
highlight: node.highlight,
|
|
66
103
|
glow: convertGlow(node.glow),
|
|
67
104
|
outline: convertOutline(node.outline),
|
|
@@ -69,6 +106,6 @@ function createTextOptions(node) {
|
|
|
69
106
|
};
|
|
70
107
|
}
|
|
71
108
|
//#endregion
|
|
72
|
-
export { convertGlow, convertOutline, convertStrike, convertUnderline, createTextOptions };
|
|
109
|
+
export { convertGlow, convertOutline, convertStrike, convertUnderline, createTextOptions, resolveSubSup };
|
|
73
110
|
|
|
74
111
|
//# sourceMappingURL=textOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textOptions.js","names":[],"sources":["../../src/renderPptx/textOptions.ts"],"sourcesContent":["import type {\n PositionedNode,\n TextGlow,\n TextOutline,\n Underline,\n UnderlineStyle,\n} from \"../types.ts\";\nimport { pxToPt } from \"./units.ts\";\nimport { getContentAreaIn } from \"./utils/contentArea.ts\";\n\ntype TextNode = Extract<PositionedNode, { type: \"text\" }>;\n\n/**\n * underline プロパティを pptxgenjs 形式に変換する\n */\nexport function convertUnderline(\n underline: Underline | undefined,\n): { style?: UnderlineStyle; color?: string } | undefined {\n if (underline === undefined) return undefined;\n if (underline === false) return undefined;\n if (underline === true) return { style: \"sng\" };\n return {\n style: underline.style,\n color: underline.color,\n };\n}\n\n/**\n * strike プロパティを pptxgenjs 形式に変換する\n */\nexport function convertStrike(\n strike: boolean | undefined,\n): \"sngStrike\" | undefined {\n if (strike) return \"sngStrike\";\n return undefined;\n}\n\n/**\n * glow プロパティを pptxgenjs 形式に変換する\n * size はユーザー入力 px、pptxgenjs の glow.size は pt。\n * pptxgenjs は省略時デフォルトを Object.assign で合成するため undefined を\n * 渡すとデフォルトが消える。ここで pom 側のデフォルトを確定させる。\n */\nexport function convertGlow(\n glow: TextGlow | undefined,\n): { size: number; opacity: number; color: string } | undefined {\n if (glow === undefined) return undefined;\n return {\n size: pxToPt(glow.size ?? 8),\n opacity: glow.opacity ?? 0.75,\n color: glow.color ?? \"FFFFFF\",\n };\n}\n\n/**\n * outline プロパティを pptxgenjs 形式に変換する\n * size はユーザー入力 px、pptxgenjs の outline.size は pt\n */\nexport function convertOutline(\n outline: TextOutline | undefined,\n): { size: number; color: string } | undefined {\n if (outline === undefined) return undefined;\n return {\n size: pxToPt(outline.size ?? 1),\n color: outline.color ?? \"FFFFFF\",\n };\n}\n\nexport function createTextOptions(node: TextNode) {\n const fontSizePx = node.fontSize ?? 24;\n const fontFamily = node.fontFamily ?? \"Noto Sans JP\";\n const lineHeight = node.lineHeight ?? 1.3;\n\n return {\n ...
|
|
1
|
+
{"version":3,"file":"textOptions.js","names":[],"sources":["../../src/renderPptx/textOptions.ts"],"sourcesContent":["import type {\n PositionedNode,\n TextGlow,\n TextOutline,\n Underline,\n UnderlineStyle,\n} from \"../types.ts\";\nimport { pxToIn, pxToPt } from \"./units.ts\";\nimport { getContentAreaIn } from \"./utils/contentArea.ts\";\nimport { measureFontVerticalMetricsRatio } from \"../calcYogaLayout/fontLoader.ts\";\n\ntype TextNode = Extract<PositionedNode, { type: \"text\" }>;\n\n/**\n * underline プロパティを pptxgenjs 形式に変換する\n */\nexport function convertUnderline(\n underline: Underline | undefined,\n): { style?: UnderlineStyle; color?: string } | undefined {\n if (underline === undefined) return undefined;\n if (underline === false) return undefined;\n if (underline === true) return { style: \"sng\" };\n return {\n style: underline.style,\n color: underline.color,\n };\n}\n\n/**\n * strike プロパティを pptxgenjs 形式に変換する\n */\nexport function convertStrike(\n strike: boolean | undefined,\n): \"sngStrike\" | undefined {\n if (strike) return \"sngStrike\";\n return undefined;\n}\n\n/**\n * run と親 (node / cell / li) の subscript / superscript を相互排他に解決する。\n * OOXML の baseline 値で表現される性質上、両方 true は意味を持たないため、\n * run 側で sub/sup のいずれかが指定された場合は親の指定をまるごと無効化する\n * (片方だけ指定して反対側を親から漏らさない)。\n */\nexport function resolveSubSup(\n run: { subscript?: boolean; superscript?: boolean },\n parent: { subscript?: boolean; superscript?: boolean },\n): { subscript: boolean | undefined; superscript: boolean | undefined } {\n if (run.subscript !== undefined || run.superscript !== undefined) {\n return { subscript: run.subscript, superscript: run.superscript };\n }\n return { subscript: parent.subscript, superscript: parent.superscript };\n}\n\n/**\n * glow プロパティを pptxgenjs 形式に変換する\n * size はユーザー入力 px、pptxgenjs の glow.size は pt。\n * pptxgenjs は省略時デフォルトを Object.assign で合成するため undefined を\n * 渡すとデフォルトが消える。ここで pom 側のデフォルトを確定させる。\n */\nexport function convertGlow(\n glow: TextGlow | undefined,\n): { size: number; opacity: number; color: string } | undefined {\n if (glow === undefined) return undefined;\n return {\n size: pxToPt(glow.size ?? 8),\n opacity: glow.opacity ?? 0.75,\n color: glow.color ?? \"FFFFFF\",\n };\n}\n\n/**\n * outline プロパティを pptxgenjs 形式に変換する\n * size はユーザー入力 px、pptxgenjs の outline.size は pt\n */\nexport function convertOutline(\n outline: TextOutline | undefined,\n): { size: number; color: string } | undefined {\n if (outline === undefined) return undefined;\n return {\n size: pxToPt(outline.size ?? 1),\n color: outline.color ?? \"FFFFFF\",\n };\n}\n\n/**\n * 行内でグリフ ink が上下中央に来るようにするための描画 y 補正量 (px)\n *\n * レンダラ (LibreOffice / PowerPoint) は固定行送り (spcPts) のとき\n * baseline を「行下端 − winDescent × fontSize」に置くため、グリフ ink\n * (typoAscender + typoDescender) は行内で下寄りになり、同じ gap でも\n * テキスト上側の視覚余白が広く下側が狭く見える (#846)。\n * baseline の実位置と「ink を行内中央に置いたときの baseline 位置」の\n * 差分を返し、呼び出し側でテキストフレームをその分だけ上へずらす。\n */\nexport function calcGlyphCenteringShiftPx(\n fontSizePx: number,\n lineHeight: number,\n fontWeight: \"normal\" | \"bold\",\n): number {\n const lineHeightPx = fontSizePx * lineHeight;\n const metrics = measureFontVerticalMetricsRatio(fontWeight);\n const baselineFromTopPx = lineHeightPx - metrics.winDescent * fontSizePx;\n const inkHeightPx =\n (metrics.typoAscender + metrics.typoDescender) * fontSizePx;\n const centeredBaselineFromTopPx =\n (lineHeightPx - inkHeightPx) / 2 + metrics.typoAscender * fontSizePx;\n return baselineFromTopPx - centeredBaselineFromTopPx;\n}\n\nexport function createTextOptions(node: TextNode) {\n const fontSizePx = node.fontSize ?? 24;\n const fontFamily = node.fontFamily ?? \"Noto Sans JP\";\n const lineHeight = node.lineHeight ?? 1.3;\n\n const area = getContentAreaIn(node);\n const glyphShiftPx = calcGlyphCenteringShiftPx(\n fontSizePx,\n lineHeight,\n node.bold ? \"bold\" : \"normal\",\n );\n\n return {\n ...area,\n y: area.y - pxToIn(glyphShiftPx),\n fontSize: pxToPt(fontSizePx),\n fontFace: fontFamily,\n align: node.textAlign ?? \"left\",\n valign: \"top\" as const,\n margin: 0,\n // 行送りを固定値 (spcPts) で指定する。倍率指定 (spcPct) はレンダラがフォント\n // メトリクスに対する倍率として解釈するため、計測高さ (行数 × fontSize ×\n // lineHeight) と実描画の行高さが一致せず、グリフがボックスからはみ出して\n // 上下余白が非対称になる (#846)\n lineSpacing: pxToPt(fontSizePx * lineHeight),\n rotate: node.rotate,\n color: node.color,\n bold: node.bold,\n italic: node.italic,\n underline: convertUnderline(node.underline),\n strike: convertStrike(node.strike),\n subscript: node.subscript,\n superscript: node.superscript,\n highlight: node.highlight,\n glow: convertGlow(node.glow),\n outline: convertOutline(node.outline),\n // letterSpacing はユーザー入力 px、pptxgenjs の charSpacing は pt\n charSpacing:\n node.letterSpacing !== undefined ? pxToPt(node.letterSpacing) : undefined,\n };\n}\n"],"mappings":";;;;;;;AAgBA,SAAgB,iBACd,WACwD;CACxD,IAAI,cAAc,KAAA,GAAW,OAAO,KAAA;CACpC,IAAI,cAAc,OAAO,OAAO,KAAA;CAChC,IAAI,cAAc,MAAM,OAAO,EAAE,OAAO,MAAM;CAC9C,OAAO;EACL,OAAO,UAAU;EACjB,OAAO,UAAU;CACnB;AACF;;;;AAKA,SAAgB,cACd,QACyB;CACzB,IAAI,QAAQ,OAAO;AAErB;;;;;;;AAQA,SAAgB,cACd,KACA,QACsE;CACtE,IAAI,IAAI,cAAc,KAAA,KAAa,IAAI,gBAAgB,KAAA,GACrD,OAAO;EAAE,WAAW,IAAI;EAAW,aAAa,IAAI;CAAY;CAElE,OAAO;EAAE,WAAW,OAAO;EAAW,aAAa,OAAO;CAAY;AACxE;;;;;;;AAQA,SAAgB,YACd,MAC8D;CAC9D,IAAI,SAAS,KAAA,GAAW,OAAO,KAAA;CAC/B,OAAO;EACL,MAAM,OAAO,KAAK,QAAQ,CAAC;EAC3B,SAAS,KAAK,WAAW;EACzB,OAAO,KAAK,SAAS;CACvB;AACF;;;;;AAMA,SAAgB,eACd,SAC6C;CAC7C,IAAI,YAAY,KAAA,GAAW,OAAO,KAAA;CAClC,OAAO;EACL,MAAM,OAAO,QAAQ,QAAQ,CAAC;EAC9B,OAAO,QAAQ,SAAS;CAC1B;AACF;;;;;;;;;;;AAYA,SAAgB,0BACd,YACA,YACA,YACQ;CACR,MAAM,eAAe,aAAa;CAClC,MAAM,UAAU,gCAAgC,UAAU;CAM1D,OAL0B,eAAe,QAAQ,aAAa,eAI3D,gBAFA,QAAQ,eAAe,QAAQ,iBAAiB,cAElB,IAAI,QAAQ,eAAe;AAE9D;AAEA,SAAgB,kBAAkB,MAAgB;CAChD,MAAM,aAAa,KAAK,YAAY;CACpC,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,aAAa,KAAK,cAAc;CAEtC,MAAM,OAAO,iBAAiB,IAAI;CAClC,MAAM,eAAe,0BACnB,YACA,YACA,KAAK,OAAO,SAAS,QACvB;CAEA,OAAO;EACL,GAAG;EACH,GAAG,KAAK,IAAI,OAAO,YAAY;EAC/B,UAAU,OAAO,UAAU;EAC3B,UAAU;EACV,OAAO,KAAK,aAAa;EACzB,QAAQ;EACR,QAAQ;EAKR,aAAa,OAAO,aAAa,UAAU;EAC3C,QAAQ,KAAK;EACb,OAAO,KAAK;EACZ,MAAM,KAAK;EACX,QAAQ,KAAK;EACb,WAAW,iBAAiB,KAAK,SAAS;EAC1C,QAAQ,cAAc,KAAK,MAAM;EACjC,WAAW,KAAK;EAChB,aAAa,KAAK;EAClB,WAAW,KAAK;EAChB,MAAM,YAAY,KAAK,IAAI;EAC3B,SAAS,eAAe,KAAK,OAAO;EAEpC,aACE,KAAK,kBAAkB,KAAA,IAAY,OAAO,KAAK,aAAa,IAAI,KAAA;CACpE;AACF"}
|
package/dist/types.d.ts
CHANGED
|
@@ -291,6 +291,8 @@ declare const textNodeSchema: z.ZodObject<{
|
|
|
291
291
|
italic: z.ZodOptional<z.ZodBoolean>;
|
|
292
292
|
underline: z.ZodOptional<z.ZodBoolean>;
|
|
293
293
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
294
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
295
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
294
296
|
highlight: z.ZodOptional<z.ZodString>;
|
|
295
297
|
color: z.ZodOptional<z.ZodString>;
|
|
296
298
|
href: z.ZodOptional<z.ZodString>;
|
|
@@ -328,6 +330,8 @@ declare const textNodeSchema: z.ZodObject<{
|
|
|
328
330
|
color: z.ZodOptional<z.ZodString>;
|
|
329
331
|
}, z.core.$strip>]>>;
|
|
330
332
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
333
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
334
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
331
335
|
highlight: z.ZodOptional<z.ZodString>;
|
|
332
336
|
fontFamily: z.ZodOptional<z.ZodString>;
|
|
333
337
|
lineHeight: z.ZodOptional<z.ZodNumber>;
|
|
@@ -480,6 +484,8 @@ declare const ulNodeSchema: z.ZodObject<{
|
|
|
480
484
|
italic: z.ZodOptional<z.ZodBoolean>;
|
|
481
485
|
underline: z.ZodOptional<z.ZodBoolean>;
|
|
482
486
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
487
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
488
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
483
489
|
highlight: z.ZodOptional<z.ZodString>;
|
|
484
490
|
color: z.ZodOptional<z.ZodString>;
|
|
485
491
|
href: z.ZodOptional<z.ZodString>;
|
|
@@ -509,6 +515,8 @@ declare const ulNodeSchema: z.ZodObject<{
|
|
|
509
515
|
color: z.ZodOptional<z.ZodString>;
|
|
510
516
|
}, z.core.$strip>]>>;
|
|
511
517
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
518
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
519
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
512
520
|
highlight: z.ZodOptional<z.ZodString>;
|
|
513
521
|
color: z.ZodOptional<z.ZodString>;
|
|
514
522
|
fontSize: z.ZodOptional<z.ZodNumber>;
|
|
@@ -544,6 +552,8 @@ declare const ulNodeSchema: z.ZodObject<{
|
|
|
544
552
|
color: z.ZodOptional<z.ZodString>;
|
|
545
553
|
}, z.core.$strip>]>>;
|
|
546
554
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
555
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
556
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
547
557
|
highlight: z.ZodOptional<z.ZodString>;
|
|
548
558
|
fontFamily: z.ZodOptional<z.ZodString>;
|
|
549
559
|
lineHeight: z.ZodOptional<z.ZodNumber>;
|
|
@@ -686,6 +696,8 @@ declare const olNodeSchema: z.ZodObject<{
|
|
|
686
696
|
italic: z.ZodOptional<z.ZodBoolean>;
|
|
687
697
|
underline: z.ZodOptional<z.ZodBoolean>;
|
|
688
698
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
699
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
700
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
689
701
|
highlight: z.ZodOptional<z.ZodString>;
|
|
690
702
|
color: z.ZodOptional<z.ZodString>;
|
|
691
703
|
href: z.ZodOptional<z.ZodString>;
|
|
@@ -715,6 +727,8 @@ declare const olNodeSchema: z.ZodObject<{
|
|
|
715
727
|
color: z.ZodOptional<z.ZodString>;
|
|
716
728
|
}, z.core.$strip>]>>;
|
|
717
729
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
730
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
731
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
718
732
|
highlight: z.ZodOptional<z.ZodString>;
|
|
719
733
|
color: z.ZodOptional<z.ZodString>;
|
|
720
734
|
fontSize: z.ZodOptional<z.ZodNumber>;
|
|
@@ -750,6 +764,8 @@ declare const olNodeSchema: z.ZodObject<{
|
|
|
750
764
|
color: z.ZodOptional<z.ZodString>;
|
|
751
765
|
}, z.core.$strip>]>>;
|
|
752
766
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
767
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
768
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
753
769
|
highlight: z.ZodOptional<z.ZodString>;
|
|
754
770
|
fontFamily: z.ZodOptional<z.ZodString>;
|
|
755
771
|
lineHeight: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1338,6 +1354,8 @@ declare const tableNodeSchema: z.ZodObject<{
|
|
|
1338
1354
|
italic: z.ZodOptional<z.ZodBoolean>;
|
|
1339
1355
|
underline: z.ZodOptional<z.ZodBoolean>;
|
|
1340
1356
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
1357
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
1358
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
1341
1359
|
highlight: z.ZodOptional<z.ZodString>;
|
|
1342
1360
|
color: z.ZodOptional<z.ZodString>;
|
|
1343
1361
|
href: z.ZodOptional<z.ZodString>;
|
|
@@ -1369,6 +1387,8 @@ declare const tableNodeSchema: z.ZodObject<{
|
|
|
1369
1387
|
color: z.ZodOptional<z.ZodString>;
|
|
1370
1388
|
}, z.core.$strip>]>>;
|
|
1371
1389
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
1390
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
1391
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
1372
1392
|
highlight: z.ZodOptional<z.ZodString>;
|
|
1373
1393
|
fontFamily: z.ZodOptional<z.ZodString>;
|
|
1374
1394
|
textAlign: z.ZodOptional<z.ZodEnum<{
|
|
@@ -1758,6 +1778,8 @@ declare const shapeNodeSchema: z.ZodObject<{
|
|
|
1758
1778
|
color: z.ZodOptional<z.ZodString>;
|
|
1759
1779
|
}, z.core.$strip>]>>;
|
|
1760
1780
|
strike: z.ZodOptional<z.ZodBoolean>;
|
|
1781
|
+
subscript: z.ZodOptional<z.ZodBoolean>;
|
|
1782
|
+
superscript: z.ZodOptional<z.ZodBoolean>;
|
|
1761
1783
|
highlight: z.ZodOptional<z.ZodString>;
|
|
1762
1784
|
fontFamily: z.ZodOptional<z.ZodString>;
|
|
1763
1785
|
lineHeight: z.ZodOptional<z.ZodNumber>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;cA4GM,gBAAA,EAAgB,CAAA,CAAA,OAAA;;;;;;cAMhB,cAAA,EAAc,CAAA,CAAA,OAAA;;;;;cAEd,oBAAA,EAAoB,CAAA,CAAA,OAAA;;;;;;;;KAiMd,UAAA,GAAa,CAAA,CAAE,KAAK,QAAQ,gBAAA;AAAA,KAC5B,QAAA,GAAW,CAAA,CAAE,KAAK,QAAQ,cAAA;AAAA,KAC1B,cAAA,GAAiB,CAAA,CAAE,KAAK,QAAQ,oBAAA;AAAA,cAuBtC,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+BlB,WAAA,GAAc,CAAA,CAAE,KAAK,QAAQ,iBAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -337,6 +337,8 @@ const textRunSchema = z.object({
|
|
|
337
337
|
italic: z.boolean().optional(),
|
|
338
338
|
underline: z.boolean().optional(),
|
|
339
339
|
strike: z.boolean().optional(),
|
|
340
|
+
subscript: z.boolean().optional(),
|
|
341
|
+
superscript: z.boolean().optional(),
|
|
340
342
|
highlight: z.string().optional(),
|
|
341
343
|
color: z.string().optional(),
|
|
342
344
|
href: z.string().optional(),
|
|
@@ -359,6 +361,8 @@ const textNodeSchema = basePOMNodeSchema.extend({
|
|
|
359
361
|
italic: z.boolean().optional(),
|
|
360
362
|
underline: underlineSchema.optional(),
|
|
361
363
|
strike: z.boolean().optional(),
|
|
364
|
+
subscript: z.boolean().optional(),
|
|
365
|
+
superscript: z.boolean().optional(),
|
|
362
366
|
highlight: z.string().optional(),
|
|
363
367
|
fontFamily: z.string().optional(),
|
|
364
368
|
lineHeight: z.number().optional(),
|
|
@@ -373,6 +377,8 @@ const liNodeSchema = z.object({
|
|
|
373
377
|
italic: z.boolean().optional(),
|
|
374
378
|
underline: underlineSchema.optional(),
|
|
375
379
|
strike: z.boolean().optional(),
|
|
380
|
+
subscript: z.boolean().optional(),
|
|
381
|
+
superscript: z.boolean().optional(),
|
|
376
382
|
highlight: z.string().optional(),
|
|
377
383
|
color: z.string().optional(),
|
|
378
384
|
fontSize: z.number().optional(),
|
|
@@ -392,6 +398,8 @@ const ulNodeSchema = basePOMNodeSchema.extend({
|
|
|
392
398
|
italic: z.boolean().optional(),
|
|
393
399
|
underline: underlineSchema.optional(),
|
|
394
400
|
strike: z.boolean().optional(),
|
|
401
|
+
subscript: z.boolean().optional(),
|
|
402
|
+
superscript: z.boolean().optional(),
|
|
395
403
|
highlight: z.string().optional(),
|
|
396
404
|
fontFamily: z.string().optional(),
|
|
397
405
|
lineHeight: z.number().optional()
|
|
@@ -410,6 +418,8 @@ const olNodeSchema = basePOMNodeSchema.extend({
|
|
|
410
418
|
italic: z.boolean().optional(),
|
|
411
419
|
underline: underlineSchema.optional(),
|
|
412
420
|
strike: z.boolean().optional(),
|
|
421
|
+
subscript: z.boolean().optional(),
|
|
422
|
+
superscript: z.boolean().optional(),
|
|
413
423
|
highlight: z.string().optional(),
|
|
414
424
|
fontFamily: z.string().optional(),
|
|
415
425
|
lineHeight: z.number().optional(),
|
|
@@ -466,6 +476,8 @@ const tableCellSchema = z.object({
|
|
|
466
476
|
italic: z.boolean().optional(),
|
|
467
477
|
underline: underlineSchema.optional(),
|
|
468
478
|
strike: z.boolean().optional(),
|
|
479
|
+
subscript: z.boolean().optional(),
|
|
480
|
+
superscript: z.boolean().optional(),
|
|
469
481
|
highlight: z.string().optional(),
|
|
470
482
|
fontFamily: z.string().optional(),
|
|
471
483
|
textAlign: z.enum([
|
|
@@ -507,6 +519,8 @@ const shapeNodeSchema = basePOMNodeSchema.extend({
|
|
|
507
519
|
italic: z.boolean().optional(),
|
|
508
520
|
underline: underlineSchema.optional(),
|
|
509
521
|
strike: z.boolean().optional(),
|
|
522
|
+
subscript: z.boolean().optional(),
|
|
523
|
+
superscript: z.boolean().optional(),
|
|
510
524
|
highlight: z.string().optional(),
|
|
511
525
|
fontFamily: z.string().optional(),
|
|
512
526
|
lineHeight: z.number().optional()
|