@lofcz/pptxtojson 2.2.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 +21 -0
- package/README.md +358 -0
- package/dist/index.cjs +11238 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +364 -0
- package/dist/index.js +11200 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.js +3 -0
- package/dist/index.umd.js.LICENSE.txt +11 -0
- package/dist/index.umd.js.map +1 -0
- package/package.json +44 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
export interface Shadow {
|
|
2
|
+
h: number
|
|
3
|
+
v: number
|
|
4
|
+
blur: number
|
|
5
|
+
color: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ColorFill {
|
|
9
|
+
type: 'color'
|
|
10
|
+
value: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ImageFill {
|
|
14
|
+
type: 'image'
|
|
15
|
+
value: {
|
|
16
|
+
ref: string
|
|
17
|
+
base64: string
|
|
18
|
+
blob: string
|
|
19
|
+
opacity: number
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface GradientFill {
|
|
24
|
+
type: 'gradient'
|
|
25
|
+
value: {
|
|
26
|
+
path: 'line' | 'circle' | 'rect' | 'shape'
|
|
27
|
+
rot: number
|
|
28
|
+
colors: {
|
|
29
|
+
pos: string
|
|
30
|
+
color: string
|
|
31
|
+
}[]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface PatternFill {
|
|
36
|
+
type: 'pattern'
|
|
37
|
+
value: {
|
|
38
|
+
type: string
|
|
39
|
+
foregroundColor: string
|
|
40
|
+
backgroundColor: string
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type Fill = ColorFill | ImageFill | GradientFill | PatternFill
|
|
45
|
+
|
|
46
|
+
export interface Border {
|
|
47
|
+
borderColor: string
|
|
48
|
+
borderWidth: number
|
|
49
|
+
borderType:'solid' | 'dashed' | 'dotted'
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface AutoFit {
|
|
53
|
+
type: 'shape' | 'text'
|
|
54
|
+
fontScale?: number
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface TextInset {
|
|
58
|
+
l: number
|
|
59
|
+
t: number
|
|
60
|
+
r: number
|
|
61
|
+
b: number
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface PathViewBox {
|
|
65
|
+
x: number
|
|
66
|
+
y: number
|
|
67
|
+
width: number
|
|
68
|
+
height: number
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface LineEnd {
|
|
72
|
+
type: 'none' | 'triangle' | 'stealth' | 'diamond' | 'oval' | 'arrow'
|
|
73
|
+
width?: 'sm' | 'med' | 'lg'
|
|
74
|
+
length?: 'sm' | 'med' | 'lg'
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface Shape {
|
|
78
|
+
type: 'shape'
|
|
79
|
+
id: string
|
|
80
|
+
left: number
|
|
81
|
+
top: number
|
|
82
|
+
width: number
|
|
83
|
+
height: number
|
|
84
|
+
borderColor: string
|
|
85
|
+
borderWidth: number
|
|
86
|
+
borderType: 'solid' | 'dashed' | 'dotted'
|
|
87
|
+
borderStrokeDasharray: string
|
|
88
|
+
shadow?: Shadow
|
|
89
|
+
fill: Fill
|
|
90
|
+
content: string
|
|
91
|
+
isFlipV: boolean
|
|
92
|
+
isFlipH: boolean
|
|
93
|
+
rotate: number
|
|
94
|
+
shapType: string
|
|
95
|
+
vAlign: string
|
|
96
|
+
wrap: boolean
|
|
97
|
+
path?: string
|
|
98
|
+
pathViewBox?: PathViewBox
|
|
99
|
+
headEnd?: LineEnd
|
|
100
|
+
tailEnd?: LineEnd
|
|
101
|
+
strokeOnly?: boolean
|
|
102
|
+
keypoints?: Record<string, number>
|
|
103
|
+
name: string
|
|
104
|
+
order: number
|
|
105
|
+
autoFit?: AutoFit
|
|
106
|
+
textInset?: TextInset
|
|
107
|
+
link?: string
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export interface Text {
|
|
111
|
+
type: 'text'
|
|
112
|
+
id: string
|
|
113
|
+
left: number
|
|
114
|
+
top: number
|
|
115
|
+
width: number
|
|
116
|
+
height: number
|
|
117
|
+
borderColor: string
|
|
118
|
+
borderWidth: number
|
|
119
|
+
borderType: 'solid' | 'dashed' | 'dotted'
|
|
120
|
+
borderStrokeDasharray: string
|
|
121
|
+
shadow?: Shadow
|
|
122
|
+
fill: Fill
|
|
123
|
+
isFlipV: boolean
|
|
124
|
+
isFlipH: boolean
|
|
125
|
+
isVertical: boolean
|
|
126
|
+
rotate: number
|
|
127
|
+
content: string
|
|
128
|
+
vAlign: string
|
|
129
|
+
wrap: boolean
|
|
130
|
+
name: string
|
|
131
|
+
order: number
|
|
132
|
+
autoFit?: AutoFit
|
|
133
|
+
textInset?: TextInset
|
|
134
|
+
link?: string
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface Image {
|
|
138
|
+
type: 'image'
|
|
139
|
+
id: string
|
|
140
|
+
left: number
|
|
141
|
+
top: number
|
|
142
|
+
width: number
|
|
143
|
+
height: number
|
|
144
|
+
ref: string
|
|
145
|
+
base64: string
|
|
146
|
+
blob: string
|
|
147
|
+
rotate: number
|
|
148
|
+
isFlipH: boolean
|
|
149
|
+
isFlipV: boolean
|
|
150
|
+
order: number
|
|
151
|
+
rect?: {
|
|
152
|
+
t?: number
|
|
153
|
+
b?: number
|
|
154
|
+
l?: number
|
|
155
|
+
r?: number
|
|
156
|
+
}
|
|
157
|
+
geom: string
|
|
158
|
+
borderColor: string
|
|
159
|
+
borderWidth: number
|
|
160
|
+
borderType: 'solid' | 'dashed' | 'dotted'
|
|
161
|
+
borderStrokeDasharray: string
|
|
162
|
+
filters?: {
|
|
163
|
+
sharpen?: number
|
|
164
|
+
colorTemperature?: number
|
|
165
|
+
saturation?: number
|
|
166
|
+
brightness?: number
|
|
167
|
+
contrast?: number
|
|
168
|
+
}
|
|
169
|
+
link?: string
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export interface TableCell {
|
|
173
|
+
text: string
|
|
174
|
+
rowSpan?: number
|
|
175
|
+
colSpan?: number
|
|
176
|
+
vMerge?: number
|
|
177
|
+
hMerge?: number
|
|
178
|
+
fillColor?: string
|
|
179
|
+
fontColor?: string
|
|
180
|
+
fontBold?: boolean
|
|
181
|
+
vAlign: string
|
|
182
|
+
borders: {
|
|
183
|
+
top?: Border
|
|
184
|
+
bottom?: Border
|
|
185
|
+
left?: Border
|
|
186
|
+
right?: Border
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export interface Table {
|
|
190
|
+
type: 'table'
|
|
191
|
+
id: string
|
|
192
|
+
left: number
|
|
193
|
+
top: number
|
|
194
|
+
width: number
|
|
195
|
+
height: number
|
|
196
|
+
data: TableCell[][]
|
|
197
|
+
borders: {
|
|
198
|
+
top?: Border
|
|
199
|
+
bottom?: Border
|
|
200
|
+
left?: Border
|
|
201
|
+
right?: Border
|
|
202
|
+
}
|
|
203
|
+
order: number
|
|
204
|
+
rowHeights: number[]
|
|
205
|
+
colWidths: number[]
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export type ChartType = 'lineChart' |
|
|
209
|
+
'line3DChart' |
|
|
210
|
+
'barChart' |
|
|
211
|
+
'bar3DChart' |
|
|
212
|
+
'pieChart' |
|
|
213
|
+
'pie3DChart' |
|
|
214
|
+
'doughnutChart' |
|
|
215
|
+
'areaChart' |
|
|
216
|
+
'area3DChart' |
|
|
217
|
+
'scatterChart' |
|
|
218
|
+
'bubbleChart' |
|
|
219
|
+
'radarChart' |
|
|
220
|
+
'surfaceChart' |
|
|
221
|
+
'surface3DChart' |
|
|
222
|
+
'stockChart'
|
|
223
|
+
|
|
224
|
+
export interface ChartValue {
|
|
225
|
+
x: string
|
|
226
|
+
y: number
|
|
227
|
+
}
|
|
228
|
+
export interface ChartXLabel {
|
|
229
|
+
[key: string]: string
|
|
230
|
+
}
|
|
231
|
+
export interface ChartItem {
|
|
232
|
+
key: string
|
|
233
|
+
values: ChartValue[]
|
|
234
|
+
xlabels: ChartXLabel
|
|
235
|
+
}
|
|
236
|
+
export type ScatterChartData = number[][]
|
|
237
|
+
export interface CommonChart {
|
|
238
|
+
type: 'chart'
|
|
239
|
+
id: string
|
|
240
|
+
left: number
|
|
241
|
+
top: number
|
|
242
|
+
width: number
|
|
243
|
+
height: number
|
|
244
|
+
data: ChartItem[]
|
|
245
|
+
colors: string[]
|
|
246
|
+
chartType: Exclude<ChartType, 'scatterChart' | 'bubbleChart'>
|
|
247
|
+
barDir?: 'bar' | 'col'
|
|
248
|
+
marker?: boolean
|
|
249
|
+
holeSize?: string
|
|
250
|
+
grouping?: string
|
|
251
|
+
style?: string
|
|
252
|
+
order: number
|
|
253
|
+
}
|
|
254
|
+
export interface ScatterChart {
|
|
255
|
+
type: 'chart'
|
|
256
|
+
id: string
|
|
257
|
+
left: number
|
|
258
|
+
top: number
|
|
259
|
+
width: number
|
|
260
|
+
height: number
|
|
261
|
+
data: ScatterChartData
|
|
262
|
+
colors: string[]
|
|
263
|
+
chartType: 'scatterChart' | 'bubbleChart'
|
|
264
|
+
order: number
|
|
265
|
+
}
|
|
266
|
+
export type Chart = CommonChart | ScatterChart
|
|
267
|
+
|
|
268
|
+
export interface Video {
|
|
269
|
+
type: 'video'
|
|
270
|
+
id: string
|
|
271
|
+
left: number
|
|
272
|
+
top: number
|
|
273
|
+
width: number
|
|
274
|
+
height: number
|
|
275
|
+
ref: string
|
|
276
|
+
blob: string
|
|
277
|
+
order: number
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export interface Audio {
|
|
281
|
+
type: 'audio'
|
|
282
|
+
id: string
|
|
283
|
+
left: number
|
|
284
|
+
top: number
|
|
285
|
+
width: number
|
|
286
|
+
height: number
|
|
287
|
+
ref: string
|
|
288
|
+
blob: string
|
|
289
|
+
order: number
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export interface Diagram {
|
|
293
|
+
type: 'diagram'
|
|
294
|
+
id: string
|
|
295
|
+
left: number
|
|
296
|
+
top: number
|
|
297
|
+
width: number
|
|
298
|
+
height: number
|
|
299
|
+
elements: (Shape | Text)[]
|
|
300
|
+
textList: string[]
|
|
301
|
+
order: number
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
export interface Math {
|
|
305
|
+
type: 'math'
|
|
306
|
+
id: string
|
|
307
|
+
left: number
|
|
308
|
+
top: number
|
|
309
|
+
width: number
|
|
310
|
+
height: number
|
|
311
|
+
latex: string
|
|
312
|
+
picRef: string
|
|
313
|
+
picBase64: string
|
|
314
|
+
picBlob: string
|
|
315
|
+
order: number
|
|
316
|
+
text?: string
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export type BaseElement = Shape | Text | Image | Table | Chart | Video | Audio | Diagram | Math
|
|
320
|
+
|
|
321
|
+
export interface Group {
|
|
322
|
+
type: 'group'
|
|
323
|
+
id: string
|
|
324
|
+
left: number
|
|
325
|
+
top: number
|
|
326
|
+
width: number
|
|
327
|
+
height: number
|
|
328
|
+
rotate: number
|
|
329
|
+
elements: BaseElement[]
|
|
330
|
+
order: number
|
|
331
|
+
isFlipH: boolean
|
|
332
|
+
isFlipV: boolean
|
|
333
|
+
}
|
|
334
|
+
export type Element = BaseElement | Group
|
|
335
|
+
|
|
336
|
+
export interface SlideTransition {
|
|
337
|
+
type: string
|
|
338
|
+
duration: number
|
|
339
|
+
direction: string | null
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
export interface Slide {
|
|
343
|
+
fill: Fill
|
|
344
|
+
elements: Element[]
|
|
345
|
+
layoutElements: Element[]
|
|
346
|
+
note: string
|
|
347
|
+
transition?: SlideTransition | null
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
export interface Options {
|
|
351
|
+
imageMode?: 'base64' | 'blob' | 'both' | 'none'
|
|
352
|
+
videoMode?: 'blob' | 'none'
|
|
353
|
+
audioMode?: 'blob' | 'none'
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
export const parse: (file: ArrayBuffer, options?: Options) => Promise<{
|
|
357
|
+
slides: Slide[]
|
|
358
|
+
themeColors: string[]
|
|
359
|
+
usedFonts: string[]
|
|
360
|
+
size: {
|
|
361
|
+
width: number
|
|
362
|
+
height: number
|
|
363
|
+
}
|
|
364
|
+
}>
|