@laminapdf/viewer 0.2.0-alpha.4 → 0.2.0-alpha.5

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 (90) hide show
  1. package/README.md +36 -8
  2. package/dist/client.d.ts +28 -1
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +105 -5
  5. package/dist/client.js.map +1 -1
  6. package/dist/first-draw.d.ts +10 -0
  7. package/dist/first-draw.d.ts.map +1 -0
  8. package/dist/first-draw.js +33 -0
  9. package/dist/first-draw.js.map +1 -0
  10. package/dist/history/history.d.ts +65 -0
  11. package/dist/history/history.d.ts.map +1 -0
  12. package/dist/history/history.js +135 -0
  13. package/dist/history/history.js.map +1 -0
  14. package/dist/index.d.ts +7 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/layers/copy.d.ts +26 -0
  19. package/dist/layers/copy.d.ts.map +1 -0
  20. package/dist/layers/copy.js +150 -0
  21. package/dist/layers/copy.js.map +1 -0
  22. package/dist/layers/link-layer.d.ts +68 -0
  23. package/dist/layers/link-layer.d.ts.map +1 -0
  24. package/dist/layers/link-layer.js +279 -0
  25. package/dist/layers/link-layer.js.map +1 -0
  26. package/dist/layers/link-url.d.ts +19 -0
  27. package/dist/layers/link-url.d.ts.map +1 -0
  28. package/dist/layers/link-url.js +47 -0
  29. package/dist/layers/link-url.js.map +1 -0
  30. package/dist/layers/spans.d.ts +0 -6
  31. package/dist/layers/spans.d.ts.map +1 -1
  32. package/dist/layers/spans.js +2 -20
  33. package/dist/layers/spans.js.map +1 -1
  34. package/dist/layers/structure-layer.d.ts.map +1 -1
  35. package/dist/layers/structure-layer.js +3 -0
  36. package/dist/layers/structure-layer.js.map +1 -1
  37. package/dist/layers/text-layer.d.ts +20 -3
  38. package/dist/layers/text-layer.d.ts.map +1 -1
  39. package/dist/layers/text-layer.js +307 -23
  40. package/dist/layers/text-layer.js.map +1 -1
  41. package/dist/protocol.d.ts +79 -5
  42. package/dist/protocol.d.ts.map +1 -1
  43. package/dist/protocol.js +16 -4
  44. package/dist/protocol.js.map +1 -1
  45. package/dist/source/opfs.d.ts +35 -0
  46. package/dist/source/opfs.d.ts.map +1 -0
  47. package/dist/source/opfs.js +178 -0
  48. package/dist/source/opfs.js.map +1 -0
  49. package/dist/thumbnails/strip.d.ts +1 -1
  50. package/dist/thumbnails/strip.d.ts.map +1 -1
  51. package/dist/thumbnails/strip.js +14 -3
  52. package/dist/thumbnails/strip.js.map +1 -1
  53. package/dist/view/user-select.d.ts +3 -0
  54. package/dist/view/user-select.d.ts.map +1 -0
  55. package/dist/view/user-select.js +10 -0
  56. package/dist/view/user-select.js.map +1 -0
  57. package/dist/view/viewer.d.ts +61 -1
  58. package/dist/view/viewer.d.ts.map +1 -1
  59. package/dist/view/viewer.js +248 -40
  60. package/dist/view/viewer.js.map +1 -1
  61. package/dist/worker/document.d.ts +23 -1
  62. package/dist/worker/document.d.ts.map +1 -1
  63. package/dist/worker/document.js +68 -22
  64. package/dist/worker/document.js.map +1 -1
  65. package/dist/worker/find.d.ts.map +1 -1
  66. package/dist/worker/find.js +5 -18
  67. package/dist/worker/find.js.map +1 -1
  68. package/dist/worker/methods.d.ts.map +1 -1
  69. package/dist/worker/methods.js +23 -4
  70. package/dist/worker/methods.js.map +1 -1
  71. package/dist/worker/navigation.d.ts +5 -1
  72. package/dist/worker/navigation.d.ts.map +1 -1
  73. package/dist/worker/navigation.js +22 -4
  74. package/dist/worker/navigation.js.map +1 -1
  75. package/dist/worker/print.d.ts +14 -0
  76. package/dist/worker/print.d.ts.map +1 -0
  77. package/dist/worker/print.js +49 -0
  78. package/dist/worker/print.js.map +1 -0
  79. package/dist/worker/recent-pages.d.ts +14 -0
  80. package/dist/worker/recent-pages.d.ts.map +1 -0
  81. package/dist/worker/recent-pages.js +53 -0
  82. package/dist/worker/recent-pages.js.map +1 -0
  83. package/dist/worker/render.d.ts.map +1 -1
  84. package/dist/worker/render.js +5 -2
  85. package/dist/worker/render.js.map +1 -1
  86. package/dist/worker/text.d.ts +9 -1
  87. package/dist/worker/text.d.ts.map +1 -1
  88. package/dist/worker/text.js +29 -22
  89. package/dist/worker/text.js.map +1 -1
  90. package/package.json +6 -5
