react-web-pdf-editor 0.0.0-stage → 0.1.1

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,195 @@
1
+ import * as react from 'react';
2
+ import { CSSProperties, ReactNode } from 'react';
3
+ import { PDFDocumentProxy } from 'pdfjs-dist';
4
+
5
+ declare function configurePdfWorker(workerSrc?: string): void;
6
+
7
+ type PdfSource = string | URL | File | Blob | ArrayBuffer | Uint8Array;
8
+ type PdfLoadSuccess = {
9
+ numPages: number;
10
+ };
11
+ type Tool = "select" | "draw" | "text" | "highlight" | "image" | "signature";
12
+ type TextAnnotation = {
13
+ id: string;
14
+ pageNumber: number;
15
+ x: number;
16
+ y: number;
17
+ width?: number;
18
+ height?: number;
19
+ text: string;
20
+ fontFamily: string;
21
+ fontSize: number;
22
+ color: string;
23
+ fontWeight: "normal" | "bold";
24
+ fontStyle: "normal" | "italic";
25
+ textAlign: "left" | "center" | "right";
26
+ rotation?: number;
27
+ };
28
+ type DrawPoint = {
29
+ x: number;
30
+ y: number;
31
+ };
32
+ type DrawStroke = {
33
+ id: string;
34
+ pageNumber: number;
35
+ points: DrawPoint[];
36
+ color: string;
37
+ width: number;
38
+ };
39
+ type HighlightRect = {
40
+ left: number;
41
+ top: number;
42
+ width: number;
43
+ height: number;
44
+ };
45
+ type HighlightAnnotation = {
46
+ id: string;
47
+ pageNumber: number;
48
+ rects: HighlightRect[];
49
+ color: string;
50
+ text?: string;
51
+ };
52
+ type SignatureAnnotation = {
53
+ id: string;
54
+ pageNumber: number;
55
+ x: number;
56
+ y: number;
57
+ width: number;
58
+ height: number;
59
+ src: string;
60
+ rotation?: number;
61
+ };
62
+ type PendingSignature = {
63
+ src: string;
64
+ aspect: number;
65
+ };
66
+ type ImageAnnotation = {
67
+ id: string;
68
+ pageNumber: number;
69
+ x: number;
70
+ y: number;
71
+ width: number;
72
+ height: number;
73
+ src: string;
74
+ rotation?: number;
75
+ opacity?: number;
76
+ };
77
+ type PendingImage = {
78
+ src: string;
79
+ aspect: number;
80
+ name?: string;
81
+ };
82
+ type ToolbarSearchState = {
83
+ query: string;
84
+ setQuery: (query: string) => void;
85
+ matchCount: number;
86
+ currentIndex: number;
87
+ next: () => void;
88
+ prev: () => void;
89
+ clear: () => void;
90
+ };
91
+ type ToolbarShortcuts = {
92
+ undo: string;
93
+ redo: string;
94
+ undoKeys: string;
95
+ redoKeys: string;
96
+ };
97
+ type ToolbarApi = {
98
+ name: string;
99
+ setName: (name: string) => void;
100
+ disabled: boolean;
101
+ canUndo: boolean;
102
+ canRedo: boolean;
103
+ undoLabel?: string;
104
+ redoLabel?: string;
105
+ undo: () => void;
106
+ redo: () => void;
107
+ shortcuts: ToolbarShortcuts;
108
+ activeTool: Tool;
109
+ setTool: (tool: Tool) => void;
110
+ scale: number;
111
+ minScale: number;
112
+ maxScale: number;
113
+ setScale: (scale: number) => void;
114
+ zoomIn: () => void;
115
+ zoomOut: () => void;
116
+ page: number;
117
+ numPages: number;
118
+ setPage: (page: number) => void;
119
+ prevPage: () => void;
120
+ nextPage: () => void;
121
+ search: ToolbarSearchState;
122
+ exportPdf: () => void;
123
+ exporting: boolean;
124
+ exportError: Error | null;
125
+ };
126
+ type SidebarPage = {
127
+ pageNumber: number;
128
+ index: number;
129
+ label: number;
130
+ selected: boolean;
131
+ justAdded: boolean;
132
+ };
133
+ type SidebarApi = {
134
+ pdf: PDFDocumentProxy | null;
135
+ page: number;
136
+ numPages: number;
137
+ pages: SidebarPage[];
138
+ setPage: (page: number) => void;
139
+ addBlankPage: (afterPage: number) => void;
140
+ deletePage: (pageNumber: number) => void;
141
+ reorderPages: (from: number, to: number) => void;
142
+ disabled: boolean;
143
+ mutating: boolean;
144
+ adding: boolean;
145
+ canAdd: boolean;
146
+ canDelete: boolean;
147
+ canReorder: boolean;
148
+ error: string | null;
149
+ drawStrokes: DrawStroke[];
150
+ highlights: HighlightAnnotation[];
151
+ textAnnotations: TextAnnotation[];
152
+ signatures: SignatureAnnotation[];
153
+ images: ImageAnnotation[];
154
+ };
155
+ type PdfEditorProps = {
156
+ file?: PdfSource | null;
157
+ name?: string;
158
+ className?: string;
159
+ style?: CSSProperties;
160
+ page?: number;
161
+ defaultPage?: number;
162
+ scale?: number;
163
+ defaultScale?: number;
164
+ minScale?: number;
165
+ maxScale?: number;
166
+ workerSrc?: string;
167
+ exportWorkerSrc?: string;
168
+ exportFileName?: string;
169
+ showToolbar?: boolean;
170
+ toolbar?: (api: ToolbarApi) => ReactNode;
171
+ showSidebar?: boolean;
172
+ sidebar?: (api: SidebarApi) => ReactNode;
173
+ emptyState?: ReactNode;
174
+ onLoadSuccess?: (info: PdfLoadSuccess) => void;
175
+ onLoadError?: (error: Error) => void;
176
+ onPageChange?: (page: number) => void;
177
+ onScaleChange?: (scale: number) => void;
178
+ onNameChange?: (name: string) => void;
179
+ onExport?: (blob: Blob) => void | Promise<void>;
180
+ onExportError?: (error: Error) => void;
181
+ };
182
+
183
+ declare function PdfEditor({ file, name, className, style, page, defaultPage, scale, defaultScale, minScale, maxScale, workerSrc, exportWorkerSrc, exportFileName, showToolbar, toolbar, showSidebar, sidebar, emptyState, onLoadSuccess, onLoadError, onPageChange, onScaleChange, onNameChange, onExport, onExportError, }: PdfEditorProps): react.JSX.Element;
184
+
185
+ declare function PagesSidebar({ pdf, page, pages, setPage, addBlankPage, deletePage, reorderPages, adding, mutating, canAdd, canDelete, canReorder, disabled, error, drawStrokes, highlights, textAnnotations, signatures, images, }: SidebarApi): react.JSX.Element;
186
+
187
+ type ToolbarProps = ToolbarApi & {
188
+ compact?: boolean;
189
+ showPagesButton?: boolean;
190
+ pagesOpen?: boolean;
191
+ onTogglePages?: () => void;
192
+ };
193
+ declare function Toolbar({ page, numPages, scale, minScale, maxScale, disabled, activeTool, search, setPage, setScale, setTool, exportPdf, exporting, exportError, name, setName, canUndo, canRedo, undoLabel, redoLabel, undo, redo, shortcuts, zoomIn, zoomOut, prevPage, nextPage, compact, showPagesButton, pagesOpen, onTogglePages, }: ToolbarProps): react.JSX.Element;
194
+
195
+ export { type DrawPoint, type DrawStroke, type HighlightAnnotation, type HighlightRect, type ImageAnnotation, PagesSidebar, PdfEditor, type PdfEditorProps, type PdfLoadSuccess, type PdfSource, type PendingImage, type PendingSignature, type SidebarApi, type SidebarPage, type SignatureAnnotation, type TextAnnotation, type Tool, Toolbar, type ToolbarApi, type ToolbarSearchState, type ToolbarShortcuts, configurePdfWorker };
@@ -0,0 +1,195 @@
1
+ import * as react from 'react';
2
+ import { CSSProperties, ReactNode } from 'react';
3
+ import { PDFDocumentProxy } from 'pdfjs-dist';
4
+
5
+ declare function configurePdfWorker(workerSrc?: string): void;
6
+
7
+ type PdfSource = string | URL | File | Blob | ArrayBuffer | Uint8Array;
8
+ type PdfLoadSuccess = {
9
+ numPages: number;
10
+ };
11
+ type Tool = "select" | "draw" | "text" | "highlight" | "image" | "signature";
12
+ type TextAnnotation = {
13
+ id: string;
14
+ pageNumber: number;
15
+ x: number;
16
+ y: number;
17
+ width?: number;
18
+ height?: number;
19
+ text: string;
20
+ fontFamily: string;
21
+ fontSize: number;
22
+ color: string;
23
+ fontWeight: "normal" | "bold";
24
+ fontStyle: "normal" | "italic";
25
+ textAlign: "left" | "center" | "right";
26
+ rotation?: number;
27
+ };
28
+ type DrawPoint = {
29
+ x: number;
30
+ y: number;
31
+ };
32
+ type DrawStroke = {
33
+ id: string;
34
+ pageNumber: number;
35
+ points: DrawPoint[];
36
+ color: string;
37
+ width: number;
38
+ };
39
+ type HighlightRect = {
40
+ left: number;
41
+ top: number;
42
+ width: number;
43
+ height: number;
44
+ };
45
+ type HighlightAnnotation = {
46
+ id: string;
47
+ pageNumber: number;
48
+ rects: HighlightRect[];
49
+ color: string;
50
+ text?: string;
51
+ };
52
+ type SignatureAnnotation = {
53
+ id: string;
54
+ pageNumber: number;
55
+ x: number;
56
+ y: number;
57
+ width: number;
58
+ height: number;
59
+ src: string;
60
+ rotation?: number;
61
+ };
62
+ type PendingSignature = {
63
+ src: string;
64
+ aspect: number;
65
+ };
66
+ type ImageAnnotation = {
67
+ id: string;
68
+ pageNumber: number;
69
+ x: number;
70
+ y: number;
71
+ width: number;
72
+ height: number;
73
+ src: string;
74
+ rotation?: number;
75
+ opacity?: number;
76
+ };
77
+ type PendingImage = {
78
+ src: string;
79
+ aspect: number;
80
+ name?: string;
81
+ };
82
+ type ToolbarSearchState = {
83
+ query: string;
84
+ setQuery: (query: string) => void;
85
+ matchCount: number;
86
+ currentIndex: number;
87
+ next: () => void;
88
+ prev: () => void;
89
+ clear: () => void;
90
+ };
91
+ type ToolbarShortcuts = {
92
+ undo: string;
93
+ redo: string;
94
+ undoKeys: string;
95
+ redoKeys: string;
96
+ };
97
+ type ToolbarApi = {
98
+ name: string;
99
+ setName: (name: string) => void;
100
+ disabled: boolean;
101
+ canUndo: boolean;
102
+ canRedo: boolean;
103
+ undoLabel?: string;
104
+ redoLabel?: string;
105
+ undo: () => void;
106
+ redo: () => void;
107
+ shortcuts: ToolbarShortcuts;
108
+ activeTool: Tool;
109
+ setTool: (tool: Tool) => void;
110
+ scale: number;
111
+ minScale: number;
112
+ maxScale: number;
113
+ setScale: (scale: number) => void;
114
+ zoomIn: () => void;
115
+ zoomOut: () => void;
116
+ page: number;
117
+ numPages: number;
118
+ setPage: (page: number) => void;
119
+ prevPage: () => void;
120
+ nextPage: () => void;
121
+ search: ToolbarSearchState;
122
+ exportPdf: () => void;
123
+ exporting: boolean;
124
+ exportError: Error | null;
125
+ };
126
+ type SidebarPage = {
127
+ pageNumber: number;
128
+ index: number;
129
+ label: number;
130
+ selected: boolean;
131
+ justAdded: boolean;
132
+ };
133
+ type SidebarApi = {
134
+ pdf: PDFDocumentProxy | null;
135
+ page: number;
136
+ numPages: number;
137
+ pages: SidebarPage[];
138
+ setPage: (page: number) => void;
139
+ addBlankPage: (afterPage: number) => void;
140
+ deletePage: (pageNumber: number) => void;
141
+ reorderPages: (from: number, to: number) => void;
142
+ disabled: boolean;
143
+ mutating: boolean;
144
+ adding: boolean;
145
+ canAdd: boolean;
146
+ canDelete: boolean;
147
+ canReorder: boolean;
148
+ error: string | null;
149
+ drawStrokes: DrawStroke[];
150
+ highlights: HighlightAnnotation[];
151
+ textAnnotations: TextAnnotation[];
152
+ signatures: SignatureAnnotation[];
153
+ images: ImageAnnotation[];
154
+ };
155
+ type PdfEditorProps = {
156
+ file?: PdfSource | null;
157
+ name?: string;
158
+ className?: string;
159
+ style?: CSSProperties;
160
+ page?: number;
161
+ defaultPage?: number;
162
+ scale?: number;
163
+ defaultScale?: number;
164
+ minScale?: number;
165
+ maxScale?: number;
166
+ workerSrc?: string;
167
+ exportWorkerSrc?: string;
168
+ exportFileName?: string;
169
+ showToolbar?: boolean;
170
+ toolbar?: (api: ToolbarApi) => ReactNode;
171
+ showSidebar?: boolean;
172
+ sidebar?: (api: SidebarApi) => ReactNode;
173
+ emptyState?: ReactNode;
174
+ onLoadSuccess?: (info: PdfLoadSuccess) => void;
175
+ onLoadError?: (error: Error) => void;
176
+ onPageChange?: (page: number) => void;
177
+ onScaleChange?: (scale: number) => void;
178
+ onNameChange?: (name: string) => void;
179
+ onExport?: (blob: Blob) => void | Promise<void>;
180
+ onExportError?: (error: Error) => void;
181
+ };
182
+
183
+ declare function PdfEditor({ file, name, className, style, page, defaultPage, scale, defaultScale, minScale, maxScale, workerSrc, exportWorkerSrc, exportFileName, showToolbar, toolbar, showSidebar, sidebar, emptyState, onLoadSuccess, onLoadError, onPageChange, onScaleChange, onNameChange, onExport, onExportError, }: PdfEditorProps): react.JSX.Element;
184
+
185
+ declare function PagesSidebar({ pdf, page, pages, setPage, addBlankPage, deletePage, reorderPages, adding, mutating, canAdd, canDelete, canReorder, disabled, error, drawStrokes, highlights, textAnnotations, signatures, images, }: SidebarApi): react.JSX.Element;
186
+
187
+ type ToolbarProps = ToolbarApi & {
188
+ compact?: boolean;
189
+ showPagesButton?: boolean;
190
+ pagesOpen?: boolean;
191
+ onTogglePages?: () => void;
192
+ };
193
+ declare function Toolbar({ page, numPages, scale, minScale, maxScale, disabled, activeTool, search, setPage, setScale, setTool, exportPdf, exporting, exportError, name, setName, canUndo, canRedo, undoLabel, redoLabel, undo, redo, shortcuts, zoomIn, zoomOut, prevPage, nextPage, compact, showPagesButton, pagesOpen, onTogglePages, }: ToolbarProps): react.JSX.Element;
194
+
195
+ export { type DrawPoint, type DrawStroke, type HighlightAnnotation, type HighlightRect, type ImageAnnotation, PagesSidebar, PdfEditor, type PdfEditorProps, type PdfLoadSuccess, type PdfSource, type PendingImage, type PendingSignature, type SidebarApi, type SidebarPage, type SignatureAnnotation, type TextAnnotation, type Tool, Toolbar, type ToolbarApi, type ToolbarSearchState, type ToolbarShortcuts, configurePdfWorker };