json2pptx 0.1.0 → 0.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.
@@ -0,0 +1,133 @@
1
+ type ElementShadow = {
2
+ color?: string;
3
+ h?: number;
4
+ v?: number;
5
+ blur?: number;
6
+ };
7
+ type ElementOutline = {
8
+ width?: number;
9
+ color?: string;
10
+ style?: 'solid' | 'dashed' | 'dotted';
11
+ };
12
+ type ElementFilters = {
13
+ opacity?: string;
14
+ };
15
+ type ElementClip = {
16
+ shape?: 'ellipse' | string;
17
+ range?: [[number, number], [number, number]];
18
+ };
19
+ type TextContent = {
20
+ content?: string;
21
+ defaultFontName?: string;
22
+ defaultColor?: string;
23
+ align?: string;
24
+ };
25
+ type BaseElement<T extends string = string> = {
26
+ id?: string;
27
+ type: T;
28
+ left?: number;
29
+ top?: number;
30
+ width?: number;
31
+ height?: number;
32
+ rotate?: number;
33
+ opacity?: number;
34
+ flipH?: boolean;
35
+ flipV?: boolean;
36
+ shadow?: ElementShadow;
37
+ outline?: ElementOutline;
38
+ };
39
+ type TextElement = BaseElement<'text'> & {
40
+ type: 'text';
41
+ content?: string;
42
+ defaultFontName?: string;
43
+ defaultColor?: string;
44
+ fill?: string;
45
+ wordSpace?: number;
46
+ lineHeight?: number;
47
+ paragraphSpace?: number;
48
+ vertical?: boolean;
49
+ };
50
+ type ImageElement = BaseElement<'image'> & {
51
+ type: 'image';
52
+ src?: string;
53
+ filters?: ElementFilters;
54
+ clip?: ElementClip;
55
+ };
56
+ type ShapeElement = BaseElement<'shape'> & {
57
+ type: 'shape';
58
+ path?: string;
59
+ viewBox?: [number, number];
60
+ fill?: string;
61
+ pattern?: string;
62
+ text?: TextContent;
63
+ };
64
+ type LineElement = BaseElement<'line'> & {
65
+ type: 'line';
66
+ start?: [number, number];
67
+ end?: [number, number];
68
+ broken?: [number, number];
69
+ broken2?: [number, number];
70
+ curve?: [number, number];
71
+ cubic?: [[number, number], [number, number]];
72
+ color?: string;
73
+ style?: 'solid' | 'dashed' | 'dotted';
74
+ points?: [unknown, unknown];
75
+ };
76
+ type TableCellStyle = {
77
+ fontname?: string;
78
+ color?: string;
79
+ align?: string;
80
+ fontsize?: string;
81
+ backcolor?: string;
82
+ };
83
+ type TableCellData = {
84
+ id?: string;
85
+ colspan?: number;
86
+ rowspan?: number;
87
+ text?: string;
88
+ style?: TableCellStyle;
89
+ };
90
+ type TableElement = BaseElement<'table'> & {
91
+ type: 'table';
92
+ colWidths?: number[];
93
+ data?: TableCellData[][];
94
+ cellMinHeight?: number;
95
+ };
96
+ type SlideElement = TextElement | ImageElement | ShapeElement | LineElement | TableElement;
97
+ type SlideBackground = {
98
+ color?: string;
99
+ };
100
+ type Slide = {
101
+ background?: SlideBackground;
102
+ elements?: SlideElement[];
103
+ };
104
+ type DeckTheme = {
105
+ fontName?: string;
106
+ };
107
+ type Deck = {
108
+ title?: string;
109
+ width?: number;
110
+ height?: number;
111
+ slides?: Slide[];
112
+ theme?: DeckTheme;
113
+ };
114
+
115
+ declare const resolveImageData: (src: string) => Promise<string>;
116
+
117
+ declare const getElementRange: (element: SlideElement) => {
118
+ minX: number;
119
+ maxX: number;
120
+ minY: number;
121
+ maxY: number;
122
+ };
123
+ declare const getLineElementPath: (element: SlideElement) => string;
124
+
125
+ declare const ENABLE_DECK_JSON = true;
126
+ declare const PPTX_JSON_PAYLOAD_PATH = "json2ppt-editor.json";
127
+ declare const PPTX_JSON_PAYLOAD_VERSION = 1;
128
+ declare function buildPptxBlob(template: Deck): Promise<{
129
+ blob: Blob;
130
+ fileName: string;
131
+ }>;
132
+
133
+ export { type BaseElement, type Deck, type DeckTheme, ENABLE_DECK_JSON, type ElementClip, type ElementFilters, type ElementOutline, type ElementShadow, type ImageElement, type LineElement, PPTX_JSON_PAYLOAD_PATH, PPTX_JSON_PAYLOAD_VERSION, type ShapeElement, type Slide, type SlideBackground, type SlideElement, type TextContent, type TextElement, buildPptxBlob, getElementRange, getLineElementPath, resolveImageData };
@@ -0,0 +1,133 @@
1
+ type ElementShadow = {
2
+ color?: string;
3
+ h?: number;
4
+ v?: number;
5
+ blur?: number;
6
+ };
7
+ type ElementOutline = {
8
+ width?: number;
9
+ color?: string;
10
+ style?: 'solid' | 'dashed' | 'dotted';
11
+ };
12
+ type ElementFilters = {
13
+ opacity?: string;
14
+ };
15
+ type ElementClip = {
16
+ shape?: 'ellipse' | string;
17
+ range?: [[number, number], [number, number]];
18
+ };
19
+ type TextContent = {
20
+ content?: string;
21
+ defaultFontName?: string;
22
+ defaultColor?: string;
23
+ align?: string;
24
+ };
25
+ type BaseElement<T extends string = string> = {
26
+ id?: string;
27
+ type: T;
28
+ left?: number;
29
+ top?: number;
30
+ width?: number;
31
+ height?: number;
32
+ rotate?: number;
33
+ opacity?: number;
34
+ flipH?: boolean;
35
+ flipV?: boolean;
36
+ shadow?: ElementShadow;
37
+ outline?: ElementOutline;
38
+ };
39
+ type TextElement = BaseElement<'text'> & {
40
+ type: 'text';
41
+ content?: string;
42
+ defaultFontName?: string;
43
+ defaultColor?: string;
44
+ fill?: string;
45
+ wordSpace?: number;
46
+ lineHeight?: number;
47
+ paragraphSpace?: number;
48
+ vertical?: boolean;
49
+ };
50
+ type ImageElement = BaseElement<'image'> & {
51
+ type: 'image';
52
+ src?: string;
53
+ filters?: ElementFilters;
54
+ clip?: ElementClip;
55
+ };
56
+ type ShapeElement = BaseElement<'shape'> & {
57
+ type: 'shape';
58
+ path?: string;
59
+ viewBox?: [number, number];
60
+ fill?: string;
61
+ pattern?: string;
62
+ text?: TextContent;
63
+ };
64
+ type LineElement = BaseElement<'line'> & {
65
+ type: 'line';
66
+ start?: [number, number];
67
+ end?: [number, number];
68
+ broken?: [number, number];
69
+ broken2?: [number, number];
70
+ curve?: [number, number];
71
+ cubic?: [[number, number], [number, number]];
72
+ color?: string;
73
+ style?: 'solid' | 'dashed' | 'dotted';
74
+ points?: [unknown, unknown];
75
+ };
76
+ type TableCellStyle = {
77
+ fontname?: string;
78
+ color?: string;
79
+ align?: string;
80
+ fontsize?: string;
81
+ backcolor?: string;
82
+ };
83
+ type TableCellData = {
84
+ id?: string;
85
+ colspan?: number;
86
+ rowspan?: number;
87
+ text?: string;
88
+ style?: TableCellStyle;
89
+ };
90
+ type TableElement = BaseElement<'table'> & {
91
+ type: 'table';
92
+ colWidths?: number[];
93
+ data?: TableCellData[][];
94
+ cellMinHeight?: number;
95
+ };
96
+ type SlideElement = TextElement | ImageElement | ShapeElement | LineElement | TableElement;
97
+ type SlideBackground = {
98
+ color?: string;
99
+ };
100
+ type Slide = {
101
+ background?: SlideBackground;
102
+ elements?: SlideElement[];
103
+ };
104
+ type DeckTheme = {
105
+ fontName?: string;
106
+ };
107
+ type Deck = {
108
+ title?: string;
109
+ width?: number;
110
+ height?: number;
111
+ slides?: Slide[];
112
+ theme?: DeckTheme;
113
+ };
114
+
115
+ declare const resolveImageData: (src: string) => Promise<string>;
116
+
117
+ declare const getElementRange: (element: SlideElement) => {
118
+ minX: number;
119
+ maxX: number;
120
+ minY: number;
121
+ maxY: number;
122
+ };
123
+ declare const getLineElementPath: (element: SlideElement) => string;
124
+
125
+ declare const ENABLE_DECK_JSON = true;
126
+ declare const PPTX_JSON_PAYLOAD_PATH = "json2ppt-editor.json";
127
+ declare const PPTX_JSON_PAYLOAD_VERSION = 1;
128
+ declare function buildPptxBlob(template: Deck): Promise<{
129
+ blob: Blob;
130
+ fileName: string;
131
+ }>;
132
+
133
+ export { type BaseElement, type Deck, type DeckTheme, ENABLE_DECK_JSON, type ElementClip, type ElementFilters, type ElementOutline, type ElementShadow, type ImageElement, type LineElement, PPTX_JSON_PAYLOAD_PATH, PPTX_JSON_PAYLOAD_VERSION, type ShapeElement, type Slide, type SlideBackground, type SlideElement, type TextContent, type TextElement, buildPptxBlob, getElementRange, getLineElementPath, resolveImageData };