@epam/pdf-highlighter-kit 0.0.13 → 0.0.17

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 (35) hide show
  1. package/dist/PDFHighlightViewer.d.ts +12 -2
  2. package/dist/PDFHighlightViewer.d.ts.map +1 -1
  3. package/dist/PDFHighlightViewer.js +140 -39
  4. package/dist/PDFHighlightViewer.js.map +1 -1
  5. package/dist/api.d.ts +7 -1
  6. package/dist/api.d.ts.map +1 -1
  7. package/dist/core/pdf-engine.d.ts +3 -1
  8. package/dist/core/pdf-engine.d.ts.map +1 -1
  9. package/dist/core/pdf-engine.js +28 -10
  10. package/dist/core/pdf-engine.js.map +1 -1
  11. package/dist/core/performance-optimizer.d.ts +3 -0
  12. package/dist/core/performance-optimizer.d.ts.map +1 -1
  13. package/dist/core/performance-optimizer.js +17 -4
  14. package/dist/core/performance-optimizer.js.map +1 -1
  15. package/dist/core/unified-layer-builder.d.ts +8 -2
  16. package/dist/core/unified-layer-builder.d.ts.map +1 -1
  17. package/dist/core/unified-layer-builder.js +58 -22
  18. package/dist/core/unified-layer-builder.js.map +1 -1
  19. package/dist/index.d.ts +5 -2
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +3 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/types.d.ts +22 -0
  24. package/dist/types.d.ts.map +1 -1
  25. package/dist/types.js +6 -0
  26. package/dist/types.js.map +1 -1
  27. package/dist/utils/pdf-rotation-math.d.ts +11 -0
  28. package/dist/utils/pdf-rotation-math.d.ts.map +1 -0
  29. package/dist/utils/pdf-rotation-math.js +16 -0
  30. package/dist/utils/pdf-rotation-math.js.map +1 -0
  31. package/dist/utils/rotate-bbox.d.ts +20 -0
  32. package/dist/utils/rotate-bbox.d.ts.map +1 -0
  33. package/dist/utils/rotate-bbox.js +101 -0
  34. package/dist/utils/rotate-bbox.js.map +1 -0
  35. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate-bbox.d.ts","sourceRoot":"","sources":["../../src/utils/rotate-bbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,mBAAmB,GAAG,mBAAmB,CAIlF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAE,iBAAiB,GAC3B,mBAAmB,CAUrB;AAED,wGAAwG;AACxG,wBAAgB,cAAc,CAC5B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,mBAAmB,GAC/B,CAAC,MAAM,EAAE,MAAM,CAAC,CAelB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,mBAAmB,GAC/B,WAAW,CA4Db"}
