@epam/pdf-highlighter-kit 0.0.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.
Files changed (77) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +219 -0
  3. package/dist/PDFHighlightViewer.d.ts +219 -0
  4. package/dist/PDFHighlightViewer.d.ts.map +1 -0
  5. package/dist/PDFHighlightViewer.js +1551 -0
  6. package/dist/PDFHighlightViewer.js.map +1 -0
  7. package/dist/api.d.ts +59 -0
  8. package/dist/api.d.ts.map +1 -0
  9. package/dist/api.js +2 -0
  10. package/dist/api.js.map +1 -0
  11. package/dist/config.d.ts +12 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +32 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/core/interaction-handler.d.ts +63 -0
  16. package/dist/core/interaction-handler.d.ts.map +1 -0
  17. package/dist/core/interaction-handler.js +430 -0
  18. package/dist/core/interaction-handler.js.map +1 -0
  19. package/dist/core/pdf-engine.d.ts +37 -0
  20. package/dist/core/pdf-engine.d.ts.map +1 -0
  21. package/dist/core/pdf-engine.js +281 -0
  22. package/dist/core/pdf-engine.js.map +1 -0
  23. package/dist/core/performance-optimizer.d.ts +91 -0
  24. package/dist/core/performance-optimizer.d.ts.map +1 -0
  25. package/dist/core/performance-optimizer.js +473 -0
  26. package/dist/core/performance-optimizer.js.map +1 -0
  27. package/dist/core/style-manager.d.ts +88 -0
  28. package/dist/core/style-manager.d.ts.map +1 -0
  29. package/dist/core/style-manager.js +413 -0
  30. package/dist/core/style-manager.js.map +1 -0
  31. package/dist/core/text-segmentation.d.ts +41 -0
  32. package/dist/core/text-segmentation.d.ts.map +1 -0
  33. package/dist/core/text-segmentation.js +338 -0
  34. package/dist/core/text-segmentation.js.map +1 -0
  35. package/dist/core/unified-layer-builder.d.ts +27 -0
  36. package/dist/core/unified-layer-builder.d.ts.map +1 -0
  37. package/dist/core/unified-layer-builder.js +331 -0
  38. package/dist/core/unified-layer-builder.js.map +1 -0
  39. package/dist/core/viewport-manager.d.ts +103 -0
  40. package/dist/core/viewport-manager.d.ts.map +1 -0
  41. package/dist/core/viewport-manager.js +222 -0
  42. package/dist/core/viewport-manager.js.map +1 -0
  43. package/dist/index.d.ts +27 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +57 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/pdf-highlight-viewer.css +488 -0
  48. package/dist/types.d.ts +279 -0
  49. package/dist/types.d.ts.map +1 -0
  50. package/dist/types.js +2 -0
  51. package/dist/types.js.map +1 -0
  52. package/dist/utils/highlight-adapter.d.ts +31 -0
  53. package/dist/utils/highlight-adapter.d.ts.map +1 -0
  54. package/dist/utils/highlight-adapter.js +202 -0
  55. package/dist/utils/highlight-adapter.js.map +1 -0
  56. package/dist/utils/pdf-utils.d.ts +14 -0
  57. package/dist/utils/pdf-utils.d.ts.map +1 -0
  58. package/dist/utils/pdf-utils.js +120 -0
  59. package/dist/utils/pdf-utils.js.map +1 -0
  60. package/dist/utils/worker-loader-simple.d.ts +8 -0
  61. package/dist/utils/worker-loader-simple.d.ts.map +1 -0
  62. package/dist/utils/worker-loader-simple.js +65 -0
  63. package/dist/utils/worker-loader-simple.js.map +1 -0
  64. package/dist/vite.config.d.ts +3 -0
  65. package/dist/vite.config.d.ts.map +1 -0
  66. package/dist/vite.config.js +20 -0
  67. package/dist/vite.config.js.map +1 -0
  68. package/dist/vitest.config.d.ts +3 -0
  69. package/dist/vitest.config.d.ts.map +1 -0
  70. package/dist/vitest.config.js +24 -0
  71. package/dist/vitest.config.js.map +1 -0
  72. package/dist/vitest.setup.d.ts +2 -0
  73. package/dist/vitest.setup.d.ts.map +1 -0
  74. package/dist/vitest.setup.js +8 -0
  75. package/dist/vitest.setup.js.map +1 -0
  76. package/package.json +74 -0
  77. package/styles/pdf-highlight-viewer.css +488 -0
