@libresign/pdf-elements 0.3.1 → 1.0.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.
Files changed (39) hide show
  1. package/README.md +24 -1
  2. package/dist/components/DraggableElement.vue.d.ts +240 -0
  3. package/dist/components/PDFElements.vue.d.ts +552 -0
  4. package/dist/components/PDFPage.vue.d.ts +40 -0
  5. package/dist/index.css +1 -0
  6. package/dist/index.d.ts +5 -0
  7. package/dist/index.mjs +1293 -0
  8. package/dist/pdf-uHvE5neP.mjs +17593 -0
  9. package/dist/pdf.worker.min-DmO9Xdfo.mjs +4 -0
  10. package/dist/types.d.ts +30 -0
  11. package/dist/utils/asyncReader.d.ts +10 -0
  12. package/dist/utils/geometry.d.ts +5 -0
  13. package/dist/utils/measurements.d.ts +12 -0
  14. package/dist/utils/objectStore.d.ts +5 -0
  15. package/dist/utils/pageBounds.d.ts +5 -0
  16. package/dist/utils/zoom.d.ts +2 -0
  17. package/package.json +46 -21
  18. package/src/components/DraggableElement.vue +18 -15
  19. package/src/components/PDFElements.vue +135 -60
  20. package/src/components/PDFPage.vue +11 -7
  21. package/src/index.ts +18 -0
  22. package/src/types.ts +35 -0
  23. package/src/utils/asyncReader.ts +103 -0
  24. package/src/utils/{geometry.js → geometry.ts} +16 -2
  25. package/src/utils/{measurements.js → measurements.ts} +20 -1
  26. package/src/utils/{objectStore.js → objectStore.ts} +15 -4
  27. package/src/utils/{pageBounds.js → pageBounds.ts} +2 -2
  28. package/src/utils/{zoom.js → zoom.ts} +3 -1
  29. package/dist/demo.html +0 -1
  30. package/dist/pdf-elements.common.js +0 -31698
  31. package/dist/pdf-elements.common.js.map +0 -1
  32. package/dist/pdf-elements.css +0 -1
  33. package/dist/pdf-elements.umd.js +0 -31710
  34. package/dist/pdf-elements.umd.js.map +0 -1
  35. package/dist/pdf-elements.umd.min.js +0 -2
  36. package/dist/pdf-elements.umd.min.js.map +0 -1
  37. package/dist/pdf.worker.min.mjs +0 -22
  38. package/src/index.js +0 -17
  39. package/src/utils/asyncReader.js +0 -44
@@ -1,7 +1,26 @@
1
1
  // SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
2
2
  // SPDX-License-Identifier: AGPL-3.0-or-later
3
3
 
4
- export function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {
4
+ export interface CanvasMeasurement {
5
+ canvasWidth: number
6
+ canvasHeight: number
7
+ }
8
+
9
+ export interface PageMeasurement {
10
+ width: number
11
+ height: number
12
+ }
13
+
14
+ export interface PageMeasurementProvider {
15
+ getCanvasMeasurement: () => CanvasMeasurement
16
+ }
17
+
18
+ export function getCachedMeasurement(
19
+ cache: Record<string, PageMeasurement>,
20
+ cacheKey: string,
21
+ pageRef: PageMeasurementProvider,
22
+ pagesScale: number
23
+ ) {
5
24
  const cached = cache[cacheKey]
6
25
  if (cached) {
7
26
  return cached
@@ -1,12 +1,14 @@
1
1
  // SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
2
2
  // SPDX-License-Identifier: AGPL-3.0-or-later
3
3
 
4
- export function objectIdExistsInDoc(doc, objectId) {
4
+ import type { PDFDocumentEntry, PDFElementObject } from '../types'
5
+
6
+ export function objectIdExistsInDoc(doc: PDFDocumentEntry | undefined, objectId: string) {
5
7
  if (!doc || !objectId) return false
6
8
  return doc.allObjects.some((objects) => objects.some((obj) => obj.id === objectId))
7
9
  }
8
10
 
9
- export function findObjectPageIndex(doc, objectId) {
11
+ export function findObjectPageIndex(doc: PDFDocumentEntry | undefined, objectId: string) {
10
12
  if (!doc || !objectId) return undefined
11
13
  for (let pageIndex = 0; pageIndex < doc.allObjects.length; pageIndex++) {
12
14
  if (doc.allObjects[pageIndex].some((obj) => obj.id === objectId)) {
@@ -16,7 +18,12 @@ export function findObjectPageIndex(doc, objectId) {
16
18
  return undefined
17
19
  }
18
20
 
19
- export function updateObjectInDoc(doc, pageIndex, objectId, payload) {
21
+ export function updateObjectInDoc(
22
+ doc: PDFDocumentEntry | undefined,
23
+ pageIndex: number,
24
+ objectId: string,
25
+ payload: Partial<PDFElementObject>
26
+ ) {
20
27
  const objects = doc?.allObjects?.[pageIndex]
21
28
  if (!objects) return false
22
29
  const objectIndex = objects.findIndex((obj) => obj.id === objectId)
@@ -25,7 +32,11 @@ export function updateObjectInDoc(doc, pageIndex, objectId, payload) {
25
32
  return true
26
33
  }
27
34
 
28
- export function removeObjectFromDoc(doc, pageIndex, objectId) {
35
+ export function removeObjectFromDoc(
36
+ doc: PDFDocumentEntry | undefined,
37
+ pageIndex: number,
38
+ objectId: string
39
+ ) {
29
40
  const objects = doc?.allObjects?.[pageIndex]
30
41
  if (!objects) return false
31
42
  const objectIndex = objects.findIndex((obj) => obj.id === objectId)
@@ -1,13 +1,13 @@
1
1
  // SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
2
2
  // SPDX-License-Identifier: AGPL-3.0-or-later
3
3
 
4
- export function getViewportWindow(scrollTop, viewHeight, margin = 300) {
4
+ export function getViewportWindow(scrollTop: number, viewHeight: number, margin = 300) {
5
5
  return {
6
6
  minY: Math.max(0, scrollTop - margin),
7
7
  maxY: scrollTop + viewHeight + margin,
8
8
  }
9
9
  }
10
10
 
11
- export function isPageInViewport(offsetTop, offsetHeight, minY, maxY) {
11
+ export function isPageInViewport(offsetTop: number, offsetHeight: number, minY: number, maxY: number) {
12
12
  return !(offsetTop + offsetHeight < minY || offsetTop > maxY)
13
13
  }
@@ -1,7 +1,9 @@
1
1
  // SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
2
2
  // SPDX-License-Identifier: AGPL-3.0-or-later
3
3
 
4
- export function applyScaleToDocs(docs, scale) {
4
+ import type { PDFDocumentEntry } from '../types'
5
+
6
+ export function applyScaleToDocs(docs: PDFDocumentEntry[], scale: number) {
5
7
  docs.forEach((doc) => {
6
8
  doc.pagesScale = doc.pagesScale.map(() => scale)
7
9
  })
package/dist/demo.html DELETED
@@ -1 +0,0 @@
1
- <!doctype html><meta charset="utf-8"><title>pdf-elements demo</title><script src="./pdf-elements.umd.js"></script><link rel="stylesheet" href="./pdf-elements.css"><script>console.log(pdf-elements)</script>