package/dist/protocol.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // added through `serve({ methods })` in the worker and `client.request` on the page. This module
4
4
  // holds what both sides agree on: the method map (params and results), the priorities and the
5
5
  // coalescing key.
6
- import { flagsOf } from "@laminapdf/render";
6
+ import { flagsOf, } from "@laminapdf/render";
7
7
  /** The worker queue's numbers for each priority (higher first). */
8
8
  export const PRIORITY = Object.freeze({
9
9
  document: 4,
@@ -18,11 +18,11 @@ export function renderKeyFields(key) {
18
18
  }
19
19
  /**
20
20
  * The coalescing key of a render on document `id`: the document and the whole normalised
21
- * RenderRequest (page, scale, clip, rotation, flags and background), so two requests share a run
22
- * only when their pixels are the same (ADR 0009 §3.3).
21
+ * RenderRequest (page, scale, clip, rotation, flags, background and appearance), so two requests
22
+ * share a run only when their pixels are the same (ADR 0009 §3.3).
23
23
  */
24
24
  export function renderKey(request, id) {
25
- const { page, scale, clip, rotation = 0, flags, background } = request;
25
+ const { page, scale, clip, rotation = 0, flags, background, appearance } = request;
26
26
  return JSON.stringify([
27
27
  id,
28
28
  page,
@@ -31,6 +31,18 @@ export function renderKey(request, id) {
31
31
  rotation,
32
32
  flagsOf(flags),
33
33
  background === undefined ? "white" : background,
34
+ appearanceKey(appearance),
34
35
  ]);
35
36
  }
37
+ /** The request field for `appearance`: none for the pages' own colours, as requests were before page appearances. */
38
+ export function appearanceField(appearance) {
39
+ return appearance === "original" ? {} : { appearance };
40
+ }
41
+ /** A page appearance as a string: equal for the same appearance, whatever the object. */
42
+ export function appearanceKey(appearance) {
43
+ if (appearance === undefined || typeof appearance === "string")
44
+ return appearance ?? "original";
45
+ const { ink: i, paper: p } = appearance;
46
+ return `high-contrast:${i.r},${i.g},${i.b},${i.a}:${p.r},${p.g},${p.b},${p.a}`;
47
+ }
36
48
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,wFAAwF;AACxF,iGAAiG;AACjG,8FAA8F;AAC9F,kBAAkB;AAElB,OAAO,EAA4B,OAAO,EAAyC,MAAM,mBAAmB,CAAC;AAqL7G,mEAAmE;AACnE,MAAM,CAAC,MAAM,QAAQ,GAAsD,MAAM,CAAC,MAAM,CAAC;IACvF,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;CACd,CAAC,CAAC;AAQH,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAW,EAAE,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAAsB,EAAE,EAAU;IAC1D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvE,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,EAAE;QACF,IAAI;QACJ,KAAK;QACL,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QACrE,QAAQ;QACR,OAAO,CAAC,KAAK,CAAC;QACd,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;KAChD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,wFAAwF;AACxF,iGAAiG;AACjG,8FAA8F;AAC9F,kBAAkB;AAElB,OAAO,EAEL,OAAO,GAIR,MAAM,mBAAmB,CAAC;AAgP3B,mEAAmE;AACnE,MAAM,CAAC,MAAM,QAAQ,GAAsD,MAAM,CAAC,MAAM,CAAC;IACvF,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;CACd,CAAC,CAAC;AAQH,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAW,EAAE,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAAsB,EAAE,EAAU;IAC1D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACnF,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,EAAE;QACF,IAAI;QACJ,KAAK;QACL,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QACrE,QAAQ;QACR,OAAO,CAAC,KAAK,CAAC;QACd,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;QAC/C,aAAa,CAAC,UAAU,CAAC;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,qHAAqH;AACrH,MAAM,UAAU,eAAe,CAAC,UAA0B;IACxD,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;AACzD,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,UAAsC;IAClE,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,IAAI,UAAU,CAAC;IAChG,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC;IACxC,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { RenderSource } from "@laminapdf/render";
2
+ import type { RangeSource } from "@laminapdf/sdk";
3
+ /** The OPFS folder of document copies, which the app's "Clear recent files and cached documents" empties too. */
4
+ export declare const CACHE_FOLDER = "documents";
5
+ /** Files above this many bytes are read from a copy: 200 MiB. */
6
+ export declare const COPY_ABOVE: number;
7
+ /** The copy's name: its size, date and a hash of its name, so the same file finds its copy again. */
8
+ export declare function copyName(file: Pick<File, "name" | "size" | "lastModified">): string;
9
+ /** How a copy is made and kept. */
10
+ export interface CopyOptions {
11
+ readonly signal: AbortSignal;
12
+ /** Told after each step of a copy being made. */
13
+ readonly onProgress?: ((loaded: number, total: number) => void) | undefined;
14
+ /** Keep the copy for next time once its document closes; false removes it then. */
15
+ readonly keep: boolean;
16
+ }
17
+ /** A copied file, read synchronously; both a RangeSource (Lamina PDF) and a RenderSource. */
18
+ export declare class OpfsByteSource implements RangeSource, RenderSource {
19
+ #private;
20
+ readonly size: number;
21
+ private constructor();
22
+ /**
23
+ * `file` read from its OPFS copy, made now if it isn't there; `undefined` where the browser has
24
+ * no OPFS or the copy can't be made (no room, locked by another tab, a write that fails), so the
25
+ * caller reads it from memory. Rejects only when `options.signal` aborts.
26
+ */
27
+ static open(file: File, options: CopyOptions): Promise<OpfsByteSource | undefined>;
28
+ readSync(offset: number, length: number): Uint8Array | undefined;
29
+ read(offset: number, length: number, options?: {
30
+ readonly signal?: AbortSignal;
31
+ }): Promise<Uint8Array>;
32
+ /** Lets the copy go: kept in the folder for next time, or removed when it isn't to be kept. */
33
+ close(): void;
34
+ }
35
+ //# sourceMappingURL=opfs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opfs.d.ts","sourceRoot":"","sources":["../../src/source/opfs.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,iHAAiH;AACjH,eAAO,MAAM,YAAY,cAAc,CAAC;AAExC,iEAAiE;AACjE,eAAO,MAAM,UAAU,QAAoB,CAAC;AAuB5C,qGAAqG;AACrG,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,GAAG,MAAM,CAInF;AAED,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5E,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,6FAA6F;AAC7F,qBAAa,cAAe,YAAW,WAAW,EAAE,YAAY;;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAMtB,OAAO,eAMN;IAED;;;;OAIG;IACH,OAAa,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA2BvF;IAED,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAM/D;IAED,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAGrG;IAED,+FAA+F;IAC/F,KAAK,IAAI,IAAI,CAGZ;CACF"}
@@ -0,0 +1,178 @@
1
+ // A large local file read from the origin-private file system: copied there once, in the document
2
+ // worker, then read through a synchronous access handle, so neither Lamina PDF nor the render
3
+ // backend (PDFium reads synchronously) needs the whole file in memory. Copies live in one folder,
4
+ // named by the file's size, date and name, so opening the same file again reads the copy already
5
+ // there; when the folder would pass its budget, the copies used longest ago go first. OPFS is a
6
+ // cache, never the only copy: a browser without it, a copy that doesn't fit or fails partway, or a
7
+ // file another tab holds opens from memory, as before; only a cancel stops the open.
8
+ /** The OPFS folder of document copies, which the app's "Clear recent files and cached documents" empties too. */
9
+ export const CACHE_FOLDER = "documents";
10
+ /** Files above this many bytes are read from a copy: 200 MiB. */
11
+ export const COPY_ABOVE = 200 * 1024 * 1024;
12
+ /** How much the copies may take, at most: 2 GiB, and never more than half the free quota. */
13
+ const MAX_CACHE_BYTES = 2 * 1024 * 1024 * 1024;
14
+ /** Copied in steps of 8 MiB, each a chance to stop and to report progress. */
15
+ const CHUNK = 8 * 1024 * 1024;
16
+ /** Beside each copy, a file holding when it was last opened (the copy's own date is when it was made). */
17
+ const USED = ".used";
18
+ /** The copy's name: its size, date and a hash of its name, so the same file finds its copy again. */
19
+ export function copyName(file) {
20
+ let hash = 2166136261;
21
+ for (let i = 0; i < file.name.length; i++)
22
+ hash = Math.imul(hash ^ file.name.charCodeAt(i), 16777619);
23
+ return `${file.size}-${file.lastModified}-${(hash >>> 0).toString(16)}.pdf`;
24
+ }
25
+ /** A copied file, read synchronously; both a RangeSource (Lamina PDF) and a RenderSource. */
26
+ export class OpfsByteSource {
27
+ size;
28
+ #handle;
29
+ #folder;
30
+ #name;
31
+ #keep;
32
+ constructor(handle, folder, name, keep) {
33
+ this.#handle = handle;
34
+ this.#folder = folder;
35
+ this.#name = name;
36
+ this.#keep = keep;
37
+ this.size = handle.getSize();
38
+ }
39
+ /**
40
+ * `file` read from its OPFS copy, made now if it isn't there; `undefined` where the browser has
41
+ * no OPFS or the copy can't be made (no room, locked by another tab, a write that fails), so the
42
+ * caller reads it from memory. Rejects only when `options.signal` aborts.
43
+ */
44
+ static async open(file, options) {
45
+ const folder = await cacheFolder();
46
+ if (folder === undefined)
47
+ return undefined;
48
+ const name = copyName(file);
49
+ let handle;
50
+ try {
51
+ const fileHandle = (await folder.getFileHandle(name, { create: true }));
52
+ handle = await fileHandle.createSyncAccessHandle();
53
+ }
54
+ catch {
55
+ // Locked by another tab's worker, or the browser refuses: read it from memory instead.
56
+ return undefined;
57
+ }
58
+ try {
59
+ if (handle.getSize() !== file.size) {
60
+ if (!(await makeRoom(folder, name, file.size)))
61
+ throw new Error("no room for the copy");
62
+ await copyInto(handle, file, options);
63
+ }
64
+ // The use record is best effort: another tab may hold it, and the copy is good without it.
65
+ await touch(folder, name).catch(() => undefined);
66
+ return new OpfsByteSource(handle, folder, name, options.keep);
67
+ }
68
+ catch (error) {
69
+ // A copy cut short (a cancel, the disk full) is never left to look complete.
70
+ handle.close();
71
+ await removeCopy(folder, name);
72
+ if (options.signal.aborted)
73
+ throw error;
74
+ return undefined;
75
+ }
76
+ }
77
+ readSync(offset, length) {
78
+ const end = Math.min(this.size, offset + length);
79
+ if (offset < 0 || end < offset)
80
+ return undefined;
81
+ const out = new Uint8Array(end - offset);
82
+ this.#handle.read(out, { at: offset });
83
+ return out;
84
+ }
85
+ read(offset, length, options) {
86
+ options?.signal?.throwIfAborted();
87
+ return Promise.resolve(this.readSync(offset, length) ?? new Uint8Array());
88
+ }
89
+ /** Lets the copy go: kept in the folder for next time, or removed when it isn't to be kept. */
90
+ close() {
91
+ this.#handle.close();
92
+ if (!this.#keep)
93
+ void removeCopy(this.#folder, this.#name);
94
+ }
95
+ }
96
+ async function cacheFolder() {
97
+ try {
98
+ const root = await navigator.storage.getDirectory();
99
+ return await root.getDirectoryHandle(CACHE_FOLDER, { create: true });
100
+ }
101
+ catch {
102
+ return undefined;
103
+ }
104
+ }
105
+ /** Removes a copy and its use record; a copy another tab is reading stays (false). */
106
+ async function removeCopy(folder, name) {
107
+ try {
108
+ await folder.removeEntry(name);
109
+ }
110
+ catch {
111
+ return false;
112
+ }
113
+ await folder.removeEntry(name + USED).catch(() => undefined);
114
+ return true;
115
+ }
116
+ /** Records that copy `name` was opened now. */
117
+ async function touch(folder, name) {
118
+ const used = (await folder.getFileHandle(name + USED, { create: true }));
119
+ const handle = await used.createSyncAccessHandle();
120
+ try {
121
+ const stamp = new Uint8Array(8);
122
+ new DataView(stamp.buffer).setFloat64(0, Date.now());
123
+ handle.truncate(0);
124
+ handle.write(stamp, { at: 0 });
125
+ handle.flush();
126
+ }
127
+ finally {
128
+ handle.close();
129
+ }
130
+ }
131
+ /** When copy `name` was last opened, else when it was made. */
132
+ async function lastUsed(folder, name, made) {
133
+ try {
134
+ const record = await (await folder.getFileHandle(name + USED)).getFile();
135
+ return new DataView(await record.arrayBuffer()).getFloat64(0);
136
+ }
137
+ catch {
138
+ return made;
139
+ }
140
+ }
141
+ /**
142
+ * Whether a copy of `size` bytes fits, making room by removing other copies, those used longest
143
+ * ago first. The copies together may take half of what is free for them (the quota's free space
144
+ * plus what the copies already hold), and never more than MAX_CACHE_BYTES.
145
+ */
146
+ async function makeRoom(folder, keep, size) {
147
+ const copies = [];
148
+ for await (const [name, entry] of folder.entries()) {
149
+ if (name === keep || name.endsWith(USED) || entry.kind !== "file")
150
+ continue;
151
+ const copy = await entry.getFile().catch(() => undefined);
152
+ if (copy !== undefined)
153
+ copies.push({ name, size: copy.size, used: await lastUsed(folder, name, copy.lastModified) });
154
+ }
155
+ let held = copies.reduce((sum, c) => sum + c.size, 0);
156
+ const { quota = 0, usage = 0 } = await navigator.storage.estimate();
157
+ const budget = Math.min(MAX_CACHE_BYTES, (quota - usage + held) / 2);
158
+ if (size > budget)
159
+ return false;
160
+ for (const copy of copies.sort((a, b) => a.used - b.used)) {
161
+ if (held + size <= budget)
162
+ break;
163
+ if (await removeCopy(folder, copy.name))
164
+ held -= copy.size;
165
+ }
166
+ return held + size <= budget;
167
+ }
168
+ async function copyInto(handle, file, options) {
169
+ handle.truncate(0);
170
+ for (let at = 0; at < file.size; at += CHUNK) {
171
+ options.signal.throwIfAborted();
172
+ const bytes = new Uint8Array(await file.slice(at, Math.min(file.size, at + CHUNK)).arrayBuffer());
173
+ handle.write(bytes, { at });
174
+ options.onProgress?.(Math.min(file.size, at + CHUNK), file.size);
175
+ }
176
+ handle.flush();
177
+ }
178
+ //# sourceMappingURL=opfs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opfs.js","sourceRoot":"","sources":["../../src/source/opfs.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,8FAA8F;AAC9F,kGAAkG;AAClG,iGAAiG;AACjG,gGAAgG;AAChG,mGAAmG;AACnG,qFAAqF;AAKrF,iHAAiH;AACjH,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,iEAAiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,6FAA6F;AAC7F,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,8EAA8E;AAC9E,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9B,0GAA0G;AAC1G,MAAM,IAAI,GAAG,OAAO,CAAC;AAcrB,qGAAqG;AACrG,MAAM,UAAU,QAAQ,CAAC,IAAkD;IACzE,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtG,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;AAC9E,CAAC;AAWD,6FAA6F;AAC7F,MAAM,OAAO,cAAc;IAChB,IAAI,CAAS;IACb,OAAO,CAAa;IACpB,OAAO,CAA4B;IACnC,KAAK,CAAS;IACd,KAAK,CAAU;IAExB,YAAoB,MAAkB,EAAE,MAAiC,EAAE,IAAY,EAAE,IAAa;QACpG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAU,EAAE,OAAoB;QAChD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,MAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAmB,CAAC;YAC1F,MAAM,GAAG,MAAM,UAAU,CAAC,sBAAsB,EAAE,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,uFAAuF;YACvF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACxF,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;YACD,2FAA2F;YAC3F,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACjD,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6EAA6E;YAC7E,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,KAAK,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,MAAc;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM;YAAE,OAAO,SAAS,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,MAAc,EAAE,OAA2C;QAC9E,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,+FAA+F;IAC/F,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,KAAK,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACpD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,KAAK,UAAU,UAAU,CAAC,MAAiC,EAAE,IAAY;IACvE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+CAA+C;AAC/C,KAAK,UAAU,KAAK,CAAC,MAAiC,EAAE,IAAY;IAClE,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAmB,CAAC;IAC3F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,KAAK,UAAU,QAAQ,CAAC,MAAiC,EAAE,IAAY,EAAE,IAAY;IACnF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACzE,OAAO,IAAI,QAAQ,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,QAAQ,CAAC,MAAiC,EAAE,IAAY,EAAE,IAAY;IACnF,MAAM,MAAM,GAAmD,EAAE,CAAC;IAClE,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAC5B,MACD,CAAC,OAAO,EAAE,EAAE,CAAC;QACZ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAC5E,MAAM,IAAI,GAAG,MAAO,KAA8B,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,IAAI,KAAK,SAAS;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,IAAI,IAAI,GAAG,MAAM;QAAE,OAAO,KAAK,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,IAAI,IAAI,GAAG,IAAI,IAAI,MAAM;YAAE,MAAM;QACjC,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAkB,EAAE,IAAU,EAAE,OAAoB;IAC1E,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAClG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { PageInfo } from "@laminapdf/sdk";
2
2
  import type { ViewerClient } from "../client.js";
3
- import type { OpenedDocument } from "../protocol.js";
3
+ import { type OpenedDocument } from "../protocol.js";
4
4
  import type { Viewer } from "../view/viewer.js";
5
5
  /** How a strip looks and how much it keeps. */
6
6
  export interface ThumbnailStripOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"strip.d.ts","sourceRoot":"","sources":["../../src/thumbnails/strip.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxG,wDAAwD;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAyBD,4GAA4G;AAC5G,qBAAa,cAAc;;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAoB9B,YAAY,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,EA4BpF;IAED,qCAAqC;IACrC,KAAK,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAGlC;IAED,4DAA4D;IAC5D,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CASnC;IAED,4FAA4F;IAC5F,OAAO,IAAI,IAAI,CAMd;CAkNF"}
1
+ {"version":3,"file":"strip.d.ts","sourceRoot":"","sources":["../../src/thumbnails/strip.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxG,wDAAwD;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAyBD,4GAA4G;AAC5G,qBAAa,cAAc;;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAqB9B,YAAY,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,EA4BpF;IAED,qCAAqC;IACrC,KAAK,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAGlC;IAED,4DAA4D;IAC5D,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CASnC;IAED,4FAA4F;IAC5F,OAAO,IAAI,IAAI,CAMd;CA2NF"}
@@ -8,6 +8,7 @@
8
8
  import { BitmapCache } from "../canvas/cache.js";
9
9
  import { CanvasPool } from "../canvas/pool.js";
10
10
  import { PageLayout, rotated } from "../layout/page-layout.js";
11
+ import { appearanceField, appearanceKey } from "../protocol.js";
11
12
  /** Space for the caption under each thumbnail, and between thumbnails, in CSS px. */
12
13
  const CAPTION = 20;
13
14
  const GAP = 12;
@@ -35,6 +36,7 @@ export class ThumbnailStrip {
35
36
  #document;
36
37
  #layout;
37
38
  #rotation = 0;
39
+ #appearance = "original";
38
40
  /** The page the viewer shows, marked selected. */
39
41
  #current = 0;
40
42
  /** The page that takes Tab (roving focus). */
@@ -110,6 +112,12 @@ export class ThumbnailStrip {
110
112
  this.#rotation = state.rotation;
111
113
  this.#relayout();
112
114
  }
115
+ // The thumbnails follow the page appearance: drawn again in it.
116
+ if (appearanceKey(state.appearance) !== appearanceKey(this.#appearance)) {
117
+ this.#appearance = state.appearance;
118
+ this.#unmountAll();
119
+ this.#schedule();
120
+ }
113
121
  if (state.currentPage === this.#current || this.#document === undefined)
114
122
  return;
115
123
  this.#current = state.currentPage;
@@ -205,14 +213,16 @@ export class ThumbnailStrip {
205
213
  async #draw(item, layout) {
206
214
  const ratio = globalThis.devicePixelRatio || 1;
207
215
  const scale = layout.scale * ratio;
208
- const key = `${this.#client.document?.id ?? 0}:${item.index}:${layout.rotation}:${scale.toFixed(4)}`;
216
+ const appearance = this.#appearance;
217
+ const id = this.#client.document?.id ?? 0;
218
+ const key = `${id}:${item.index}:${layout.rotation}:${scale.toFixed(4)}:${appearanceKey(appearance)}`;
209
219
  let bitmap = this.#cache.get(key);
210
220
  let owned = false;
211
221
  if (bitmap === undefined) {
212
222
  const abort = new AbortController();
213
223
  item.abort = abort;
214
224
  try {
215
- const rendered = await this.#client.render({ page: item.index, scale, rotation: layout.rotation }, { priority: "background", signal: abort.signal });
225
+ const rendered = await this.#client.render({ page: item.index, scale, rotation: layout.rotation, ...appearanceField(appearance) }, { priority: "background", signal: abort.signal });
216
226
  bitmap = rendered.bitmap;
217
227
  }
218
228
  catch (error) {
@@ -307,7 +317,8 @@ export class ThumbnailStrip {
307
317
  }
308
318
  #go(index) {
309
319
  this.#focus = index;
310
- this.#viewer.goToPage(index);
320
+ // A jump: Back returns to where the view was (R06).
321
+ this.#viewer.jumpToPage(index);
311
322
  }
312
323
  }
313
324
  //# sourceMappingURL=strip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/thumbnails/strip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/thumbnails/strip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Sets `element`'s `user-select`, with WebKit's prefix (Safari before 26 reads only that). */
2
+ export declare function setUserSelect(element: HTMLElement, value: "none" | "text"): void;
3
+ //# sourceMappingURL=user-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-select.d.ts","sourceRoot":"","sources":["../../src/view/user-select.ts"],"names":[],"mappings":"AAKA,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhF"}
@@ -0,0 +1,10 @@
1
+ // Which parts of the viewer a selection may take in: only the text layer's spans. Each element
2
+ // that holds nothing to select sets `none` on itself; no ancestor of the spans may, since Firefox
3
+ // stops a mouse drag from selecting under a `user-select: none` ancestor once a text field on
4
+ // the page has had the focus (docs/bugs/firefox-selection-after-a-field).
5
+ /** Sets `element`'s `user-select`, with WebKit's prefix (Safari before 26 reads only that). */
6
+ export function setUserSelect(element, value) {
7
+ element.style.setProperty("user-select", value);
8
+ element.style.setProperty("-webkit-user-select", value);
9
+ }
10
+ //# sourceMappingURL=user-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-select.js","sourceRoot":"","sources":["../../src/view/user-select.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,kGAAkG;AAClG,8FAA8F;AAC9F,0EAA0E;AAE1E,+FAA+F;AAC/F,MAAM,UAAU,aAAa,CAAC,OAAoB,EAAE,KAAsB;IACxE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,8 +1,12 @@
1
+ import { type PageAppearance } from "@laminapdf/render";
1
2
  import type { Target } from "@laminapdf/sdk";
2
3
  import { type CanvasPoolOptions } from "../canvas/pool.js";
3
4
  import type { ViewerClient } from "../client.js";
4
5
  import { FindController } from "../find/controller.js";
5
- import { type TextLayerOptions } from "../layers/text-layer.js";
6
+ import { NavigationHistory, type NavigationHistoryOptions } from "../history/history.js";
7
+ import type { CopyMode } from "../layers/copy.js";
8
+ import { type LinkLayerOptions } from "../layers/link-layer.js";
9
+ import { type TextLayerOptions, type TextSelection } from "../layers/text-layer.js";
6
10
  import { type Rotation } from "../layout/page-layout.js";
7
11
  import { type OpenedDocument } from "../protocol.js";
8
12
  import { type DocumentPoint, type Point, type Zoom } from "../zoom/zoom.js";
@@ -18,6 +22,8 @@ export interface ViewState {
18
22
  /** The zoom as a percentage (100 is actual size), whatever the mode. */
19
23
  readonly percent: number;
20
24
  readonly rotation: Rotation;
25
+ /** How the pages' colours are drawn (`"original"`: their own). */
26
+ readonly appearance: PageAppearance;
21
27
  readonly scrollTop: number;
22
28
  /** The pages any part of which is in the viewport. */
23
29
  readonly visibleRange: {
@@ -57,6 +63,10 @@ export interface ViewerEventMap {
57
63
  readonly percent: number;
58
64
  };
59
65
  renderstats: RenderStats;
66
+ /** The text selection changed: `undefined` when it left the viewer (UI/UX plan §5.3). */
67
+ selectionchange: {
68
+ readonly selection: TextSelection | undefined;
69
+ };
60
70
  }
61
71
  /** A layer that later todos mount into each page (text, annotations, highlights, …). */
62
72
  export interface PageLayer {
@@ -109,6 +119,30 @@ export interface CreateViewerOptions {
109
119
  * for screen readers (default on; `false` leaves it out, an object sets its options).
110
120
  */
111
121
  readonly text?: boolean | TextLayerOptions;
122
+ /**
123
+ * The link layer: an anchor over each link, internal ones going there as history jumps (default
124
+ * on; `false` leaves it out, an object sets its options).
125
+ */
126
+ readonly links?: boolean | LinkLayerOptions;
127
+ /** The back and forward history's options. */
128
+ readonly history?: NavigationHistoryOptions;
129
+ /** What assistive technology hears of each page, and where focus goes after a jump. */
130
+ readonly pages?: PageRegionOptions;
131
+ }
132
+ /**
133
+ * Each page shell is a region that assistive technology names ("Page iv, 4 of 120") and can land
134
+ * on: the viewer has no strings of its own, so the app gives the words.
135
+ */
136
+ export interface PageRegionOptions {
137
+ /** A page's name, from its index and the page count (default "Page 4 of 120"). */
138
+ readonly name?: (index: number, count: number) => string;
139
+ /** What a page is called as a kind of region (default "page"). */
140
+ readonly roleDescription?: string;
141
+ /**
142
+ * Whether a history jump (a link, the outline, a thumbnail, go to page) moves focus to the page
143
+ * it lands on, once that page is mounted (default false).
144
+ */
145
+ readonly focusOnJump?: boolean;
112
146
  }
113
147
  /**
114
148
  * The viewer: a scroll container over one document's pages. Make one with {@link createViewer},
@@ -118,6 +152,11 @@ export declare class Viewer {
118
152
  #private;
119
153
  /** Find in this viewer's document: query, options, matches, next and previous. */
120
154
  readonly find: FindController;
155
+ /**
156
+ * Back and forward through the places jumped from and to: links, `jumpToPage`,
157
+ * `jumpToDestination` and find's matches record a jump; scrolling doesn't.
158
+ */
159
+ readonly history: NavigationHistory;
121
160
  constructor(options: CreateViewerOptions);
122
161
  /** The scroll container (append it, or use {@link mount}). */
123
162
  get element(): HTMLDivElement;
@@ -131,6 +170,16 @@ export declare class Viewer {
131
170
  subscribe(listener: () => void): () => void;
132
171
  /** Listens for `event`; returns a function that stops listening. */
133
172
  on<E extends keyof ViewerEventMap>(event: E, listener: (data: ViewerEventMap[E]) => void): () => void;
173
+ /**
174
+ * Copies the text selection to the clipboard: by paragraph in reading order, or exact, as laid
175
+ * out. Call it in a user gesture (a click, a key). Resolves false when nothing is selected or
176
+ * the clipboard refused.
177
+ */
178
+ copySelection(mode?: CopyMode): Promise<boolean>;
179
+ /** Whether a plain drag selects a rectangle, as an Alt/Option-drag does (column selection). */
180
+ get columnSelect(): boolean;
181
+ /** Turns column selection by plain drag on or off; Alt/Option-drag selects a rectangle either way. */
182
+ set columnSelect(on: boolean);
134
183
  /**
135
184
  * Keeps `pages` mounted wherever the view scrolls, until the next call replaces them: the pages
136
185
  * a text selection touches, so scrolling never takes the selection away. A pinned page out of
@@ -149,6 +198,10 @@ export declare class Viewer {
149
198
  * viewport's top-left, or its page's top when it names no point (ISO 32000-2 §12.3.2.2).
150
199
  */
151
200
  goToDestination(target: Target): void;
201
+ /** {@link goToPage} as a history jump: Back returns to where the view was. */
202
+ jumpToPage(index: number): void;
203
+ /** {@link goToDestination} as a history jump: Back returns to where the view was. */
204
+ jumpToDestination(target: Target): void;
152
205
  /**
153
206
  * Sets the zoom (a mode, or a percentage clamped to 10–800 %), keeping the document point at
154
207
  * `anchor` (viewport CSS px; default its centre) where it is.
@@ -162,6 +215,13 @@ export declare class Viewer {
162
215
  * @throws RangeError when `delta` isn't a multiple of 90.
163
216
  */
164
217
  rotate(delta: number): void;
218
+ /**
219
+ * Draws the pages in `appearance` (Sepia, Dark, High contrast or their own colours), keeping the
220
+ * scroll position: pages in view paint again, a quick pass then sharp tiles, and none of their
221
+ * old pixels is kept; other pages give their canvas back and paint when they come into view.
222
+ * The thumbnails follow.
223
+ */
224
+ setAppearance(appearance: PageAppearance): void;
165
225
  /** The document point at viewport position (`x`, `y`) in CSS px. */
166
226
  pointAt(x: number, y: number): DocumentPoint | undefined;
167
227
  /** Where `point` is now, in viewport CSS px. */
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../src/view/viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../src/view/viewer.ts"],"names":[],"mappings":"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"}