@deckflow/deckuse-pptx 1.0.0 → 1.1.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/LICENSE +662 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapter.d.ts +70 -3
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +519 -86
- package/dist/adapter.js.map +1 -1
- package/dist/addressing.d.ts +45 -0
- package/dist/addressing.d.ts.map +1 -0
- package/dist/addressing.js +401 -0
- package/dist/addressing.js.map +1 -0
- package/dist/chart-classify.d.ts +10 -0
- package/dist/chart-classify.d.ts.map +1 -0
- package/dist/chart-classify.js +54 -0
- package/dist/chart-classify.js.map +1 -0
- package/dist/chart.d.ts +33 -0
- package/dist/chart.d.ts.map +1 -0
- package/dist/chart.js +492 -0
- package/dist/chart.js.map +1 -0
- package/dist/edition.d.ts +20 -0
- package/dist/edition.d.ts.map +1 -0
- package/dist/edition.js +46 -0
- package/dist/edition.js.map +1 -0
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js +61 -46
- package/dist/elements.js.map +1 -1
- package/dist/hyperlink.d.ts +7 -0
- package/dist/hyperlink.d.ts.map +1 -0
- package/dist/hyperlink.js +83 -0
- package/dist/hyperlink.js.map +1 -0
- package/dist/index-sync.d.ts +7 -0
- package/dist/index-sync.d.ts.map +1 -0
- package/dist/index-sync.js +24 -0
- package/dist/index-sync.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/indexer.d.ts +4 -0
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +105 -27
- package/dist/indexer.js.map +1 -1
- package/dist/media.d.ts +15 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +141 -0
- package/dist/media.js.map +1 -0
- package/dist/mutations.d.ts +8 -2
- package/dist/mutations.d.ts.map +1 -1
- package/dist/mutations.js +695 -72
- package/dist/mutations.js.map +1 -1
- package/dist/picture.d.ts.map +1 -1
- package/dist/picture.js +1 -3
- package/dist/picture.js.map +1 -1
- package/dist/properties.d.ts +6 -1
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +159 -10
- package/dist/properties.js.map +1 -1
- package/dist/resolve-properties.d.ts +17 -0
- package/dist/resolve-properties.d.ts.map +1 -0
- package/dist/resolve-properties.js +545 -0
- package/dist/resolve-properties.js.map +1 -0
- package/dist/slides.d.ts +3 -1
- package/dist/slides.d.ts.map +1 -1
- package/dist/slides.js +77 -4
- package/dist/slides.js.map +1 -1
- package/dist/table.d.ts +15 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +456 -0
- package/dist/table.js.map +1 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/workspace.d.ts +9 -9
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +67 -47
- package/dist/workspace.js.map +1 -1
- package/dist/xml.d.ts +7 -0
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +86 -13
- package/dist/xml.js.map +1 -1
- package/package.json +11 -3
package/dist/chart.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { OpcArchive } from '@deckflow/deckuse-opc';
|
|
2
|
+
import type { Document, Element } from '@xmldom/xmldom';
|
|
3
|
+
/** Default series fills — readable on both light and dark slide backgrounds. */
|
|
4
|
+
export declare const DEFAULT_SERIES_COLORS: readonly ["5B8DEF", "F0A500", "2ECC71", "E74C3C", "9B59B6", "1ABC9C"];
|
|
5
|
+
export type ChartType = 'bar' | 'column' | 'line' | 'pie';
|
|
6
|
+
export interface ChartSeriesInput {
|
|
7
|
+
name: string;
|
|
8
|
+
values: number[];
|
|
9
|
+
/** Optional `#RRGGBB` or `RRGGBB` series fill. */
|
|
10
|
+
color?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ChartCreateInput {
|
|
13
|
+
chartType: ChartType;
|
|
14
|
+
title?: string;
|
|
15
|
+
categories: string[];
|
|
16
|
+
series: ChartSeriesInput[];
|
|
17
|
+
}
|
|
18
|
+
export declare const normalizeHexColor: (value: string) => string;
|
|
19
|
+
export declare function buildChartXml(input: ChartCreateInput): string;
|
|
20
|
+
export declare function createChartPart(archive: OpcArchive, slidePart: string, input: ChartCreateInput): {
|
|
21
|
+
chartPart: string;
|
|
22
|
+
rid: string;
|
|
23
|
+
};
|
|
24
|
+
export declare const chartGraphicFrameXml: (id: number, rid: string, e: Record<string, unknown>) => string;
|
|
25
|
+
/** Apply text color to title runs, legend, and axis tick labels. */
|
|
26
|
+
export declare function applyChartTextColor(chartDoc: Document, colorInput: string): void;
|
|
27
|
+
export declare function applyChartGapWidth(chartDoc: Document, gapWidth: number): void;
|
|
28
|
+
export declare function applyChartBackground(chartDoc: Document, colorInput: string): void;
|
|
29
|
+
export declare function applyChartMajorGridlines(chartDoc: Document, show: boolean, color?: string): void;
|
|
30
|
+
export declare function readSeriesColor(ser: Element): string | undefined;
|
|
31
|
+
/** Mutate an existing chart part from semantic chart properties. */
|
|
32
|
+
export declare function applyChartProperties(chartDoc: Document, properties: Record<string, unknown>): void;
|
|
33
|
+
//# sourceMappingURL=chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAKxD,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,uEAOxB,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAKD,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAIjD,CAAC;AA6EF,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAM7D;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,gBAAgB,GACtB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAepC;AAED,eAAO,MAAM,oBAAoB,GAC/B,IAAI,MAAM,EACV,KAAK,MAAM,EACX,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzB,MAQF,CAAC;AA0DF,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CA8BhF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CA6B7E;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CA4BjF;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,SAAW,GAAG,IAAI,CA4BlG;AAwED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMhE;AA6CD,oEAAoE;AACpE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CAkDN"}
|
package/dist/chart.js
ADDED
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { posix } from 'node:path';
|
|
2
|
+
import { NS, REL, children, descendants, first, setNodeText } from './xml.js';
|
|
3
|
+
const CHART_CT = 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml';
|
|
4
|
+
/** Default series fills — readable on both light and dark slide backgrounds. */
|
|
5
|
+
export const DEFAULT_SERIES_COLORS = [
|
|
6
|
+
'5B8DEF',
|
|
7
|
+
'F0A500',
|
|
8
|
+
'2ECC71',
|
|
9
|
+
'E74C3C',
|
|
10
|
+
'9B59B6',
|
|
11
|
+
'1ABC9C',
|
|
12
|
+
];
|
|
13
|
+
const esc = (value) => value.replaceAll('&', '&').replaceAll('"', '"').replaceAll('<', '<');
|
|
14
|
+
export const normalizeHexColor = (value) => {
|
|
15
|
+
const hex = value.trim().replace(/^#/, '').toUpperCase();
|
|
16
|
+
if (!/^[0-9A-F]{6}$/.test(hex))
|
|
17
|
+
throw new Error(`Invalid color: ${value}`);
|
|
18
|
+
return hex;
|
|
19
|
+
};
|
|
20
|
+
const nextChartPart = (archive) => {
|
|
21
|
+
let n = 1;
|
|
22
|
+
while (archive.getPart(`/ppt/charts/chart${String(n)}.xml`))
|
|
23
|
+
n++;
|
|
24
|
+
return `/ppt/charts/chart${String(n)}.xml`;
|
|
25
|
+
};
|
|
26
|
+
const nextRid = (rels) => {
|
|
27
|
+
let n = 1;
|
|
28
|
+
const ids = new Set(rels.map((r) => r.id));
|
|
29
|
+
while (ids.has(`rId${String(n)}`))
|
|
30
|
+
n++;
|
|
31
|
+
return `rId${String(n)}`;
|
|
32
|
+
};
|
|
33
|
+
const relativeTarget = (source, target) => posix.relative(posix.dirname(source), target).replace(/^\//, '');
|
|
34
|
+
const directChild = (node, localName) => children(node).find((child) => child.localName === localName);
|
|
35
|
+
/** Literal string points for c:strLit (not nested c:strCache — that belongs under c:strRef). */
|
|
36
|
+
const strLitPoints = (values) => `<c:ptCount val="${String(values.length)}"/>${values
|
|
37
|
+
.map((v, i) => `<c:pt idx="${String(i)}"><c:v>${esc(v)}</c:v></c:pt>`)
|
|
38
|
+
.join('')}`;
|
|
39
|
+
/** Literal number points for c:numLit (not nested c:numCache — that belongs under c:numRef). */
|
|
40
|
+
const numLitPoints = (values) => `<c:formatCode>General</c:formatCode><c:ptCount val="${String(values.length)}"/>${values
|
|
41
|
+
.map((v, i) => `<c:pt idx="${String(i)}"><c:v>${String(v)}</c:v></c:pt>`)
|
|
42
|
+
.join('')}`;
|
|
43
|
+
const seriesSpPrXml = (color) => `<c:spPr><a:solidFill><a:srgbClr val="${color}"/></a:solidFill><a:ln><a:noFill/></a:ln></c:spPr>`;
|
|
44
|
+
const seriesXml = (series, categories) => series
|
|
45
|
+
.map((ser, index) => {
|
|
46
|
+
const cats = categories.length > 0
|
|
47
|
+
? `<c:cat><c:strLit>${strLitPoints(categories)}</c:strLit></c:cat>`
|
|
48
|
+
: '';
|
|
49
|
+
const vals = `<c:val><c:numLit>${numLitPoints(ser.values)}</c:numLit></c:val>`;
|
|
50
|
+
const tx = `<c:tx><c:v>${esc(ser.name)}</c:v></c:tx>`;
|
|
51
|
+
const color = ser.color
|
|
52
|
+
? normalizeHexColor(ser.color)
|
|
53
|
+
: DEFAULT_SERIES_COLORS[index % DEFAULT_SERIES_COLORS.length];
|
|
54
|
+
return `<c:ser><c:idx val="${String(index)}"/><c:order val="${String(index)}"/>${tx}${seriesSpPrXml(color)}${cats}${vals}</c:ser>`;
|
|
55
|
+
})
|
|
56
|
+
.join('');
|
|
57
|
+
const plotXml = (chartType, series, categories) => {
|
|
58
|
+
const ser = seriesXml(series, categories);
|
|
59
|
+
if (chartType === 'pie') {
|
|
60
|
+
return `<c:pieChart><c:varyColors val="1"/>${ser}<c:dLbls><c:showPercent val="0"/><c:showVal val="0"/><c:showCatName val="0"/><c:showSerName val="0"/></c:dLbls></c:pieChart>`;
|
|
61
|
+
}
|
|
62
|
+
if (chartType === 'line') {
|
|
63
|
+
return `<c:lineChart><c:grouping val="standard"/>${ser}<c:marker val="1"/><c:axId val="1"/><c:axId val="2"/></c:lineChart>`;
|
|
64
|
+
}
|
|
65
|
+
const barDir = chartType === 'bar' ? 'bar' : 'col';
|
|
66
|
+
// CT_BarChart order: barDir, grouping, varyColors?, ser*, dLbls?, gapWidth, overlap, serLines?, axId*
|
|
67
|
+
// gapWidth 100 ≈ clearer clustered grouping than OOXML default 150.
|
|
68
|
+
return `<c:barChart><c:barDir val="${barDir}"/><c:grouping val="clustered"/>${ser}<c:gapWidth val="100"/><c:overlap val="0"/><c:axId val="1"/><c:axId val="2"/></c:barChart>`;
|
|
69
|
+
};
|
|
70
|
+
const axesXml = (chartType) => {
|
|
71
|
+
if (chartType === 'pie')
|
|
72
|
+
return '';
|
|
73
|
+
// CT_CatAx / CT_ValAx: tickLblPos before spPr/txPr/crossAx (not after crossAx).
|
|
74
|
+
return `<c:catAx><c:axId val="1"/><c:scaling><c:orientation val="minMax"/></c:scaling><c:delete val="0"/><c:axPos val="b"/><c:tickLblPos val="nextTo"/><c:crossAx val="2"/></c:catAx><c:valAx><c:axId val="2"/><c:scaling><c:orientation val="minMax"/></c:scaling><c:delete val="0"/><c:axPos val="l"/><c:majorGridlines/><c:tickLblPos val="nextTo"/><c:crossAx val="1"/></c:valAx>`;
|
|
75
|
+
};
|
|
76
|
+
const titleXml = (title) => {
|
|
77
|
+
if (!title)
|
|
78
|
+
return '<c:autoTitleDeleted val="1"/>';
|
|
79
|
+
return `<c:title><c:tx><c:rich><a:bodyPr/><a:lstStyle/><a:p><a:pPr><a:defRPr/></a:pPr><a:r><a:rPr lang="en-US"/><a:t>${esc(title)}</a:t></a:r></a:p></c:rich></c:tx><c:overlay val="0"/></c:title><c:autoTitleDeleted val="0"/>`;
|
|
80
|
+
};
|
|
81
|
+
export function buildChartXml(input) {
|
|
82
|
+
const categories = input.categories;
|
|
83
|
+
const series = input.series;
|
|
84
|
+
const legend = input.chartType === 'pie' ? '' : '<c:legend><c:legendPos val="b"/><c:overlay val="0"/></c:legend>';
|
|
85
|
+
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?><c:chartSpace xmlns:c="${NS.c}" xmlns:a="${NS.a}" xmlns:r="${NS.r}"><c:chart>${titleXml(input.title)}<c:plotArea><c:layout/>${plotXml(input.chartType, series, categories)}${axesXml(input.chartType)}</c:plotArea>${legend}<c:plotVisOnly val="1"/></c:chart></c:chartSpace>`;
|
|
86
|
+
}
|
|
87
|
+
export function createChartPart(archive, slidePart, input) {
|
|
88
|
+
const chartPart = nextChartPart(archive);
|
|
89
|
+
const xml = buildChartXml(input);
|
|
90
|
+
archive.setPart(chartPart, new TextEncoder().encode(xml), CHART_CT);
|
|
91
|
+
const rels = [...archive.getRelationships(slidePart)];
|
|
92
|
+
const rid = nextRid(rels);
|
|
93
|
+
rels.push({
|
|
94
|
+
id: rid,
|
|
95
|
+
type: REL.chart,
|
|
96
|
+
target: relativeTarget(slidePart, chartPart),
|
|
97
|
+
external: false,
|
|
98
|
+
resolvedTarget: chartPart,
|
|
99
|
+
});
|
|
100
|
+
archive.setRelationships(slidePart, rels);
|
|
101
|
+
return { chartPart, rid };
|
|
102
|
+
}
|
|
103
|
+
export const chartGraphicFrameXml = (id, rid, e) => {
|
|
104
|
+
const name = typeof e['name'] === 'string' && e['name'].length > 0 ? e['name'] : `Chart ${String(id)}`;
|
|
105
|
+
const x = typeof e['x'] === 'number' ? e['x'] : 0;
|
|
106
|
+
const y = typeof e['y'] === 'number' ? e['y'] : 0;
|
|
107
|
+
const width = typeof e['width'] === 'number' ? e['width'] : 914400 * 4;
|
|
108
|
+
const height = typeof e['height'] === 'number' ? e['height'] : 914400 * 3;
|
|
109
|
+
return `<p:graphicFrame xmlns:p="${NS.p}" xmlns:a="${NS.a}" xmlns:r="${NS.r}" xmlns:c="${NS.c}"><p:nvGraphicFramePr><p:cNvPr id="${String(id)}" name="${esc(name)}"/><p:cNvGraphicFramePr/><p:nvPr/></p:nvGraphicFramePr><p:xfrm><a:off x="${String(x)}" y="${String(y)}"/><a:ext cx="${String(width)}" cy="${String(height)}"/></p:xfrm><a:graphic><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:chart xmlns:c="${NS.c}" xmlns:r="${NS.r}" r:id="${rid}"/></a:graphicData></a:graphic></p:graphicFrame>`;
|
|
110
|
+
};
|
|
111
|
+
const ensureChild = (parent, localName, ns, qualified, afterLocalNames = []) => {
|
|
112
|
+
const existing = directChild(parent, localName);
|
|
113
|
+
if (existing)
|
|
114
|
+
return existing;
|
|
115
|
+
const doc = parent.ownerDocument;
|
|
116
|
+
if (!doc)
|
|
117
|
+
throw new Error('Element has no document');
|
|
118
|
+
const created = doc.createElementNS(ns, qualified);
|
|
119
|
+
const kids = children(parent);
|
|
120
|
+
let anchor;
|
|
121
|
+
for (const child of kids)
|
|
122
|
+
if (child.localName && afterLocalNames.includes(child.localName))
|
|
123
|
+
anchor = child;
|
|
124
|
+
if (anchor?.nextSibling)
|
|
125
|
+
parent.insertBefore(created, anchor.nextSibling);
|
|
126
|
+
else if (anchor)
|
|
127
|
+
parent.appendChild(created);
|
|
128
|
+
else
|
|
129
|
+
parent.appendChild(created);
|
|
130
|
+
return created;
|
|
131
|
+
};
|
|
132
|
+
const setSolidOnRPr = (rPr, color) => {
|
|
133
|
+
const doc = rPr.ownerDocument;
|
|
134
|
+
if (!doc)
|
|
135
|
+
throw new Error('Element has no document');
|
|
136
|
+
for (const child of [...children(rPr)])
|
|
137
|
+
if (child.localName === 'solidFill' || child.localName === 'schemeClr')
|
|
138
|
+
rPr.removeChild(child);
|
|
139
|
+
const solid = doc.createElementNS(NS.a, 'a:solidFill');
|
|
140
|
+
const srgb = doc.createElementNS(NS.a, 'a:srgbClr');
|
|
141
|
+
srgb.setAttribute('val', color);
|
|
142
|
+
solid.appendChild(srgb);
|
|
143
|
+
if (rPr.firstChild)
|
|
144
|
+
rPr.insertBefore(solid, rPr.firstChild);
|
|
145
|
+
else
|
|
146
|
+
rPr.appendChild(solid);
|
|
147
|
+
};
|
|
148
|
+
const buildTxPr = (doc, color) => {
|
|
149
|
+
const txPr = doc.createElementNS(NS.c, 'c:txPr');
|
|
150
|
+
const bodyPr = doc.createElementNS(NS.a, 'a:bodyPr');
|
|
151
|
+
const lstStyle = doc.createElementNS(NS.a, 'a:lstStyle');
|
|
152
|
+
const p = doc.createElementNS(NS.a, 'a:p');
|
|
153
|
+
const pPr = doc.createElementNS(NS.a, 'a:pPr');
|
|
154
|
+
const defRPr = doc.createElementNS(NS.a, 'a:defRPr');
|
|
155
|
+
defRPr.setAttribute('sz', '1100');
|
|
156
|
+
setSolidOnRPr(defRPr, color);
|
|
157
|
+
pPr.appendChild(defRPr);
|
|
158
|
+
p.appendChild(pPr);
|
|
159
|
+
const end = doc.createElementNS(NS.a, 'a:endParaRPr');
|
|
160
|
+
end.setAttribute('sz', '1100');
|
|
161
|
+
setSolidOnRPr(end, color);
|
|
162
|
+
p.appendChild(end);
|
|
163
|
+
txPr.appendChild(bodyPr);
|
|
164
|
+
txPr.appendChild(lstStyle);
|
|
165
|
+
txPr.appendChild(p);
|
|
166
|
+
return txPr;
|
|
167
|
+
};
|
|
168
|
+
/** Apply text color to title runs, legend, and axis tick labels. */
|
|
169
|
+
export function applyChartTextColor(chartDoc, colorInput) {
|
|
170
|
+
const color = normalizeHexColor(colorInput);
|
|
171
|
+
const title = first(chartDoc, 'title');
|
|
172
|
+
if (title) {
|
|
173
|
+
for (const rPr of descendants(title, 'rPr'))
|
|
174
|
+
setSolidOnRPr(rPr, color);
|
|
175
|
+
for (const defRPr of descendants(title, 'defRPr'))
|
|
176
|
+
setSolidOnRPr(defRPr, color);
|
|
177
|
+
}
|
|
178
|
+
const doc = chartDoc;
|
|
179
|
+
for (const local of ['legend', 'catAx', 'valAx']) {
|
|
180
|
+
for (const node of descendants(chartDoc, local)) {
|
|
181
|
+
const existing = directChild(node, 'txPr');
|
|
182
|
+
if (existing)
|
|
183
|
+
existing.parentNode?.removeChild(existing);
|
|
184
|
+
// Repair tickLblPos placed after crossAx (invalid CT_CatAx / CT_ValAx order).
|
|
185
|
+
const tickLblPos = directChild(node, 'tickLblPos');
|
|
186
|
+
const crossAxExisting = directChild(node, 'crossAx');
|
|
187
|
+
if (tickLblPos && crossAxExisting) {
|
|
188
|
+
const kids = children(node);
|
|
189
|
+
if (kids.indexOf(tickLblPos) > kids.indexOf(crossAxExisting)) {
|
|
190
|
+
node.removeChild(tickLblPos);
|
|
191
|
+
node.insertBefore(tickLblPos, crossAxExisting);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const txPr = buildTxPr(doc, color);
|
|
195
|
+
// CT_CatAx/CT_ValAx: txPr sits after tickLblPos/spPr and before crossAx.
|
|
196
|
+
// CT_Legend: txPr is last before extLst — append is fine.
|
|
197
|
+
const crossAx = directChild(node, 'crossAx');
|
|
198
|
+
if (crossAx)
|
|
199
|
+
node.insertBefore(txPr, crossAx);
|
|
200
|
+
else
|
|
201
|
+
node.appendChild(txPr);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
export function applyChartGapWidth(chartDoc, gapWidth) {
|
|
206
|
+
if (!Number.isFinite(gapWidth) || gapWidth < 0)
|
|
207
|
+
throw new Error(`gapWidth must be a non-negative number, got ${String(gapWidth)}`);
|
|
208
|
+
const val = String(Math.round(gapWidth));
|
|
209
|
+
for (const plot of [...descendants(chartDoc, 'barChart'), ...descendants(chartDoc, 'lineChart')]) {
|
|
210
|
+
// After ser* / dLbls so gapWidth stays ahead of overlap / axId.
|
|
211
|
+
const gap = ensureChild(plot, 'gapWidth', NS.c, 'c:gapWidth', [
|
|
212
|
+
'barDir',
|
|
213
|
+
'grouping',
|
|
214
|
+
'varyColors',
|
|
215
|
+
'ser',
|
|
216
|
+
'dLbls',
|
|
217
|
+
]);
|
|
218
|
+
gap.setAttribute('val', val);
|
|
219
|
+
// Repair charts that still have gapWidth before ser (invalid CT_BarChart order).
|
|
220
|
+
const kids = children(plot);
|
|
221
|
+
const gapIndex = kids.indexOf(gap);
|
|
222
|
+
let lastSerOrDlbls = -1;
|
|
223
|
+
for (let i = 0; i < kids.length; i++) {
|
|
224
|
+
const name = kids[i]?.localName;
|
|
225
|
+
if (name === 'ser' || name === 'dLbls')
|
|
226
|
+
lastSerOrDlbls = i;
|
|
227
|
+
}
|
|
228
|
+
if (lastSerOrDlbls >= 0 && gapIndex >= 0 && gapIndex < lastSerOrDlbls) {
|
|
229
|
+
const anchor = kids[lastSerOrDlbls];
|
|
230
|
+
plot.removeChild(gap);
|
|
231
|
+
if (anchor.nextSibling)
|
|
232
|
+
plot.insertBefore(gap, anchor.nextSibling);
|
|
233
|
+
else
|
|
234
|
+
plot.appendChild(gap);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
export function applyChartBackground(chartDoc, colorInput) {
|
|
239
|
+
const color = normalizeHexColor(colorInput);
|
|
240
|
+
const root = chartDoc.documentElement;
|
|
241
|
+
if (!root)
|
|
242
|
+
throw new Error('Chart XML has no root');
|
|
243
|
+
let spPr = directChild(root, 'spPr');
|
|
244
|
+
if (!spPr) {
|
|
245
|
+
spPr = chartDoc.createElementNS(NS.c, 'c:spPr');
|
|
246
|
+
// chartSpace children order: date1904?, lang?, roundedCorners?, style?, colorStyle?,
|
|
247
|
+
// clrMapOvr?, pivotSource?, protection?, chart, spPr, txPr, externalData, ...
|
|
248
|
+
const chart = directChild(root, 'chart');
|
|
249
|
+
if (chart?.nextSibling)
|
|
250
|
+
root.insertBefore(spPr, chart.nextSibling);
|
|
251
|
+
else if (chart)
|
|
252
|
+
root.appendChild(spPr);
|
|
253
|
+
else
|
|
254
|
+
root.appendChild(spPr);
|
|
255
|
+
}
|
|
256
|
+
for (const child of [...children(spPr)])
|
|
257
|
+
if (child.localName === 'solidFill' ||
|
|
258
|
+
child.localName === 'gradFill' ||
|
|
259
|
+
child.localName === 'noFill' ||
|
|
260
|
+
child.localName === 'pattFill')
|
|
261
|
+
spPr.removeChild(child);
|
|
262
|
+
const solid = chartDoc.createElementNS(NS.a, 'a:solidFill');
|
|
263
|
+
const srgb = chartDoc.createElementNS(NS.a, 'a:srgbClr');
|
|
264
|
+
srgb.setAttribute('val', color);
|
|
265
|
+
solid.appendChild(srgb);
|
|
266
|
+
if (spPr.firstChild)
|
|
267
|
+
spPr.insertBefore(solid, spPr.firstChild);
|
|
268
|
+
else
|
|
269
|
+
spPr.appendChild(solid);
|
|
270
|
+
}
|
|
271
|
+
export function applyChartMajorGridlines(chartDoc, show, color = 'FFFFFF') {
|
|
272
|
+
const line = normalizeHexColor(color.startsWith('#') ? color : `#${color}`);
|
|
273
|
+
for (const ax of descendants(chartDoc, 'valAx')) {
|
|
274
|
+
const existing = directChild(ax, 'majorGridlines');
|
|
275
|
+
if (show) {
|
|
276
|
+
if (existing)
|
|
277
|
+
existing.parentNode?.removeChild(existing);
|
|
278
|
+
const grid = chartDoc.createElementNS(NS.c, 'c:majorGridlines');
|
|
279
|
+
const spPr = chartDoc.createElementNS(NS.c, 'c:spPr');
|
|
280
|
+
const ln = chartDoc.createElementNS(NS.a, 'a:ln');
|
|
281
|
+
ln.setAttribute('w', '6350');
|
|
282
|
+
const solid = chartDoc.createElementNS(NS.a, 'a:solidFill');
|
|
283
|
+
const srgb = chartDoc.createElementNS(NS.a, 'a:srgbClr');
|
|
284
|
+
srgb.setAttribute('val', line);
|
|
285
|
+
const alpha = chartDoc.createElementNS(NS.a, 'a:alpha');
|
|
286
|
+
alpha.setAttribute('val', line === 'FFFFFF' ? '25000' : '35000');
|
|
287
|
+
srgb.appendChild(alpha);
|
|
288
|
+
solid.appendChild(srgb);
|
|
289
|
+
ln.appendChild(solid);
|
|
290
|
+
spPr.appendChild(ln);
|
|
291
|
+
grid.appendChild(spPr);
|
|
292
|
+
const after = directChild(ax, 'axPos') ?? directChild(ax, 'delete');
|
|
293
|
+
if (after?.nextSibling)
|
|
294
|
+
ax.insertBefore(grid, after.nextSibling);
|
|
295
|
+
else if (after)
|
|
296
|
+
ax.appendChild(grid);
|
|
297
|
+
else
|
|
298
|
+
ax.appendChild(grid);
|
|
299
|
+
}
|
|
300
|
+
else if (existing) {
|
|
301
|
+
existing.parentNode?.removeChild(existing);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
const valueCache = (ser) => {
|
|
306
|
+
const val = directChild(ser, 'val') ?? first(ser, 'val');
|
|
307
|
+
if (!val)
|
|
308
|
+
return undefined;
|
|
309
|
+
return (directChild(val, 'numLit') ??
|
|
310
|
+
first(val, 'numLit') ??
|
|
311
|
+
directChild(val, 'numCache') ??
|
|
312
|
+
first(val, 'numCache'));
|
|
313
|
+
};
|
|
314
|
+
const setSeriesColor = (ser, colorInput) => {
|
|
315
|
+
const color = normalizeHexColor(colorInput);
|
|
316
|
+
const doc = ser.ownerDocument;
|
|
317
|
+
if (!doc)
|
|
318
|
+
throw new Error('Element has no document');
|
|
319
|
+
let spPr = directChild(ser, 'spPr');
|
|
320
|
+
if (!spPr) {
|
|
321
|
+
spPr = doc.createElementNS(NS.c, 'c:spPr');
|
|
322
|
+
const after = directChild(ser, 'tx') ?? directChild(ser, 'order') ?? directChild(ser, 'idx');
|
|
323
|
+
if (after?.nextSibling)
|
|
324
|
+
ser.insertBefore(spPr, after.nextSibling);
|
|
325
|
+
else if (after)
|
|
326
|
+
ser.appendChild(spPr);
|
|
327
|
+
else
|
|
328
|
+
ser.appendChild(spPr);
|
|
329
|
+
}
|
|
330
|
+
for (const child of [...children(spPr)])
|
|
331
|
+
if (child.localName === 'solidFill' ||
|
|
332
|
+
child.localName === 'gradFill' ||
|
|
333
|
+
child.localName === 'noFill' ||
|
|
334
|
+
child.localName === 'pattFill')
|
|
335
|
+
spPr.removeChild(child);
|
|
336
|
+
const solid = doc.createElementNS(NS.a, 'a:solidFill');
|
|
337
|
+
const srgb = doc.createElementNS(NS.a, 'a:srgbClr');
|
|
338
|
+
srgb.setAttribute('val', color);
|
|
339
|
+
solid.appendChild(srgb);
|
|
340
|
+
if (spPr.firstChild)
|
|
341
|
+
spPr.insertBefore(solid, spPr.firstChild);
|
|
342
|
+
else
|
|
343
|
+
spPr.appendChild(solid);
|
|
344
|
+
if (!directChild(spPr, 'ln')) {
|
|
345
|
+
const ln = doc.createElementNS(NS.a, 'a:ln');
|
|
346
|
+
ln.appendChild(doc.createElementNS(NS.a, 'a:noFill'));
|
|
347
|
+
spPr.appendChild(ln);
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
const setSeriesValues = (ser, values) => {
|
|
351
|
+
const cache = valueCache(ser);
|
|
352
|
+
if (!cache)
|
|
353
|
+
return;
|
|
354
|
+
const doc = ser.ownerDocument;
|
|
355
|
+
if (!doc)
|
|
356
|
+
throw new Error('Element has no document');
|
|
357
|
+
const pts = children(cache).filter((c) => c.localName === 'pt');
|
|
358
|
+
values.forEach((entry, i) => {
|
|
359
|
+
let pt = pts[i];
|
|
360
|
+
if (!pt) {
|
|
361
|
+
pt = doc.createElementNS(NS.c, 'c:pt');
|
|
362
|
+
pt.setAttribute('idx', String(i));
|
|
363
|
+
const v = doc.createElementNS(NS.c, 'c:v');
|
|
364
|
+
v.appendChild(doc.createTextNode(String(entry)));
|
|
365
|
+
pt.appendChild(v);
|
|
366
|
+
cache.appendChild(pt);
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
const v = directChild(pt, 'v') ?? first(pt, 'v');
|
|
370
|
+
if (v)
|
|
371
|
+
v.textContent = String(entry);
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
// Drop trailing points if the series shrank.
|
|
375
|
+
for (const extra of pts.slice(values.length))
|
|
376
|
+
extra.parentNode?.removeChild(extra);
|
|
377
|
+
const count = directChild(cache, 'ptCount') ?? first(cache, 'ptCount');
|
|
378
|
+
if (count)
|
|
379
|
+
count.setAttribute('val', String(values.length));
|
|
380
|
+
};
|
|
381
|
+
export function readSeriesColor(ser) {
|
|
382
|
+
const spPr = directChild(ser, 'spPr');
|
|
383
|
+
if (!spPr)
|
|
384
|
+
return undefined;
|
|
385
|
+
const srgb = first(spPr, 'srgbClr');
|
|
386
|
+
const val = srgb?.getAttribute('val');
|
|
387
|
+
return val ? `#${val.toUpperCase()}` : undefined;
|
|
388
|
+
}
|
|
389
|
+
/** Ensure c:title under c:chart so setNodeText never appends a:p onto chartSpace. */
|
|
390
|
+
const ensureChartTitle = (chartDoc) => {
|
|
391
|
+
const existing = first(chartDoc, 'title');
|
|
392
|
+
if (existing)
|
|
393
|
+
return existing;
|
|
394
|
+
const root = chartDoc.documentElement;
|
|
395
|
+
if (!root)
|
|
396
|
+
throw new Error('Chart XML has no root');
|
|
397
|
+
const chart = directChild(root, 'chart') ?? first(chartDoc, 'chart');
|
|
398
|
+
if (!chart)
|
|
399
|
+
throw new Error('Chart XML has no c:chart');
|
|
400
|
+
const title = chartDoc.createElementNS(NS.c, 'c:title');
|
|
401
|
+
const tx = chartDoc.createElementNS(NS.c, 'c:tx');
|
|
402
|
+
const rich = chartDoc.createElementNS(NS.c, 'c:rich');
|
|
403
|
+
rich.appendChild(chartDoc.createElementNS(NS.a, 'a:bodyPr'));
|
|
404
|
+
rich.appendChild(chartDoc.createElementNS(NS.a, 'a:lstStyle'));
|
|
405
|
+
const p = chartDoc.createElementNS(NS.a, 'a:p');
|
|
406
|
+
const pPr = chartDoc.createElementNS(NS.a, 'a:pPr');
|
|
407
|
+
pPr.appendChild(chartDoc.createElementNS(NS.a, 'a:defRPr'));
|
|
408
|
+
p.appendChild(pPr);
|
|
409
|
+
const r = chartDoc.createElementNS(NS.a, 'a:r');
|
|
410
|
+
const rPr = chartDoc.createElementNS(NS.a, 'a:rPr');
|
|
411
|
+
rPr.setAttribute('lang', 'en-US');
|
|
412
|
+
r.appendChild(rPr);
|
|
413
|
+
r.appendChild(chartDoc.createElementNS(NS.a, 'a:t'));
|
|
414
|
+
p.appendChild(r);
|
|
415
|
+
rich.appendChild(p);
|
|
416
|
+
tx.appendChild(rich);
|
|
417
|
+
title.appendChild(tx);
|
|
418
|
+
const overlay = chartDoc.createElementNS(NS.c, 'c:overlay');
|
|
419
|
+
overlay.setAttribute('val', '0');
|
|
420
|
+
title.appendChild(overlay);
|
|
421
|
+
// CT_Chart: title is first among title / autoTitleDeleted / … / plotArea.
|
|
422
|
+
if (chart.firstChild)
|
|
423
|
+
chart.insertBefore(title, chart.firstChild);
|
|
424
|
+
else
|
|
425
|
+
chart.appendChild(title);
|
|
426
|
+
const auto = directChild(chart, 'autoTitleDeleted') ?? first(chart, 'autoTitleDeleted');
|
|
427
|
+
if (auto)
|
|
428
|
+
auto.setAttribute('val', '0');
|
|
429
|
+
else {
|
|
430
|
+
const created = chartDoc.createElementNS(NS.c, 'c:autoTitleDeleted');
|
|
431
|
+
created.setAttribute('val', '0');
|
|
432
|
+
if (title.nextSibling)
|
|
433
|
+
chart.insertBefore(created, title.nextSibling);
|
|
434
|
+
else
|
|
435
|
+
chart.appendChild(created);
|
|
436
|
+
}
|
|
437
|
+
return title;
|
|
438
|
+
};
|
|
439
|
+
/** Mutate an existing chart part from semantic chart properties. */
|
|
440
|
+
export function applyChartProperties(chartDoc, properties) {
|
|
441
|
+
if (typeof properties['title'] === 'string')
|
|
442
|
+
setNodeText(ensureChartTitle(chartDoc), properties['title']);
|
|
443
|
+
const series = properties['series'];
|
|
444
|
+
if (Array.isArray(series))
|
|
445
|
+
series.forEach((input, index) => {
|
|
446
|
+
if (typeof input !== 'object' || input === null)
|
|
447
|
+
return;
|
|
448
|
+
const spec = input;
|
|
449
|
+
const node = descendants(chartDoc, 'ser')[index];
|
|
450
|
+
if (!node)
|
|
451
|
+
return;
|
|
452
|
+
if (typeof spec['name'] === 'string') {
|
|
453
|
+
const tx = first(node, 'tx');
|
|
454
|
+
if (tx) {
|
|
455
|
+
const v = first(tx, 'v');
|
|
456
|
+
if (v)
|
|
457
|
+
v.textContent = spec['name'];
|
|
458
|
+
else
|
|
459
|
+
setNodeText(tx, spec['name']);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
if (Array.isArray(spec['values']))
|
|
463
|
+
setSeriesValues(node, spec['values']);
|
|
464
|
+
if (typeof spec['color'] === 'string')
|
|
465
|
+
setSeriesColor(node, spec['color']);
|
|
466
|
+
});
|
|
467
|
+
const textColor = typeof properties['textColor'] === 'string'
|
|
468
|
+
? properties['textColor']
|
|
469
|
+
: typeof properties['fontColor'] === 'string'
|
|
470
|
+
? properties['fontColor']
|
|
471
|
+
: undefined;
|
|
472
|
+
if (typeof textColor === 'string')
|
|
473
|
+
applyChartTextColor(chartDoc, textColor);
|
|
474
|
+
if (typeof properties['gapWidth'] === 'number')
|
|
475
|
+
applyChartGapWidth(chartDoc, properties['gapWidth']);
|
|
476
|
+
const fill = typeof properties['fill'] === 'string'
|
|
477
|
+
? properties['fill']
|
|
478
|
+
: typeof properties['background'] === 'string'
|
|
479
|
+
? properties['background']
|
|
480
|
+
: undefined;
|
|
481
|
+
if (typeof fill === 'string')
|
|
482
|
+
applyChartBackground(chartDoc, fill);
|
|
483
|
+
if (typeof properties['showMajorGridlines'] === 'boolean') {
|
|
484
|
+
const gridColor = typeof properties['gridlineColor'] === 'string'
|
|
485
|
+
? properties['gridlineColor']
|
|
486
|
+
: typeof fill === 'string'
|
|
487
|
+
? '8893A8'
|
|
488
|
+
: 'FFFFFF';
|
|
489
|
+
applyChartMajorGridlines(chartDoc, properties['showMajorGridlines'], gridColor);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
//# sourceMappingURL=chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Result } from '@deckflow/deckuse-core';
|
|
2
|
+
import type { OpcArchive } from '@deckflow/deckuse-opc';
|
|
3
|
+
import type { IndexedElement } from './types.js';
|
|
4
|
+
/** Product edition for this build. Community gates over-scope writes. */
|
|
5
|
+
export type Edition = 'community' | 'commercial';
|
|
6
|
+
export declare const EDITION: Edition;
|
|
7
|
+
export declare const EDITION_VARIANT = "community";
|
|
8
|
+
export declare const DISTRIBUTION_CHANNEL = "oss";
|
|
9
|
+
export declare const editionMetadata: {
|
|
10
|
+
readonly edition: "community";
|
|
11
|
+
readonly variant: "community";
|
|
12
|
+
readonly 'distribution-channel': "oss";
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Returns a denial message when this edition forbids writing `item`.
|
|
16
|
+
* Theme writes are forbidden in every edition.
|
|
17
|
+
*/
|
|
18
|
+
export declare const writeDenialReason: (item: IndexedElement, archive: OpcArchive) => string | undefined;
|
|
19
|
+
export declare const assertWritable: (item: IndexedElement, archive: OpcArchive) => Result<void>;
|
|
20
|
+
//# sourceMappingURL=edition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edition.d.ts","sourceRoot":"","sources":["../src/edition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,yEAAyE;AACzE,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,YAAY,CAAC;AAEjD,eAAO,MAAM,OAAO,EAAE,OAAqB,CAAC;AAC5C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAmBX;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,cAAc,EAAE,SAAS,UAAU,KAAG,MAAM,GAAG,SAetF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,cAAc,EAAE,SAAS,UAAU,KAAG,MAAM,CAAC,IAAI,CAIrF,CAAC"}
|
package/dist/edition.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { err, ok } from '@deckflow/deckuse-core';
|
|
2
|
+
import { classifyChartPart } from './chart-classify.js';
|
|
3
|
+
export const EDITION = 'community';
|
|
4
|
+
export const EDITION_VARIANT = 'community';
|
|
5
|
+
export const DISTRIBUTION_CHANNEL = 'oss';
|
|
6
|
+
export const editionMetadata = {
|
|
7
|
+
edition: EDITION,
|
|
8
|
+
variant: EDITION_VARIANT,
|
|
9
|
+
'distribution-channel': DISTRIBUTION_CHANNEL,
|
|
10
|
+
};
|
|
11
|
+
const isThemePart = (item) => item.kind === 'theme' || item.partUri.startsWith('/ppt/theme/');
|
|
12
|
+
const isMasterPart = (item) => item.kind === 'master' || item.partUri.startsWith('/ppt/slideMasters/');
|
|
13
|
+
const isLayoutPart = (item) => item.kind === 'layout' || item.partUri.startsWith('/ppt/slideLayouts/');
|
|
14
|
+
const chartVariantOf = (item, archive) => {
|
|
15
|
+
if (item.kind !== 'chart')
|
|
16
|
+
return undefined;
|
|
17
|
+
const chartPart = typeof item.payload?.['chartPart'] === 'string' ? item.payload['chartPart'] : undefined;
|
|
18
|
+
if (!chartPart || !archive.getPart(chartPart))
|
|
19
|
+
return 'advanced';
|
|
20
|
+
return classifyChartPart(archive, chartPart);
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Returns a denial message when this edition forbids writing `item`.
|
|
24
|
+
* Theme writes are forbidden in every edition.
|
|
25
|
+
*/
|
|
26
|
+
export const writeDenialReason = (item, archive) => {
|
|
27
|
+
if (isThemePart(item))
|
|
28
|
+
return `Theme editing is not available (edition=${EDITION}); theme parts are preserve-only`;
|
|
29
|
+
if (EDITION === 'community') {
|
|
30
|
+
if (isMasterPart(item))
|
|
31
|
+
return `Master slide editing requires the commercial edition (edition=${EDITION})`;
|
|
32
|
+
if (isLayoutPart(item))
|
|
33
|
+
return `Layout slide editing requires the commercial edition (edition=${EDITION})`;
|
|
34
|
+
const variant = chartVariantOf(item, archive);
|
|
35
|
+
if (variant === 'advanced')
|
|
36
|
+
return `Advanced chart editing requires the commercial edition (edition=${EDITION})`;
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
};
|
|
40
|
+
export const assertWritable = (item, archive) => {
|
|
41
|
+
const reason = writeDenialReason(item, archive);
|
|
42
|
+
if (reason)
|
|
43
|
+
return err('UNSUPPORTED_CAPABILITY', reason);
|
|
44
|
+
return ok(undefined);
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=edition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edition.js","sourceRoot":"","sources":["../src/edition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAqB,MAAM,qBAAqB,CAAC;AAM3E,MAAM,CAAC,MAAM,OAAO,GAAY,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,eAAe;IACxB,sBAAsB,EAAE,oBAAoB;CACpC,CAAC;AAEX,MAAM,WAAW,GAAG,CAAC,IAAoB,EAAW,EAAE,CACpD,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElE,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAW,EAAE,CACrD,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAE1E,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAW,EAAE,CACrD,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAE1E,MAAM,cAAc,GAAG,CAAC,IAAoB,EAAE,OAAmB,EAA4B,EAAE;IAC7F,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,UAAU,CAAC;IACjE,OAAO,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAoB,EAAE,OAAmB,EAAsB,EAAE;IACjG,IAAI,WAAW,CAAC,IAAI,CAAC;QACnB,OAAO,2CAA2C,OAAO,kCAAkC,CAAC;IAE9F,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,IAAI,YAAY,CAAC,IAAI,CAAC;YACpB,OAAO,iEAAiE,OAAO,GAAG,CAAC;QACrF,IAAI,YAAY,CAAC,IAAI,CAAC;YACpB,OAAO,iEAAiE,OAAO,GAAG,CAAC;QACrF,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,OAAO,KAAK,UAAU;YACxB,OAAO,mEAAmE,OAAO,GAAG,CAAC;IACzF,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAoB,EAAE,OAAmB,EAAgB,EAAE;IACxF,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IACzD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC"}
|