@@ -0,0 +1,101 @@
1
+ import { RotationDirection } from '../types';
2
+ import { normalizePdfRotationDegrees, PDF_ROTATION_FULL_CIRCLE_DEGREES } from './pdf-rotation-math';
3
+ /**
4
+ * PDF.js applies viewport rotation clockwise. User display delta is clockwise;
5
+ * this helper converts to CCW for `rotateBoundingBoxForCcwRotation`.
6
+ */
7
+ export function clockwiseToCcw(clockwise) {
8
+ return normalizePdfRotationDegrees(PDF_ROTATION_FULL_CIRCLE_DEGREES - clockwise);
9
+ }
10
+ /**
11
+ * Combine quadrant degrees (0|90|180|270) with direction → extra clockwise delta (0|90|180|270).
12
+ * For `degrees === 0`, returns 0 and ignores `direction`.
13
+ */
14
+ export function displayRotationToClockwise(degrees, direction) {
15
+ if (degrees === 0) {
16
+ return 0;
17
+ }
18
+ if (direction === RotationDirection.Clockwise) {
19
+ return degrees;
20
+ }
21
+ return normalizePdfRotationDegrees(PDF_ROTATION_FULL_CIRCLE_DEGREES - degrees);
22
+ }
23
+ /** Rotate a point (intrinsic top-left, y-down) by CCW rotation around the intrinsic top-left corner. */
24
+ export function rotatePointCcw(x, y, origWidth, origHeight, rotationCcw) {
25
+ const d = normalizePdfRotationDegrees(rotationCcw);
26
+ if (d === 0) {
27
+ return [x, y];
28
+ }
29
+ if (d === 90) {
30
+ return [y, origWidth - x];
31
+ }
32
+ if (d === 180) {
33
+ return [origWidth - x, origHeight - y];
34
+ }
35
+ if (d === 270) {
36
+ return [origHeight - y, x];
37
+ }
38
+ throw new Error(`Unsupported rotation: ${rotationCcw}`);
39
+ }
40
+ /**
41
+ * Rotate an axis-aligned bbox (top-left origin, y-down) around the top-left corner
42
+ * of an origWidth × origHeight intrinsic page into display space.
43
+ */
44
+ export function rotateBoundingBoxForCcwRotation(bbox, origWidth, origHeight, rotationCcw) {
45
+ if (rotationCcw === 0) {
46
+ return { ...bbox };
47
+ }
48
+ let x1 = bbox.x1;
49
+ let x2 = bbox.x2;
50
+ let y1 = bbox.y1;
51
+ let y2 = bbox.y2;
52
+ if (x2 < x1) {
53
+ [x1, x2] = [x2, x1];
54
+ }
55
+ if (y2 < y1) {
56
+ [y1, y2] = [y2, y1];
57
+ }
58
+ if (x1 === x2 && y1 === y2) {
59
+ const [px, py] = rotatePointCcw(x1, y1, origWidth, origHeight, rotationCcw);
60
+ return { x1: px, y1: py, x2: px, y2: py };
61
+ }
62
+ if (x1 === x2 || y1 === y2) {
63
+ const [ax, ay] = rotatePointCcw(x1, y1, origWidth, origHeight, rotationCcw);
64
+ const [bx, by] = rotatePointCcw(x2, y2, origWidth, origHeight, rotationCcw);
65
+ return {
66
+ x1: Math.min(ax, bx),
67
+ y1: Math.min(ay, by),
68
+ x2: Math.max(ax, bx),
69
+ y2: Math.max(ay, by),
70
+ };
71
+ }
72
+ const corners = [
73
+ [x1, y1],
74
+ [x2, y1],
75
+ [x2, y2],
76
+ [x1, y2],
77
+ ];
78
+ const d = normalizePdfRotationDegrees(rotationCcw);
79
+ let transformed;
80
+ if (d === 90) {
81
+ transformed = corners.map(([x, y]) => [y, origWidth - x]);
82
+ }
83
+ else if (d === 180) {
84
+ transformed = corners.map(([x, y]) => [origWidth - x, origHeight - y]);
85
+ }
86
+ else if (d === 270) {
87
+ transformed = corners.map(([x, y]) => [origHeight - y, x]);
88
+ }
89
+ else {
90
+ throw new Error(`Unsupported rotation: ${rotationCcw}`);
91
+ }
92
+ const xs = transformed.map((p) => p[0]);
93
+ const ys = transformed.map((p) => p[1]);
94
+ return {
95
+ x1: Math.min(...xs),
96
+ y1: Math.min(...ys),
97
+ x2: Math.max(...xs),
98
+ y2: Math.max(...ys),
99
+ };
100
+ }
101
+ //# sourceMappingURL=rotate-bbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate-bbox.js","sourceRoot":"","sources":["../../src/utils/rotate-bbox.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epam/pdf-highlighter-kit",
3
- "version": "0.0.13",
3
+ "version": "0.0.17",
4
4
  "description": "High-performance PDF viewer with intelligent highlighting and text selection capabilities",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -56,16 +56,16 @@
56
56
  "@types/react": "^19.2.7",
57
57
  "@typescript-eslint/eslint-plugin": "^6.0.0",
58
58
  "@typescript-eslint/parser": "^6.0.0",
59
- "@vitest/ui": "^1.0.4",
59
+ "@vitest/ui": "^4.1.3",
60
60
  "eslint": "^8.0.0",
61
61
  "eslint-config-prettier": "^10.1.8",
62
62
  "globals": "^16.5.0",
63
- "happy-dom": "^12.10.3",
63
+ "happy-dom": "^20.8.9",
64
64
  "prettier": "^3.7.4",
65
65
  "typescript": "^5.0.0",
66
66
  "typescript-eslint": "^8.50.0",
67
67
  "vite": "^7.3.0",
68
- "vitest": "^1.0.4"
68
+ "vitest": "^4.1.3"
69
69
  },
70
70
  "engines": {
71
71
  "node": ">=14.0.0"