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

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 (127) hide show
  1. package/README.md +79 -10
  2. package/dist/client.d.ts +60 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +241 -22
  5. package/dist/client.js.map +1 -1
  6. package/dist/edit/session.d.ts +91 -0
  7. package/dist/edit/session.d.ts.map +1 -0
  8. package/dist/edit/session.js +179 -0
  9. package/dist/edit/session.js.map +1 -0
  10. package/dist/edit-log.d.ts +32 -0
  11. package/dist/edit-log.d.ts.map +1 -0
  12. package/dist/edit-log.js +74 -0
  13. package/dist/edit-log.js.map +1 -0
  14. package/dist/find/controller.d.ts +6 -0
  15. package/dist/find/controller.d.ts.map +1 -1
  16. package/dist/find/controller.js +69 -2
  17. package/dist/find/controller.js.map +1 -1
  18. package/dist/first-draw.d.ts +10 -0
  19. package/dist/first-draw.d.ts.map +1 -0
  20. package/dist/first-draw.js +33 -0
  21. package/dist/first-draw.js.map +1 -0
  22. package/dist/history/history.d.ts +74 -0
  23. package/dist/history/history.d.ts.map +1 -0
  24. package/dist/history/history.js +135 -0
  25. package/dist/history/history.js.map +1 -0
  26. package/dist/index.d.ts +11 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +4 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/layers/copy.d.ts +26 -0
  31. package/dist/layers/copy.d.ts.map +1 -0
  32. package/dist/layers/copy.js +150 -0
  33. package/dist/layers/copy.js.map +1 -0
  34. package/dist/layers/link-layer.d.ts +101 -0
  35. package/dist/layers/link-layer.d.ts.map +1 -0
  36. package/dist/layers/link-layer.js +527 -0
  37. package/dist/layers/link-layer.js.map +1 -0
  38. package/dist/layers/link-preview.d.ts +77 -0
  39. package/dist/layers/link-preview.d.ts.map +1 -0
  40. package/dist/layers/link-preview.js +202 -0
  41. package/dist/layers/link-preview.js.map +1 -0
  42. package/dist/layers/link-url.d.ts +19 -0
  43. package/dist/layers/link-url.d.ts.map +1 -0
  44. package/dist/layers/link-url.js +47 -0
  45. package/dist/layers/link-url.js.map +1 -0
  46. package/dist/layers/spans.d.ts +0 -6
  47. package/dist/layers/spans.d.ts.map +1 -1
  48. package/dist/layers/spans.js +2 -20
  49. package/dist/layers/spans.js.map +1 -1
  50. package/dist/layers/structure-layer.d.ts.map +1 -1
  51. package/dist/layers/structure-layer.js +3 -0
  52. package/dist/layers/structure-layer.js.map +1 -1
  53. package/dist/layers/text-layer.d.ts +27 -6
  54. package/dist/layers/text-layer.d.ts.map +1 -1
  55. package/dist/layers/text-layer.js +310 -28
  56. package/dist/layers/text-layer.js.map +1 -1
  57. package/dist/layout/page-layout.d.ts +7 -0
  58. package/dist/layout/page-layout.d.ts.map +1 -1
  59. package/dist/layout/page-layout.js +15 -0
  60. package/dist/layout/page-layout.js.map +1 -1
  61. package/dist/protocol.d.ts +197 -5
  62. package/dist/protocol.d.ts.map +1 -1
  63. package/dist/protocol.js +33 -6
  64. package/dist/protocol.js.map +1 -1
  65. package/dist/source/opfs.d.ts +35 -0
  66. package/dist/source/opfs.d.ts.map +1 -0
  67. package/dist/source/opfs.js +178 -0
  68. package/dist/source/opfs.js.map +1 -0
  69. package/dist/thumbnails/strip.d.ts +1 -1
  70. package/dist/thumbnails/strip.d.ts.map +1 -1
  71. package/dist/thumbnails/strip.js +48 -4
  72. package/dist/thumbnails/strip.js.map +1 -1
  73. package/dist/view/previews.d.ts +47 -0
  74. package/dist/view/previews.d.ts.map +1 -0
  75. package/dist/view/previews.js +97 -0
  76. package/dist/view/previews.js.map +1 -0
  77. package/dist/view/user-select.d.ts +3 -0
  78. package/dist/view/user-select.d.ts.map +1 -0
  79. package/dist/view/user-select.js +10 -0
  80. package/dist/view/user-select.js.map +1 -0
  81. package/dist/view/viewer.d.ts +143 -5
  82. package/dist/view/viewer.d.ts.map +1 -1
  83. package/dist/view/viewer.js +590 -50
  84. package/dist/view/viewer.js.map +1 -1
  85. package/dist/worker/document.d.ts +66 -6
  86. package/dist/worker/document.d.ts.map +1 -1
  87. package/dist/worker/document.js +139 -23
  88. package/dist/worker/document.js.map +1 -1
  89. package/dist/worker/edit.d.ts +35 -0
  90. package/dist/worker/edit.d.ts.map +1 -0
  91. package/dist/worker/edit.js +305 -0
  92. package/dist/worker/edit.js.map +1 -0
  93. package/dist/worker/find.d.ts +2 -2
  94. package/dist/worker/find.d.ts.map +1 -1
  95. package/dist/worker/find.js +8 -21
  96. package/dist/worker/find.js.map +1 -1
  97. package/dist/worker/fingerprint.d.ts +10 -0
  98. package/dist/worker/fingerprint.d.ts.map +1 -0
  99. package/dist/worker/fingerprint.js +42 -0
  100. package/dist/worker/fingerprint.js.map +1 -0
  101. package/dist/worker/methods.d.ts.map +1 -1
  102. package/dist/worker/methods.js +42 -4
  103. package/dist/worker/methods.js.map +1 -1
  104. package/dist/worker/navigation.d.ts +5 -1
  105. package/dist/worker/navigation.d.ts.map +1 -1
  106. package/dist/worker/navigation.js +22 -4
  107. package/dist/worker/navigation.js.map +1 -1
  108. package/dist/worker/print.d.ts +14 -0
  109. package/dist/worker/print.d.ts.map +1 -0
  110. package/dist/worker/print.js +49 -0
  111. package/dist/worker/print.js.map +1 -0
  112. package/dist/worker/recent-pages.d.ts +16 -0
  113. package/dist/worker/recent-pages.d.ts.map +1 -0
  114. package/dist/worker/recent-pages.js +68 -0
  115. package/dist/worker/recent-pages.js.map +1 -0
  116. package/dist/worker/render.d.ts.map +1 -1
  117. package/dist/worker/render.js +5 -2
  118. package/dist/worker/render.js.map +1 -1
  119. package/dist/worker/session.d.ts +59 -0
  120. package/dist/worker/session.d.ts.map +1 -0
  121. package/dist/worker/session.js +152 -0
  122. package/dist/worker/session.js.map +1 -0
  123. package/dist/worker/text.d.ts +11 -3
  124. package/dist/worker/text.d.ts.map +1 -1
  125. package/dist/worker/text.js +33 -25
  126. package/dist/worker/text.js.map +1 -1
  127. package/package.json +9 -8
