@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.
- package/README.md +36 -8
- package/dist/client.d.ts +28 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +105 -5
- package/dist/client.js.map +1 -1
- package/dist/first-draw.d.ts +10 -0
- package/dist/first-draw.d.ts.map +1 -0
- package/dist/first-draw.js +33 -0
- package/dist/first-draw.js.map +1 -0
- package/dist/history/history.d.ts +65 -0
- package/dist/history/history.d.ts.map +1 -0
- package/dist/history/history.js +135 -0
- package/dist/history/history.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/layers/copy.d.ts +26 -0
- package/dist/layers/copy.d.ts.map +1 -0
- package/dist/layers/copy.js +150 -0
- package/dist/layers/copy.js.map +1 -0
- package/dist/layers/link-layer.d.ts +68 -0
- package/dist/layers/link-layer.d.ts.map +1 -0
- package/dist/layers/link-layer.js +279 -0
- package/dist/layers/link-layer.js.map +1 -0
- package/dist/layers/link-url.d.ts +19 -0
- package/dist/layers/link-url.d.ts.map +1 -0
- package/dist/layers/link-url.js +47 -0
- package/dist/layers/link-url.js.map +1 -0
- package/dist/layers/spans.d.ts +0 -6
- package/dist/layers/spans.d.ts.map +1 -1
- package/dist/layers/spans.js +2 -20
- package/dist/layers/spans.js.map +1 -1
- package/dist/layers/structure-layer.d.ts.map +1 -1
- package/dist/layers/structure-layer.js +3 -0
- package/dist/layers/structure-layer.js.map +1 -1
- package/dist/layers/text-layer.d.ts +20 -3
- package/dist/layers/text-layer.d.ts.map +1 -1
- package/dist/layers/text-layer.js +307 -23
- package/dist/layers/text-layer.js.map +1 -1
- package/dist/protocol.d.ts +79 -5
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +16 -4
- package/dist/protocol.js.map +1 -1
- package/dist/source/opfs.d.ts +35 -0
- package/dist/source/opfs.d.ts.map +1 -0
- package/dist/source/opfs.js +178 -0
- package/dist/source/opfs.js.map +1 -0
- package/dist/thumbnails/strip.d.ts +1 -1
- package/dist/thumbnails/strip.d.ts.map +1 -1
- package/dist/thumbnails/strip.js +14 -3
- package/dist/thumbnails/strip.js.map +1 -1
- package/dist/view/user-select.d.ts +3 -0
- package/dist/view/user-select.d.ts.map +1 -0
- package/dist/view/user-select.js +10 -0
- package/dist/view/user-select.js.map +1 -0
- package/dist/view/viewer.d.ts +61 -1
- package/dist/view/viewer.d.ts.map +1 -1
- package/dist/view/viewer.js +248 -40
- package/dist/view/viewer.js.map +1 -1
- package/dist/worker/document.d.ts +23 -1
- package/dist/worker/document.d.ts.map +1 -1
- package/dist/worker/document.js +68 -22
- package/dist/worker/document.js.map +1 -1
- package/dist/worker/find.d.ts.map +1 -1
- package/dist/worker/find.js +5 -18
- package/dist/worker/find.js.map +1 -1
- package/dist/worker/methods.d.ts.map +1 -1
- package/dist/worker/methods.js +23 -4
- package/dist/worker/methods.js.map +1 -1
- package/dist/worker/navigation.d.ts +5 -1
- package/dist/worker/navigation.d.ts.map +1 -1
- package/dist/worker/navigation.js +22 -4
- package/dist/worker/navigation.js.map +1 -1
- package/dist/worker/print.d.ts +14 -0
- package/dist/worker/print.d.ts.map +1 -0
- package/dist/worker/print.js +49 -0
- package/dist/worker/print.js.map +1 -0
- package/dist/worker/recent-pages.d.ts +14 -0
- package/dist/worker/recent-pages.d.ts.map +1 -0
- package/dist/worker/recent-pages.js +53 -0
- package/dist/worker/recent-pages.js.map +1 -0
- package/dist/worker/render.d.ts.map +1 -1
- package/dist/worker/render.js +5 -2
- package/dist/worker/render.js.map +1 -1
- package/dist/worker/text.d.ts +9 -1
- package/dist/worker/text.d.ts.map +1 -1
- package/dist/worker/text.js +29 -22
- package/dist/worker/text.js.map +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
// The link layer (web-app §6 C6, R07): on every mounted page, an anchor over each of Lamina PDF's
|
|
2
|
+
// links, in the page's `lamina-layer-annot` slot, above the text and below the find highlights.
|
|
3
|
+
// Like the other layers, the anchors sit in page points inside one box that a CSS transform scales
|
|
4
|
+
// and turns to the page. Only the anchors take pointer events, so text around a link still selects.
|
|
5
|
+
// Anchors follow page order, so Tab moves through a page's links in order, then the next page's.
|
|
6
|
+
// While a drag that started outside every link is under way, no anchor takes pointer events, so a
|
|
7
|
+
// selection begun in the text runs on over the text under a link.
|
|
8
|
+
//
|
|
9
|
+
// What a link does is decided here, never by the browser: a primary click or Enter is always
|
|
10
|
+
// handled (`preventDefault`). A link inside the document goes there through the viewer (a history
|
|
11
|
+
// jump); its `href` is the app's address for that page, so a middle click or "Open in new tab"
|
|
12
|
+
// opens the same document there. A web or email link asks the app to confirm first, on a click,
|
|
13
|
+
// a middle click or Enter. It has no `href`, so no browser menu ("Open in new tab") can open it
|
|
14
|
+
// without asking; its title shows the address. Anything else (another file, an action a reader
|
|
15
|
+
// never runs, a refused scheme, a broken destination) has no `href` either, does nothing, and
|
|
16
|
+
// says why on hover.
|
|
17
|
+
import { placeBox } from "./box.js";
|
|
18
|
+
import { externalLink } from "./link-url.js";
|
|
19
|
+
/** English, for a viewer whose app gives none. */
|
|
20
|
+
const ENGLISH = {
|
|
21
|
+
page: (page) => `Link to page ${page + 1}`,
|
|
22
|
+
nextPage: "Goes to the next page",
|
|
23
|
+
previousPage: "Goes to the previous page",
|
|
24
|
+
firstPage: "Goes to the first page",
|
|
25
|
+
lastPage: "Goes to the last page",
|
|
26
|
+
otherFile: (file) => file === undefined
|
|
27
|
+
? "Links to another file, which can't be opened from here"
|
|
28
|
+
: `Links to another file, ${file}, which can't be opened from here`,
|
|
29
|
+
refused: (uri) => `This link's address can't be opened: ${uri}`,
|
|
30
|
+
unsupported: "This link asks to run an action. The reader never runs these.",
|
|
31
|
+
broken: "This link's destination isn't in the document",
|
|
32
|
+
};
|
|
33
|
+
/** The page a standard named action goes to from page `page` of `count`, and its words. */
|
|
34
|
+
function namedAction(name, page, count, words) {
|
|
35
|
+
switch (name) {
|
|
36
|
+
case "NextPage":
|
|
37
|
+
return { page: Math.min(count - 1, page + 1), label: words.nextPage };
|
|
38
|
+
case "PrevPage":
|
|
39
|
+
return { page: Math.max(0, page - 1), label: words.previousPage };
|
|
40
|
+
case "FirstPage":
|
|
41
|
+
return { page: 0, label: words.firstPage };
|
|
42
|
+
case "LastPage":
|
|
43
|
+
return { page: count - 1, label: words.lastPage };
|
|
44
|
+
default:
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** What a link that does nothing means: named and noted by `note`. */
|
|
49
|
+
function inert(link, note) {
|
|
50
|
+
return { follow: { kind: "none", link, note }, label: note, note };
|
|
51
|
+
}
|
|
52
|
+
/** The box around eight-number quads (or the rectangle, without any), in page points. */
|
|
53
|
+
function areas(link) {
|
|
54
|
+
const out = [];
|
|
55
|
+
const q = link.quads ?? [];
|
|
56
|
+
for (let at = 0; at + 8 <= q.length; at += 8) {
|
|
57
|
+
const xs = [q[at], q[at + 2], q[at + 4], q[at + 6]].map((v) => v ?? 0);
|
|
58
|
+
const ys = [q[at + 1], q[at + 3], q[at + 5], q[at + 7]].map((v) => v ?? 0);
|
|
59
|
+
const x = Math.min(...xs);
|
|
60
|
+
const y = Math.min(...ys);
|
|
61
|
+
out.push({ x, y, width: Math.max(...xs) - x, height: Math.max(...ys) - y });
|
|
62
|
+
}
|
|
63
|
+
if (out.length > 0)
|
|
64
|
+
return out;
|
|
65
|
+
const [x0, y0, x1, y1] = link.rect;
|
|
66
|
+
return [{ x: Math.min(x0, x1), y: Math.min(y0, y1), width: Math.abs(x1 - x0), height: Math.abs(y1 - y0) }];
|
|
67
|
+
}
|
|
68
|
+
/** The link layer of one viewer. */
|
|
69
|
+
export class LinkLayer {
|
|
70
|
+
name = "annot";
|
|
71
|
+
#host;
|
|
72
|
+
#options;
|
|
73
|
+
#words;
|
|
74
|
+
#pages = new Map();
|
|
75
|
+
#follows = new WeakMap();
|
|
76
|
+
#listening = new AbortController();
|
|
77
|
+
constructor(host, options = {}) {
|
|
78
|
+
this.#host = host;
|
|
79
|
+
this.#options = options;
|
|
80
|
+
this.#words = options.words ?? ENGLISH;
|
|
81
|
+
const { signal } = this.#listening;
|
|
82
|
+
host.root.addEventListener("pointerdown", (e) => {
|
|
83
|
+
if (e.button === 0 && !this.#followOf(e))
|
|
84
|
+
this.#passThrough(true);
|
|
85
|
+
}, { signal });
|
|
86
|
+
for (const end of ["pointerup", "pointercancel"]) {
|
|
87
|
+
document.addEventListener(end, () => this.#passThrough(false), { signal });
|
|
88
|
+
}
|
|
89
|
+
// A button released outside the window may send no pointerup: leaving the window ends the drag too.
|
|
90
|
+
window.addEventListener("blur", () => this.#passThrough(false), { signal });
|
|
91
|
+
}
|
|
92
|
+
/** Stops listening: the viewer is going. */
|
|
93
|
+
destroy() {
|
|
94
|
+
this.#listening.abort();
|
|
95
|
+
}
|
|
96
|
+
/** Lets the pointer through every anchor (a selection drag is under way), or stops letting it. */
|
|
97
|
+
#passThrough(through) {
|
|
98
|
+
for (const { box } of this.#pages.values()) {
|
|
99
|
+
for (const a of box.children)
|
|
100
|
+
a.style.pointerEvents = through ? "none" : "auto";
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
onMount(page, slot) {
|
|
104
|
+
const box = document.createElement("div");
|
|
105
|
+
box.className = "lamina-link-layer";
|
|
106
|
+
Object.assign(box.style, {
|
|
107
|
+
position: "absolute",
|
|
108
|
+
left: "0",
|
|
109
|
+
top: "0",
|
|
110
|
+
transformOrigin: "0 0",
|
|
111
|
+
pointerEvents: "none",
|
|
112
|
+
});
|
|
113
|
+
slot.append(box);
|
|
114
|
+
const view = { box, abort: new AbortController(), size: undefined };
|
|
115
|
+
this.#pages.set(page, view);
|
|
116
|
+
box.addEventListener("click", (e) => this.#click(e));
|
|
117
|
+
// A link without an `href` (a web link) gets no click from Enter: it follows it here.
|
|
118
|
+
box.addEventListener("keydown", (e) => {
|
|
119
|
+
const anchor = e.target instanceof HTMLElement ? e.target : undefined;
|
|
120
|
+
// One follow per press, as a native link's click: a held key's repeats ask nothing more.
|
|
121
|
+
if (e.key === "Enter" && !e.repeat && anchor !== undefined && !anchor.hasAttribute("href"))
|
|
122
|
+
this.#click(e);
|
|
123
|
+
});
|
|
124
|
+
// A middle click on a web link would open it without asking: it asks too.
|
|
125
|
+
box.addEventListener("auxclick", (e) => {
|
|
126
|
+
if (e.button === 1 && this.#followOf(e)?.kind === "external")
|
|
127
|
+
this.#click(e);
|
|
128
|
+
});
|
|
129
|
+
this.#host.client
|
|
130
|
+
.pageLinks(page, { signal: view.abort.signal })
|
|
131
|
+
.then((links) => {
|
|
132
|
+
if (this.#pages.get(page) === view)
|
|
133
|
+
this.#draw(page, view, links);
|
|
134
|
+
})
|
|
135
|
+
.catch(() => {
|
|
136
|
+
// Aborted (the page left), or links that can't be read: the page stays without them.
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
onUnmount(page) {
|
|
140
|
+
const view = this.#pages.get(page);
|
|
141
|
+
view?.abort.abort();
|
|
142
|
+
view?.box.remove();
|
|
143
|
+
this.#pages.delete(page);
|
|
144
|
+
}
|
|
145
|
+
onZoom(page, _slot, size) {
|
|
146
|
+
const view = this.#pages.get(page);
|
|
147
|
+
if (view === undefined)
|
|
148
|
+
return;
|
|
149
|
+
view.size = size;
|
|
150
|
+
this.#place(page, view);
|
|
151
|
+
}
|
|
152
|
+
/** Places every page again: the view turned. */
|
|
153
|
+
refresh() {
|
|
154
|
+
for (const [page, view] of this.#pages)
|
|
155
|
+
this.#place(page, view);
|
|
156
|
+
}
|
|
157
|
+
#place(page, view) {
|
|
158
|
+
const points = this.#host.points(page);
|
|
159
|
+
if (points !== undefined && view.size !== undefined)
|
|
160
|
+
placeBox(view.box, points, view.size, this.#host.rotation());
|
|
161
|
+
}
|
|
162
|
+
#draw(page, view, links) {
|
|
163
|
+
view.box.replaceChildren(...links.map((link) => this.#anchor(page, link)));
|
|
164
|
+
}
|
|
165
|
+
/** The anchor for `link` on page `page`: placed, named, and with what following it does. */
|
|
166
|
+
#anchor(page, link) {
|
|
167
|
+
const { follow, label, note } = this.#meaning(page, link);
|
|
168
|
+
const a = document.createElement("a");
|
|
169
|
+
a.className = "lamina-link";
|
|
170
|
+
a.draggable = false;
|
|
171
|
+
const href = this.#internalHref(follow);
|
|
172
|
+
if (href === undefined) {
|
|
173
|
+
// No address for the browser to follow: still a link in the tab order, and named.
|
|
174
|
+
a.setAttribute("role", "link");
|
|
175
|
+
a.tabIndex = 0;
|
|
176
|
+
if (follow.kind === "none")
|
|
177
|
+
a.setAttribute("aria-disabled", "true");
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
a.href = href;
|
|
181
|
+
a.referrerPolicy = "no-referrer";
|
|
182
|
+
}
|
|
183
|
+
a.setAttribute("aria-label", link.contents ?? label);
|
|
184
|
+
if (note !== undefined)
|
|
185
|
+
a.title = note;
|
|
186
|
+
const [first, ...rest] = areas(link);
|
|
187
|
+
const bounds = first ?? { x: 0, y: 0, width: 0, height: 0 };
|
|
188
|
+
Object.assign(a.style, {
|
|
189
|
+
position: "absolute",
|
|
190
|
+
left: `${bounds.x}px`,
|
|
191
|
+
top: `${bounds.y}px`,
|
|
192
|
+
width: `${bounds.width}px`,
|
|
193
|
+
height: `${bounds.height}px`,
|
|
194
|
+
pointerEvents: "auto",
|
|
195
|
+
cursor: follow.kind === "none" ? "default" : "pointer",
|
|
196
|
+
});
|
|
197
|
+
// A link over several areas (its quads): the first is the anchor, the others its children,
|
|
198
|
+
// placed from it, so only the areas follow the link and the focus ring is on the first.
|
|
199
|
+
for (const area of rest) {
|
|
200
|
+
const part = document.createElement("span");
|
|
201
|
+
Object.assign(part.style, {
|
|
202
|
+
position: "absolute",
|
|
203
|
+
left: `${area.x - bounds.x}px`,
|
|
204
|
+
top: `${area.y - bounds.y}px`,
|
|
205
|
+
width: `${area.width}px`,
|
|
206
|
+
height: `${area.height}px`,
|
|
207
|
+
});
|
|
208
|
+
a.append(part);
|
|
209
|
+
}
|
|
210
|
+
this.#follows.set(a, follow);
|
|
211
|
+
return a;
|
|
212
|
+
}
|
|
213
|
+
/** What `link` on page `page` does, its name, and the note it shows on hover. */
|
|
214
|
+
#meaning(page, link) {
|
|
215
|
+
const words = this.#words;
|
|
216
|
+
switch (link.kind) {
|
|
217
|
+
case "dest":
|
|
218
|
+
case "named":
|
|
219
|
+
return link.target === undefined
|
|
220
|
+
? inert(link, words.broken)
|
|
221
|
+
: { follow: { kind: "target", target: link.target }, label: words.page(link.target.page) };
|
|
222
|
+
case "uri": {
|
|
223
|
+
const external = externalLink(link.uri);
|
|
224
|
+
return external.kind === "open"
|
|
225
|
+
? { follow: { kind: "external", link: external }, label: external.href, note: external.href }
|
|
226
|
+
: inert(link, words.refused(link.uri));
|
|
227
|
+
}
|
|
228
|
+
case "remote": {
|
|
229
|
+
return inert(link, words.otherFile(link.file));
|
|
230
|
+
}
|
|
231
|
+
case "named-action": {
|
|
232
|
+
const to = namedAction(link.name, page, this.#host.pageCount(), words);
|
|
233
|
+
return to === undefined
|
|
234
|
+
? inert(link, words.unsupported)
|
|
235
|
+
: { follow: { kind: "page", page: to.page }, label: to.label, note: to.label };
|
|
236
|
+
}
|
|
237
|
+
default:
|
|
238
|
+
return inert(link, words.unsupported);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
#internalHref(follow) {
|
|
242
|
+
if (follow.kind === "target")
|
|
243
|
+
return this.#options.href?.(follow.target.page);
|
|
244
|
+
if (follow.kind === "page")
|
|
245
|
+
return this.#options.href?.(follow.page);
|
|
246
|
+
return undefined;
|
|
247
|
+
}
|
|
248
|
+
/** What following the anchor `e` happened on does. */
|
|
249
|
+
#followOf(e) {
|
|
250
|
+
const anchor = e.target instanceof Element ? e.target.closest("a.lamina-link") : null;
|
|
251
|
+
return anchor instanceof HTMLElement ? this.#follows.get(anchor) : undefined;
|
|
252
|
+
}
|
|
253
|
+
#click(e) {
|
|
254
|
+
const follow = this.#followOf(e);
|
|
255
|
+
if (follow === undefined)
|
|
256
|
+
return;
|
|
257
|
+
const external = follow.kind === "external";
|
|
258
|
+
// A modified click on a link inside the document opens its `href` where the browser puts it.
|
|
259
|
+
const modified = e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || (e instanceof MouseEvent && e.button !== 0);
|
|
260
|
+
if (!external && modified)
|
|
261
|
+
return;
|
|
262
|
+
e.preventDefault();
|
|
263
|
+
switch (follow.kind) {
|
|
264
|
+
case "target":
|
|
265
|
+
this.#host.goTo(follow.target);
|
|
266
|
+
return;
|
|
267
|
+
case "page":
|
|
268
|
+
this.#host.goToPage(follow.page);
|
|
269
|
+
return;
|
|
270
|
+
case "external":
|
|
271
|
+
this.#options.onExternal?.(follow.link);
|
|
272
|
+
return;
|
|
273
|
+
case "none":
|
|
274
|
+
this.#options.onInert?.(follow.link, follow.note);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=link-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-layer.js","sourceRoot":"","sources":["../../src/layers/link-layer.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,gGAAgG;AAChG,mGAAmG;AACnG,oGAAoG;AACpG,iGAAiG;AACjG,kGAAkG;AAClG,kEAAkE;AAClE,EAAE;AACF,6FAA6F;AAC7F,kGAAkG;AAClG,+FAA+F;AAC/F,gGAAgG;AAChG,gGAAgG;AAChG,+FAA+F;AAC/F,8FAA8F;AAC9F,qBAAqB;AAMrB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,YAAY,EAAqB,MAAM,eAAe,CAAC;AAoBhE,kDAAkD;AAClD,MAAM,OAAO,GAAc;IACzB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,IAAI,GAAG,CAAC,EAAE;IAC1C,QAAQ,EAAE,uBAAuB;IACjC,YAAY,EAAE,2BAA2B;IACzC,SAAS,EAAE,wBAAwB;IACnC,QAAQ,EAAE,uBAAuB;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAClB,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,wDAAwD;QAC1D,CAAC,CAAC,0BAA0B,IAAI,mCAAmC;IACvE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,wCAAwC,GAAG,EAAE;IAC/D,WAAW,EAAE,+DAA+D;IAC5E,MAAM,EAAE,+CAA+C;CACxD,CAAC;AAkDF,2FAA2F;AAC3F,SAAS,WAAW,CAClB,IAAY,EACZ,IAAY,EACZ,KAAa,EACb,KAAgB;IAEhB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxE,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;QACpE,KAAK,WAAW;YACd,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QAC7C,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,SAAS,KAAK,CAAC,IAAc,EAAE,IAAY;IACzC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrE,CAAC;AAED,yFAAyF;AACzF,SAAS,KAAK,CAAC,IAAc;IAC3B,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC3B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC/B,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7G,CAAC;AAED,oCAAoC;AACpC,MAAM,OAAO,SAAS;IACX,IAAI,GAAG,OAAO,CAAC;IACf,KAAK,CAAW;IAChB,QAAQ,CAAmB;IAC3B,MAAM,CAAY;IAClB,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IACtC,QAAQ,GAAG,IAAI,OAAO,EAAuB,CAAC;IAC9C,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAE5C,YAAY,IAAc,EAAE,OAAO,GAAqB,EAAE;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CACxB,aAAa,EACb,CAAC,CAAC,EAAE,EAAE;YACJ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC;YACjD,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,oGAAoG;QACpG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,4CAA4C;IAC5C,OAAO;QACL,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,kGAAkG;IAClG,YAAY,CAAC,OAAgB;QAC3B,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ;gBAAG,CAAiB,CAAC,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACnG,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,IAAiB;QACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;YACvB,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,GAAG;YACT,GAAG,EAAE,GAAG;YACR,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,IAAI,GAAc,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,sFAAsF;QACtF,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,yFAAyF;YACzF,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC,CAAC;QACH,0EAA0E;QAC1E,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,UAAU;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,MAAM;aACd,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC9C,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,qFAAqF;QACvF,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,KAAkB,EAAE,IAAc;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,gDAAgD;IAChD,OAAO;QACL,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,IAAe;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpH,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,IAAe,EAAE,KAA0B;QAC7D,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,4FAA4F;IAC5F,OAAO,CAAC,IAAY,EAAE,IAAc;QAClC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,SAAS,GAAG,aAAa,CAAC;QAC5B,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,kFAAkF;YAClF,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;YACf,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;gBAAE,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;YACd,CAAC,CAAC,cAAc,GAAG,aAAa,CAAC;QACnC,CAAC;QACD,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;QACrD,IAAI,IAAI,KAAK,SAAS;YAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACvC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;YACrB,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI;YACrB,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI;YACpB,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI;YAC5B,aAAa,EAAE,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACvD,CAAC,CAAC;QACH,2FAA2F;QAC3F,wFAAwF;QACxF,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;gBACxB,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI;gBAC9B,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI;gBAC7B,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI;gBACxB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI;aAC3B,CAAC,CAAC;YACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iFAAiF;IACjF,QAAQ,CAAC,IAAY,EAAE,IAAc;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;oBAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;oBAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/F,KAAK,KAAK,EAAE,CAAC;gBACX,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxC,OAAO,QAAQ,CAAC,IAAI,KAAK,MAAM;oBAC7B,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;oBAC7F,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,CAAC;YACD,KAAK,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,KAAK,cAAc,EAAE,CAAC;gBACpB,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;gBACvE,OAAO,EAAE,KAAK,SAAS;oBACrB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC;oBAChC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;YACnF,CAAC;YACD;gBACE,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,sDAAsD;IACtD,SAAS,CAAC,CAAQ;QAChB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,OAAO,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,CAA6B;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;QAC5C,6FAA6F;QAC7F,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,YAAY,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACjH,IAAI,CAAC,QAAQ,IAAI,QAAQ;YAAE,OAAO;QAClC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/B,OAAO;YACT,KAAK,MAAM;gBACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO;YACT,KAAK,UAAU;gBACb,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxC,OAAO;YACT,KAAK,MAAM;gBACT,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClD,OAAO;QACX,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** A link address as a reader treats it. */
|
|
2
|
+
export type ExternalLink = OpenableLink | {
|
|
3
|
+
readonly kind: "refused";
|
|
4
|
+
readonly uri: string;
|
|
5
|
+
};
|
|
6
|
+
/** A link address that may open after the reader confirms. */
|
|
7
|
+
export type OpenableLink = {
|
|
8
|
+
readonly kind: "open";
|
|
9
|
+
readonly href: string;
|
|
10
|
+
/** The address in three parts, the host (or a mailto address's domain) emphasised. */
|
|
11
|
+
readonly parts: {
|
|
12
|
+
readonly before: string;
|
|
13
|
+
readonly host: string;
|
|
14
|
+
readonly after: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
/** What a reader does with the link address `uri`. */
|
|
18
|
+
export declare function externalLink(uri: string): ExternalLink;
|
|
19
|
+
//# sourceMappingURL=link-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-url.d.ts","sourceRoot":"","sources":["../../src/layers/link-url.ts"],"names":[],"mappings":"AASA,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7F,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5F,CAAC;AAEF,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAkCtD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Which link addresses a reader may open (web-app §2: external links confirm before leaving; R07:
|
|
2
|
+
// only `http(s):` and `mailto:` open), and how one is shown so it can't pass for another. The
|
|
3
|
+
// address comes from the file and is never trusted: `javascript:`, `file:`, `data:` and every other
|
|
4
|
+
// scheme are refused, as is anything `URL` can't parse. A host is shown as `URL` gives it: an
|
|
5
|
+
// international name in punycode (`xn--…`), so a look-alike host reads as what it is.
|
|
6
|
+
/** The schemes a link may open. */
|
|
7
|
+
const OPENABLE = new Set(["http:", "https:", "mailto:"]);
|
|
8
|
+
/** What a reader does with the link address `uri`. */
|
|
9
|
+
export function externalLink(uri) {
|
|
10
|
+
let url;
|
|
11
|
+
try {
|
|
12
|
+
url = new URL(uri.trim());
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return { kind: "refused", uri };
|
|
16
|
+
}
|
|
17
|
+
if (!OPENABLE.has(url.protocol))
|
|
18
|
+
return { kind: "refused", uri };
|
|
19
|
+
const { href } = url;
|
|
20
|
+
if (url.protocol === "mailto:") {
|
|
21
|
+
// `mailto:` has no host: the domain after the last `@` is what a reader checks.
|
|
22
|
+
const at = href.lastIndexOf("@");
|
|
23
|
+
const end = href.search(/[?#]/);
|
|
24
|
+
const stop = end < 0 ? href.length : end;
|
|
25
|
+
if (at < 0 || at > stop)
|
|
26
|
+
return { kind: "open", href, parts: { before: href, host: "", after: "" } };
|
|
27
|
+
return {
|
|
28
|
+
kind: "open",
|
|
29
|
+
href,
|
|
30
|
+
parts: { before: href.slice(0, at + 1), host: href.slice(at + 1, stop), after: href.slice(stop) },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// The host follows `//` and any credentials (`user:password@`), which may hold the host's own
|
|
34
|
+
// text to pass for it: count past them rather than search.
|
|
35
|
+
const userinfo = url.username === "" && url.password === "" ? 0 : href.indexOf("@", url.protocol.length) + 1;
|
|
36
|
+
const start = userinfo > 0 ? userinfo : url.protocol.length + 2;
|
|
37
|
+
return {
|
|
38
|
+
kind: "open",
|
|
39
|
+
href,
|
|
40
|
+
parts: {
|
|
41
|
+
before: href.slice(0, start),
|
|
42
|
+
host: url.host,
|
|
43
|
+
after: href.slice(start + url.host.length),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=link-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-url.js","sourceRoot":"","sources":["../../src/layers/link-url.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,8FAA8F;AAC9F,oGAAoG;AACpG,8FAA8F;AAC9F,sFAAsF;AAEtF,mCAAmC;AACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAazD,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACjE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACrB,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/B,gFAAgF;QAChF,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QACzC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;QACrG,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;SAClG,CAAC;IACJ,CAAC;IACD,8FAA8F;IAC9F,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7G,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAChE,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;YAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3C;KACF,CAAC;AACJ,CAAC"}
|
package/dist/layers/spans.d.ts
CHANGED
|
@@ -31,12 +31,6 @@ export interface Piece {
|
|
|
31
31
|
readonly text: string;
|
|
32
32
|
readonly span: SpanSpec;
|
|
33
33
|
}
|
|
34
|
-
/**
|
|
35
|
-
* The copied text of `pieces`, in page and reading order: a new line between pages and where the
|
|
36
|
-
* next span starts a new line (its baseline moved by more than half a line), a space where it
|
|
37
|
-
* starts past a gap on the same line. Soft hyphens, which mark where a line may break, go.
|
|
38
|
-
*/
|
|
39
|
-
export declare function joinPieces(pieces: readonly Piece[]): string;
|
|
40
34
|
/** What goes between two pieces as copy writes them: a new line, a space or nothing. */
|
|
41
35
|
export declare function separator(a: Piece, b: Piece): string;
|
|
42
36
|
//# sourceMappingURL=spans.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/layers/spans.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAsCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,QAAQ,EAAE,CAKzF;
|
|
1
|
+
{"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/layers/spans.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAsCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,QAAQ,EAAE,CAKzF;AA2CD,8EAA8E;AAC9E,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAgBpD"}
|
package/dist/layers/spans.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// The text layer's geometry, pure: one span per text run, placed from its glyphs' quads (Lamina
|
|
2
2
|
// PDF's, never the renderer's: ADR 0004's two-parsers rule) in page space, points from the
|
|
3
3
|
// displayed page's top-left, y down. The span's own frame follows the run's baseline, so a rotated
|
|
4
|
-
// or vertical run gets a rotated span, and a right-to-left run reads right to left. Also
|
|
5
|
-
//
|
|
4
|
+
// or vertical run gets a rotated span, and a right-to-left run reads right to left. Also where one
|
|
5
|
+
// piece of a selection's text ends a line or a word (copy.ts joins them).
|
|
6
6
|
const dot = (a, b) => a.x * b.x + a.y * b.y;
|
|
7
7
|
/** A unit vector along `v`, or `fallback` for a zero vector. */
|
|
8
8
|
function unit(v, fallback) {
|
|
@@ -80,24 +80,6 @@ function extent(quads, start, end, along, up) {
|
|
|
80
80
|
}
|
|
81
81
|
return { minA, maxA, minB, maxB };
|
|
82
82
|
}
|
|
83
|
-
/** U+00AD, which marks where a word may break: written as a code, since it is invisible. */
|
|
84
|
-
const SOFT_HYPHEN = String.fromCharCode(0xad);
|
|
85
|
-
/**
|
|
86
|
-
* The copied text of `pieces`, in page and reading order: a new line between pages and where the
|
|
87
|
-
* next span starts a new line (its baseline moved by more than half a line), a space where it
|
|
88
|
-
* starts past a gap on the same line. Soft hyphens, which mark where a line may break, go.
|
|
89
|
-
*/
|
|
90
|
-
export function joinPieces(pieces) {
|
|
91
|
-
let out = "";
|
|
92
|
-
let before;
|
|
93
|
-
for (const piece of pieces) {
|
|
94
|
-
if (before !== undefined)
|
|
95
|
-
out += separator(before, piece);
|
|
96
|
-
out += piece.text;
|
|
97
|
-
before = piece;
|
|
98
|
-
}
|
|
99
|
-
return out.replaceAll(SOFT_HYPHEN, "");
|
|
100
|
-
}
|
|
101
83
|
/** What goes between two pieces as copy writes them: a new line, a space or nothing. */
|
|
102
84
|
export function separator(a, b) {
|
|
103
85
|
if (a.page !== b.page)
|
package/dist/layers/spans.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spans.js","sourceRoot":"","sources":["../../src/layers/spans.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,2FAA2F;AAC3F,mGAAmG;AACnG,
|
|
1
|
+
{"version":3,"file":"spans.js","sourceRoot":"","sources":["../../src/layers/spans.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure-layer.d.ts","sourceRoot":"","sources":["../../src/layers/structure-layer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"structure-layer.d.ts","sourceRoot":"","sources":["../../src/layers/structure-layer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAkCpD,mCAAmC;AACnC,qBAAa,cAAc;;IASzB,YAAY,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAIrE;IAED,+FAA+F;IAC/F,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAkBnC;IAED,2EAA2E;IAC3E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAMjD;IAUD,2EAA2E;IAC3E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAYzB;IAED,yCAAyC;IACzC,KAAK,IAAI,IAAI,CAIZ;CA2BF"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// page and MCID. Assistive technology then reads the document in structure order with its
|
|
5
5
|
// semantics, whichever backend renders it (the pdf.js pattern). The spans join their elements as
|
|
6
6
|
// their pages mount and leave as they unmount. A document without structure says so once.
|
|
7
|
+
import { setUserSelect } from "../view/user-select.js";
|
|
7
8
|
/** An ARIA role (and level) per standard structure type; types not here are plain groups. */
|
|
8
9
|
const ROLES = {
|
|
9
10
|
P: "paragraph",
|
|
@@ -52,6 +53,8 @@ export class StructureLayer {
|
|
|
52
53
|
const tree = document.createElement("div");
|
|
53
54
|
tree.className = "lamina-structure";
|
|
54
55
|
Object.assign(tree.style, HIDDEN);
|
|
56
|
+
// Hidden from sight, never from a drag: it takes no part in a selection.
|
|
57
|
+
setUserSelect(tree, "none");
|
|
55
58
|
const untagged = structure.tree === undefined || structure.tree.length === 0;
|
|
56
59
|
if (untagged)
|
|
57
60
|
tree.setAttribute("role", "status");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure-layer.js","sourceRoot":"","sources":["../../src/layers/structure-layer.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,iGAAiG;AACjG,gGAAgG;AAChG,0FAA0F;AAC1F,iGAAiG;AACjG,0FAA0F;
|
|
1
|
+
{"version":3,"file":"structure-layer.js","sourceRoot":"","sources":["../../src/layers/structure-layer.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,iGAAiG;AACjG,gGAAgG;AAChG,0FAA0F;AAC1F,iGAAiG;AACjG,0FAA0F;AAI1F,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,6FAA6F;AAC7F,MAAM,KAAK,GAAqC;IAC9C,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,SAAS;IACZ,KAAK,EAAE,SAAS;IAChB,CAAC,EAAE,MAAM;IACT,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,YAAY;IACxB,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,GAAG;IACb,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,QAAQ;CACZ,CAAC;AAEX,mCAAmC;AACnC,MAAM,OAAO,cAAc;IAChB,KAAK,CAAc;IACnB,SAAS,CAAS;IAC3B,KAAK,CAA0B;IAC/B,wEAAwE;IACxE,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElC,SAAS,CAAS;IAE3B,YAAY,IAAiB,EAAE,aAAqB,EAAE,QAAgB;QACpE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,+FAA+F;IAC/F,IAAI,CAAC,SAAwB;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClC,yEAAyE;QACzE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;QAC7E,IAAI,QAAQ;YAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;;YAC7C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI;gBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,8FAA8F;QAC9F,IAAI,QAAQ,EAAE,CAAC;YACb,qBAAqB,CAAC,GAAG,EAAE;gBACzB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;oBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,IAAI,CAAC,IAAY,EAAE,IAAY,EAAE,EAAU;QACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjF,kEAAkE;YAClE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED,yEAAyE;IAChE,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;QACnD,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrF,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC;gBAAE,SAAS;YAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;qBACjD,KAAK,CAAC,GAAG,CAAC;qBACV,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;;oBACrD,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,KAAK;QACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,yGAAyG;IACzG,QAAQ,CAAC,IAAmB,EAAE,MAA0B;QACtD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3E,IAAI,IAAI,KAAK,SAAS;YAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,OAAO,KAAK,IAAI;YAAE,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAW,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,GAAG,KAAK,SAAS;YAAE,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;YAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,MAAmB,EAAE,GAAiB,EAAE,IAAY;QACvD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,MAAM,CAAC,IAAY,EAAE,MAA0B,EAAE,GAAuB;IAC/E,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -2,11 +2,12 @@ import type { ViewerClient } from "../client.js";
|
|
|
2
2
|
import type { Rotation } from "../layout/page-layout.js";
|
|
3
3
|
import type { OpenedDocument } from "../protocol.js";
|
|
4
4
|
import type { PageLayer } from "../view/viewer.js";
|
|
5
|
+
import { type CopyMode } from "./copy.js";
|
|
5
6
|
/** What the text layer needs of its viewer. */
|
|
6
7
|
export interface TextLayerHost {
|
|
7
|
-
/** The viewer's root:
|
|
8
|
+
/** The viewer's root: where selections start, and where the structure tree lives. */
|
|
8
9
|
readonly root: HTMLElement;
|
|
9
|
-
readonly client: Pick<ViewerClient, "pageText" | "structure">;
|
|
10
|
+
readonly client: Pick<ViewerClient, "pageText" | "structure" | "readingOrder">;
|
|
10
11
|
/** The view's rotation now. */
|
|
11
12
|
rotation(): Rotation;
|
|
12
13
|
/** Keeps these pages mounted (the ones the selection touches). */
|
|
@@ -14,7 +15,7 @@ export interface TextLayerHost {
|
|
|
14
15
|
}
|
|
15
16
|
/** A selection in the text layer, for the app's selection surfaces (UI/UX plan §5.3). */
|
|
16
17
|
export interface TextSelection {
|
|
17
|
-
/** The selected text, as copy writes it. */
|
|
18
|
+
/** The selected text, as copy writes it (by paragraph). */
|
|
18
19
|
readonly text: string;
|
|
19
20
|
/** Its client rects, to place a toolbar or a menu near. */
|
|
20
21
|
readonly rects: readonly DOMRect[];
|
|
@@ -22,6 +23,13 @@ export interface TextSelection {
|
|
|
22
23
|
readonly pages: readonly number[];
|
|
23
24
|
/** The pointer that made it: `mouse`, `pen`, `touch`, or `""` for the keyboard. */
|
|
24
25
|
readonly pointerType: string;
|
|
26
|
+
/**
|
|
27
|
+
* The selection is done: the pointer that makes it is up (false during a drag, when a toolbar
|
|
28
|
+
* would get in the way). A keyboard selection is always settled.
|
|
29
|
+
*/
|
|
30
|
+
readonly settled: boolean;
|
|
31
|
+
/** A rectangle's runs (column selection), rather than the browser's selection. */
|
|
32
|
+
readonly column: boolean;
|
|
25
33
|
}
|
|
26
34
|
/** The text layer's options (`createViewer`'s `text`). */
|
|
27
35
|
export interface TextLayerOptions {
|
|
@@ -37,6 +45,15 @@ export declare class TextLayer implements PageLayer {
|
|
|
37
45
|
#private;
|
|
38
46
|
readonly name = "text";
|
|
39
47
|
constructor(host: TextLayerHost, options?: TextLayerOptions);
|
|
48
|
+
/** Whether a plain drag selects a rectangle (column mode). */
|
|
49
|
+
get columnMode(): boolean;
|
|
50
|
+
set columnMode(on: boolean);
|
|
51
|
+
/**
|
|
52
|
+
* Copies the selection in `mode` to the clipboard, as the copy event would (for a command or a
|
|
53
|
+
* toolbar button; it must run in a user gesture). Resolves false when nothing is selected or
|
|
54
|
+
* the clipboard refused.
|
|
55
|
+
*/
|
|
56
|
+
copy(mode?: CopyMode): Promise<boolean>;
|
|
40
57
|
/** A new document: its page sizes, and its structure tree, read once. */
|
|
41
58
|
open(document: OpenedDocument): void;
|
|
42
59
|
onMount(page: number, slot: HTMLElement): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-layer.d.ts","sourceRoot":"","sources":["../../src/layers/text-layer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"text-layer.d.ts","sourceRoot":"","sources":["../../src/layers/text-layer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,WAAW,CAAC;AAIzD,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC;IAC/E,+BAA+B;IAC/B,QAAQ,IAAI,QAAQ,CAAC;IACrB,kEAAkE;IAClE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC5C;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,sGAAsG;IACtG,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,KAAK,IAAI,CAAC;CACvE;AAYD,oCAAoC;AACpC,qBAAa,SAAU,YAAW,SAAS;;IACzC,QAAQ,CAAC,IAAI,UAAU;IA8BvB,YAAY,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,gBAAqB,EAiB9D;IAED,8DAA8D;IAC9D,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,EAEzB;IAED;;;;OAIG;IACG,IAAI,CAAC,IAAI,GAAE,QAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BzD;IAED,yEAAyE;IACzE,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAiBnC;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAyB7C;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAU5B;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAGxG;IAED,sDAAsD;IACtD,OAAO,IAAI,IAAI,CAEd;IAUD,uDAAuD;IACvD,OAAO,IAAI,IAAI,CAId;CAgVF"}
|