@json-to-office/core-pptx 6.6.0 → 7.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/blocks/document.d.ts.map +1 -1
- package/dist/core/finalizePackage.d.ts +1 -0
- package/dist/core/finalizePackage.d.ts.map +1 -1
- package/dist/core/generateFromIr.d.ts +1 -0
- package/dist/core/generateFromIr.d.ts.map +1 -1
- package/dist/core/generationContext.d.ts +3 -2
- package/dist/core/generationContext.d.ts.map +1 -1
- package/dist/core/generationOptions.d.ts +1 -0
- package/dist/core/generationOptions.d.ts.map +1 -1
- package/dist/core/generator.d.ts +1 -0
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +717 -248
- package/dist/index.js.map +1 -1
- package/dist/plugin/createPresentationGenerator.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +1 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/types.d.ts +25 -0
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/quality/facts.d.ts +101 -2
- package/dist/quality/facts.d.ts.map +1 -1
- package/dist/quality/rules.d.ts +54 -14
- package/dist/quality/rules.d.ts.map +1 -1
- package/dist/renderers/pptxgenjs/packaging.d.ts +1 -0
- package/dist/renderers/pptxgenjs/packaging.d.ts.map +1 -1
- package/dist/themes/defaults.d.ts +8 -1
- package/dist/themes/defaults.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPresentationGenerator.d.ts","sourceRoot":"","sources":["../../src/plugin/createPresentationGenerator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAIV,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAEV,4BAA4B,EAK5B,2BAA2B,
|
|
1
|
+
{"version":3,"file":"createPresentationGenerator.d.ts","sourceRoot":"","sources":["../../src/plugin/createPresentationGenerator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAIV,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAEV,4BAA4B,EAK5B,2BAA2B,EAG5B,MAAM,SAAS,CAAC;AAMjB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAM5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9E;;GAEG;AACH,MAAM,WAAW,4BACf,SAAQ,4BAA4B;IACpC,wCAAwC;IACxC,KAAK,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IACjC,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,oFAAoF;IACpF,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,qEAAqE;IACrE,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAkiBD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,4BAAiC,GACzC,4BAA4B,CAAC,SAAS,EAAE,CAAC,CAmB3C"}
|
package/dist/plugin/index.d.ts
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
export { createComponent, createVersion, type CustomComponent, type ComponentVersion, type ComponentVersionMap, type RenderFunction, type RenderContext, } from '@json-to-office/shared/plugin';
|
|
27
27
|
export { createPresentationGenerator, type PresentationGeneratorOptions, } from './createPresentationGenerator';
|
|
28
|
-
export { type PresentationGenerator, type PresentationGeneratorBuilder, type BufferGenerationResult, type FileGenerationResult, type GenerateFileOptions, type GenerateOptions, type GenerationValidationOptions, type ValidationResult, type ExtractCustomComponentType, type CustomComponentUnion, type ExtendedPptxComponentInput, type ExtendedPresentationComponent, type InferBuilderComponents, type InferDocumentType, type InferComponentDefinition, } from './types';
|
|
28
|
+
export { type PresentationGenerator, type PresentationGeneratorBuilder, type BufferGenerationResult, type FileGenerationResult, type GenerateFileOptions, type GenerateOptions, type GenerationValidationOptions, type QualityPreparationResult, type ValidationResult, type ExtractCustomComponentType, type CustomComponentUnion, type ExtendedPptxComponentInput, type ExtendedPresentationComponent, type InferBuilderComponents, type InferDocumentType, type InferComponentDefinition, } from './types';
|
|
29
29
|
export { validateComponentProps, validatePresentation, cleanComponentProps, ComponentValidationError, DuplicateComponentError, type ValidationError, type ComponentValidationResult, } from './validation';
|
|
30
30
|
export { generatePluginPresentationSchema, exportPluginSchema } from './schema';
|
|
31
31
|
export { resolveComponentVersion } from '@json-to-office/shared/plugin';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACL,eAAe,EACf,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,2BAA2B,EAC3B,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,yBAAyB,GAC/B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gCAAgC,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACL,eAAe,EACf,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,2BAA2B,EAC3B,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,yBAAyB,GAC/B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gCAAgC,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/plugin/types.d.ts
CHANGED
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
* PPTX plugin type utilities
|
|
3
3
|
*/
|
|
4
4
|
/// <reference types="node" />
|
|
5
|
+
/// <reference types="node" />
|
|
5
6
|
import type { Static, TSchema } from '@sinclair/typebox';
|
|
6
7
|
import type { CustomComponent } from '@json-to-office/shared/plugin';
|
|
7
8
|
import type { PptxComponentInput, PresentationComponentDefinition, SlideComponentDefinition, PipelineWarning } from '../types';
|
|
9
|
+
import type { PreparedDocument } from '@json-to-office/quality';
|
|
8
10
|
import type { PptxRendererId } from '../renderers/types';
|
|
9
11
|
import type { PresentationPackagingOptions } from '../core/finalizePackage';
|
|
12
|
+
import type { PptxQualityFact, PptxQualityModel } from '../quality/facts';
|
|
10
13
|
type InferVersionMap<T> = T extends CustomComponent<any, infer V, any> ? V : never;
|
|
11
14
|
type InferName<T> = T extends CustomComponent<any, any, infer N> ? N : never;
|
|
12
15
|
/**
|
|
@@ -102,15 +105,37 @@ export interface GenerateOptions extends PresentationPackagingOptions {
|
|
|
102
105
|
* constructor `renderer`; defaults to `pptxgenjs`.
|
|
103
106
|
*/
|
|
104
107
|
renderer?: PptxRendererId;
|
|
108
|
+
/**
|
|
109
|
+
* The model `prepareQuality` built from *this* presentation. Rendering
|
|
110
|
+
* then reuses that one expansion instead of running the registered
|
|
111
|
+
* plugins a second time, so a plugin whose output depends on the clock,
|
|
112
|
+
* on randomness or on a service cannot draw a slide the quality gate
|
|
113
|
+
* never inspected.
|
|
114
|
+
*/
|
|
115
|
+
prepared?: PreparedDocument<PptxQualityModel, PptxQualityFact>;
|
|
105
116
|
}
|
|
106
117
|
export type GenerateFileOptions = GenerateOptions;
|
|
107
118
|
/**
|
|
108
119
|
* Presentation generator with custom components and full type safety
|
|
109
120
|
*/
|
|
121
|
+
/**
|
|
122
|
+
* Result of `prepareQuality` — the quality model of the expanded
|
|
123
|
+
* presentation, ready for `analyzePptxQuality(document, { prepared })`.
|
|
124
|
+
*/
|
|
125
|
+
export interface QualityPreparationResult {
|
|
126
|
+
prepared: PreparedDocument<PptxQualityModel, PptxQualityFact>;
|
|
127
|
+
warnings: PipelineWarning[];
|
|
128
|
+
}
|
|
110
129
|
export interface PresentationGenerator<TCustomComponents extends readonly CustomComponent<any, any, any>[] = readonly []> {
|
|
111
130
|
generate: (document: ExtendedPresentationComponent<TCustomComponents>, options?: GenerateOptions) => Promise<BufferGenerationResult>;
|
|
112
131
|
generateBuffer: (document: ExtendedPresentationComponent<TCustomComponents>, options?: GenerateOptions) => Promise<BufferGenerationResult>;
|
|
113
132
|
generateFile: (document: ExtendedPresentationComponent<TCustomComponents>, outputPath: string, options?: GenerateFileOptions) => Promise<FileGenerationResult>;
|
|
133
|
+
/**
|
|
134
|
+
* Prepare the presentation's quality model with registered components
|
|
135
|
+
* expanded as generation expands them: plugin output is analyzed, and its
|
|
136
|
+
* findings point at the invocation that emitted it. Nothing renders.
|
|
137
|
+
*/
|
|
138
|
+
prepareQuality: (document: ExtendedPresentationComponent<TCustomComponents>, options?: GenerateOptions) => Promise<QualityPreparationResult>;
|
|
114
139
|
getComponentNames: () => string[];
|
|
115
140
|
validate: (document: ExtendedPresentationComponent<TCustomComponents>) => ValidationResult;
|
|
116
141
|
generateSchema: () => TSchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugin/types.ts"],"names":[],"mappings":"AAAA;;GAEG
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugin/types.ts"],"names":[],"mappings":"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"}
|
package/dist/quality/facts.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ChartInfoDesign, type PlaceholderKind, type PreparedDocument, type QualityFact, type TableColumnInfoDesign, type TableInfoDesign } from '@json-to-office/quality';
|
|
2
|
-
import type { FontRuntimeOpts, ServicesConfig } from '@json-to-office/shared';
|
|
2
|
+
import type { ExpandedBlocks, FontRuntimeOpts, ServicesConfig } from '@json-to-office/shared';
|
|
3
3
|
import type { PipelineWarning, PptxThemeConfig, PresentationComponentDefinition, ProcessedPresentation } from '../types';
|
|
4
|
+
import { type GenerationThemeContext } from '../core/generationContext';
|
|
4
5
|
import { type BlockSourceMap } from '../blocks';
|
|
5
6
|
import type { BlockSlotRole } from '@json-to-office/shared';
|
|
6
7
|
export interface PptxCanvasFact extends QualityFact {
|
|
@@ -16,8 +17,22 @@ export interface PptxCanvasFact extends QualityFact {
|
|
|
16
17
|
export interface PptxTextFact extends QualityFact {
|
|
17
18
|
kind: 'pptx/text';
|
|
18
19
|
slidePath: string;
|
|
20
|
+
/**
|
|
21
|
+
* The 0-based page the slide takes in an export that leaves hidden slides
|
|
22
|
+
* out, as LibreOffice's PDF export does. Absent on a hidden slide.
|
|
23
|
+
*/
|
|
24
|
+
page?: number;
|
|
25
|
+
/** The slide is hidden, so no exported page shows this text. */
|
|
26
|
+
slideHidden?: boolean;
|
|
27
|
+
/** The node's pointer in the compiled slide, where `path` is the author's. */
|
|
28
|
+
nodePath: string;
|
|
19
29
|
text: string;
|
|
20
30
|
fontSizePt: number;
|
|
31
|
+
/**
|
|
32
|
+
* The size the text was set at when a bounded `fit` stepped it down to
|
|
33
|
+
* `fontSizePt`; absent when the fit pass left the size alone.
|
|
34
|
+
*/
|
|
35
|
+
fitFromPt?: number;
|
|
21
36
|
lineSpacingPt: number;
|
|
22
37
|
paraSpaceBeforePt: number;
|
|
23
38
|
paraSpaceAfterPt: number;
|
|
@@ -26,6 +41,8 @@ export interface PptxTextFact extends QualityFact {
|
|
|
26
41
|
boxYPt?: number;
|
|
27
42
|
boxWidthPt?: number;
|
|
28
43
|
boxHeightPt?: number;
|
|
44
|
+
/** The inset the text is laid out in, `[top, right, bottom, left]` points. */
|
|
45
|
+
insetsPt: readonly [number, number, number, number];
|
|
29
46
|
verticalAlign: 'top' | 'middle' | 'bottom';
|
|
30
47
|
/** Horizontal alignment: the prop, else the named style's, else left. */
|
|
31
48
|
align: 'left' | 'center' | 'right' | 'justify';
|
|
@@ -44,6 +61,13 @@ export interface PptxTextFact extends QualityFact {
|
|
|
44
61
|
* rather than a size they can patch.
|
|
45
62
|
*/
|
|
46
63
|
generated: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* The component at `path` is one whose props the author wrote: the node
|
|
66
|
+
* itself, or a component placed in a block slot. False where `path` is an
|
|
67
|
+
* invocation — a definition's literal text, a plugin's output — whose props
|
|
68
|
+
* are the block's or the plugin's, not the text's.
|
|
69
|
+
*/
|
|
70
|
+
ownsProps: boolean;
|
|
47
71
|
/** Resolved run colour, bare hex, when the document states one. */
|
|
48
72
|
colorHex?: string;
|
|
49
73
|
/**
|
|
@@ -53,6 +77,32 @@ export interface PptxTextFact extends QualityFact {
|
|
|
53
77
|
*/
|
|
54
78
|
backgroundHexes?: readonly string[];
|
|
55
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Text written as rich-text runs. It reaches the slide like any other text,
|
|
82
|
+
* so the title, size and rendered checks read it; the estimators that assume
|
|
83
|
+
* one size and one colour for a whole box — fit, contrast, minimum size —
|
|
84
|
+
* leave it alone.
|
|
85
|
+
*/
|
|
86
|
+
export interface PptxRichTextFact extends QualityFact {
|
|
87
|
+
kind: 'pptx/rich-text';
|
|
88
|
+
slidePath: string;
|
|
89
|
+
page?: number;
|
|
90
|
+
slideHidden?: boolean;
|
|
91
|
+
nodePath: string;
|
|
92
|
+
text: string;
|
|
93
|
+
styleName?: string;
|
|
94
|
+
/** Every size a run paints, with the pointer that wrote it when one did. */
|
|
95
|
+
runSizes: readonly {
|
|
96
|
+
fontSizePt: number;
|
|
97
|
+
sizePath?: string;
|
|
98
|
+
}[];
|
|
99
|
+
generated: boolean;
|
|
100
|
+
boxXPt?: number;
|
|
101
|
+
boxYPt?: number;
|
|
102
|
+
boxWidthPt?: number;
|
|
103
|
+
boxHeightPt?: number;
|
|
104
|
+
rotationDeg: number;
|
|
105
|
+
}
|
|
56
106
|
export interface PptxSlideFact extends QualityFact {
|
|
57
107
|
kind: 'pptx/slide';
|
|
58
108
|
bodyWords: number;
|
|
@@ -76,14 +126,24 @@ export interface PptxBulletsFact extends QualityFact {
|
|
|
76
126
|
*/
|
|
77
127
|
export interface PptxImageFact extends QualityFact {
|
|
78
128
|
kind: 'pptx/image';
|
|
129
|
+
slidePath: string;
|
|
79
130
|
alt?: string;
|
|
131
|
+
/** Touches a slide edge and spans the whole other axis: a background. */
|
|
132
|
+
bleed: boolean;
|
|
80
133
|
drawnRatio?: number;
|
|
81
134
|
naturalRatio?: number;
|
|
135
|
+
/** `w` and `h` as the author wrote them, in inches, when both are numbers. */
|
|
136
|
+
authoredSizeIn?: {
|
|
137
|
+
w: number;
|
|
138
|
+
h: number;
|
|
139
|
+
};
|
|
82
140
|
}
|
|
83
141
|
/** A box drawn on a slide, in draw order — the input to the overlap rule. */
|
|
84
142
|
export interface PptxBoxFact extends QualityFact {
|
|
85
143
|
kind: 'pptx/box';
|
|
86
144
|
slidePath: string;
|
|
145
|
+
/** The node's pointer in the compiled slide, where `path` is the author's. */
|
|
146
|
+
nodePath: string;
|
|
87
147
|
componentName: string;
|
|
88
148
|
/** Draw order within the slide; a higher value is painted later, on top. */
|
|
89
149
|
order: number;
|
|
@@ -93,6 +153,15 @@ export interface PptxBoxFact extends QualityFact {
|
|
|
93
153
|
yPt: number;
|
|
94
154
|
widthPt: number;
|
|
95
155
|
heightPt: number;
|
|
156
|
+
/**
|
|
157
|
+
* The box's own `x` and `y` in inches, where the author placed it directly
|
|
158
|
+
* on the slide with plain numbers: what a repair can move. A box inside a
|
|
159
|
+
* group sits in the group's frame, and a block's box in its definition's.
|
|
160
|
+
*/
|
|
161
|
+
authoredPositionIn?: {
|
|
162
|
+
x: number;
|
|
163
|
+
y: number;
|
|
164
|
+
};
|
|
96
165
|
}
|
|
97
166
|
/** The resolved theme, as the brand rules see it. */
|
|
98
167
|
export interface PptxThemeFact extends QualityFact {
|
|
@@ -177,12 +246,32 @@ export interface PptxChromeSlotFact extends QualityFact {
|
|
|
177
246
|
slot: string;
|
|
178
247
|
role: BlockSlotRole;
|
|
179
248
|
present: boolean;
|
|
249
|
+
/** Compiled pointer of the text node the slot fills, when one does. */
|
|
250
|
+
nodePath?: string;
|
|
180
251
|
text?: string;
|
|
181
252
|
/** Lines the slot's text takes in the box the definition gave it. */
|
|
182
253
|
estimatedLines?: number;
|
|
183
254
|
fontSizePt?: number;
|
|
184
255
|
}
|
|
185
|
-
|
|
256
|
+
/**
|
|
257
|
+
* The running chrome one slide carries: whether a block builds it, and
|
|
258
|
+
* whether it shows a page number or a footer line. A profile reads it to
|
|
259
|
+
* require a page number on every slide after the cover.
|
|
260
|
+
*/
|
|
261
|
+
export interface PptxSlideChromeFact extends QualityFact {
|
|
262
|
+
kind: 'pptx/slide-chrome';
|
|
263
|
+
/** The slide's place in the deck, 0-based, disabled slides left out. */
|
|
264
|
+
index: number;
|
|
265
|
+
/** A hidden slide is never shown, so nothing is asked of it. */
|
|
266
|
+
hidden?: boolean;
|
|
267
|
+
/** Block invocations placed directly on the slide or in its groups. */
|
|
268
|
+
blocks: number;
|
|
269
|
+
/** A text on the slide carries the `{PAGE_NUMBER}` field. */
|
|
270
|
+
pageNumber: boolean;
|
|
271
|
+
/** A text in the theme's footer type, or a filled `footer` slot. */
|
|
272
|
+
footer: boolean;
|
|
273
|
+
}
|
|
274
|
+
export type PptxQualityFact = PptxCanvasFact | PptxBlockSlotFact | PptxChromeSlotFact | PptxSlideChromeFact | PptxTextFact | PptxRichTextFact | PptxSlideFact | PptxPlaceholderFact | PptxBoxFact | PptxThemeFact | PptxBulletsFact | PptxImageFact | PptxColorFact | PptxFontFact | PptxChartFact | PptxTableFact;
|
|
186
275
|
export interface PptxQualityModel {
|
|
187
276
|
authored: PresentationComponentDefinition;
|
|
188
277
|
/** The document after the export-mode pre-pass and block expansion. */
|
|
@@ -205,6 +294,16 @@ export interface PreparePptxQualityOptions {
|
|
|
205
294
|
services?: ServicesConfig;
|
|
206
295
|
warnings?: PipelineWarning[];
|
|
207
296
|
renderer?: string;
|
|
297
|
+
/** The theme context a plugin host already resolved for `expanded`. */
|
|
298
|
+
context?: GenerationThemeContext;
|
|
299
|
+
/**
|
|
300
|
+
* The expansion a plugin host already ran over `context.document`: blocks
|
|
301
|
+
* and registered code components lowered together, with the source map
|
|
302
|
+
* back to what the author wrote. Given, preparation reads it instead of
|
|
303
|
+
* expanding blocks alone, so a fact about a plugin's output reports at the
|
|
304
|
+
* invocation that emitted it.
|
|
305
|
+
*/
|
|
306
|
+
expanded?: ExpandedBlocks<PresentationComponentDefinition>;
|
|
208
307
|
}
|
|
209
308
|
export declare function preparePptxQualityDocument(document: PresentationComponentDefinition, options?: PreparePptxQualityOptions): PreparedDocument<PptxQualityModel, PptxQualityFact>;
|
|
210
309
|
//# sourceMappingURL=facts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../src/quality/facts.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAErB,KAAK,WAAW,EAEhB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../src/quality/facts.ts"],"names":[],"mappings":"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"}
|
package/dist/quality/rules.d.ts
CHANGED
|
@@ -46,6 +46,15 @@ export declare const pptxSlotBudgetRule: QualityRule<PptxQualityModel, PptxQuali
|
|
|
46
46
|
* styles a source line, selecting the consulting profile requires one.
|
|
47
47
|
*/
|
|
48
48
|
export declare const pptxRequiredChromeRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
49
|
+
/**
|
|
50
|
+
* A deck's running chrome where the profile expects it: every slide from
|
|
51
|
+
* `fromSlide` on that a block builds must carry the parts in `required` — a
|
|
52
|
+
* page number, a footer line. The first slide is exempt by default, so a
|
|
53
|
+
* cover stays clean; a slide drawn by coordinates is not judged, its chrome
|
|
54
|
+
* is its author's to place; a hidden slide is never shown. Off by default:
|
|
55
|
+
* the theme only paints a footer, the archetype asks for one.
|
|
56
|
+
*/
|
|
57
|
+
export declare const pptxSlideFooterRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
49
58
|
/**
|
|
50
59
|
* An action title that wraps past the lines a profile allows, measured in
|
|
51
60
|
* the box its definition drew and with the width model the fit pass uses.
|
|
@@ -64,10 +73,12 @@ export declare const pptxActionTitleRule: QualityRule<PptxQualityModel, PptxQual
|
|
|
64
73
|
*/
|
|
65
74
|
export declare const pptxTypeScaleRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
66
75
|
/**
|
|
67
|
-
* How many distinct sizes a deck paints, blocks included: the count
|
|
68
|
-
* reaches the slides rather than of what the author typed
|
|
69
|
-
*
|
|
70
|
-
*
|
|
76
|
+
* How many distinct sizes a deck paints, blocks and runs included: the count
|
|
77
|
+
* of what reaches the slides rather than of what the author typed — across
|
|
78
|
+
* the deck against `maximumSizes`, and on each slide against
|
|
79
|
+
* `maximumSizesPerSlide`, a slide being the page a deck is read a page at a
|
|
80
|
+
* time. Off until a profile turns it on: a theme sets no ceiling of its own,
|
|
81
|
+
* the ceiling is an archetype convention.
|
|
71
82
|
*/
|
|
72
83
|
export declare const pptxSizeCountRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
73
84
|
/**
|
|
@@ -77,14 +88,25 @@ export declare const pptxSizeCountRule: QualityRule<PptxQualityModel, PptxQualit
|
|
|
77
88
|
* repaired to it. A style that is consistently overridden is not drift. Off
|
|
78
89
|
* until a profile turns it on, for the same reason as `pptx/type-scale`,
|
|
79
90
|
* which yields to this rule on any pointer it reports.
|
|
91
|
+
*
|
|
92
|
+
* Text with no `style` has no role here, unlike DOCX's `normal`. Measured
|
|
93
|
+
* (#452): as the deck default it reports nothing on the verification decks
|
|
94
|
+
* the house blocks build, and nearly every hand-sized figure and label on
|
|
95
|
+
* the stock decks (115) and the 2.0.0 baselines (about 1,980) — a size
|
|
96
|
+
* choice per box, which type-scale and size-count already judge.
|
|
80
97
|
*/
|
|
81
98
|
export declare const pptxRoleDriftRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
82
99
|
/**
|
|
83
|
-
* Titles of one kind that do not
|
|
84
|
-
* kind
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
100
|
+
* Titles of one kind that do not land where the deck's other titles of that
|
|
101
|
+
* kind land. Judged on the laid-out title — its estimated first baseline and
|
|
102
|
+
* the edge its alignment holds, at the size the fit pass left it, inside its
|
|
103
|
+
* insets, under its vertical anchor — so two boxes drawn differently that set
|
|
104
|
+
* their text on one line agree, and two identical boxes whose titles anchor
|
|
105
|
+
* to the foot at different lengths do not. Titles compare across blocks and
|
|
106
|
+
* with titles placed by hand; a title a couple of lines or more away is a
|
|
107
|
+
* placement of its own. A theme says nothing about where a title sits, so
|
|
108
|
+
* the deck's prevailing placement is the expected value, and the profile is
|
|
109
|
+
* what asks titles to agree. Off until one turns it on.
|
|
88
110
|
*/
|
|
89
111
|
export declare const pptxTitleDriftRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
90
112
|
/**
|
|
@@ -95,9 +117,10 @@ export declare const pptxTitleDriftRule: QualityRule<PptxQualityModel, PptxQuali
|
|
|
95
117
|
export declare const pptxBulletRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
96
118
|
/**
|
|
97
119
|
* Content outside the theme's safe area. Chrome lives in the margin band by
|
|
98
|
-
* design — a tracker at the top edge, a page number
|
|
99
|
-
* does a deliberate bleed, which touches an edge and spans the
|
|
100
|
-
* other axis. Everything else belongs inside the margin the
|
|
120
|
+
* design — a tracker at the top edge, a page number and a source line at the
|
|
121
|
+
* foot — and so does a deliberate bleed, which touches an edge and spans the
|
|
122
|
+
* whole of the other axis. Everything else belongs inside the margin the
|
|
123
|
+
* theme drew.
|
|
101
124
|
*/
|
|
102
125
|
export declare const pptxSafeAreaRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
103
126
|
/**
|
|
@@ -106,6 +129,14 @@ export declare const pptxSafeAreaRule: QualityRule<PptxQualityModel, PptxQuality
|
|
|
106
129
|
* with nothing but chrome on it is a divider, not an untitled slide.
|
|
107
130
|
*/
|
|
108
131
|
export declare const pptxSlideTitleRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
132
|
+
/**
|
|
133
|
+
* A picture nothing names. A slide rarely captions its images — its title
|
|
134
|
+
* says what the slide is for — so the alt text is what tells a reader who
|
|
135
|
+
* cannot see one what it shows. A background that bleeds off the slide
|
|
136
|
+
* decorates rather than says, and is left alone. Off until a profile turns it
|
|
137
|
+
* on, as `docx/figure-label` is.
|
|
138
|
+
*/
|
|
139
|
+
export declare const pptxFigureLabelRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
109
140
|
/** An image drawn at an aspect the asset does not have. */
|
|
110
141
|
export declare const pptxImageAspectRule: QualityRule<PptxQualityModel, PptxQualityFact>;
|
|
111
142
|
export declare const PPTX_QUALITY_RULES: QualityRulePack<PptxQualityModel, PptxQualityFact>;
|
|
@@ -144,13 +175,18 @@ export declare const PPTX_QUALITY_PROFILES: {
|
|
|
144
175
|
readonly 'consulting-deck': {
|
|
145
176
|
readonly id: "consulting-deck";
|
|
146
177
|
readonly formats: readonly ["pptx"];
|
|
147
|
-
readonly description: "Consulting readout: every content slide leads with a two-line action title, every chart carries a takeaway and a source, content stays inside the theme’s safe area,
|
|
178
|
+
readonly description: "Consulting readout: every content slide leads with a two-line action title, every chart carries a takeaway and a source, every slide a block builds after the cover carries its page number, content stays inside the theme’s safe area, a box holds at most five bullets of at most twelve words, every figure carries alt text, every size is on the theme scale with at most nine in the deck and six on a slide, and titles of one kind hold one line.";
|
|
148
179
|
readonly rules: {
|
|
149
180
|
readonly 'pptx/required-chrome': {
|
|
150
181
|
readonly parameters: {
|
|
151
182
|
readonly required: readonly ["takeaway", "source"];
|
|
152
183
|
};
|
|
153
184
|
};
|
|
185
|
+
readonly 'pptx/slide-footer': {
|
|
186
|
+
readonly parameters: {
|
|
187
|
+
readonly required: readonly ["pageNumber"];
|
|
188
|
+
};
|
|
189
|
+
};
|
|
154
190
|
readonly 'pptx/action-title': {
|
|
155
191
|
readonly parameters: {
|
|
156
192
|
readonly maxLines: 2;
|
|
@@ -167,7 +203,8 @@ export declare const PPTX_QUALITY_PROFILES: {
|
|
|
167
203
|
readonly 'pptx/size-count': {
|
|
168
204
|
readonly enabled: true;
|
|
169
205
|
readonly parameters: {
|
|
170
|
-
readonly maximumSizes:
|
|
206
|
+
readonly maximumSizes: 9;
|
|
207
|
+
readonly maximumSizesPerSlide: 6;
|
|
171
208
|
};
|
|
172
209
|
};
|
|
173
210
|
readonly 'pptx/role-drift': {
|
|
@@ -191,6 +228,9 @@ export declare const PPTX_QUALITY_PROFILES: {
|
|
|
191
228
|
readonly 'pptx/slide-title': {
|
|
192
229
|
readonly enabled: true;
|
|
193
230
|
};
|
|
231
|
+
readonly 'pptx/figure-label': {
|
|
232
|
+
readonly enabled: true;
|
|
233
|
+
};
|
|
194
234
|
};
|
|
195
235
|
};
|
|
196
236
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/quality/rules.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/quality/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packaging.d.ts","sourceRoot":"","sources":["../../../src/renderers/pptxgenjs/packaging.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG
|
|
1
|
+
{"version":3,"file":"packaging.d.ts","sourceRoot":"","sources":["../../../src/renderers/pptxgenjs/packaging.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQnE,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACzC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AA4CD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
|
|
@@ -2,11 +2,18 @@
|
|
|
2
2
|
* PPTX Theme Defaults
|
|
3
3
|
*/
|
|
4
4
|
import type { PptxThemeConfig } from '../types';
|
|
5
|
+
/**
|
|
6
|
+
* The theme a deck gets when it names none: the house style (#331). The
|
|
7
|
+
* stock Office look that used to answer to `default` is gone — it is the look
|
|
8
|
+
* the design program replaces — so the name no longer resolves to a theme: a deck that
|
|
9
|
+
* names it, like one that names anything unregistered, renders on
|
|
10
|
+
* `consulting`.
|
|
11
|
+
*/
|
|
5
12
|
export declare const DEFAULT_PPTX_THEME: PptxThemeConfig;
|
|
6
13
|
export declare function getPptxTheme(name: string): PptxThemeConfig;
|
|
7
14
|
/**
|
|
8
15
|
* Whether `name` is a known built-in theme. `getPptxTheme` never misses (it
|
|
9
|
-
* falls back to the
|
|
16
|
+
* falls back to the house theme), so callers that need to distinguish "a
|
|
10
17
|
* real built-in" from "an unknown name" must check here first.
|
|
11
18
|
*/
|
|
12
19
|
export declare function hasPptxTheme(name: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/themes/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,UAAU,CAAC;AAoCtE,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/themes/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,UAAU,CAAC;AAoCtE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAuC,CAAC;AAoEzE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAc,CAAC"}
|