@epam/pdf-highlighter-kit 0.0.5 → 0.0.7

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/README.md CHANGED
@@ -56,6 +56,8 @@ const highlights: InputHighlightData[] = [
56
56
  borderColor: '#d4c400',
57
57
  borderWidth: '1px',
58
58
  },
59
+ label: 'Important Term',
60
+ labelStyle: { fontSize: 11 },
59
61
  tooltipText: 'Important Term',
60
62
  metadata: {
61
63
  frequency: 5,
@@ -76,6 +78,10 @@ viewer.goToHighlight('term-001', 0);
76
78
 
77
79
  Each highlight carries its own style. No categories are required.
78
80
 
81
+ **Labels:** You can add an optional `label` that is displayed to the left of the highlight, flush against it. By default the label uses the highlight’s color (from `style.borderColor` or `style.backgroundColor`), `border: 1px solid`, and `padding: 2px 4px`. Override any of these with `labelStyle` (e.g. `fontSize`, `color`, `padding`, `border`). To hide the label border, set `labelStyle: { border: 'none' }` (the default border is always applied unless overridden).
82
+
83
+ **Icon before label:** Optionally set `beforeIcon` to an inline SVG string (e.g. from [Tabler Icons](https://tabler.io/icons)) to render an icon inside the label frame, to the left of the text. The icon inherits the label color via `currentColor`. Use `labelStyle.iconSize` to set the icon size (e.g. `14` or `'14px'`) and `labelStyle.iconColor` to set the icon color (e.g. `'#ff6b6b'`); if `iconColor` is not set, the icon uses the label text color. Only pass trusted SVG content (e.g. from your bundle or `@tabler/icons`); in React with Vite you can use `import iconSvg from '@tabler/icons/icons/outline/alert-circle.svg?raw'` and pass `iconSvg` as `beforeIcon`.
84
+
79
85
  ```ts
80
86
  export interface BBox {
81
87
  x1: number;
@@ -85,6 +91,11 @@ export interface BBox {
85
91
  page: number;
86
92
  }
87
93
 
94
+ export interface BBoxDimensions {
95
+ width: number;
96
+ height: number;
97
+ }
98
+
88
99
  export interface HighlightStyle {
89
100
  backgroundColor: string;
90
101
  borderColor?: string;
@@ -94,15 +105,45 @@ export interface HighlightStyle {
94
105
  pulseAnimation?: boolean;
95
106
  }
96
107
 
108
+ export interface HighlightLabelStyle {
109
+ fontSize?: string | number;
110
+ color?: string;
111
+ backgroundColor?: string;
112
+ padding?: string;
113
+ borderRadius?: string;
114
+ fontFamily?: string;
115
+ fontWeight?: string | number;
116
+ border?: string;
117
+ whiteSpace?: string;
118
+ iconSize?: string | number; // size for beforeIcon (e.g. 14 or '14px')
119
+ }
120
+
97
121
  export interface InputHighlightData {
98
122
  id: string;
99
123
  bboxes: BBox[];
124
+ bboxOrigin?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
125
+ bboxSourceDimensions?: BBoxDimensions;
100
126
  style?: HighlightStyle;
127
+ label?: string;
128
+ beforeIcon?: string; // inline SVG string (trusted content only, e.g. Tabler icons)
129
+ labelStyle?: HighlightLabelStyle;
101
130
  tooltipText?: string;
102
131
  metadata?: Record<string, any>;
103
132
  }
104
133
  ```
105
134
 
135
+ If `bboxSourceDimensions` is provided, each bbox coordinate is recalculated against the actual page size:
136
+
137
+ ```ts
138
+ scaledX = (x / bboxSourceDimensions.width) * actualPageWidth;
139
+ scaledY = (y / bboxSourceDimensions.height) * actualPageHeight;
140
+ ```
141
+
142
+ Priority (highest to lowest):
143
+
144
+ - `highlight.bboxOrigin` / `highlight.bboxSourceDimensions`
145
+ - global viewer options (`bboxOrigin`, `bboxSourceDimensions`)
146
+
106
147
  ## Configuration Options
107
148
 
108
149
  ### ViewerConfig
@@ -134,6 +175,13 @@ interface ViewerConfig {
134
175
  highlightsConfig?: {
135
176
  enableMultilineHover?: boolean;
136
177
  };
178
+
179
+ // Coordinate origin for incoming bbox values
180
+ // Default: 'bottom-right'
181
+ bboxOrigin?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
182
+
183
+ // Page dimensions for which bbox coordinates were calculated
184
+ bboxSourceDimensions?: { width: number; height: number };
137
185
  }
138
186
  ```
139
187
 
@@ -188,6 +236,14 @@ Zoom in or out of the PDF.
188
236
 
189
237
  Set a specific zoom level (e.g., 1.0 for 100%, 1.5 for 150%).
190
238
 
239
+ #### `getThumbnails(pageNumbers: number[], options?: ThumbnailOptions): Promise<Map<number, HTMLCanvasElement>>`
240
+
241
+ Render page thumbnails (miniatures) for the given page numbers. Returns a `Map` of page number → canvas. Use this when you need canvas elements (e.g. for drawing or custom display). Options: `maxWidth` (target width in px), `scale` (viewport scale).
242
+
243
+ #### `getThumbnailsDataUrl(pageNumbers: number[], options?: ThumbnailOptions): Promise<Map<number, string>>`
244
+
245
+ Same as `getThumbnails` but returns data URLs (e.g. for `<img src="...">`). Options include `maxWidth`, `scale`, `format` (`'image/jpeg' | 'image/webp' | 'image/png'`), and `quality` (0–1 for jpeg/webp). Thumbnails are cached; repeated calls for the same page return cached results.
246
+
191
247
  #### `destroy(): void`
192
248
 
193
249
  Clean up and destroy the viewer instance.
@@ -260,6 +316,27 @@ viewer.addEventListener('error', (e) => {
260
316
 
261
317
  ## Advanced Usage
262
318
 
319
+ ### Page thumbnails
320
+
321
+ ```ts
322
+ // ThumbnailOptions: maxWidth?, scale?, format?, quality?
323
+ const pageNumbers = Array.from({ length: viewer.getTotalPages() }, (_, i) => i + 1);
324
+
325
+ // Option 1: get data URLs for <img src="...">
326
+ const dataUrls = await viewer.getThumbnailsDataUrl(pageNumbers, {
327
+ maxWidth: 120,
328
+ format: 'image/webp',
329
+ quality: 0.85,
330
+ });
331
+ // dataUrls is Map<number, string> — use dataUrls.get(pageNum) in img src
332
+
333
+ // Option 2: get canvases for custom rendering
334
+ const canvases = await viewer.getThumbnails(pageNumbers, { maxWidth: 120 });
335
+ // canvases is Map<number, HTMLCanvasElement>
336
+ ```
337
+
338
+ For a single page, pass an array with one number: `getThumbnailsDataUrl([5], options)`. Thumbnails are cached inside the viewer; reopening the panel does not re-render unless the cache was cleared (e.g. after loading a new PDF).
339
+
263
340
  ### Custom Styling (per highlight)
264
341
 
265
342
  ```ts
@@ -273,12 +350,36 @@ const highlight: InputHighlightData = {
273
350
  borderWidth: '1px',
274
351
  hoverOpacity: 0.6,
275
352
  },
353
+ label: 'My note',
354
+ labelStyle: { padding: '2px 6px', borderRadius: '4px' },
276
355
  tooltipText: 'My note',
277
356
  };
278
357
 
279
358
  viewer.addHighlight(highlight);
280
359
  ```
281
360
 
361
+ ### Label with icon (e.g. Tabler Icons)
362
+
363
+ Pass an inline SVG string as `beforeIcon` to show an icon inside the label frame. Use trusted content only. With Vite you can import SVG as raw string:
364
+
365
+ ```ts
366
+ // Inline SVG string (e.g. from Tabler: import icon from '@tabler/icons/icons/outline/alert-circle.svg?raw')
367
+ const alertIconSvg =
368
+ '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 8v4"/><path d="M12 16h.01"/><circle cx="12" cy="12" r="10"/></svg>';
369
+
370
+ const highlight: InputHighlightData = {
371
+ id: 'alert-001',
372
+ bboxes: [{ page: 1, x1: 100, y1: 200, x2: 300, y2: 220 }],
373
+ style: { backgroundColor: '#ffeb3b', opacity: 0.3, borderColor: '#d4c400' },
374
+ label: 'Important',
375
+ beforeIcon: alertIconSvg,
376
+ labelStyle: { fontSize: 11, iconSize: 14 },
377
+ tooltipText: 'Important',
378
+ };
379
+
380
+ viewer.addHighlight(highlight);
381
+ ```
382
+
282
383
  ### React Integration
283
384
 
284
385
  ```tsx
@@ -308,7 +409,6 @@ export function PDFViewer({
308
409
  enableTextSelection: true,
309
410
  enableVirtualScrolling: true,
310
411
  });
311
-
312
412
  await viewer.loadPDF(pdfUrl);
313
413
  viewer.loadHighlights(highlights);
314
414
  })();