@@ -2,12 +2,17 @@
2
2
  // Lamina PDF's extraction, laid over the rendered glyphs, so the browser's own selection, copy
3
3
  // and screen readers work on the page's text. Spans are placed in page points inside a box that
4
4
  // one CSS transform scales and rotates to the page's current size, so a zoom or a rotation moves
5
- // no span. The viewer is the one selection root: only spans are selectable, never canvases, gaps
6
- // or the app around it, so a selection runs from one page into the next; the pages it touches
7
- // stay mounted while it lasts. Copy writes the extracted text, joined in reading order.
5
+ // no span. Only the spans are selectable, never canvases or gaps, so a selection runs from one
6
+ // page into the next; the pages it touches stay mounted while it lasts. Copy writes the extracted
7
+ // text of the part of a selection inside the viewer: by paragraph in the extraction's reading
8
+ // order, or exact, as laid out (layers/copy.ts). Alt/Option-drag, or a drag in column mode,
9
+ // selects the runs inside a rectangle instead (a column of a multi-column page), which the layer
10
+ // marks itself, since a browser selection can't hold a rectangle.
8
11
  import { range as range_ } from "../layout/range.js";
12
+ import { setUserSelect } from "../view/user-select.js";
9
13
  import { placeBox } from "./box.js";
10
- import { joinPieces, layoutSpans } from "./spans.js";
14
+ import { copySelection } from "./copy.js";
15
+ import { layoutSpans } from "./spans.js";
11
16
  import { StructureLayer } from "./structure-layer.js";
