@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.
Files changed (134) hide show
  1. package/dist/adapter.d.ts +27 -2
  2. package/dist/adapter.d.ts.map +1 -1
  3. package/dist/adapter.js +5 -0
  4. package/dist/adapter.js.map +1 -1
  5. package/dist/anchoring/canvas.d.ts +33 -0
  6. package/dist/anchoring/canvas.d.ts.map +1 -0
  7. package/dist/anchoring/canvas.js +112 -0
  8. package/dist/anchoring/canvas.js.map +1 -0
  9. package/dist/anchoring/context-provider.d.ts +63 -0
  10. package/dist/anchoring/context-provider.d.ts.map +1 -0
  11. package/dist/anchoring/context-provider.js +78 -0
  12. package/dist/anchoring/context-provider.js.map +1 -0
  13. package/dist/anchoring/describe.d.ts +36 -2
  14. package/dist/anchoring/describe.d.ts.map +1 -1
  15. package/dist/anchoring/describe.js +102 -20
  16. package/dist/anchoring/describe.js.map +1 -1
  17. package/dist/anchoring/fingerprint.d.ts +47 -13
  18. package/dist/anchoring/fingerprint.d.ts.map +1 -1
  19. package/dist/anchoring/fingerprint.js +58 -68
  20. package/dist/anchoring/fingerprint.js.map +1 -1
  21. package/dist/anchoring/index.d.ts +5 -0
  22. package/dist/anchoring/index.d.ts.map +1 -1
  23. package/dist/anchoring/index.js +5 -0
  24. package/dist/anchoring/index.js.map +1 -1
  25. package/dist/anchoring/media.d.ts +2 -1
  26. package/dist/anchoring/media.d.ts.map +1 -1
  27. package/dist/anchoring/media.js +7 -2
  28. package/dist/anchoring/media.js.map +1 -1
  29. package/dist/anchoring/pdf.d.ts +204 -0
  30. package/dist/anchoring/pdf.d.ts.map +1 -0
  31. package/dist/anchoring/pdf.js +608 -0
  32. package/dist/anchoring/pdf.js.map +1 -0
  33. package/dist/anchoring/profiles.d.ts +140 -0
  34. package/dist/anchoring/profiles.d.ts.map +1 -0
  35. package/dist/anchoring/profiles.js +682 -0
  36. package/dist/anchoring/profiles.js.map +1 -0
  37. package/dist/anchoring/providers.d.ts +16 -1
  38. package/dist/anchoring/providers.d.ts.map +1 -1
  39. package/dist/anchoring/providers.js +15 -0
  40. package/dist/anchoring/providers.js.map +1 -1
  41. package/dist/anchoring/resolver.d.ts +23 -5
  42. package/dist/anchoring/resolver.d.ts.map +1 -1
  43. package/dist/anchoring/resolver.js +32 -13
  44. package/dist/anchoring/resolver.js.map +1 -1
  45. package/dist/anchoring/site-profiles.d.ts +31 -0
  46. package/dist/anchoring/site-profiles.d.ts.map +1 -0
  47. package/dist/anchoring/site-profiles.js +27 -0
  48. package/dist/anchoring/site-profiles.js.map +1 -0
  49. package/dist/body-prepare.d.ts +33 -0
  50. package/dist/body-prepare.d.ts.map +1 -0
  51. package/dist/body-prepare.js +88 -0
  52. package/dist/body-prepare.js.map +1 -0
  53. package/dist/body-size.d.ts +20 -0
  54. package/dist/body-size.d.ts.map +1 -0
  55. package/dist/body-size.js +137 -0
  56. package/dist/body-size.js.map +1 -0
  57. package/dist/body.d.ts +9 -42
  58. package/dist/body.d.ts.map +1 -1
  59. package/dist/body.js +6 -207
  60. package/dist/body.js.map +1 -1
  61. package/dist/composite.d.ts +17 -1
  62. package/dist/composite.d.ts.map +1 -1
  63. package/dist/composite.js +27 -2
  64. package/dist/composite.js.map +1 -1
  65. package/dist/document-key.d.ts +36 -0
  66. package/dist/document-key.d.ts.map +1 -0
  67. package/dist/document-key.js +40 -0
  68. package/dist/document-key.js.map +1 -0
  69. package/dist/document-url.d.ts +9 -0
  70. package/dist/document-url.d.ts.map +1 -1
  71. package/dist/document-url.js +9 -0
  72. package/dist/document-url.js.map +1 -1
  73. package/dist/ids.d.ts +4 -4
  74. package/dist/ids.d.ts.map +1 -1
  75. package/dist/ids.js +4 -4
  76. package/dist/ids.js.map +1 -1
  77. package/dist/index.d.ts +6 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +6 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/kinds.d.ts +7 -2
  82. package/dist/kinds.d.ts.map +1 -1
  83. package/dist/kinds.js +12 -3
  84. package/dist/kinds.js.map +1 -1
  85. package/dist/model.d.ts +36 -5
  86. package/dist/model.d.ts.map +1 -1
  87. package/dist/model.js +7 -1
  88. package/dist/model.js.map +1 -1
  89. package/dist/page-placement.d.ts +2 -2
  90. package/dist/page-placement.js +3 -2
  91. package/dist/page-placement.js.map +1 -1
  92. package/dist/pdf-key.d.ts +10 -0
  93. package/dist/pdf-key.d.ts.map +1 -0
  94. package/dist/pdf-key.js +22 -0
  95. package/dist/pdf-key.js.map +1 -0
  96. package/dist/placement.d.ts +20 -4
  97. package/dist/placement.d.ts.map +1 -1
  98. package/dist/placement.js +41 -5
  99. package/dist/placement.js.map +1 -1
  100. package/dist/region-image.d.ts +45 -0
  101. package/dist/region-image.d.ts.map +1 -0
  102. package/dist/region-image.js +76 -0
  103. package/dist/region-image.js.map +1 -0
  104. package/dist/scope.d.ts +17 -2
  105. package/dist/scope.d.ts.map +1 -1
  106. package/dist/scope.js +28 -4
  107. package/dist/scope.js.map +1 -1
  108. package/dist/store/store.d.ts +1 -1
  109. package/dist/store/store.d.ts.map +1 -1
  110. package/dist/store/store.js +11 -8
  111. package/dist/store/store.js.map +1 -1
  112. package/dist/testing/anchor-provider-contract.d.ts +3 -2
  113. package/dist/testing/anchor-provider-contract.d.ts.map +1 -1
  114. package/dist/testing/anchor-provider-contract.js +75 -22
  115. package/dist/testing/anchor-provider-contract.js.map +1 -1
  116. package/dist/testing/contract.d.ts +6 -0
  117. package/dist/testing/contract.d.ts.map +1 -1
  118. package/dist/testing/contract.js +22 -0
  119. package/dist/testing/contract.js.map +1 -1
  120. package/dist/testing/thread-contract.d.ts.map +1 -1
  121. package/dist/testing/thread-contract.js +2 -1
  122. package/dist/testing/thread-contract.js.map +1 -1
  123. package/dist/thread-write.d.ts +35 -0
  124. package/dist/thread-write.d.ts.map +1 -0
  125. package/dist/thread-write.js +69 -0
  126. package/dist/thread-write.js.map +1 -0
  127. package/dist/thread.d.ts +0 -21
  128. package/dist/thread.d.ts.map +1 -1
  129. package/dist/thread.js +2 -53
  130. package/dist/thread.js.map +1 -1
  131. package/dist/w3c.d.ts.map +1 -1
  132. package/dist/w3c.js +35 -6
  133. package/dist/w3c.js.map +1 -1
  134. 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, fingerprintTellsApart, pageFingerprint, } from "./fingerprint.js";
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
- function withProvider(d, target, root, options) {
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
- function describeGeneric(target, root, options) {
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 empty once clamped, or the element cannot be
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
- if (!REGION_TAGS.has(element.localName))
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 region = element.localName === "video" ? regionValue(fragment.region) : null;
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, clamped to the element and rounded to two decimals, or
463
- * null when it is empty or not made of numbers.
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 x = round(Math.min(100, Math.max(0, r.x)));
471
- const y = round(Math.min(100, Math.max(0, r.y)));
472
- const w = round(Math.min(100 - x, r.width + Math.min(0, r.x)));
473
- const h = round(Math.min(100 - y, r.height + Math.min(0, r.y)));
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=percent:${x},${y},${w},${h}`;
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
- function containerOf(el, scope) {
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
- function isIgnored(el) {
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
- /** A rectangle of an element, in percent of its width and height from its top left corner. */
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. Only `xywh=percent:` is read: pixel
21
- * regions need the image's natural size, which v1 does not store. The region must fit the element.
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 parseRegion(value: unknown): Region | null;
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
- * Whether an element's fingerprint can tell it apart from others of its tag after the page changes:
38
- * it has canonical text or names a resource, and no other element of its tag in `scope` (hidden
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;gCACgC;AAChC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjE,8FAA8F;AAC9F,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kEAAkE;AAClE,eAAO,MAAM,eAAe,sCAAsC,CAAC;AAOnE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAOzD;AAED;;;iGAGiG;AACjG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAKpE;AAQD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAO5E;AAkED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAmBhG;AA8BD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAGrE;AASD;;;;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"}
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. Only `xywh=percent:` is read: pixel
12
- * regions need the image's natural size, which v1 does not store. The region must fit the element.
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