@acornly/core 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter.d.ts +27 -2
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +5 -0
- package/dist/adapter.js.map +1 -1
- package/dist/anchoring/canvas.d.ts +33 -0
- package/dist/anchoring/canvas.d.ts.map +1 -0
- package/dist/anchoring/canvas.js +112 -0
- package/dist/anchoring/canvas.js.map +1 -0
- package/dist/anchoring/context-provider.d.ts +63 -0
- package/dist/anchoring/context-provider.d.ts.map +1 -0
- package/dist/anchoring/context-provider.js +78 -0
- package/dist/anchoring/context-provider.js.map +1 -0
- package/dist/anchoring/describe.d.ts +36 -2
- package/dist/anchoring/describe.d.ts.map +1 -1
- package/dist/anchoring/describe.js +102 -20
- package/dist/anchoring/describe.js.map +1 -1
- package/dist/anchoring/fingerprint.d.ts +47 -13
- package/dist/anchoring/fingerprint.d.ts.map +1 -1
- package/dist/anchoring/fingerprint.js +58 -68
- package/dist/anchoring/fingerprint.js.map +1 -1
- package/dist/anchoring/index.d.ts +5 -0
- package/dist/anchoring/index.d.ts.map +1 -1
- package/dist/anchoring/index.js +5 -0
- package/dist/anchoring/index.js.map +1 -1
- package/dist/anchoring/media.d.ts +2 -1
- package/dist/anchoring/media.d.ts.map +1 -1
- package/dist/anchoring/media.js +7 -2
- package/dist/anchoring/media.js.map +1 -1
- package/dist/anchoring/pdf.d.ts +204 -0
- package/dist/anchoring/pdf.d.ts.map +1 -0
- package/dist/anchoring/pdf.js +608 -0
- package/dist/anchoring/pdf.js.map +1 -0
- package/dist/anchoring/profiles.d.ts +140 -0
- package/dist/anchoring/profiles.d.ts.map +1 -0
- package/dist/anchoring/profiles.js +682 -0
- package/dist/anchoring/profiles.js.map +1 -0
- package/dist/anchoring/providers.d.ts +16 -1
- package/dist/anchoring/providers.d.ts.map +1 -1
- package/dist/anchoring/providers.js +15 -0
- package/dist/anchoring/providers.js.map +1 -1
- package/dist/anchoring/resolver.d.ts +23 -5
- package/dist/anchoring/resolver.d.ts.map +1 -1
- package/dist/anchoring/resolver.js +32 -13
- package/dist/anchoring/resolver.js.map +1 -1
- package/dist/anchoring/site-profiles.d.ts +31 -0
- package/dist/anchoring/site-profiles.d.ts.map +1 -0
- package/dist/anchoring/site-profiles.js +27 -0
- package/dist/anchoring/site-profiles.js.map +1 -0
- package/dist/body-prepare.d.ts +33 -0
- package/dist/body-prepare.d.ts.map +1 -0
- package/dist/body-prepare.js +88 -0
- package/dist/body-prepare.js.map +1 -0
- package/dist/body-size.d.ts +20 -0
- package/dist/body-size.d.ts.map +1 -0
- package/dist/body-size.js +137 -0
- package/dist/body-size.js.map +1 -0
- package/dist/body.d.ts +9 -42
- package/dist/body.d.ts.map +1 -1
- package/dist/body.js +6 -207
- package/dist/body.js.map +1 -1
- package/dist/composite.d.ts +17 -1
- package/dist/composite.d.ts.map +1 -1
- package/dist/composite.js +27 -2
- package/dist/composite.js.map +1 -1
- package/dist/document-key.d.ts +36 -0
- package/dist/document-key.d.ts.map +1 -0
- package/dist/document-key.js +40 -0
- package/dist/document-key.js.map +1 -0
- package/dist/document-url.d.ts +9 -0
- package/dist/document-url.d.ts.map +1 -1
- package/dist/document-url.js +9 -0
- package/dist/document-url.js.map +1 -1
- package/dist/ids.d.ts +4 -4
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +4 -4
- package/dist/ids.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/kinds.d.ts +7 -2
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +12 -3
- package/dist/kinds.js.map +1 -1
- package/dist/model.d.ts +36 -5
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +7 -1
- package/dist/model.js.map +1 -1
- package/dist/page-placement.d.ts +2 -2
- package/dist/page-placement.js +3 -2
- package/dist/page-placement.js.map +1 -1
- package/dist/pdf-key.d.ts +10 -0
- package/dist/pdf-key.d.ts.map +1 -0
- package/dist/pdf-key.js +22 -0
- package/dist/pdf-key.js.map +1 -0
- package/dist/placement.d.ts +20 -4
- package/dist/placement.d.ts.map +1 -1
- package/dist/placement.js +41 -5
- package/dist/placement.js.map +1 -1
- package/dist/region-image.d.ts +45 -0
- package/dist/region-image.d.ts.map +1 -0
- package/dist/region-image.js +76 -0
- package/dist/region-image.js.map +1 -0
- package/dist/scope.d.ts +17 -2
- package/dist/scope.d.ts.map +1 -1
- package/dist/scope.js +28 -4
- package/dist/scope.js.map +1 -1
- package/dist/store/store.d.ts +1 -1
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +11 -8
- package/dist/store/store.js.map +1 -1
- package/dist/testing/anchor-provider-contract.d.ts +3 -2
- package/dist/testing/anchor-provider-contract.d.ts.map +1 -1
- package/dist/testing/anchor-provider-contract.js +75 -22
- package/dist/testing/anchor-provider-contract.js.map +1 -1
- package/dist/testing/contract.d.ts +6 -0
- package/dist/testing/contract.d.ts.map +1 -1
- package/dist/testing/contract.js +22 -0
- package/dist/testing/contract.js.map +1 -1
- package/dist/testing/thread-contract.d.ts.map +1 -1
- package/dist/testing/thread-contract.js +2 -1
- package/dist/testing/thread-contract.js.map +1 -1
- package/dist/thread-write.d.ts +35 -0
- package/dist/thread-write.d.ts.map +1 -0
- package/dist/thread-write.js +69 -0
- package/dist/thread-write.js.map +1 -0
- package/dist/thread.d.ts +0 -21
- package/dist/thread.d.ts.map +1 -1
- package/dist/thread.js +2 -53
- package/dist/thread.js.map +1 -1
- package/dist/w3c.d.ts.map +1 -1
- package/dist/w3c.js +35 -6
- package/dist/w3c.js.map +1 -1
- package/package.json +6 -2
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
*/
|
|
33
33
|
import { NORM_VERSION, } from "../model.js";
|
|
34
34
|
import { isBlockElement, isShown, normalizeText, parentInTree, } from "./normalize.js";
|
|
35
|
-
import { MEDIA_FRAGMENTS, elementFingerprint,
|
|
35
|
+
import { MAX_CANDIDATES, MEDIA_FRAGMENTS, SOURCE_CHILDREN, STRONG_TEXT, elementFingerprint, elementText, identityOf, isTransientSource, pageFingerprint, } from "./fingerprint.js";
|
|
36
36
|
import { providersOf } from "./provider-stage.js";
|
|
37
37
|
import { MAX_MEDIA_SECONDS, TIMED_TAGS, findPlaying, mediaUrls, } from "./media.js";
|
|
38
38
|
export { MEDIA_FRAGMENTS, elementFingerprint, elementText, elementsWithFingerprint, pageFingerprint, parseRegion, textFingerprint, } from "./fingerprint.js";
|
|
@@ -62,8 +62,11 @@ export function describe(target, root, options) {
|
|
|
62
62
|
return d && withProvider(d, target, root, options);
|
|
63
63
|
}
|
|
64
64
|
/** `d` with the provider selector for `target` (see `providers.ts`) put first, when a provider
|
|
65
|
-
* describes it.
|
|
66
|
-
|
|
65
|
+
* describes it.
|
|
66
|
+
*
|
|
67
|
+
* @internal Shared with `canvas.ts`.
|
|
68
|
+
*/
|
|
69
|
+
export function withProvider(d, target, root, options) {
|
|
67
70
|
const providers = providersOf(options?.providers);
|
|
68
71
|
if (!providers)
|
|
69
72
|
return d;
|
|
@@ -81,8 +84,11 @@ function isMoment(d) {
|
|
|
81
84
|
return r?.type === "FragmentSelector" && /(^|&)t=/.test(String(r.value));
|
|
82
85
|
});
|
|
83
86
|
}
|
|
84
|
-
/** `describe` without the providers: the generic selectors alone.
|
|
85
|
-
|
|
87
|
+
/** `describe` without the providers: the generic selectors alone.
|
|
88
|
+
*
|
|
89
|
+
* @internal Shared with `canvas.ts`.
|
|
90
|
+
*/
|
|
91
|
+
export function describeGeneric(target, root, options) {
|
|
86
92
|
const text = options?.text ?? normalizeText;
|
|
87
93
|
const isElement = "nodeType" in target;
|
|
88
94
|
const doc = isElement ? target.ownerDocument : ownerDocument(target.startContainer);
|
|
@@ -159,7 +165,8 @@ const REGION_TAGS = new Set(["img", "svg"]);
|
|
|
159
165
|
* CssSelector refined by a FragmentSelector, `xywh=percent:x,y,w,h` (Media Fragments, rounded to
|
|
160
166
|
* two decimals and clamped to the image). Media Fragments 1.0 writes whole numbers only; decimals
|
|
161
167
|
* follow what other annotation tools write, since a whole percent of a large image is coarse. Null
|
|
162
|
-
* when the element is not an image, the region is
|
|
168
|
+
* when the element is not an image, the region is in pixels (`unit: "px"`, only for a document
|
|
169
|
+
* area), the region is empty once clamped, or the element cannot be
|
|
163
170
|
* described with a CssSelector. As with `describe`, check `canFollow` (or use `describeBest`).
|
|
164
171
|
*/
|
|
165
172
|
export function describeRegion(element, region, root, options) {
|
|
@@ -167,7 +174,8 @@ export function describeRegion(element, region, root, options) {
|
|
|
167
174
|
return d && withProvider(d, { element, region }, root, options);
|
|
168
175
|
}
|
|
169
176
|
function describeRegionGeneric(element, region, root, options) {
|
|
170
|
-
|
|
177
|
+
// Pixels are only for a document area (`describeCanvasRegion`), never a picture.
|
|
178
|
+
if (!REGION_TAGS.has(element.localName) || region?.unit === "px")
|
|
171
179
|
return null;
|
|
172
180
|
const value = regionValue(region);
|
|
173
181
|
if (!value)
|
|
@@ -207,7 +215,8 @@ export function describeMedia(element, fragment, root, options) {
|
|
|
207
215
|
return null;
|
|
208
216
|
let value = time;
|
|
209
217
|
if (fragment.region !== undefined) {
|
|
210
|
-
const
|
|
218
|
+
const pictured = element.localName === "video" && fragment.region?.unit !== "px";
|
|
219
|
+
const region = pictured ? regionValue(fragment.region) : null;
|
|
211
220
|
if (!region)
|
|
212
221
|
return null;
|
|
213
222
|
value += `&${region}`;
|
|
@@ -459,22 +468,28 @@ function elementInRange(range) {
|
|
|
459
468
|
return around.closest(MEDIA) ?? around;
|
|
460
469
|
}
|
|
461
470
|
/**
|
|
462
|
-
* The Media Fragments value of a region,
|
|
463
|
-
*
|
|
471
|
+
* The Media Fragments value of a region, rounded to two decimals, or null when it is empty or not
|
|
472
|
+
* made of numbers. A percent region is clamped to the element (`xywh=percent:`); a pixel one
|
|
473
|
+
* (`xywh=pixel:`, see `Region`) only to its top left, since its size is not known here.
|
|
474
|
+
*
|
|
475
|
+
* @internal Shared with `canvas.ts`.
|
|
464
476
|
*/
|
|
465
|
-
function regionValue(r) {
|
|
477
|
+
export function regionValue(r) {
|
|
466
478
|
const nums = [r?.x, r?.y, r?.width, r?.height];
|
|
467
479
|
if (!nums.every((n) => typeof n === "number" && Number.isFinite(n)))
|
|
468
480
|
return null;
|
|
469
481
|
const round = (n) => Math.round(n * 100) / 100;
|
|
470
|
-
const
|
|
471
|
-
const
|
|
472
|
-
const
|
|
473
|
-
const
|
|
482
|
+
const max = r.unit === "px" ? MAX_PIXELS : 100;
|
|
483
|
+
const x = round(Math.min(max, Math.max(0, r.x)));
|
|
484
|
+
const y = round(Math.min(max, Math.max(0, r.y)));
|
|
485
|
+
const w = round(Math.min(max - x, r.width + Math.min(0, r.x)));
|
|
486
|
+
const h = round(Math.min(max - y, r.height + Math.min(0, r.y)));
|
|
474
487
|
if (!(w > 0 && h > 0))
|
|
475
488
|
return null;
|
|
476
|
-
return `xywh
|
|
489
|
+
return `xywh=${r.unit === "px" ? "pixel" : "percent"}:${x},${y},${w},${h}`;
|
|
477
490
|
}
|
|
491
|
+
/** Below the largest offset `parseRegion` reads in a pixel region (seven digits). */
|
|
492
|
+
const MAX_PIXELS = 9_999_999;
|
|
478
493
|
/** The range's canonical offsets with surrounding spaces dropped, or null when nothing is left. */
|
|
479
494
|
function trimmedOffsets(norm, range) {
|
|
480
495
|
let { start, end } = norm.offsetsFromRange(range);
|
|
@@ -553,8 +568,11 @@ function elementAround(node) {
|
|
|
553
568
|
return node;
|
|
554
569
|
}
|
|
555
570
|
/** An element in the scope's tree for `el`: itself or its shadow host inside the scope, else the
|
|
556
|
-
* scope when `el` holds the scope (a span clamped to it).
|
|
557
|
-
|
|
571
|
+
* scope when `el` holds the scope (a span clamped to it).
|
|
572
|
+
*
|
|
573
|
+
* @internal Shared with `canvas.ts`.
|
|
574
|
+
*/
|
|
575
|
+
export function containerOf(el, scope) {
|
|
558
576
|
return lift(el, scope) ?? (containsInTree(el, scope) ? scope : null);
|
|
559
577
|
}
|
|
560
578
|
/** `el`, or the nearest element above it in the flat tree that is in the scope's tree (a shadow
|
|
@@ -595,8 +613,11 @@ function anchorKeyOf(el) {
|
|
|
595
613
|
return undefined;
|
|
596
614
|
}
|
|
597
615
|
/** Whether an element is Acornly's own UI or marked `data-ctx-ignore`, which normalization
|
|
598
|
-
* skips.
|
|
599
|
-
|
|
616
|
+
* skips.
|
|
617
|
+
*
|
|
618
|
+
* @internal Shared with `canvas.ts`.
|
|
619
|
+
*/
|
|
620
|
+
export function isIgnored(el) {
|
|
600
621
|
for (let e = el; e; e = elementAround(flatParent(e))) {
|
|
601
622
|
if (e.localName === "acornly-root" || e.hasAttribute("data-ctx-ignore"))
|
|
602
623
|
return true;
|
|
@@ -754,4 +775,65 @@ function escapeString(value) {
|
|
|
754
775
|
function ownerDocument(node) {
|
|
755
776
|
return node.ownerDocument ?? node;
|
|
756
777
|
}
|
|
778
|
+
/**
|
|
779
|
+
* Whether an element's fingerprint can tell it apart from others of its tag after the page changes:
|
|
780
|
+
* it has canonical text or names a resource, and no other element of its tag in `scope` (hidden
|
|
781
|
+
* ones included, compared by their raw text since hidden text is not in `page`) looks the same.
|
|
782
|
+
* An empty `<canvas>` or `<hr>` hashes like every other one, so if the noted one went away the
|
|
783
|
+
* note would move to an unrelated one.
|
|
784
|
+
*/
|
|
785
|
+
function fingerprintTellsApart(el, scope, page) {
|
|
786
|
+
const identity = identityOf(el);
|
|
787
|
+
// Short text alone ("0", "Yes", "Save") is too easily taken over by another element when the
|
|
788
|
+
// page changes, like a short quote with no context. Alt text and a viewBox count as text here.
|
|
789
|
+
if (!namesResource(el) && looseText(el, page).length < STRONG_TEXT)
|
|
790
|
+
return false;
|
|
791
|
+
const fingerprint = elementFingerprint(el, page);
|
|
792
|
+
const loose = `${identity}\u0000${rawText(el)}`;
|
|
793
|
+
const candidates = Array.from(scope.getElementsByTagName(el.localName));
|
|
794
|
+
if (candidates.length > MAX_CANDIDATES)
|
|
795
|
+
return false;
|
|
796
|
+
let budget = 4 * page.text.length + 1024 * candidates.length;
|
|
797
|
+
for (const other of candidates) {
|
|
798
|
+
if (other === el || other.localName !== el.localName)
|
|
799
|
+
continue;
|
|
800
|
+
const text = rawText(other);
|
|
801
|
+
budget -= text.length;
|
|
802
|
+
if (budget < 0)
|
|
803
|
+
return false;
|
|
804
|
+
if (`${identityOf(other)}\u0000${text}` === loose)
|
|
805
|
+
return false;
|
|
806
|
+
if (elementFingerprint(other, page) === fingerprint)
|
|
807
|
+
return false;
|
|
808
|
+
}
|
|
809
|
+
return true;
|
|
810
|
+
}
|
|
811
|
+
/**
|
|
812
|
+
* Whether an element names a resource of its own: a real source (not a `data:` placeholder), a
|
|
813
|
+
* srcset, poster or object data, a link other than `#` or `javascript:`, or `source`/`track`
|
|
814
|
+
* children with one. Alt text and a viewBox describe a picture but do not name it.
|
|
815
|
+
*/
|
|
816
|
+
function namesResource(el) {
|
|
817
|
+
const named = (e) => {
|
|
818
|
+
const src = (e.getAttribute("data-src") || e.getAttribute("src") || "").trim();
|
|
819
|
+
if (src && !isTransientSource(src, e))
|
|
820
|
+
return true;
|
|
821
|
+
if (["srcset", "poster", "data"].some((a) => e.getAttribute(a)?.trim()))
|
|
822
|
+
return true;
|
|
823
|
+
const href = e.getAttribute("href")?.trim() ?? "";
|
|
824
|
+
return href !== "" && href !== "#" && !/^javascript:/i.test(href);
|
|
825
|
+
};
|
|
826
|
+
if (named(el))
|
|
827
|
+
return true;
|
|
828
|
+
return Array.from(el.children).some((c) => SOURCE_CHILDREN.has(c.localName) && named(c));
|
|
829
|
+
}
|
|
830
|
+
/** Canonical text plus alt text and viewBox, for judging whether there is enough to go on. */
|
|
831
|
+
function looseText(el, page) {
|
|
832
|
+
const extra = ["alt", "viewBox"].map((a) => el.getAttribute(a)?.trim() ?? "").join(" ");
|
|
833
|
+
return `${elementText(el, page)} ${extra}`.trim();
|
|
834
|
+
}
|
|
835
|
+
/** An element's text content with whitespace runs collapsed, hidden parts included. */
|
|
836
|
+
function rawText(el) {
|
|
837
|
+
return (el.textContent ?? "").replace(/\s+/g, " ").trim();
|
|
838
|
+
}
|
|
757
839
|
//# sourceMappingURL=describe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/anchoring/describe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/anchoring/describe.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,27 +5,61 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { NormalizedText } from "./normalize.js";
|
|
7
7
|
/** How precise an anchor is: words on the page, a whole element, a rectangle of an element (an
|
|
8
|
-
* image), or the whole page. */
|
|
8
|
+
* image, or a canvas app's document area), or the whole page. */
|
|
9
9
|
export type AnchorLevel = "text" | "element" | "region" | "page";
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* A rectangle of an element, from the top left corner of its region box (see `regionBox`): in
|
|
12
|
+
* percent of the box's width and height, or, with `unit: "px"`, in CSS pixels. Pixels are only for
|
|
13
|
+
* a canvas app's document area (see `describeCanvasRegion`), whose scrolled content grows as the
|
|
14
|
+
* document does: a pixel offset stays on the same part of it, a percentage drifts (#440).
|
|
15
|
+
*/
|
|
11
16
|
export interface Region {
|
|
12
17
|
x: number;
|
|
13
18
|
y: number;
|
|
14
19
|
width: number;
|
|
15
20
|
height: number;
|
|
21
|
+
/** `px` for CSS pixels; absent for percent. */
|
|
22
|
+
unit?: "px";
|
|
23
|
+
}
|
|
24
|
+
/** A rectangle in the viewport's CSS pixels, as `getBoundingClientRect` gives one. */
|
|
25
|
+
export interface ViewportRect {
|
|
26
|
+
left: number;
|
|
27
|
+
top: number;
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
16
30
|
}
|
|
31
|
+
/** Elements whose region is a part of their picture: the box they are drawn in. A region of one is
|
|
32
|
+
* always in percent. */
|
|
33
|
+
export declare const PICTURE_TAGS: ReadonlySet<string>;
|
|
34
|
+
/**
|
|
35
|
+
* The box, in viewport pixels, that a region of `el` is measured in (see `Region`). For an image, a video or a
|
|
36
|
+
* canvas: the element's own box. For any other element (a canvas app's document area, see
|
|
37
|
+
* `describeCanvasRegion`): its scrolled content from its padding edge, `scrollWidth` by
|
|
38
|
+
* `scrollHeight`, so a region stays on the same part of the document as it scrolls. `@acornly/ui`'s
|
|
39
|
+
* painter draws regions with the same rule, and `regionPlace` places a region in the box.
|
|
40
|
+
*/
|
|
41
|
+
export declare function regionBox(el: Element): ViewportRect;
|
|
17
42
|
/** `conformsTo` of the FragmentSelector a region is stored as. */
|
|
18
43
|
export declare const MEDIA_FRAGMENTS = "http://www.w3.org/TR/media-frags/";
|
|
19
44
|
/**
|
|
20
|
-
* Reads a region from a Media Fragments value, or null.
|
|
21
|
-
*
|
|
45
|
+
* Reads a region from a Media Fragments value, or null. `xywh=percent:` is read, and must fit the
|
|
46
|
+
* element. With `pixels`, so is `xywh=pixel:` as a document area's region (`unit: "px"`, see
|
|
47
|
+
* `Region`); otherwise pixel regions are not read: on a picture they would need its natural size,
|
|
48
|
+
* which v1 does not store. The bare `xywh=` form is never read, since it is pixels of a picture.
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseRegion(value: unknown, pixels?: boolean): Region | null;
|
|
51
|
+
/**
|
|
52
|
+
* Where `region` of an element whose region box is `box` lies, in the same pixels as `box`: a
|
|
53
|
+
* percent region scales with the box, a pixel one is offset from its top left.
|
|
22
54
|
*/
|
|
23
|
-
export declare function
|
|
55
|
+
export declare function regionPlace(box: ViewportRect, region: Region): ViewportRect;
|
|
24
56
|
/** Whether `el`'s source URL `src` names nothing that lasts past this page load: a `data:`
|
|
25
57
|
* placeholder, or, on a video or audio element or its `source`, a `blob:` object URL (a
|
|
26
58
|
* MediaSource stream) or a `mediastream:` capture. A `blob:` image (a generated picture, an upload
|
|
27
59
|
* preview) keeps its URL in the fingerprint, so a region on it is not trusted on another one. */
|
|
28
60
|
export declare function isTransientSource(src: string, el?: Element): boolean;
|
|
61
|
+
/** Children whose sources say what a video, audio or picture element shows. */
|
|
62
|
+
export declare const SOURCE_CHILDREN: Set<string>;
|
|
29
63
|
/**
|
|
30
64
|
* The fingerprint of a whole element: a hash of its tag, the resource it shows or links to, and
|
|
31
65
|
* its canonical text as `page` (the canonical text of a root holding it) reads it. Volatile
|
|
@@ -33,16 +67,16 @@ export declare function isTransientSource(src: string, el?: Element): boolean;
|
|
|
33
67
|
* and a `data:` placeholder counts as no source.
|
|
34
68
|
*/
|
|
35
69
|
export declare function elementFingerprint(el: Element, page: NormalizedText): string;
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
|
|
39
|
-
* ones included, compared by their raw text since hidden text is not in `page`) looks the same.
|
|
40
|
-
* An empty `<canvas>` or `<hr>` hashes like every other one, so if the noted one went away the
|
|
41
|
-
* note would move to an unrelated one.
|
|
42
|
-
*/
|
|
43
|
-
export declare function fingerprintTellsApart(el: Element, scope: Element, page: NormalizedText): boolean;
|
|
70
|
+
/** The resources an element shows or links to, its own and those of its `source` and `track`
|
|
71
|
+
* children, joined; empty when it names none. */
|
|
72
|
+
export declare function identityOf(el: Element): string;
|
|
44
73
|
/** The element's canonical text as a slice of `page`, without edge spaces. */
|
|
45
74
|
export declare function elementText(el: Element, page: NormalizedText): string;
|
|
75
|
+
/** Canonical text an element with no named resource needs for its fingerprint to be searched for
|
|
76
|
+
* (as long as a quote that stands without context). */
|
|
77
|
+
export declare const STRONG_TEXT = 32;
|
|
78
|
+
/** Most elements of one tag a fingerprint search hashes; past this it gives up. */
|
|
79
|
+
export declare const MAX_CANDIDATES = 5000;
|
|
46
80
|
/**
|
|
47
81
|
* The elements with this tag inside `within` (itself included), in the same tree, whose
|
|
48
82
|
* fingerprint is `value`, in document order. Null when there are more than MAX_CANDIDATES of them
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/anchoring/fingerprint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD;
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/anchoring/fingerprint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD;iEACiE;AACjE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;wBACwB;AACxB,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,CAA8C,CAAC;AAE5F;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,YAAY,CAWnD;AAED,kEAAkE;AAClE,eAAO,MAAM,eAAe,sCAAsC,CAAC;AAWnE;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,MAAM,GAAG,IAAI,CAYzE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAe3E;AAED;;;iGAGiG;AACjG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAKpE;AAKD,+EAA+E;AAC/E,eAAO,MAAM,eAAe,aAA+B,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAO5E;AAwBD;iDACiD;AACjD,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAgB9C;AAwBD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAGrE;AAED;uDACuD;AACvD,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,mFAAmF;AACnF,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,EAAE,GAAG,IAAI,CAalB;AAWD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAapD;AAID,oGAAoG;AACpG,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAI5D"}
|
|
@@ -3,17 +3,48 @@
|
|
|
3
3
|
* checks. Kept apart from `describe.ts` (capture), so re-anchoring stored notes does not load the
|
|
4
4
|
* code that writes new selectors.
|
|
5
5
|
*/
|
|
6
|
+
/** Elements whose region is a part of their picture: the box they are drawn in. A region of one is
|
|
7
|
+
* always in percent. */
|
|
8
|
+
export const PICTURE_TAGS = new Set(["img", "svg", "video", "canvas"]);
|
|
9
|
+
/**
|
|
10
|
+
* The box, in viewport pixels, that a region of `el` is measured in (see `Region`). For an image, a video or a
|
|
11
|
+
* canvas: the element's own box. For any other element (a canvas app's document area, see
|
|
12
|
+
* `describeCanvasRegion`): its scrolled content from its padding edge, `scrollWidth` by
|
|
13
|
+
* `scrollHeight`, so a region stays on the same part of the document as it scrolls. `@acornly/ui`'s
|
|
14
|
+
* painter draws regions with the same rule, and `regionPlace` places a region in the box.
|
|
15
|
+
*/
|
|
16
|
+
export function regionBox(el) {
|
|
17
|
+
const r = el.getBoundingClientRect();
|
|
18
|
+
if (PICTURE_TAGS.has(el.localName)) {
|
|
19
|
+
return { left: r.left, top: r.top, width: r.width, height: r.height };
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
left: r.left + el.clientLeft - el.scrollLeft,
|
|
23
|
+
top: r.top + el.clientTop - el.scrollTop,
|
|
24
|
+
width: el.scrollWidth || r.width,
|
|
25
|
+
height: el.scrollHeight || r.height,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
6
28
|
/** `conformsTo` of the FragmentSelector a region is stored as. */
|
|
7
29
|
export const MEDIA_FRAGMENTS = "http://www.w3.org/TR/media-frags/";
|
|
8
30
|
const REGION_NUMBER = String.raw `(\d{1,3}(?:\.\d{1,9})?)`;
|
|
9
31
|
const REGION_VALUE = new RegExp(String.raw `^xywh=percent:${REGION_NUMBER},${REGION_NUMBER},${REGION_NUMBER},${REGION_NUMBER}$`);
|
|
32
|
+
const PIXEL_NUMBER = String.raw `(\d{1,7}(?:\.\d{1,9})?)`;
|
|
33
|
+
const PIXEL_VALUE = new RegExp(String.raw `^xywh=pixel:${PIXEL_NUMBER},${PIXEL_NUMBER},${PIXEL_NUMBER},${PIXEL_NUMBER}$`);
|
|
10
34
|
/**
|
|
11
|
-
* Reads a region from a Media Fragments value, or null.
|
|
12
|
-
*
|
|
35
|
+
* Reads a region from a Media Fragments value, or null. `xywh=percent:` is read, and must fit the
|
|
36
|
+
* element. With `pixels`, so is `xywh=pixel:` as a document area's region (`unit: "px"`, see
|
|
37
|
+
* `Region`); otherwise pixel regions are not read: on a picture they would need its natural size,
|
|
38
|
+
* which v1 does not store. The bare `xywh=` form is never read, since it is pixels of a picture.
|
|
13
39
|
*/
|
|
14
|
-
export function parseRegion(value) {
|
|
40
|
+
export function parseRegion(value, pixels = false) {
|
|
15
41
|
if (typeof value !== "string")
|
|
16
42
|
return null;
|
|
43
|
+
const px = pixels ? PIXEL_VALUE.exec(value) : null;
|
|
44
|
+
if (px) {
|
|
45
|
+
const [x, y, width, height] = px.slice(1).map(Number);
|
|
46
|
+
return width > 0 && height > 0 ? { x, y, width, height, unit: "px" } : null;
|
|
47
|
+
}
|
|
17
48
|
const m = REGION_VALUE.exec(value);
|
|
18
49
|
if (!m)
|
|
19
50
|
return null;
|
|
@@ -21,6 +52,26 @@ export function parseRegion(value) {
|
|
|
21
52
|
const fits = (at, size) => size > 0 && at + size <= 100 + 1e-9;
|
|
22
53
|
return fits(x, width) && fits(y, height) ? { x, y, width, height } : null;
|
|
23
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Where `region` of an element whose region box is `box` lies, in the same pixels as `box`: a
|
|
57
|
+
* percent region scales with the box, a pixel one is offset from its top left.
|
|
58
|
+
*/
|
|
59
|
+
export function regionPlace(box, region) {
|
|
60
|
+
if (region.unit === "px") {
|
|
61
|
+
return {
|
|
62
|
+
left: box.left + region.x,
|
|
63
|
+
top: box.top + region.y,
|
|
64
|
+
width: region.width,
|
|
65
|
+
height: region.height,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
left: box.left + (region.x / 100) * box.width,
|
|
70
|
+
top: box.top + (region.y / 100) * box.height,
|
|
71
|
+
width: (region.width / 100) * box.width,
|
|
72
|
+
height: (region.height / 100) * box.height,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
24
75
|
/** Whether `el`'s source URL `src` names nothing that lasts past this page load: a `data:`
|
|
25
76
|
* placeholder, or, on a video or audio element or its `source`, a `blob:` object URL (a
|
|
26
77
|
* MediaSource stream) or a `mediastream:` capture. A `blob:` image (a generated picture, an upload
|
|
@@ -34,7 +85,7 @@ export function isTransientSource(src, el) {
|
|
|
34
85
|
* apart a little). */
|
|
35
86
|
const IDENTITY_ATTRIBUTES = ["srcset", "href", "alt", "poster", "data", "viewBox"];
|
|
36
87
|
/** Children whose sources say what a video, audio or picture element shows. */
|
|
37
|
-
const SOURCE_CHILDREN = new Set(["source", "track"]);
|
|
88
|
+
export const SOURCE_CHILDREN = new Set(["source", "track"]);
|
|
38
89
|
/**
|
|
39
90
|
* The fingerprint of a whole element: a hash of its tag, the resource it shows or links to, and
|
|
40
91
|
* its canonical text as `page` (the canonical text of a root holding it) reads it. Volatile
|
|
@@ -72,7 +123,7 @@ function elementOffsets(el, page) {
|
|
|
72
123
|
}
|
|
73
124
|
/** The resources an element shows or links to, its own and those of its `source` and `track`
|
|
74
125
|
* children, joined; empty when it names none. */
|
|
75
|
-
function identityOf(el) {
|
|
126
|
+
export function identityOf(el) {
|
|
76
127
|
const values = attributesOf(el);
|
|
77
128
|
for (const child of Array.from(el.children)) {
|
|
78
129
|
if (SOURCE_CHILDREN.has(child.localName))
|
|
@@ -113,67 +164,6 @@ function attributesOf(el) {
|
|
|
113
164
|
values.push(el.getAttribute(name)?.trim() ?? "");
|
|
114
165
|
return values;
|
|
115
166
|
}
|
|
116
|
-
/**
|
|
117
|
-
* Whether an element's fingerprint can tell it apart from others of its tag after the page changes:
|
|
118
|
-
* it has canonical text or names a resource, and no other element of its tag in `scope` (hidden
|
|
119
|
-
* ones included, compared by their raw text since hidden text is not in `page`) looks the same.
|
|
120
|
-
* An empty `<canvas>` or `<hr>` hashes like every other one, so if the noted one went away the
|
|
121
|
-
* note would move to an unrelated one.
|
|
122
|
-
*/
|
|
123
|
-
export function fingerprintTellsApart(el, scope, page) {
|
|
124
|
-
const identity = identityOf(el);
|
|
125
|
-
// Short text alone ("0", "Yes", "Save") is too easily taken over by another element when the
|
|
126
|
-
// page changes, like a short quote with no context. Alt text and a viewBox count as text here.
|
|
127
|
-
if (!namesResource(el) && looseText(el, page).length < STRONG_TEXT)
|
|
128
|
-
return false;
|
|
129
|
-
const fingerprint = elementFingerprint(el, page);
|
|
130
|
-
const loose = `${identity}\u0000${rawText(el)}`;
|
|
131
|
-
const candidates = Array.from(scope.getElementsByTagName(el.localName));
|
|
132
|
-
if (candidates.length > MAX_CANDIDATES)
|
|
133
|
-
return false;
|
|
134
|
-
let budget = 4 * page.text.length + 1024 * candidates.length;
|
|
135
|
-
for (const other of candidates) {
|
|
136
|
-
if (other === el || other.localName !== el.localName)
|
|
137
|
-
continue;
|
|
138
|
-
const text = rawText(other);
|
|
139
|
-
budget -= text.length;
|
|
140
|
-
if (budget < 0)
|
|
141
|
-
return false;
|
|
142
|
-
if (`${identityOf(other)}\u0000${text}` === loose)
|
|
143
|
-
return false;
|
|
144
|
-
if (elementFingerprint(other, page) === fingerprint)
|
|
145
|
-
return false;
|
|
146
|
-
}
|
|
147
|
-
return true;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Whether an element names a resource of its own: a real source (not a `data:` placeholder), a
|
|
151
|
-
* srcset, poster or object data, a link other than `#` or `javascript:`, or `source`/`track`
|
|
152
|
-
* children with one. Alt text and a viewBox describe a picture but do not name it.
|
|
153
|
-
*/
|
|
154
|
-
function namesResource(el) {
|
|
155
|
-
const named = (e) => {
|
|
156
|
-
const src = (e.getAttribute("data-src") || e.getAttribute("src") || "").trim();
|
|
157
|
-
if (src && !isTransientSource(src, e))
|
|
158
|
-
return true;
|
|
159
|
-
if (["srcset", "poster", "data"].some((a) => e.getAttribute(a)?.trim()))
|
|
160
|
-
return true;
|
|
161
|
-
const href = e.getAttribute("href")?.trim() ?? "";
|
|
162
|
-
return href !== "" && href !== "#" && !/^javascript:/i.test(href);
|
|
163
|
-
};
|
|
164
|
-
if (named(el))
|
|
165
|
-
return true;
|
|
166
|
-
return Array.from(el.children).some((c) => SOURCE_CHILDREN.has(c.localName) && named(c));
|
|
167
|
-
}
|
|
168
|
-
/** Canonical text plus alt text and viewBox, for judging whether there is enough to go on. */
|
|
169
|
-
function looseText(el, page) {
|
|
170
|
-
const extra = ["alt", "viewBox"].map((a) => el.getAttribute(a)?.trim() ?? "").join(" ");
|
|
171
|
-
return `${elementText(el, page)} ${extra}`.trim();
|
|
172
|
-
}
|
|
173
|
-
/** An element's text content with whitespace runs collapsed, hidden parts included. */
|
|
174
|
-
function rawText(el) {
|
|
175
|
-
return (el.textContent ?? "").replace(/\s+/g, " ").trim();
|
|
176
|
-
}
|
|
177
167
|
/** The element's canonical text as a slice of `page`, without edge spaces. */
|
|
178
168
|
export function elementText(el, page) {
|
|
179
169
|
const { start, end } = elementOffsets(el, page);
|
|
@@ -181,9 +171,9 @@ export function elementText(el, page) {
|
|
|
181
171
|
}
|
|
182
172
|
/** Canonical text an element with no named resource needs for its fingerprint to be searched for
|
|
183
173
|
* (as long as a quote that stands without context). */
|
|
184
|
-
const STRONG_TEXT = 32;
|
|
174
|
+
export const STRONG_TEXT = 32;
|
|
185
175
|
/** Most elements of one tag a fingerprint search hashes; past this it gives up. */
|
|
186
|
-
const MAX_CANDIDATES = 5000;
|
|
176
|
+
export const MAX_CANDIDATES = 5000;
|
|
187
177
|
/**
|
|
188
178
|
* The elements with this tag inside `within` (itself included), in the same tree, whose
|
|
189
179
|
* fingerprint is `value`, in document order. Null when there are more than MAX_CANDIDATES of them
|