12
17
  /** Numbers each text layer, for its span ids. */
13
18
  let nextViewer = 0;
@@ -20,10 +25,21 @@ export class TextLayer {
20
25
  #specs = new WeakMap();
21
26
  #structure;
22
27
  #cleanup = [];
23
- #points = [];
24
28
  /** Each mounted page's size in CSS px, as the last resize gave it. */
25
29
  #sizes = new Map();
26
30
  #pointerType = "";
31
+ /** A pointer is down in the viewer: a selection it makes isn't settled until it comes up. */
32
+ #pointerDown = false;
33
+ /** The mode the next copy event writes in (a command may ask for exact). */
34
+ #copyMode = "paragraph";
35
+ /** Each page's reading-order blocks, once read; a page being read has a pending entry. */
36
+ #blocks = new Map();
37
+ /** Whether a plain drag selects a rectangle (column mode), as an Alt-drag always does. */
38
+ #columnMode = false;
39
+ /** The column selection: its pieces and spans, while it lasts. */
40
+ #column;
41
+ /** The rectangle being dragged out for a column selection. */
42
+ #drag;
27
43
  /** Span ids' prefix, unique to this viewer, so two viewers on a page never share an id. */
28
44
  #idPrefix = `lamina-text-${nextViewer++}-`;
29
45
  /** Counts opens: a structure tree answered for an earlier document is dropped. */
@@ -34,20 +50,71 @@ export class TextLayer {
34
50
  this.#host = host;
35
51
  this.#options = options;
36
52
  this.#structure = new StructureLayer(host.root, options.untaggedLabel ?? "Untagged document", this.#idPrefix);
37
- // Nothing in the viewer is selectable but the spans (set on each): canvases, gaps and other
38
- // layers stay out of every selection.
39
- selectable(host.root, "none");
53
+ // Only the spans are selectable (set on each); what holds nothing to select sets `none` on
54
+ // itself (view/user-select.ts says why no ancestor of the spans may).
40
55
  this.#listen(document, "selectionchange", () => this.#selectionChanged());
41
56
  this.#listen(document, "copy", (e) => this.#copy(e));
42
57
  this.#listen(host.root, "keydown", (e) => this.#selectAll(e));
43
- this.#listen(host.root, "pointerdown", (e) => {
44
- this.#pointerType = e.pointerType;
58
+ this.#listen(host.root, "pointerdown", (e) => this.#pointerDownIn(e));
59
+ this.#listen(document, "pointermove", (e) => this.#dragTo(e));
60
+ this.#listen(document, "pointerup", (e) => this.#pointerUp(e));
61
+ this.#listen(document, "pointercancel", (e) => this.#pointerUp(e));
62
+ // On the document: the drag that made a column selection kept the focus where it was.
63
+ this.#listen(document, "keydown", (e) => {
64
+ if (e.key === "Escape" && this.#column !== undefined)
65
+ this.#clearColumn(true);
45
66
  });
46
67
  }
