@deckflow/deckuse-pptx 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -0
- package/dist/adapter.d.ts +54 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +189 -0
- package/dist/adapter.js.map +1 -0
- package/dist/elements.d.ts +9 -0
- package/dist/elements.d.ts.map +1 -0
- package/dist/elements.js +105 -0
- package/dist/elements.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer.d.ts +15 -0
- package/dist/indexer.d.ts.map +1 -0
- package/dist/indexer.js +235 -0
- package/dist/indexer.js.map +1 -0
- package/dist/mutations.d.ts +5 -0
- package/dist/mutations.d.ts.map +1 -0
- package/dist/mutations.js +206 -0
- package/dist/mutations.js.map +1 -0
- package/dist/picture.d.ts +25 -0
- package/dist/picture.d.ts.map +1 -0
- package/dist/picture.js +118 -0
- package/dist/picture.js.map +1 -0
- package/dist/properties.d.ts +8 -0
- package/dist/properties.d.ts.map +1 -0
- package/dist/properties.js +367 -0
- package/dist/properties.js.map +1 -0
- package/dist/slides.d.ts +6 -0
- package/dist/slides.d.ts.map +1 -0
- package/dist/slides.js +115 -0
- package/dist/slides.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/workspace.d.ts +15 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +63 -0
- package/dist/workspace.js.map +1 -0
- package/dist/xml.d.ts +26 -0
- package/dist/xml.d.ts.map +1 -0
- package/dist/xml.js +84 -0
- package/dist/xml.js.map +1 -0
- package/package.json +27 -0
package/dist/picture.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { extname, posix } from 'node:path';
|
|
3
|
+
import { err, ok } from '@deckflow/deckuse-core';
|
|
4
|
+
import { OpcArchive } from '@deckflow/deckuse-opc';
|
|
5
|
+
import { NS, REL, attr, descendants, first } from './xml.js';
|
|
6
|
+
const mediaType = (extension) => extension === '.png'
|
|
7
|
+
? 'image/png'
|
|
8
|
+
: extension === '.gif'
|
|
9
|
+
? 'image/gif'
|
|
10
|
+
: extension === '.jpg' || extension === '.jpeg'
|
|
11
|
+
? 'image/jpeg'
|
|
12
|
+
: 'application/octet-stream';
|
|
13
|
+
const nextMedia = (archive, ext) => {
|
|
14
|
+
let n = 1;
|
|
15
|
+
while (archive.getPart(`/ppt/media/image${String(n)}${ext}`))
|
|
16
|
+
n++;
|
|
17
|
+
return `/ppt/media/image${String(n)}${ext}`;
|
|
18
|
+
};
|
|
19
|
+
const nextRid = (rels) => {
|
|
20
|
+
let n = 1;
|
|
21
|
+
const ids = new Set(rels.map((r) => r.id));
|
|
22
|
+
while (ids.has(`rId${String(n)}`))
|
|
23
|
+
n++;
|
|
24
|
+
return `rId${String(n)}`;
|
|
25
|
+
};
|
|
26
|
+
const relativeTarget = (source, target) => posix.relative(posix.dirname(source), target).replace(/^\//, '');
|
|
27
|
+
export const isPartReferenced = (archive, target) => [...archive.relationships.values()].some((items) => items.some((rel) => rel.resolvedTarget === target));
|
|
28
|
+
export const cleanupUnreferencedPart = (archive, target) => {
|
|
29
|
+
if (isPartReferenced(archive, target))
|
|
30
|
+
return false;
|
|
31
|
+
return archive.deletePart(target);
|
|
32
|
+
};
|
|
33
|
+
const embedIdUsed = (doc, rid) => descendants(doc, 'blip').some((blip) => {
|
|
34
|
+
const embed = blip.getAttributeNS(NS.r, 'embed') ?? attr(blip, 'r:embed');
|
|
35
|
+
return embed === rid;
|
|
36
|
+
});
|
|
37
|
+
export const pictureEmbedId = (node) => {
|
|
38
|
+
const blip = first(node, 'blip');
|
|
39
|
+
return blip?.getAttributeNS(NS.r, 'embed') ?? attr(blip, 'r:embed') ?? undefined;
|
|
40
|
+
};
|
|
41
|
+
export async function loadPictureBytes(input) {
|
|
42
|
+
if (typeof input.path === 'string') {
|
|
43
|
+
try {
|
|
44
|
+
const data = await readFile(input.path);
|
|
45
|
+
return ok({ data, ext: extname(input.path).toLowerCase() || '.png' });
|
|
46
|
+
}
|
|
47
|
+
catch (cause) {
|
|
48
|
+
return err('IO_ERROR', cause instanceof Error ? cause.message : 'Failed to read picture path');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (typeof input.base64 === 'string') {
|
|
52
|
+
const data = Buffer.from(input.base64.replace(/^data:[^,]+,/, ''), 'base64');
|
|
53
|
+
const match = /^data:image\/(png|jpeg|gif)/.exec(input.base64);
|
|
54
|
+
const ext = match?.[1] ? (match[1] === 'jpeg' ? '.jpg' : `.${match[1]}`) : '.png';
|
|
55
|
+
return ok({ data, ext });
|
|
56
|
+
}
|
|
57
|
+
return err('INVALID_COMMAND', 'Picture requires path or base64');
|
|
58
|
+
}
|
|
59
|
+
export async function addPicturePart(archive, slidePart, input) {
|
|
60
|
+
const loaded = await loadPictureBytes(input);
|
|
61
|
+
if (!loaded.ok)
|
|
62
|
+
return loaded;
|
|
63
|
+
const target = nextMedia(archive, loaded.value.ext);
|
|
64
|
+
archive.setPart(target, loaded.value.data, mediaType(loaded.value.ext));
|
|
65
|
+
const rels = [...archive.getRelationships(slidePart)];
|
|
66
|
+
const rid = nextRid(rels);
|
|
67
|
+
rels.push({
|
|
68
|
+
id: rid,
|
|
69
|
+
type: REL.image,
|
|
70
|
+
target: relativeTarget(slidePart, target),
|
|
71
|
+
external: false,
|
|
72
|
+
resolvedTarget: target,
|
|
73
|
+
});
|
|
74
|
+
archive.setRelationships(slidePart, rels);
|
|
75
|
+
return ok({ target, rid });
|
|
76
|
+
}
|
|
77
|
+
export function replacePictureMedia(archive, slidePart, pictureNode, data, ext) {
|
|
78
|
+
const rid = pictureEmbedId(pictureNode);
|
|
79
|
+
if (!rid)
|
|
80
|
+
return err('INVALID_COMMAND', 'Picture has no embedded image relationship (r:embed)');
|
|
81
|
+
const rels = [...archive.getRelationships(slidePart)];
|
|
82
|
+
const index = rels.findIndex((rel) => rel.id === rid);
|
|
83
|
+
const current = index >= 0 ? rels[index] : undefined;
|
|
84
|
+
if (!current)
|
|
85
|
+
return err('INVALID_COMMAND', `Missing image relationship ${rid}`);
|
|
86
|
+
if (current.external || !current.resolvedTarget)
|
|
87
|
+
return err('INVALID_COMMAND', 'Cannot replace externally linked pictures');
|
|
88
|
+
const previous = current.resolvedTarget;
|
|
89
|
+
const previousExt = extname(previous).toLowerCase();
|
|
90
|
+
if (previousExt === ext) {
|
|
91
|
+
archive.setPart(previous, data, mediaType(ext));
|
|
92
|
+
return ok({ mediaPart: previous });
|
|
93
|
+
}
|
|
94
|
+
const target = nextMedia(archive, ext);
|
|
95
|
+
archive.setPart(target, data, mediaType(ext));
|
|
96
|
+
rels[index] = {
|
|
97
|
+
...current,
|
|
98
|
+
target: relativeTarget(slidePart, target),
|
|
99
|
+
resolvedTarget: target,
|
|
100
|
+
};
|
|
101
|
+
archive.setRelationships(slidePart, rels);
|
|
102
|
+
cleanupUnreferencedPart(archive, previous);
|
|
103
|
+
return ok({ mediaPart: target });
|
|
104
|
+
}
|
|
105
|
+
export function detachPictureAndCleanup(archive, slidePart, doc, pictureNode) {
|
|
106
|
+
const rid = pictureEmbedId(pictureNode);
|
|
107
|
+
const rel = rid
|
|
108
|
+
? archive.getRelationships(slidePart).find((item) => item.id === rid)
|
|
109
|
+
: undefined;
|
|
110
|
+
const mediaPart = rel?.resolvedTarget;
|
|
111
|
+
pictureNode.parentNode?.removeChild(pictureNode);
|
|
112
|
+
if (rid && !embedIdUsed(doc, rid)) {
|
|
113
|
+
archive.setRelationships(slidePart, archive.getRelationships(slidePart).filter((item) => item.id !== rid));
|
|
114
|
+
}
|
|
115
|
+
if (mediaPart)
|
|
116
|
+
cleanupUnreferencedPart(archive, mediaPart);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=picture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picture.js","sourceRoot":"","sources":["../src/picture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Result } from '@deckflow/deckuse-core';
|
|
2
|
+
import type { Element } from '@xmldom/xmldom';
|
|
3
|
+
export declare function applyShapeProperties(node: Element, properties: Record<string, unknown>): Result<{
|
|
4
|
+
applied: string[];
|
|
5
|
+
}>;
|
|
6
|
+
export declare function assertChartProperties(properties: Record<string, unknown>): Result<void>;
|
|
7
|
+
export declare const shapePropertyKeys: string[];
|
|
8
|
+
//# sourceMappingURL=properties.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AA+N9C,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+G/B;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAKvF;AAED,eAAO,MAAM,iBAAiB,UAAyB,CAAC"}
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { err, ok } from '@deckflow/deckuse-core';
|
|
2
|
+
import { setColor } from './elements.js';
|
|
3
|
+
import { NS, children, descendants, first, setNodeText } from './xml.js';
|
|
4
|
+
const STROKE_ALIASES = ['stroke', 'border', 'outline', 'line'];
|
|
5
|
+
const FONT_FAMILY_ALIASES = ['fontFamily', 'font', 'typeface'];
|
|
6
|
+
const FONT_SIZE_ALIASES = ['fontSize', 'size'];
|
|
7
|
+
const TEXT_COLOR_ALIASES = ['textColor', 'fontColor'];
|
|
8
|
+
const SHAPE_KEYS = new Set([
|
|
9
|
+
'text',
|
|
10
|
+
'name',
|
|
11
|
+
'color',
|
|
12
|
+
'from',
|
|
13
|
+
'fill',
|
|
14
|
+
'hidden',
|
|
15
|
+
'bold',
|
|
16
|
+
'italic',
|
|
17
|
+
'underline',
|
|
18
|
+
...STROKE_ALIASES,
|
|
19
|
+
...FONT_FAMILY_ALIASES,
|
|
20
|
+
...FONT_SIZE_ALIASES,
|
|
21
|
+
...TEXT_COLOR_ALIASES,
|
|
22
|
+
]);
|
|
23
|
+
const CHART_KEYS = new Set(['title', 'series', 'text']);
|
|
24
|
+
const EMU_PER_PT = 12700;
|
|
25
|
+
const DEFAULT_STROKE_PT = 1;
|
|
26
|
+
const normalizeColor = (value) => {
|
|
27
|
+
const hex = value.trim().replace(/^#/, '').toUpperCase();
|
|
28
|
+
if (!/^[0-9A-F]{6}$/.test(hex))
|
|
29
|
+
throw new Error(`Invalid color: ${value}`);
|
|
30
|
+
return hex;
|
|
31
|
+
};
|
|
32
|
+
const isNone = (value) => {
|
|
33
|
+
if (value === null || value === false || value === 'none')
|
|
34
|
+
return true;
|
|
35
|
+
return typeof value === 'object' && 'type' in value && value.type === 'none';
|
|
36
|
+
};
|
|
37
|
+
const pickAlias = (properties, aliases) => {
|
|
38
|
+
for (const key of aliases)
|
|
39
|
+
if (key in properties)
|
|
40
|
+
return { key, value: properties[key] };
|
|
41
|
+
return undefined;
|
|
42
|
+
};
|
|
43
|
+
const directChild = (node, localName) => children(node).find((child) => child.localName === localName);
|
|
44
|
+
const removeDirectChildren = (node, localNames) => {
|
|
45
|
+
for (const child of [...children(node)])
|
|
46
|
+
if (child.localName && localNames.includes(child.localName))
|
|
47
|
+
node.removeChild(child);
|
|
48
|
+
};
|
|
49
|
+
const insertAfter = (parent, node, afterLocalNames) => {
|
|
50
|
+
const kids = children(parent);
|
|
51
|
+
let anchor;
|
|
52
|
+
for (const child of kids)
|
|
53
|
+
if (child.localName && afterLocalNames.includes(child.localName))
|
|
54
|
+
anchor = child;
|
|
55
|
+
if (anchor?.nextSibling)
|
|
56
|
+
parent.insertBefore(node, anchor.nextSibling);
|
|
57
|
+
else if (anchor)
|
|
58
|
+
parent.appendChild(node);
|
|
59
|
+
else if (kids[0])
|
|
60
|
+
parent.insertBefore(node, kids[0]);
|
|
61
|
+
else
|
|
62
|
+
parent.appendChild(node);
|
|
63
|
+
};
|
|
64
|
+
const ensureSpPr = (node) => {
|
|
65
|
+
const existing = directChild(node, 'spPr');
|
|
66
|
+
if (existing)
|
|
67
|
+
return existing;
|
|
68
|
+
const doc = node.ownerDocument;
|
|
69
|
+
if (!doc)
|
|
70
|
+
throw new Error('Element has no document');
|
|
71
|
+
const prefix = node.prefix ? `${node.prefix}:` : 'p:';
|
|
72
|
+
const spPr = doc.createElementNS(NS.p, `${prefix}spPr`);
|
|
73
|
+
const after = children(node).find((child) => child.localName?.startsWith('nv'));
|
|
74
|
+
if (after?.nextSibling)
|
|
75
|
+
node.insertBefore(spPr, after.nextSibling);
|
|
76
|
+
else if (after)
|
|
77
|
+
node.appendChild(spPr);
|
|
78
|
+
else if (node.firstChild)
|
|
79
|
+
node.insertBefore(spPr, node.firstChild);
|
|
80
|
+
else
|
|
81
|
+
node.appendChild(spPr);
|
|
82
|
+
return spPr;
|
|
83
|
+
};
|
|
84
|
+
const solidFillXml = (doc, color) => {
|
|
85
|
+
const solidFill = doc.createElementNS(NS.a, 'a:solidFill');
|
|
86
|
+
const srgb = doc.createElementNS(NS.a, 'a:srgbClr');
|
|
87
|
+
srgb.setAttribute('val', color);
|
|
88
|
+
solidFill.appendChild(srgb);
|
|
89
|
+
return solidFill;
|
|
90
|
+
};
|
|
91
|
+
const FILL_LOCAL_NAMES = [
|
|
92
|
+
'noFill',
|
|
93
|
+
'solidFill',
|
|
94
|
+
'gradFill',
|
|
95
|
+
'blipFill',
|
|
96
|
+
'pattFill',
|
|
97
|
+
'grpFill',
|
|
98
|
+
];
|
|
99
|
+
const setFill = (spPr, value) => {
|
|
100
|
+
const doc = spPr.ownerDocument;
|
|
101
|
+
if (!doc)
|
|
102
|
+
throw new Error('Element has no document');
|
|
103
|
+
removeDirectChildren(spPr, FILL_LOCAL_NAMES);
|
|
104
|
+
if (isNone(value)) {
|
|
105
|
+
insertAfter(spPr, doc.createElementNS(NS.a, 'a:noFill'), ['xfrm', 'prstGeom', 'custGeom']);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
let color;
|
|
109
|
+
if (typeof value === 'string')
|
|
110
|
+
color = normalizeColor(value);
|
|
111
|
+
else if (typeof value === 'object' && value !== null) {
|
|
112
|
+
const record = value;
|
|
113
|
+
if (record['type'] === 'solid' || record['color'] !== undefined) {
|
|
114
|
+
if (typeof record['color'] !== 'string')
|
|
115
|
+
throw new Error('fill.color must be a hex string');
|
|
116
|
+
color = normalizeColor(record['color']);
|
|
117
|
+
}
|
|
118
|
+
else
|
|
119
|
+
throw new Error('Unsupported fill value');
|
|
120
|
+
}
|
|
121
|
+
else
|
|
122
|
+
throw new Error('Unsupported fill value');
|
|
123
|
+
insertAfter(spPr, solidFillXml(doc, color), ['xfrm', 'prstGeom', 'custGeom']);
|
|
124
|
+
};
|
|
125
|
+
const setStroke = (spPr, value) => {
|
|
126
|
+
const doc = spPr.ownerDocument;
|
|
127
|
+
if (!doc)
|
|
128
|
+
throw new Error('Element has no document');
|
|
129
|
+
removeDirectChildren(spPr, ['ln']);
|
|
130
|
+
if (isNone(value)) {
|
|
131
|
+
const ln = doc.createElementNS(NS.a, 'a:ln');
|
|
132
|
+
ln.appendChild(doc.createElementNS(NS.a, 'a:noFill'));
|
|
133
|
+
insertAfter(spPr, ln, ['xfrm', 'prstGeom', 'custGeom', ...FILL_LOCAL_NAMES]);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
let color = '0000FF';
|
|
137
|
+
let widthPt = DEFAULT_STROKE_PT;
|
|
138
|
+
let dash;
|
|
139
|
+
if (typeof value === 'string')
|
|
140
|
+
color = normalizeColor(value);
|
|
141
|
+
else if (typeof value === 'object' && value !== null) {
|
|
142
|
+
const record = value;
|
|
143
|
+
if (typeof record['color'] === 'string')
|
|
144
|
+
color = normalizeColor(record['color']);
|
|
145
|
+
else if (record['color'] !== undefined)
|
|
146
|
+
throw new Error('stroke.color must be a hex string');
|
|
147
|
+
const width = record['width'] ?? record['widthPt'];
|
|
148
|
+
if (typeof width === 'number' && Number.isFinite(width) && width > 0)
|
|
149
|
+
widthPt = width;
|
|
150
|
+
else if (width !== undefined)
|
|
151
|
+
throw new Error('stroke.width must be a positive number (pt)');
|
|
152
|
+
if (typeof record['dash'] === 'string')
|
|
153
|
+
dash = record['dash'];
|
|
154
|
+
else if (record['dash'] !== undefined)
|
|
155
|
+
throw new Error('stroke.dash must be a string');
|
|
156
|
+
}
|
|
157
|
+
else
|
|
158
|
+
throw new Error('Unsupported stroke value');
|
|
159
|
+
const ln = doc.createElementNS(NS.a, 'a:ln');
|
|
160
|
+
ln.setAttribute('w', String(Math.round(widthPt * EMU_PER_PT)));
|
|
161
|
+
ln.appendChild(solidFillXml(doc, color));
|
|
162
|
+
if (dash) {
|
|
163
|
+
const prstDash = doc.createElementNS(NS.a, 'a:prstDash');
|
|
164
|
+
prstDash.setAttribute('val', dash);
|
|
165
|
+
ln.appendChild(prstDash);
|
|
166
|
+
}
|
|
167
|
+
insertAfter(spPr, ln, ['xfrm', 'prstGeom', 'custGeom', ...FILL_LOCAL_NAMES]);
|
|
168
|
+
};
|
|
169
|
+
const runPropertyTargets = (node) => {
|
|
170
|
+
const doc = node.ownerDocument;
|
|
171
|
+
if (!doc)
|
|
172
|
+
throw new Error('Element has no document');
|
|
173
|
+
const targets = [];
|
|
174
|
+
for (const run of descendants(node, 'r')) {
|
|
175
|
+
// Skip non-text runs that are not under DrawingML text (still OK for ppt shapes).
|
|
176
|
+
let rPr = directChild(run, 'rPr');
|
|
177
|
+
if (!rPr) {
|
|
178
|
+
rPr = doc.createElementNS(NS.a, 'a:rPr');
|
|
179
|
+
if (run.firstChild)
|
|
180
|
+
run.insertBefore(rPr, run.firstChild);
|
|
181
|
+
else
|
|
182
|
+
run.appendChild(rPr);
|
|
183
|
+
}
|
|
184
|
+
targets.push(rPr);
|
|
185
|
+
}
|
|
186
|
+
return targets;
|
|
187
|
+
};
|
|
188
|
+
const setTextColor = (rPr, color) => {
|
|
189
|
+
const doc = rPr.ownerDocument;
|
|
190
|
+
if (!doc)
|
|
191
|
+
throw new Error('Element has no document');
|
|
192
|
+
removeDirectChildren(rPr, FILL_LOCAL_NAMES);
|
|
193
|
+
if (rPr.firstChild)
|
|
194
|
+
rPr.insertBefore(solidFillXml(doc, color), rPr.firstChild);
|
|
195
|
+
else
|
|
196
|
+
rPr.appendChild(solidFillXml(doc, color));
|
|
197
|
+
};
|
|
198
|
+
const setFontFamily = (rPr, family) => {
|
|
199
|
+
const doc = rPr.ownerDocument;
|
|
200
|
+
if (!doc)
|
|
201
|
+
throw new Error('Element has no document');
|
|
202
|
+
for (const kind of ['latin', 'ea', 'cs']) {
|
|
203
|
+
let node = directChild(rPr, kind);
|
|
204
|
+
if (!node) {
|
|
205
|
+
node = doc.createElementNS(NS.a, `a:${kind}`);
|
|
206
|
+
rPr.appendChild(node);
|
|
207
|
+
}
|
|
208
|
+
node.setAttribute('typeface', family);
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
const setBooleanAttr = (el, name, value) => {
|
|
212
|
+
if (value)
|
|
213
|
+
el.setAttribute(name, '1');
|
|
214
|
+
else
|
|
215
|
+
el.removeAttribute(name);
|
|
216
|
+
};
|
|
217
|
+
const setHidden = (node, hidden) => {
|
|
218
|
+
const doc = node.ownerDocument;
|
|
219
|
+
if (!doc)
|
|
220
|
+
throw new Error('Element has no document');
|
|
221
|
+
const existing = directChild(node, 'nvPr') ?? first(node, 'nvPr');
|
|
222
|
+
const nvPr = existing ??
|
|
223
|
+
(() => {
|
|
224
|
+
const created = doc.createElementNS(NS.p, 'p:nvPr');
|
|
225
|
+
const container = directChild(node, 'nvSpPr') ??
|
|
226
|
+
directChild(node, 'nvPicPr') ??
|
|
227
|
+
directChild(node, 'nvCxnSpPr') ??
|
|
228
|
+
directChild(node, 'nvGraphicFramePr');
|
|
229
|
+
if (container)
|
|
230
|
+
container.appendChild(created);
|
|
231
|
+
else
|
|
232
|
+
node.appendChild(created);
|
|
233
|
+
return created;
|
|
234
|
+
})();
|
|
235
|
+
if (hidden)
|
|
236
|
+
nvPr.setAttribute('hidden', '1');
|
|
237
|
+
else
|
|
238
|
+
nvPr.removeAttribute('hidden');
|
|
239
|
+
};
|
|
240
|
+
const unknownKeys = (properties, allowed) => Object.keys(properties).filter((key) => !allowed.has(key));
|
|
241
|
+
export function applyShapeProperties(node, properties) {
|
|
242
|
+
const unexpected = unknownKeys(properties, SHAPE_KEYS);
|
|
243
|
+
if (unexpected.length)
|
|
244
|
+
return err('INVALID_COMMAND', `Unsupported setProperties keys: ${unexpected.join(', ')}`);
|
|
245
|
+
const applied = [];
|
|
246
|
+
try {
|
|
247
|
+
if (typeof properties['text'] === 'string') {
|
|
248
|
+
setNodeText(node, properties['text']);
|
|
249
|
+
applied.push('text');
|
|
250
|
+
}
|
|
251
|
+
else if (properties['text'] !== undefined)
|
|
252
|
+
throw new Error('text must be a string');
|
|
253
|
+
if (typeof properties['name'] === 'string') {
|
|
254
|
+
const pr = first(node, 'cNvPr');
|
|
255
|
+
if (!pr)
|
|
256
|
+
throw new Error('Element has no cNvPr to set name');
|
|
257
|
+
pr.setAttribute('name', properties['name']);
|
|
258
|
+
applied.push('name');
|
|
259
|
+
}
|
|
260
|
+
else if (properties['name'] !== undefined)
|
|
261
|
+
throw new Error('name must be a string');
|
|
262
|
+
if (typeof properties['color'] === 'string') {
|
|
263
|
+
const fromRaw = properties['from'];
|
|
264
|
+
if (fromRaw !== undefined && typeof fromRaw !== 'string')
|
|
265
|
+
throw new Error('from must be a hex string');
|
|
266
|
+
const from = typeof fromRaw === 'string' ? fromRaw : '';
|
|
267
|
+
setColor(node, from, properties['color']);
|
|
268
|
+
applied.push('color');
|
|
269
|
+
}
|
|
270
|
+
else if (properties['color'] !== undefined)
|
|
271
|
+
throw new Error('color must be a hex string');
|
|
272
|
+
else if (properties['from'] !== undefined)
|
|
273
|
+
throw new Error('from requires color');
|
|
274
|
+
if ('fill' in properties) {
|
|
275
|
+
setFill(ensureSpPr(node), properties['fill']);
|
|
276
|
+
applied.push('fill');
|
|
277
|
+
}
|
|
278
|
+
const stroke = pickAlias(properties, STROKE_ALIASES);
|
|
279
|
+
if (stroke) {
|
|
280
|
+
const conflicts = STROKE_ALIASES.filter((key) => key in properties);
|
|
281
|
+
if (conflicts.length > 1)
|
|
282
|
+
throw new Error(`Use only one stroke alias; found: ${conflicts.join(', ')}`);
|
|
283
|
+
setStroke(ensureSpPr(node), stroke.value);
|
|
284
|
+
applied.push(stroke.key);
|
|
285
|
+
}
|
|
286
|
+
const needsRunProps = TEXT_COLOR_ALIASES.some((key) => key in properties) ||
|
|
287
|
+
FONT_FAMILY_ALIASES.some((key) => key in properties) ||
|
|
288
|
+
FONT_SIZE_ALIASES.some((key) => key in properties) ||
|
|
289
|
+
'bold' in properties ||
|
|
290
|
+
'italic' in properties ||
|
|
291
|
+
'underline' in properties;
|
|
292
|
+
if (needsRunProps) {
|
|
293
|
+
const rPrs = runPropertyTargets(node);
|
|
294
|
+
if (rPrs.length === 0)
|
|
295
|
+
throw new Error('Element has no text runs to style');
|
|
296
|
+
const textColor = pickAlias(properties, TEXT_COLOR_ALIASES);
|
|
297
|
+
if (textColor) {
|
|
298
|
+
if (typeof textColor.value !== 'string')
|
|
299
|
+
throw new Error('textColor must be a hex string');
|
|
300
|
+
const color = normalizeColor(textColor.value);
|
|
301
|
+
for (const rPr of rPrs)
|
|
302
|
+
setTextColor(rPr, color);
|
|
303
|
+
applied.push(textColor.key);
|
|
304
|
+
}
|
|
305
|
+
const fontFamily = pickAlias(properties, FONT_FAMILY_ALIASES);
|
|
306
|
+
if (fontFamily) {
|
|
307
|
+
if (typeof fontFamily.value !== 'string' || !fontFamily.value)
|
|
308
|
+
throw new Error('fontFamily must be a non-empty string');
|
|
309
|
+
for (const rPr of rPrs)
|
|
310
|
+
setFontFamily(rPr, fontFamily.value);
|
|
311
|
+
applied.push(fontFamily.key);
|
|
312
|
+
}
|
|
313
|
+
const fontSize = pickAlias(properties, FONT_SIZE_ALIASES);
|
|
314
|
+
if (fontSize) {
|
|
315
|
+
if (typeof fontSize.value !== 'number' || !(fontSize.value > 0))
|
|
316
|
+
throw new Error('fontSize must be a positive number (pt)');
|
|
317
|
+
const sz = String(Math.round(fontSize.value * 100));
|
|
318
|
+
for (const rPr of rPrs)
|
|
319
|
+
rPr.setAttribute('sz', sz);
|
|
320
|
+
applied.push(fontSize.key);
|
|
321
|
+
}
|
|
322
|
+
if ('bold' in properties) {
|
|
323
|
+
if (typeof properties['bold'] !== 'boolean')
|
|
324
|
+
throw new Error('bold must be a boolean');
|
|
325
|
+
for (const rPr of rPrs)
|
|
326
|
+
setBooleanAttr(rPr, 'b', properties['bold']);
|
|
327
|
+
applied.push('bold');
|
|
328
|
+
}
|
|
329
|
+
if ('italic' in properties) {
|
|
330
|
+
if (typeof properties['italic'] !== 'boolean')
|
|
331
|
+
throw new Error('italic must be a boolean');
|
|
332
|
+
for (const rPr of rPrs)
|
|
333
|
+
setBooleanAttr(rPr, 'i', properties['italic']);
|
|
334
|
+
applied.push('italic');
|
|
335
|
+
}
|
|
336
|
+
if ('underline' in properties) {
|
|
337
|
+
if (typeof properties['underline'] !== 'boolean')
|
|
338
|
+
throw new Error('underline must be a boolean');
|
|
339
|
+
for (const rPr of rPrs) {
|
|
340
|
+
if (properties['underline'])
|
|
341
|
+
rPr.setAttribute('u', 'sng');
|
|
342
|
+
else
|
|
343
|
+
rPr.removeAttribute('u');
|
|
344
|
+
}
|
|
345
|
+
applied.push('underline');
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
if ('hidden' in properties) {
|
|
349
|
+
if (typeof properties['hidden'] !== 'boolean')
|
|
350
|
+
throw new Error('hidden must be a boolean');
|
|
351
|
+
setHidden(node, properties['hidden']);
|
|
352
|
+
applied.push('hidden');
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
catch (cause) {
|
|
356
|
+
return err('INVALID_COMMAND', cause instanceof Error ? cause.message : 'Invalid properties');
|
|
357
|
+
}
|
|
358
|
+
return ok({ applied });
|
|
359
|
+
}
|
|
360
|
+
export function assertChartProperties(properties) {
|
|
361
|
+
const unexpected = unknownKeys(properties, CHART_KEYS);
|
|
362
|
+
if (unexpected.length)
|
|
363
|
+
return err('INVALID_COMMAND', `Unsupported chart setProperties keys: ${unexpected.join(', ')}`);
|
|
364
|
+
return ok(undefined);
|
|
365
|
+
}
|
|
366
|
+
export const shapePropertyKeys = [...SHAPE_KEYS].sort();
|
|
367
|
+
//# sourceMappingURL=properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"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"}
|
package/dist/slides.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OpcArchive } from '@deckflow/deckuse-opc';
|
|
2
|
+
export declare function addSlide(archive: OpcArchive, templatePart?: string, layoutPart?: string): string;
|
|
3
|
+
export declare function duplicateSlide(archive: OpcArchive, part: string): string;
|
|
4
|
+
export declare function removeSlide(archive: OpcArchive, part: string): void;
|
|
5
|
+
export declare function slideElementPart(refPart: string): string;
|
|
6
|
+
//# sourceMappingURL=slides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slides.d.ts","sourceRoot":"","sources":["../src/slides.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,MAAM,uBAAuB,CAAC;AAqDzE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CA6DhG;AACD,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAExE;AACD,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CA4BnE;AACD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD"}
|