@@ -1,5 +1,5 @@
1
1
  import { PDFHighlightViewer as IPDFHighlightViewer } from './api';
2
- import { ViewerOptions, TextRange, SelectionWithMetadata, PerformanceMetrics, HighlightAnalytics, AccessibilityFeatures, InteractionMode, InputHighlightData, HighlightStyle } from './types';
2
+ import { ViewerOptions, TextRange, SelectionWithMetadata, PerformanceMetrics, HighlightAnalytics, AccessibilityFeatures, InteractionMode, InputHighlightData, HighlightStyle, ZoomValue, ThumbnailOptions } from './types';
3
3
  export declare class PDFHighlightViewer implements IPDFHighlightViewer {
4
4
  private pdfEngine;
5
5
  private viewportManager;
@@ -74,12 +74,18 @@ export declare class PDFHighlightViewer implements IPDFHighlightViewer {
74
74
  preloadPages(pageNumbers: number[]): Promise<void>;
75
75
  setPage(pageNumber: number): void;
76
76
  getZoom(): number;
77
- setZoom(scale: number): void;
77
+ setZoom(value: ZoomValue): void;
78
+ private applyZoom;
79
+ private setAutoZoom;
80
+ private setPageFitZoom;
81
+ private computeFitScales;
78
82
  zoomIn(): void;
79
83
  zoomOut(): void;
80
84
  resetZoom(): void;
81
85
  getCurrentPage(): number;
82
86
  getTotalPages(): number;
87
+ getThumbnails(pageNumbers: number[], options?: ThumbnailOptions): Promise<Map<number, HTMLCanvasElement>>;
88
+ getThumbnailsDataUrl(pageNumbers: number[], options?: ThumbnailOptions): Promise<Map<number, string>>;
83
89
  /**
84
90
  * Enable text selection functionality
85
91
  */
@@ -167,6 +173,7 @@ export declare class PDFHighlightViewer implements IPDFHighlightViewer {
167
173
  private addHighlightsToPage;
168
174
  private getHighlightById;
169
175
  private getHighlightStyle;
176
+ private getHighlightElements;
170
177
  /**
171
178
  * Update highlights colors for specified page
172
179
  * */
@@ -175,6 +182,8 @@ export declare class PDFHighlightViewer implements IPDFHighlightViewer {
175
182
  * Build spatial index for a specific page
176
183
  */
177
184
  private buildSpatialIndexForPage;
185
+ private toPageCoordinateDimensions;
186
+ private normalizeBBoxForPage;
178
187
  /**
179
188
  * Build spatial indices for all pages
180
189
  */
@@ -207,7 +216,7 @@ export declare class PDFHighlightViewer implements IPDFHighlightViewer {
207
216
  /**
208
217
  * Clear selected term highlighting
209
218
  */
210
- clearSelectedTermHighlighting(): void;
219
+ clearSelectedTermHighlighting(clearStoredSelection?: boolean): void;
211
220
  /**
212
221
  * Add text layer for text selection functionality
213
222
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PDFHighlightViewer.d.ts","sourceRoot":"","sources":["../src/PDFHighlightViewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PDFHighlightViewer.d.ts","sourceRoot":"","sources":["../src/PDFHighlightViewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EACL,aAAa,EAKb,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAElB,cAAc,EACd,SAAS,EAET,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAajB,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAAkC;IAExD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,eAAe,CAKrB;IACF,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,cAAc,CAAwD;IAC9E,OAAO,CAAC,iBAAiB,CAAO;IAEhC,OAAO,CAAC,cAAc,CAA+D;IACrF,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,SAAS,CAKf;;IAyCI,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1E;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,OAAO;IAiHf;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8DpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;YACW,iBAAiB;IAmB/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoC1B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCjE;;OAEG;YACW,oBAAoB;IA6BlC;;OAEG;YACW,gBAAgB;YAyBhB,qBAAqB;IAoBnC;;OAEG;YACW,UAAU;IAgDxB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQjC,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAU/B,OAAO,CAAC,SAAS;YAUH,WAAW;YAKX,cAAc;YAKd,gBAAgB;IAW9B,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;IAIf,SAAS,IAAI,IAAI;IAIjB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIjB,aAAa,CACjB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAIpC,oBAAoB,CACxB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAc/B;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAe3B;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAgB5B;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAU9B;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAQjC,cAAc,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAchD,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IA4BjD,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA4BrC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAkC/E;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;OAEG;YACW,oBAAoB;IA0DlC,aAAa;sBACC,IAAI;uBAIH,IAAI;4BAIC,MAAM;uCAKK,qBAAqB,GAAG,IAAI;8BAIrC,IAAI;4BAIJ,SAAS,KAAG,IAAI;iCAKZ,OAAO,GAAG,WAAW,GAAG,UAAU,KAAa,IAAI;+CAQpC,cAAc,KAAG,kBAAkB,GAAG,IAAI;MAuBjF;IAMF,OAAO,CAAC,iBAAiB;IAsCzB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,SAAI,GAAG,IAAI;IAuCxD,aAAa,IAAI,IAAI;IASrB,iBAAiB,IAAI,IAAI;IASzB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAyB9D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAwBrD,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAI/C,kBAAkB,IAAI,eAAe;IAQrC,qBAAqB,IAAI,kBAAkB;IAmB3C;;OAEG;IACH,cAAc,IAAI;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IAaD,YAAY,IAAI,kBAAkB;IAIlC,eAAe,IAAI,IAAI;IAKvB,gBAAgB,IAAI,IAAI;IASxB,aAAa,EAAE,qBAAqB,CAgClC;IAMF,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAIzE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAS5E,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAgBrC,aAAa,CAAC,MAAM,GAAE,KAAK,GAAG,MAAc,EAAE,OAAO,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB3E,WAAW;;;;;;;;;;;IAcX,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,4BAA4B;IAapC;;OAEG;YACW,mBAAmB;IAwLjC,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,oBAAoB;IAQ5B;;SAEK;IACL,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE;IAgDhE;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,oBAAoB;IAmD5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,wBAAwB;IAKhC;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA4C3C;;OAEG;IACH,6BAA6B,CAAC,oBAAoB,UAAO,GAAG,IAAI;IA8ChE;;OAEG;YACW,kBAAkB;IAyIhC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAwClC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmD5B,OAAO,IAAI,IAAI;CAsBhB;AAED,eAAe,kBAAkB,CAAC"}