47
- /** A new document: its page sizes, and its structure tree, read once. */
48
- open(document) {
49
- this.#points = document.pages.map((p) => ({ width: p.width, height: p.height }));
68
+ /** Whether a plain drag selects a rectangle (column mode). */
69
+ get columnMode() {
70
+ return this.#columnMode;
71
+ }
72
+ set columnMode(on) {
73
+ this.#columnMode = on;
74
+ }
75
+ /**
76
+ * Copies the selection in `mode` to the clipboard, as the copy event would (for a command or a
77
+ * toolbar button; it must run in a user gesture). Resolves false when nothing is selected or
78
+ * the clipboard refused.
79
+ */
80
+ async copy(mode = "paragraph") {
81
+ const pieces = this.#selectedPieces();
82
+ if (pieces === undefined || pieces.length === 0)
83
+ return false;
84
+ // The browser's own copy, in this gesture: the copy event writes both formats.
85
+ this.#copyMode = mode;
86
+ try {
87
+ if (document.execCommand("copy"))
88
+ return true;
89
+ }
90
+ catch {
91
+ // No synchronous copy here: the async clipboard below.
92
+ }
93
+ finally {
94
+ this.#copyMode = "paragraph";
95
+ }
96
+ const copied = copySelection(pieces, mode, (page) => this.#blocksOf(page));
97
+ try {
98
+ if (typeof ClipboardItem !== "undefined" && navigator.clipboard?.write !== undefined) {
99
+ await navigator.clipboard.write([
100
+ new ClipboardItem({
101
+ "text/plain": new Blob([copied.text], { type: "text/plain" }),
102
+ "text/html": new Blob([copied.html], { type: "text/html" }),
103
+ }),
104
+ ]);
105
+ }
106
+ else
107
+ await navigator.clipboard.writeText(copied.text);
108
+ return true;
109
+ }
110
+ catch {
111
+ return false;
112
+ }
113
+ }
114
+ /** A new document: its structure tree, read once. */
115
+ open() {
50
116
  this.#structure.reset();
117
+ this.#blocks.clear();
51
118
  const opening = ++this.#generation;
52
119
  this.#host.client
53
120
  .structure()
@@ -100,6 +167,9 @@ export class TextLayer {
100
167
  this.#structure.unlink(page);
101
168
  this.#pages.delete(page);
102
169
  this.#sizes.delete(page);
170
+ this.#blocks.delete(page);
171
+ if (this.#column?.pieces.some((p) => p.page === page))
172
+ this.#clearColumn(true);
103
173
  }
104
174
  onZoom(page, _slot, size) {
105
175
  this.#sizes.set(page, size);
@@ -113,7 +183,7 @@ export class TextLayer {
113
183
  /** Scales and turns page `page`'s box to `size` at the view's rotation. */
114
184
  #place(page, size) {
115
185
  const text = this.#pages.get(page);
116
- const points = this.#points[page];
186
+ const points = this.#host.points(page);
117
187
  if (text === undefined || points === undefined)
118
188
  return;
119
189
  placeBox(text.box, points, size, this.#host.rotation());
@@ -155,7 +225,7 @@ export class TextLayer {
155
225
  transformOrigin: "0 0",
156
226
  ...(this.#options.outline === true ? { outline: "1px solid rgb(220 0 0 / 0.7)" } : {}),
157
227
  });
158
- selectable(span, "text");
228
+ setUserSelect(span, "text");
159
229
  this.#specs.set(span, { page, spec });
160
230
  fragment.append(span);
161
231
  return span;
@@ -192,13 +262,38 @@ export class TextLayer {
192
262
  #spansInOrder() {
193
263
  return [...this.#pages.entries()].sort(([a], [b]) => a - b).flatMap(([, text]) => text.spans);
194
264
  }
195
- /** The selection's range, when it is in this viewer's text. */
265
+ /**
266
+ * The selection's range in this viewer. A selection that runs on past the viewer into the app
267
+ * around it is cut at the first or last mounted span, so copy, the pinned pages and
268
+ * `onSelection` keep to the page text. `undefined` when it doesn't reach the viewer, or when its
269
+ * other end is in another viewer: neither could tell the whole of it, so both leave it to the
270
+ * browser.
271
+ */
196
272
  #range() {
197
273
  const selection = document.getSelection();
198
274
  if (selection === null || selection.rangeCount === 0 || selection.isCollapsed)
199
275
  return undefined;
200
276
  const range = selection.getRangeAt(0);
201
- return this.#host.root.contains(range.commonAncestorContainer) ? range : undefined;
277
+ const root = this.#host.root;
278
+ if (root.contains(range.commonAncestorContainer))
279
+ return range;
280
+ if (!range.intersectsNode(root))
281
+ return undefined;
282
+ const outside = (node) => !root.contains(node);
283
+ const inOtherViewer = (node) => outside(node) && (node instanceof Element ? node : node.parentElement)?.closest(".lamina-viewer") != null;
284
+ if (inOtherViewer(range.startContainer) || inOtherViewer(range.endContainer))
285
+ return undefined;
286
+ const spans = this.#spansInOrder();
287
+ const first = spans[0];
288
+ const last = spans.at(-1);
289
+ if (first === undefined || last === undefined)
290
+ return undefined;
291
+ const inside = range.cloneRange();
292
+ if (outside(range.startContainer))
293
+ inside.setStart(first, 0);
294
+ if (outside(range.endContainer))
295
+ inside.setEnd(last, last.childNodes.length);
296
+ return inside.collapsed ? undefined : inside;
202
297
  }
203
298
  /** The selected part of each span the selection touches, in order. */
204
299
  #pieces(range) {
@@ -216,11 +311,62 @@ export class TextLayer {
216
311
  }
217
312
  return pieces;
218
313
  }
219
- #copy(event) {
314
+ /** The selection's pieces: the browser selection's in this viewer, else the column's. */
315
+ #selectedPieces() {
220
316
  const range = this.#range();
221
- if (range === undefined || event.clipboardData === null)
317
+ if (range !== undefined)
318
+ return this.#pieces(range);
319
+ // The column, unless something else is selected or a field has the focus: that copy is theirs.
320
+ const selection = document.getSelection();
321
+ const elsewhere = selection !== null && selection.rangeCount > 0 && !selection.isCollapsed;
322
+ const field = document.activeElement?.closest("input, textarea, [contenteditable]") ?? null;
323
+ return elsewhere || field !== null ? undefined : this.#column?.pieces;
324
+ }
325
+ /**
326
+ * Page `page`'s reading-order blocks if read; else starts reading them, and tells the app the
327
+ * selection again once they come, its text then in reading order. A page whose blocks can't be
328
+ * read gets none, once: its text is joined in run order.
329
+ */
330
+ #blocksOf(page) {
331
+ const known = this.#blocks.get(page);
332
+ if (known === "reading")
333
+ return undefined;
334
+ if (known !== undefined)
335
+ return known;
336
+ this.#blocks.set(page, "reading");
337
+ const asked = this.#generation;
338
+ const store = (blocks) => {
339
+ // Another document opened since: these blocks are the old one's.
340
+ if (asked !== this.#generation || this.#blocks.get(page) !== "reading")
341
+ return;
342
+ this.#blocks.set(page, blocks);
343
+ this.#retell();
344
+ };
345
+ this.#host.client
346
+ .readingOrder(page)
347
+ .then(store)
348
+ .catch(() => store([]));
349
+ return undefined;
350
+ }
351
+ /** Tells the app about the selection as it is now (its text may read better with new blocks). */
352
+ #retell() {
353
+ if (!this.#selecting)
354
+ return;
355
+ if (this.#column !== undefined) {
356
+ this.#tell(this.#column.pieces, this.#column.spans.map((s) => s.getBoundingClientRect()), true);
222
357
  return;
223
- event.clipboardData.setData("text/plain", joinPieces(this.#pieces(range)));
358
+ }
359
+ const range = this.#range();
360
+ if (range !== undefined)
361
+ this.#tell(this.#pieces(range), [...range.getClientRects()], false);
362
+ }
363
+ #copy(event) {
364
+ const pieces = this.#selectedPieces();
365
+ if (pieces === undefined || event.clipboardData === null)
366
+ return;
367
+ const copied = copySelection(pieces, this.#copyMode, (page) => this.#blocksOf(page));
368
+ event.clipboardData.setData("text/plain", copied.text);
369
+ event.clipboardData.setData("text/html", copied.html);
224
370
  event.preventDefault();
225
371
  }
226
372
  /** Ctrl/Cmd+A in the viewer selects the mounted pages' text (find reaches the rest). */
@@ -242,6 +388,16 @@ export class TextLayer {
242
388
  }
243
389
  #selectionChanged() {
244
390
  const range = this.#range();
391
+ // A browser selection replaces a column selection.
392
+ if (range !== undefined && this.#column !== undefined)
393
+ this.#clearColumn(false);
394
+ if (range === undefined && this.#column !== undefined) {
395
+ // A selection made elsewhere (a field, the outline) ends the column's; a collapsed one doesn't.
396
+ const selection = document.getSelection();
397
+ if (selection !== null && selection.rangeCount > 0 && !selection.isCollapsed)
398
+ this.#clearColumn(true);
399
+ return;
400
+ }
245
401
  if (range === undefined) {
246
402
  // A selection elsewhere on the page (an input, another viewer): told once, when it leaves.
247
403
  if (!this.#selecting)
@@ -260,21 +416,147 @@ export class TextLayer {
260
416
  const [low, high] = [start ?? end, end ?? start];
261
417
  if (low !== undefined && high !== undefined)
262
418
  this.#host.keepMounted(range_(Math.min(low, high), Math.max(low, high)));
419
+ this.#tell(this.#pieces(range), [...range.getClientRects()], false);
420
+ }
421
+ /** Tells the app about a selection of `pieces` (and reads their pages' blocks for copy). */
422
+ #tell(pieces, rects, column) {
423
+ const pages = [...new Set(pieces.map((p) => p.page))];
424
+ for (const page of pages)
425
+ this.#blocksOf(page);
263
426
  if (this.#options.onSelection === undefined)
264
427
  return;
265
- const pieces = this.#pieces(range);
428
+ // The text only when asked for (Search for, Share): joining it on every change of a drag costs.
429
+ let text;
430
+ const blocksOf = (page) => this.#blocksOf(page);
266
431
  this.#options.onSelection({
267
- text: joinPieces(pieces),
268
- rects: [...range.getClientRects()],
269
- pages: [...new Set(pieces.map((p) => p.page))],
432
+ get text() {
433
+ text ??= copySelection(pieces, "paragraph", blocksOf).text;
434
+ return text;
435
+ },
436
+ rects,
437
+ pages,
270
438
  pointerType: this.#pointerType,
439
+ settled: !this.#pointerDown,
440
+ column,
441
+ });
442
+ }
443
+ #pointerDownIn(event) {
444
+ this.#pointerType = event.pointerType;
445
+ this.#pointerDown = true;
446
+ // The page the press is on: its blocks are read while the drag goes on, for the copy after it.
447
+ const page = event.target instanceof Node ? pageOf(event.target) : undefined;
448
+ if (page !== undefined && this.#pages.has(page))
449
+ this.#blocksOf(page);
450
+ if (this.#column !== undefined)
451
+ this.#clearColumn(true);
452
+ const rectangle = (event.altKey || this.#columnMode) && event.pointerType !== "touch" && event.button === 0;
453
+ if (!rectangle)
454
+ return;
455
+ // A rectangle, not a run of text: the browser's selection stays out of it.
456
+ event.preventDefault();
457
+ document.getSelection()?.removeAllRanges();
458
+ const box = document.createElement("div");
459
+ box.className = "lamina-column-selection";
460
+ Object.assign(box.style, {
461
+ position: "fixed",
462
+ left: `${event.clientX}px`,
463
+ top: `${event.clientY}px`,
464
+ width: "0",
465
+ height: "0",
466
+ border: "1px dashed currentColor",
467
+ background: "rgb(45 93 168 / 0.08)",
468
+ pointerEvents: "none",
469
+ zIndex: "1",
470
+ });
471
+ this.#host.root.append(box);
472
+ this.#drag = { x: event.clientX, y: event.clientY, box, pointer: event.pointerId };
473
+ }
474
+ #dragTo(event) {
475
+ const drag = this.#drag;
476
+ if (drag === undefined || event.pointerId !== drag.pointer)
477
+ return;
478
+ const r = rectBetween(drag, event);
479
+ Object.assign(drag.box.style, {
480
+ left: `${r.left}px`,
481
+ top: `${r.top}px`,
482
+ width: `${r.width}px`,
483
+ height: `${r.height}px`,
271
484
  });
272
485
  }
486
+ #pointerUp(event) {
487
+ const wasDown = this.#pointerDown;
488
+ this.#pointerDown = false;
489
+ const drag = this.#drag;
490
+ if (drag !== undefined && event.pointerId === drag.pointer) {
491
+ this.#drag = undefined;
492
+ drag.box.remove();
493
+ this.#selectColumn(rectBetween(drag, event));
494
+ return;
495
+ }
496
+ if (!wasDown)
497
+ return;
498
+ // The drag ended: the selection is settled, and the app may show its toolbar now.
499
+ const range = this.#range();
500
+ if (range !== undefined)
501
+ this.#tell(this.#pieces(range), [...range.getClientRects()], false);
502
+ }
503
+ /** Selects the runs whose centre is inside `area` (client coordinates), in page and run order. */
504
+ #selectColumn(area) {
505
+ if (area.width < 2 || area.height < 2)
506
+ return;
507
+ const spans = [];
508
+ const pieces = [];
509
+ const rects = [];
510
+ for (const span of this.#spansInOrder()) {
511
+ const info = this.#specs.get(span);
512
+ if (info === undefined)
513
+ continue;
514
+ const r = span.getBoundingClientRect();
515
+ const [x, y] = [r.left + r.width / 2, r.top + r.height / 2];
516
+ if (x < area.left || x > area.left + area.width || y < area.top || y > area.top + area.height)
517
+ continue;
518
+ spans.push(span);
519
+ rects.push(r);
520
+ pieces.push({ page: info.page, text: span.textContent ?? "", span: info.spec });
521
+ }
522
+ if (pieces.length === 0)
523
+ return;
524
+ for (const span of spans)
525
+ span.classList.add("lamina-column-selected");
526
+ // The browser draws no selection for these: a tint marks them, under the ink as the
527
+ // selection's own would be.
528
+ for (const span of spans)
529
+ span.style.backgroundColor = "rgb(45 93 168 / 0.25)";
530
+ this.#column = { pieces, spans };
531
+ this.#selecting = true;
532
+ this.#host.keepMounted(new Set(pieces.map((p) => p.page)));
533
+ this.#tell(pieces, rects, true);
534
+ }
535
+ /** Ends the column selection; `tell` says so to the app (not when a browser selection replaces it). */
536
+ #clearColumn(tell) {
537
+ const column = this.#column;
538
+ if (column === undefined)
539
+ return;
540
+ this.#column = undefined;
541
+ for (const span of column.spans) {
542
+ span.classList.remove("lamina-column-selected");
543
+ span.style.backgroundColor = "";
544
+ }
545
+ if (!tell)
546
+ return;
547
+ this.#selecting = false;
548
+ this.#host.keepMounted([]);
549
+ this.#options.onSelection?.(undefined);
550
+ }
273
551
  }
274
- /** Sets `element`'s `user-select`, with WebKit's prefix (Safari before 26 reads only that). */
275
- function selectable(element, value) {
276
- element.style.setProperty("user-select", value);
277
- element.style.setProperty("-webkit-user-select", value);
552
+ /** The rectangle between a drag's start and the pointer now, in client coordinates. */
553
+ function rectBetween(start, now) {
554
+ return {
555
+ left: Math.min(start.x, now.clientX),
556
+ top: Math.min(start.y, now.clientY),
557
+ width: Math.abs(now.clientX - start.x),
558
+ height: Math.abs(now.clientY - start.y),
559
+ };
278
560
  }
279
561
  /** The index of the page `node` is on, from its shell. */
280
562
  function pageOf(node) {
@@ -1 +1 @@
1
- {"version":3,"file":"text-layer.js","sourceRoot":"","sources":["../../src/layers/text-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-layer.js","sourceRoot":"","sources":["../../src/layers/text-layer.ts"],"names":[],"mappings":"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"}
@@ -55,4 +55,11 @@ export declare class PageLayout {
55
55
  /** The content width in CSS px for a viewport `viewportWidth` wide. */
56
56
  contentWidth(viewportWidth: number): number;
57
57
  }
58
+ /**
59
+ * The scroll offset in `after` that keeps the reader where they were at `top` in `before`, when
60
+ * some pages changed size (an edit turned them): the page at `top` keeps its place under the
61
+ * viewport's top edge, the distance into it scaled by its new height if it is one that changed.
62
+ * Both layouts hold the same pages.
63
+ */
64
+ export declare function keptTop(before: PageLayout, after: PageLayout, top: number): number;
58
65
  //# sourceMappingURL=page-layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../src/layout/page-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErE,yCAAyC;AACzC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,mGAAmG;AACnG,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC;AAEpC,yFAAyF;AACzF,eAAO,MAAM,aAAa,QAAU,CAAC;AAErC,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAEpE;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAE3D;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,6DAA6D;AAC7D,qBAAa,UAAU;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,oGAAoG;IACpG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oGAAoG;IACpG,UAAU,SAAK;IAEf,YAAY,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,EAyB7D;IAED,uCAAuC;IACvC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,yDAAyD;IACzD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK9B;IAED;;;OAGG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAYxB;IAED,kFAAkF;IAClF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAMtF;IAED,oGAAoG;IACpG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEnD;IAED,uEAAuE;IACvE,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE1C;CACF"}
1
+ {"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../src/layout/page-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErE,yCAAyC;AACzC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,mGAAmG;AACnG,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC;AAEpC,yFAAyF;AACzF,eAAO,MAAM,aAAa,QAAU,CAAC;AAErC,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAEpE;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAE3D;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,6DAA6D;AAC7D,qBAAa,UAAU;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,oGAAoG;IACpG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oGAAoG;IACpG,UAAU,SAAK;IAEf,YAAY,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,EAyB7D;IAED,uCAAuC;IACvC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,yDAAyD;IACzD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK9B;IAED;;;OAGG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAYxB;IAED,kFAAkF;IAClF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAMtF;IAED,oGAAoG;IACpG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEnD;IAED,uEAAuE;IACvE,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE1C;CACF;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOlF"}
@@ -107,4 +107,19 @@ export class PageLayout {
107
107
  return Math.max(viewportWidth, this.maxWidth + 2 * this.gap);
108
108
  }
109
109
  }
110
+ /**
111
+ * The scroll offset in `after` that keeps the reader where they were at `top` in `before`, when
112
+ * some pages changed size (an edit turned them): the page at `top` keeps its place under the
113
+ * viewport's top edge, the distance into it scaled by its new height if it is one that changed.
114
+ * Both layouts hold the same pages.
115
+ */
116
+ export function keptTop(before, after, top) {
117
+ if (before.pageCount === 0 || after.pageCount !== before.pageCount)
118
+ return top;
119
+ const page = before.pageAt(top);
120
+ const into = top - before.offsetOf(page);
121
+ const was = before.heights[page];
122
+ const now = after.heights[page];
123
+ return Math.max(0, after.offsetOf(page) + (was > 0 ? (into * now) / was : into));
124
+ }
110
125
  //# sourceMappingURL=page-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-layout.js","sourceRoot":"","sources":["../../src/layout/page-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-layout.js","sourceRoot":"","sources":["../../src/layout/page-layout.ts"],"names":[],"mappings":"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"}