@@ -0,0 +1,279 @@
1
+ export type Priority = 'high' | 'medium' | 'low' | 'idle';
2
+ export interface BBox {
3
+ x1: number;
4
+ y1: number;
5
+ x2: number;
6
+ y2: number;
7
+ page: number;
8
+ }
9
+ export interface HighlightStyle {
10
+ backgroundColor: string;
11
+ borderColor?: string;
12
+ borderWidth?: string;
13
+ opacity?: number;
14
+ hoverOpacity?: number;
15
+ pulseAnimation?: boolean;
16
+ }
17
+ export interface InputHighlightData {
18
+ id: string;
19
+ bboxes: BBox[];
20
+ style?: HighlightStyle;
21
+ tooltipText?: string;
22
+ metadata?: Record<string, any>;
23
+ }
24
+ export interface RenderingQueue {
25
+ high: Page[];
26
+ medium: Page[];
27
+ low: Page[];
28
+ idle: Page[];
29
+ }
30
+ export interface ViewportManager {
31
+ getVisiblePages(scrollTop: number, containerHeight: number): number[];
32
+ getBufferPages(visiblePages: number[], bufferSize: number): number[];
33
+ queuePagesForRendering(pages: number[], priority: Priority): void;
34
+ unloadDistantPages(currentPage: number, threshold: number): void;
35
+ setTotalPages(totalPages: number): void;
36
+ getRenderingStrategy(scrollTop: number, containerHeight: number): {
37
+ highPriority: number[];
38
+ mediumPriority: number[];
39
+ lowPriority: number[];
40
+ unloadPages: number[];
41
+ };
42
+ }
43
+ export interface Viewport {
44
+ x: number;
45
+ y: number;
46
+ width: number;
47
+ height: number;
48
+ scale: number;
49
+ bounds: BoundingBox;
50
+ }
51
+ export interface BoundingBox {
52
+ x1: number;
53
+ y1: number;
54
+ x2: number;
55
+ y2: number;
56
+ }
57
+ export interface TermOccurrence {
58
+ termId: string;
59
+ coordinates: BoundingBox[];
60
+ }
61
+ export interface TermMetadata {
62
+ term: string;
63
+ category: string;
64
+ frequency: number;
65
+ aliases: string[];
66
+ relatedTerms: string[];
67
+ pages: number[];
68
+ explanations: {
69
+ page: number;
70
+ coordinates: BoundingBox;
71
+ text: string;
72
+ }[];
73
+ }
74
+ export type HighlightData = Record<string, {
75
+ pages: Record<string, TermOccurrence[]>;
76
+ terms: Record<string, TermMetadata>;
77
+ }>;
78
+ export interface TextContent {
79
+ items: TextItem[];
80
+ styles: any;
81
+ }
82
+ export interface TextItem {
83
+ str: string;
84
+ dir: string;
85
+ width: number;
86
+ height: number;
87
+ transform: number[];
88
+ fontName: string;
89
+ }
90
+ export interface Segment {
91
+ text: string;
92
+ bounds: BoundingBox;
93
+ hasHighlight: boolean;
94
+ highlightInfo?: {
95
+ termId: string;
96
+ category: string;
97
+ };
98
+ transform: number[];
99
+ fontName: string;
100
+ }
101
+ export interface AnalysisResult {
102
+ segments: Segment[];
103
+ highlightRanges: {
104
+ start: number;
105
+ end: number;
106
+ termId: string;
107
+ category: string;
108
+ }[];
109
+ }
110
+ export type InteractionIntent = 'highlight-interact' | 'text-select' | 'auto';
111
+ export type InteractionMode = 'select' | 'highlight' | 'hybrid';
112
+ export interface SelectionState {
113
+ isSelecting: boolean;
114
+ startPoint: {
115
+ x: number;
116
+ y: number;
117
+ } | null;
118
+ endPoint: {
119
+ x: number;
120
+ y: number;
121
+ } | null;
122
+ selectedText: string;
123
+ overlappingHighlights: TermOccurrence[];
124
+ }
125
+ export interface TextRange {
126
+ startPage: number;
127
+ endPage: number;
128
+ startOffset: number;
129
+ endOffset: number;
130
+ }
131
+ export interface SelectionWithMetadata {
132
+ text: string;
133
+ pages: number[];
134
+ highlights: TermOccurrence[];
135
+ context: string;
136
+ range: TextRange;
137
+ }
138
+ export interface HighlightHoverEvent {
139
+ termId: string;
140
+ category: string;
141
+ coordinates: BoundingBox;
142
+ pageNumber: number;
143
+ mouseEvent: MouseEvent;
144
+ }
145
+ export interface HighlightClickEvent {
146
+ termId: string;
147
+ category: string;
148
+ coordinates: BoundingBox;
149
+ pageNumber: number;
150
+ mouseEvent: MouseEvent;
151
+ }
152
+ export interface HighlightSelectEvent {
153
+ termId: string;
154
+ category: string;
155
+ occurrences: TermOccurrence[];
156
+ }
157
+ export interface TextSelectionEvent {
158
+ text: string;
159
+ highlights: TermOccurrence[];
160
+ range: Range;
161
+ pageNumbers: number[];
162
+ }
163
+ export interface SelectionCopyEvent {
164
+ text: string;
165
+ format: 'plain' | 'formatted' | 'citation';
166
+ }
167
+ export interface SelectionHighlightEvent {
168
+ text: string;
169
+ category: string;
170
+ coordinates: BoundingBox[];
171
+ }
172
+ export interface PageChangeEvent {
173
+ currentPage: number;
174
+ previousPage: number;
175
+ totalPages: number;
176
+ }
177
+ export interface ZoomChangeEvent {
178
+ scale: number;
179
+ previousScale: number;
180
+ }
181
+ export interface RenderCompleteEvent {
182
+ pageNumber: number;
183
+ renderTime: number;
184
+ highlightCount: number;
185
+ }
186
+ export interface PerformanceWarningEvent {
187
+ type: string;
188
+ message: string;
189
+ metrics: any;
190
+ }
191
+ export interface CategoryStyle {
192
+ backgroundColor: string;
193
+ borderColor: string;
194
+ opacity?: number;
195
+ hoverOpacity?: number;
196
+ pulseAnimation?: boolean;
197
+ }
198
+ export interface CategoryStyleManager {
199
+ registerCategory(name: string, style: CategoryStyle): void;
200
+ getComputedStyle(termId: string, state: 'default' | 'hover' | 'selected'): React.CSSProperties;
201
+ }
202
+ export interface MemoryMetrics {
203
+ pages: number;
204
+ highlights: number;
205
+ cache: number;
206
+ total?: number;
207
+ }
208
+ export interface PerformanceMetrics {
209
+ renderTime: number;
210
+ highlightRenderTime: number;
211
+ interactionLatency: number;
212
+ memoryUsage: MemoryMetrics;
213
+ fps: number;
214
+ }
215
+ export interface UserAction {
216
+ type: string;
217
+ timestamp: number;
218
+ data: any;
219
+ }
220
+ export interface HighlightAnalytics {
221
+ totalHighlights: number;
222
+ categoryBreakdown: Record<string, number>;
223
+ mostViewedPages: number[];
224
+ interactionHeatmap: Record<number, number>;
225
+ averageTimePerPage: number;
226
+ }
227
+ export interface Page {
228
+ pageNumber: number;
229
+ canvas?: HTMLCanvasElement;
230
+ textContent?: TextContent;
231
+ highlights?: TermOccurrence[];
232
+ rendered: boolean;
233
+ loading: boolean;
234
+ viewport?: any;
235
+ scale?: number;
236
+ }
237
+ export interface HighlightsConfig {
238
+ enableMultilineHover?: boolean;
239
+ getHighlightColor?: (termId: string) => string;
240
+ }
241
+ export interface ViewerOptions {
242
+ enableTextSelection?: boolean;
243
+ enableVirtualScrolling?: boolean;
244
+ bufferPages?: number;
245
+ maxCachedPages?: number;
246
+ interactionMode?: InteractionMode;
247
+ performanceMode?: boolean;
248
+ accessibility?: boolean;
249
+ highlightsConfig?: HighlightsConfig;
250
+ }
251
+ export interface AccessibilityFeatures {
252
+ enableKeyboardNavigation(): void;
253
+ enableScreenReader(): void;
254
+ setAriaLabels(labels: Record<string, string>): void;
255
+ announceHighlight(termId: string): void;
256
+ }
257
+ export interface HeavyTask {
258
+ type: 'text-extraction' | 'highlight-processing' | 'spatial-indexing';
259
+ data: any;
260
+ pageNumber?: number;
261
+ }
262
+ export interface RTree {
263
+ insert(bounds: BoundingBox, data: any): void;
264
+ search(bounds: BoundingBox): any[];
265
+ remove(bounds: BoundingBox, data: any): void;
266
+ }
267
+ export interface EventSystem {
268
+ onHighlightHover: (event: HighlightHoverEvent) => void;
269
+ onHighlightClick: (event: HighlightClickEvent) => void;
270
+ onHighlightSelect: (event: HighlightSelectEvent) => void;
271
+ onTextSelected: (event: TextSelectionEvent) => void;
272
+ onSelectionCopied: (event: SelectionCopyEvent) => void;
273
+ onSelectionHighlighted: (event: SelectionHighlightEvent) => void;
274
+ onPageChanged: (event: PageChangeEvent) => void;
275
+ onZoomChanged: (event: ZoomChangeEvent) => void;
276
+ onRenderComplete: (event: RenderCompleteEvent) => void;
277
+ onPerformanceWarning: (event: PerformanceWarningEvent) => void;
278
+ }
279
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { HighlightData, InputHighlightData, CategoryStyle } from '../types';
2
+ export type { InputHighlightData, BBox, HighlightStyle } from '../types';
3
+ export interface AdapterOptions {
4
+ categoryResolver?: (highlight: InputHighlightData) => string;
5
+ termNameResolver?: (highlight: InputHighlightData) => string;
6
+ groupByStyle?: boolean;
7
+ useTooltipAsTermName?: boolean;
8
+ defaultCategory?: string;
9
+ }
10
+ export declare function adaptHighlightData(inputData: InputHighlightData[], options?: AdapterOptions): HighlightData;
11
+ export declare function extractCategoryStyles(inputData: InputHighlightData[], options?: AdapterOptions): Map<string, CategoryStyle>;
12
+ /**
13
+ * Validate input highlight data structure
14
+ * Useful for debugging and error handling
15
+ *
16
+ * @param inputData - Data to validate
17
+ * @returns Object with validation result and any errors found
18
+ */
19
+ export declare function validateInputData(inputData: unknown): {
20
+ valid: boolean;
21
+ errors: string[];
22
+ };
23
+ /**
24
+ * Merge multiple HighlightData objects into one
25
+ * Useful when loading highlights from multiple sources
26
+ *
27
+ * @param highlightDataArray - Array of HighlightData objects to merge
28
+ * @returns Merged HighlightData object
29
+ */
30
+ export declare function mergeHighlightData(...highlightDataArray: HighlightData[]): HighlightData;
31
+ //# sourceMappingURL=highlight-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight-adapter.d.ts","sourceRoot":"","sources":["../../utils/highlight-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAElB,aAAa,EAEd,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAC7D,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,kBAAkB,EAAE,EAC/B,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAqGf;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,kBAAkB,EAAE,EAC/B,OAAO,GAAE,cAAmB,GAC3B,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CA+B5B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG;IACrD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAqCA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,kBAAkB,EAAE,aAAa,EAAE,GAAG,aAAa,CAoCxF"}
@@ -0,0 +1,202 @@
1
+ export function adaptHighlightData(inputData, options = {}) {
2
+ const { defaultCategory = 'default', groupByStyle = true, categoryResolver, useTooltipAsTermName = true, termNameResolver, } = options;
3
+ const result = {};
4
+ const categoryStyles = new Map();
5
+ inputData.forEach((highlight) => {
6
+ let category;
7
+ if (categoryResolver) {
8
+ category = categoryResolver(highlight);
9
+ }
10
+ else if (highlight.metadata?.category) {
11
+ category = highlight.metadata.category;
12
+ }
13
+ else if (groupByStyle && highlight.style) {
14
+ category = highlight.style.backgroundColor || defaultCategory;
15
+ }
16
+ else {
17
+ category = defaultCategory;
18
+ }
19
+ let termName;
20
+ if (termNameResolver) {
21
+ termName = termNameResolver(highlight);
22
+ }
23
+ else if (useTooltipAsTermName && highlight.tooltipText) {
24
+ termName = highlight.tooltipText;
25
+ }
26
+ else {
27
+ termName = highlight.id;
28
+ }
29
+ if (!result[category]) {
30
+ result[category] = {
31
+ pages: {},
32
+ terms: {},
33
+ };
34
+ }
35
+ if (highlight.style && !categoryStyles.has(category)) {
36
+ categoryStyles.set(category, {
37
+ backgroundColor: highlight.style.backgroundColor,
38
+ borderColor: highlight.style.borderColor || highlight.style.backgroundColor,
39
+ opacity: highlight.style.opacity,
40
+ hoverOpacity: highlight.style.hoverOpacity,
41
+ pulseAnimation: highlight.style.pulseAnimation,
42
+ });
43
+ }
44
+ const pageGroups = new Map();
45
+ highlight.bboxes.forEach((bbox) => {
46
+ const { page, ...coords } = bbox;
47
+ if (!pageGroups.has(page)) {
48
+ pageGroups.set(page, []);
49
+ }
50
+ pageGroups.get(page).push(coords);
51
+ });
52
+ const allPages = [];
53
+ pageGroups.forEach((coordinates, pageNumber) => {
54
+ allPages.push(pageNumber);
55
+ const pageKey = pageNumber.toString();
56
+ if (!result[category].pages[pageKey]) {
57
+ result[category].pages[pageKey] = [];
58
+ }
59
+ // Add term occurrence to this page
60
+ const termOccurrence = {
61
+ termId: highlight.id,
62
+ coordinates,
63
+ };
64
+ result[category].pages[pageKey].push(termOccurrence);
65
+ });
66
+ if (!result[category].terms[highlight.id]) {
67
+ result[category].terms[highlight.id] = {
68
+ term: termName,
69
+ category,
70
+ frequency: pageGroups.size,
71
+ aliases: [],
72
+ relatedTerms: [],
73
+ pages: allPages,
74
+ explanations: highlight.tooltipText
75
+ ? allPages.map((page) => ({
76
+ page,
77
+ coordinates: pageGroups.get(page)[0],
78
+ text: highlight.tooltipText,
79
+ }))
80
+ : [],
81
+ };
82
+ if (highlight.metadata) {
83
+ result[category].terms[highlight.id].metadata = highlight.metadata;
84
+ }
85
+ }
86
+ });
87
+ return result;
88
+ }
89
+ export function extractCategoryStyles(inputData, options = {}) {
90
+ const { defaultCategory = 'default', groupByStyle = true, categoryResolver } = options;
91
+ const styles = new Map();
92
+ inputData.forEach((highlight) => {
93
+ if (!highlight.style)
94
+ return;
95
+ let category;
96
+ if (categoryResolver) {
97
+ category = categoryResolver(highlight);
98
+ }
99
+ else if (highlight.metadata?.category) {
100
+ category = highlight.metadata.category;
101
+ }
102
+ else if (groupByStyle) {
103
+ category = highlight.style.backgroundColor || defaultCategory;
104
+ }
105
+ else {
106
+ category = defaultCategory;
107
+ }
108
+ if (!styles.has(category)) {
109
+ styles.set(category, {
110
+ backgroundColor: highlight.style.backgroundColor,
111
+ borderColor: highlight.style.borderColor || highlight.style.backgroundColor,
112
+ opacity: highlight.style.opacity,
113
+ hoverOpacity: highlight.style.hoverOpacity,
114
+ pulseAnimation: highlight.style.pulseAnimation,
115
+ });
116
+ }
117
+ });
118
+ return styles;
119
+ }
120
+ /**
121
+ * Validate input highlight data structure
122
+ * Useful for debugging and error handling
123
+ *
124
+ * @param inputData - Data to validate
125
+ * @returns Object with validation result and any errors found
126
+ */
127
+ export function validateInputData(inputData) {
128
+ const errors = [];
129
+ if (!Array.isArray(inputData)) {
130
+ errors.push('Input data must be an array');
131
+ return { valid: false, errors };
132
+ }
133
+ inputData.forEach((item, index) => {
134
+ if (!item.id || typeof item.id !== 'string') {
135
+ errors.push(`Item ${index}: 'id' is required and must be a string`);
136
+ }
137
+ if (!Array.isArray(item.bboxes)) {
138
+ errors.push(`Item ${index}: 'bboxes' must be an array`);
139
+ }
140
+ else {
141
+ item.bboxes.forEach((bbox, bboxIndex) => {
142
+ const requiredProps = ['x1', 'y1', 'x2', 'y2', 'page'];
143
+ requiredProps.forEach((prop) => {
144
+ if (typeof bbox[prop] !== 'number') {
145
+ errors.push(`Item ${index}, bbox ${bboxIndex}: '${prop}' must be a number`);
146
+ }
147
+ });
148
+ });
149
+ }
150
+ if (item.style) {
151
+ if (!item.style.backgroundColor) {
152
+ errors.push(`Item ${index}: style.backgroundColor is required when style is provided`);
153
+ }
154
+ }
155
+ });
156
+ return {
157
+ valid: errors.length === 0,
158
+ errors,
159
+ };
160
+ }
161
+ /**
162
+ * Merge multiple HighlightData objects into one
163
+ * Useful when loading highlights from multiple sources
164
+ *
165
+ * @param highlightDataArray - Array of HighlightData objects to merge
166
+ * @returns Merged HighlightData object
167
+ */
168
+ export function mergeHighlightData(...highlightDataArray) {
169
+ const result = {};
170
+ highlightDataArray.forEach((data) => {
171
+ Object.entries(data).forEach(([category, categoryData]) => {
172
+ if (!result[category]) {
173
+ result[category] = {
174
+ pages: {},
175
+ terms: {},
176
+ };
177
+ }
178
+ Object.entries(categoryData.pages).forEach(([pageKey, occurrences]) => {
179
+ if (!result[category].pages[pageKey]) {
180
+ result[category].pages[pageKey] = [];
181
+ }
182
+ result[category].pages[pageKey].push(...occurrences);
183
+ });
184
+ Object.entries(categoryData.terms).forEach(([termId, termData]) => {
185
+ if (!result[category].terms[termId]) {
186
+ result[category].terms[termId] = termData;
187
+ }
188
+ else {
189
+ result[category].terms[termId].pages = [
190
+ ...new Set([...result[category].terms[termId].pages, ...termData.pages]),
191
+ ];
192
+ result[category].terms[termId].explanations = [
193
+ ...result[category].terms[termId].explanations,
194
+ ...termData.explanations,
195
+ ];
196
+ }
197
+ });
198
+ });
199
+ });
200
+ return result;
201
+ }
202
+ //# sourceMappingURL=highlight-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight-adapter.js","sourceRoot":"","sources":["../../utils/highlight-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare const b64toBlob: (b64Data: string, contentType?: string, sliceSize?: number) => Blob;
2
+ export declare const b64toArrayBuffer: (b64Data: string) => ArrayBuffer;
3
+ export declare const blobToArrayBuffer: (blob: Blob) => Promise<ArrayBuffer>;
4
+ export type PDFSourceType = 'url' | 'base64' | 'blob' | 'arrayBuffer';
5
+ export declare const detectPDFSourceType: (source: any) => PDFSourceType;
6
+ export declare const normalizePDFSource: (source: string | ArrayBuffer | Blob) => Promise<ArrayBuffer>;
7
+ export declare const validateBase64PDF: (base64String: string) => boolean;
8
+ export declare const extractPDFMetadata: (base64String: string) => {
9
+ size: number;
10
+ version?: string;
11
+ };
12
+ export declare const createPDFDataURL: (base64Data: string) => string;
13
+ export declare const processBase64InChunks: (base64Data: string, chunkSize: number | undefined, processor: (chunk: Uint8Array) => void) => void;
14
+ //# sourceMappingURL=pdf-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-utils.d.ts","sourceRoot":"","sources":["../../utils/pdf-utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GACpB,SAAS,MAAM,EACf,oBAA+B,EAC/B,kBAAe,KACd,IAiBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,WASlD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,IAAI,KAAG,OAAO,CAAC,WAAW,CAajE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAC;AAEtE,eAAO,MAAM,mBAAmB,GAAI,QAAQ,GAAG,KAAG,aAcjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,GAAG,WAAW,GAAG,IAAI,KAClC,OAAO,CAAC,WAAW,CA0BrB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,cAAc,MAAM,KAAG,OAUxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,cAAc,MAAM,KAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAezF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,MAGrD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,YAAY,MAAM,EAClB,6BAAgB,EAChB,WAAW,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KACrC,IAcF,CAAC"}