@commentray/render 0.0.9 → 0.1.1

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 (82) hide show
  1. package/README.md +1 -1
  2. package/dist/block-stretch-layout.d.ts.map +1 -1
  3. package/dist/block-stretch-layout.js +2 -1
  4. package/dist/block-stretch-layout.js.map +1 -1
  5. package/dist/browse-page-slug.d.ts +6 -1
  6. package/dist/browse-page-slug.d.ts.map +1 -1
  7. package/dist/browse-page-slug.js +6 -1
  8. package/dist/browse-page-slug.js.map +1 -1
  9. package/dist/browse-pair-html-test-fixtures.d.ts +10 -0
  10. package/dist/browse-pair-html-test-fixtures.d.ts.map +1 -0
  11. package/dist/browse-pair-html-test-fixtures.js +19 -0
  12. package/dist/browse-pair-html-test-fixtures.js.map +1 -0
  13. package/dist/build-commentray-nav-search.d.ts +4 -4
  14. package/dist/build-commentray-nav-search.js +1 -1
  15. package/dist/code-browser-block-rays.d.ts +29 -0
  16. package/dist/code-browser-block-rays.d.ts.map +1 -1
  17. package/dist/code-browser-block-rays.js +120 -0
  18. package/dist/code-browser-block-rays.js.map +1 -1
  19. package/dist/code-browser-client.bundle.js +24 -11
  20. package/dist/code-browser-client.js +766 -116
  21. package/dist/code-browser-client.js.map +1 -1
  22. package/dist/code-browser-intro.css +187 -0
  23. package/dist/code-browser-pair-nav.d.ts +3 -3
  24. package/dist/code-browser-pair-nav.d.ts.map +1 -1
  25. package/dist/code-browser-pair-nav.js +25 -13
  26. package/dist/code-browser-pair-nav.js.map +1 -1
  27. package/dist/code-browser-wide-intro-controller.d.ts +4 -0
  28. package/dist/code-browser-wide-intro-controller.d.ts.map +1 -0
  29. package/dist/code-browser-wide-intro-controller.js +148 -0
  30. package/dist/code-browser-wide-intro-controller.js.map +1 -0
  31. package/dist/code-browser-wide-intro-layout.d.ts +3 -0
  32. package/dist/code-browser-wide-intro-layout.d.ts.map +1 -0
  33. package/dist/code-browser-wide-intro-layout.js +84 -0
  34. package/dist/code-browser-wide-intro-layout.js.map +1 -0
  35. package/dist/code-browser-wide-intro-steps.d.ts +11 -0
  36. package/dist/code-browser-wide-intro-steps.d.ts.map +1 -0
  37. package/dist/code-browser-wide-intro-steps.js +108 -0
  38. package/dist/code-browser-wide-intro-steps.js.map +1 -0
  39. package/dist/code-browser-wide-intro-ui.d.ts +14 -0
  40. package/dist/code-browser-wide-intro-ui.d.ts.map +1 -0
  41. package/dist/code-browser-wide-intro-ui.js +67 -0
  42. package/dist/code-browser-wide-intro-ui.js.map +1 -0
  43. package/dist/code-browser.d.ts +18 -4
  44. package/dist/code-browser.d.ts.map +1 -1
  45. package/dist/code-browser.js +506 -154
  46. package/dist/code-browser.js.map +1 -1
  47. package/dist/commentray-anchor-viewport-probe.d.ts +9 -0
  48. package/dist/commentray-anchor-viewport-probe.d.ts.map +1 -0
  49. package/dist/commentray-anchor-viewport-probe.js +13 -0
  50. package/dist/commentray-anchor-viewport-probe.js.map +1 -0
  51. package/dist/commentray-preview-html.d.ts +13 -0
  52. package/dist/commentray-preview-html.d.ts.map +1 -0
  53. package/dist/commentray-preview-html.js +12 -0
  54. package/dist/commentray-preview-html.js.map +1 -0
  55. package/dist/companion-markdown-preview-entry.d.ts +7 -0
  56. package/dist/companion-markdown-preview-entry.d.ts.map +1 -0
  57. package/dist/companion-markdown-preview-entry.js +6 -0
  58. package/dist/companion-markdown-preview-entry.js.map +1 -0
  59. package/dist/index.d.ts +2 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +2 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/inject-md-line-anchors.d.ts +18 -0
  64. package/dist/inject-md-line-anchors.d.ts.map +1 -0
  65. package/dist/inject-md-line-anchors.js +250 -0
  66. package/dist/inject-md-line-anchors.js.map +1 -0
  67. package/dist/inline-favicon.js +15 -15
  68. package/dist/markdown-pipeline.d.ts +5 -0
  69. package/dist/markdown-pipeline.d.ts.map +1 -1
  70. package/dist/markdown-pipeline.js +47 -1
  71. package/dist/markdown-pipeline.js.map +1 -1
  72. package/dist/side-by-side-layout-css.d.ts +1 -1
  73. package/dist/side-by-side-layout-css.d.ts.map +1 -1
  74. package/dist/side-by-side-layout-css.js +48 -0
  75. package/dist/side-by-side-layout-css.js.map +1 -1
  76. package/package.json +8 -3
  77. package/dist/code-browser-client.d.ts +0 -2
  78. package/dist/side-by-side-layout.css +0 -58
  79. package/dist/side-by-side-layout.embedded.d.ts +0 -3
  80. package/dist/side-by-side-layout.embedded.d.ts.map +0 -1
  81. package/dist/side-by-side-layout.embedded.js +0 -3
  82. package/dist/side-by-side-layout.embedded.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @commentray/render
2
2
 
3
- Markdown → HTML rendering stack for [Commentray](https://github.com/d-led/commentray): remark + GFM, `rehype-sanitize`, `rehype-highlight` (lowlight), Mermaid containers, and ready-made HTML shells (side-by-side and a client-side interactive code browser with in-page token search).
3
+ Markdown → HTML rendering stack for [Commentray](https://github.com/d-led/commentray): `remark-parse` + `remark-gfm` (tables, task lists, strikethrough, autolink literals, footnotes), `rehype-slug` on headings, `rehype-sanitize`, `rehype-highlight` (lowlight), Mermaid containers, and ready-made HTML shells (side-by-side and a client-side interactive code browser with in-page token search).
4
4
 
5
5
  ## Install
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"block-stretch-layout.d.ts","sourceRoot":"","sources":["../src/block-stretch-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,KAAK,0BAA0B,EAAwB,MAAM,wBAAwB,CAAC;AAO/F,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C,CA6BA;AAgBD;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA8ElE"}
1
+ {"version":3,"file":"block-stretch-layout.d.ts","sourceRoot":"","sources":["../src/block-stretch-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,KAAK,0BAA0B,EAAwB,MAAM,wBAAwB,CAAC;AAO/F,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C,CA6BA;AAgBD;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA+ElE"}
@@ -61,7 +61,8 @@ export async function tryBuildBlockStretchTableHtml(opts) {
61
61
  const lines = opts.code.split("\n");
62
62
  const lineToBlock = new Map();
63
63
  for (const b of links) {
64
- for (let L = b.sourceStart; L <= b.sourceEnd; L++) {
64
+ const { lo, hiExclusive } = b.markerViewportHalfOpen1Based;
65
+ for (let L = lo; L < hiExclusive; L++) {
65
66
  lineToBlock.set(L, b);
66
67
  }
67
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"block-stretch-layout.js","sourceRoot":"","sources":["../src/block-stretch-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-stretch-layout.js","sourceRoot":"","sources":["../src/block-stretch-layout.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
- /** Same slug as `_site/browse/<slug>.html` in `github-pages-site.ts` (nav search + browse pages). */
1
+ /**
2
+ * Opaque filename stem for `_site/browse/<slug>.html` (nav search + browse pages).
3
+ * **Stable across rebuilds** while `commentrayPath` and `sourcePath` are unchanged;
4
+ * deterministic from those exact strings. **Rename or move** either file → new
5
+ * strings → **a new slug** (no automatic redirect from old URLs).
6
+ */
2
7
  export declare function browsePageSlugFromPair(pair: {
3
8
  sourcePath: string;
4
9
  commentrayPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"browse-page-slug.d.ts","sourceRoot":"","sources":["../src/browse-page-slug.ts"],"names":[],"mappings":"AAEA,qGAAqG;AACrG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAKT"}
1
+ {"version":3,"file":"browse-page-slug.d.ts","sourceRoot":"","sources":["../src/browse-page-slug.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAKT"}
@@ -1,5 +1,10 @@
1
1
  import { createHash } from "node:crypto";
2
- /** Same slug as `_site/browse/<slug>.html` in `github-pages-site.ts` (nav search + browse pages). */
2
+ /**
3
+ * Opaque filename stem for `_site/browse/<slug>.html` (nav search + browse pages).
4
+ * **Stable across rebuilds** while `commentrayPath` and `sourcePath` are unchanged;
5
+ * deterministic from those exact strings. **Rename or move** either file → new
6
+ * strings → **a new slug** (no automatic redirect from old URLs).
7
+ */
3
8
  export function browsePageSlugFromPair(pair) {
4
9
  return createHash("sha256")
5
10
  .update(`${pair.commentrayPath}\0${pair.sourcePath}`, "utf8")
@@ -1 +1 @@
1
- {"version":3,"file":"browse-page-slug.js","sourceRoot":"","sources":["../src/browse-page-slug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,qGAAqG;AACrG,MAAM,UAAU,sBAAsB,CAAC,IAGtC;IACC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,WAAW,CAAC;SACnB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"browse-page-slug.js","sourceRoot":"","sources":["../src/browse-page-slug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAGtC;IACC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,WAAW,CAAC;SACnB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Creates a minimal temp repo used by link-resolution tests: `.commentray`,
3
+ * `docs/user/install.md`, and parent dirs for `_site/browse/pair.html`.
4
+ */
5
+ export declare function mkTempRepoWithBrowsePairHtmlLayout(tmpPrefix: string): Promise<{
6
+ repoRoot: string;
7
+ storageRoot: string;
8
+ outHtml: string;
9
+ }>;
10
+ //# sourceMappingURL=browse-pair-html-test-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse-pair-html-test-fixtures.d.ts","sourceRoot":"","sources":["../src/browse-pair-html-test-fixtures.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,kCAAkC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAUD"}
@@ -0,0 +1,19 @@
1
+ import { mkdir, mkdtemp, writeFile } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import path from "node:path";
4
+ /**
5
+ * Creates a minimal temp repo used by link-resolution tests: `.commentray`,
6
+ * `docs/user/install.md`, and parent dirs for `_site/browse/pair.html`.
7
+ */
8
+ export async function mkTempRepoWithBrowsePairHtmlLayout(tmpPrefix) {
9
+ const tmp = await mkdtemp(path.join(tmpdir(), tmpPrefix));
10
+ const repoRoot = path.join(tmp, "repo");
11
+ const storageRoot = path.join(repoRoot, ".commentray");
12
+ await mkdir(path.join(repoRoot, "docs", "user"), { recursive: true });
13
+ await mkdir(storageRoot, { recursive: true });
14
+ await writeFile(path.join(repoRoot, "docs", "user", "install.md"), "# Install\n", "utf8");
15
+ const outHtml = path.join(repoRoot, "_site", "browse", "pair.html");
16
+ await mkdir(path.dirname(outHtml), { recursive: true });
17
+ return { repoRoot, storageRoot, outHtml };
18
+ }
19
+ //# sourceMappingURL=browse-pair-html-test-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse-pair-html-test-fixtures.js","sourceRoot":"","sources":["../src/browse-pair-html-test-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,SAAiB;IAKxE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvD,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpE,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC"}
@@ -27,9 +27,9 @@ export type DocumentedPairNav = {
27
27
  sourceOnGithub?: string;
28
28
  commentrayOnGithub?: string;
29
29
  /**
30
- * When the static Pages build emits per-pair browse HTML (e.g. `_site/browse/…html`), a URL
31
- * relative to the site root `index.html` (e.g. `./browse/x.html`) so the hub can open the same
32
- * Commentray UI for other files without leaving the site.
30
+ * When the static Pages build emits per-pair browse HTML under `_site/browse/`, a URL relative
31
+ * to the site root `index.html` (e.g. `./browse/src/x.ts/index.html` or `./browse/README.md@main.html`)
32
+ * so the hub can open the same Commentray UI without leaving the site.
33
33
  */
34
34
  staticBrowseUrl?: string;
35
35
  };
@@ -58,7 +58,7 @@ export type BuildCommentrayNavSearchGithubBlobBase = {
58
58
  *
59
59
  * `documentedPairs` lists every merged pair. When `githubBlobBase` is set, GitHub-style **blob**
60
60
  * URLs are included for optional outbound links; the static-site build always adds same-site
61
- * `staticBrowseUrl` when it emits `_site/browse/*.html`.
61
+ * `staticBrowseUrl` when it emits `_site/browse/` (human `…/index.html` / `@angle.html` shims plus canonical `*.html`).
62
62
  *
63
63
  * Pairs are merged from the metadata index, a walk of the configured storage `source` tree for
64
64
  * every `*.md` companion (flat or Angles layout), and an optional single-page `fallback`. For the
@@ -65,7 +65,7 @@ async function appendPairRowsSync(rows, sourcePath, commentrayPath, markdownAbs)
65
65
  *
66
66
  * `documentedPairs` lists every merged pair. When `githubBlobBase` is set, GitHub-style **blob**
67
67
  * URLs are included for optional outbound links; the static-site build always adds same-site
68
- * `staticBrowseUrl` when it emits `_site/browse/*.html`.
68
+ * `staticBrowseUrl` when it emits `_site/browse/` (human `…/index.html` / `@angle.html` shims plus canonical `*.html`).
69
69
  *
70
70
  * Pairs are merged from the metadata index, a walk of the configured storage `source` tree for
71
71
  * every `*.md` companion (flat or Angles layout), and an optional single-page `fallback`. For the
@@ -42,7 +42,36 @@ export declare function gutterRayBezierPaths(x0: number, y0: number, x1: number,
42
42
  };
43
43
  export declare function cubicBezierAcrossGutterD(x0: number, y0: number, x1: number, y1: number, opts?: Pick<GutterRayBezierOpts, "tension" | "clipStart" | "clipEnd">): string;
44
44
  export declare function sortBlockLinksBySource(links: BlockScrollLink[]): BlockScrollLink[];
45
+ /** One entry per block id (earliest source span) when scroll-link payloads contain duplicates. */
46
+ export declare function dedupeBlockScrollLinksById(links: BlockScrollLink[]): BlockScrollLink[];
47
+ export declare function sortBlockLinksByCommentrayLine(links: BlockScrollLink[]): BlockScrollLink[];
48
+ /**
49
+ * Next block in companion document order (`commentrayLine`). Gutter doc bands must follow
50
+ * rendered markdown order, which can differ from source line order (multi-file / inverted pairs).
51
+ */
52
+ export declare function nextBlockLinkInCommentrayOrder(all: ReadonlyArray<BlockScrollLink>, current: BlockScrollLink): BlockScrollLink | undefined;
45
53
  export declare function activeBlockIdForViewport(links: BlockScrollLink[], topSourceLine1Based: number): string | null;
54
+ /**
55
+ * Which index-backed block owns the companion line at/above `topCommentrayLine0Based`, in
56
+ * markdown order. Matches {@link pickSourceLine0ForCommentrayScroll}’s block choice so gutter
57
+ * “active” emphasis tracks the **doc** viewport (what the reader is reading), not only the code
58
+ * pane’s top line — which can disagree briefly (e.g. tall page-break gaps).
59
+ */
60
+ export declare function activeBlockIdForCommentrayLine0(links: BlockScrollLink[], topCommentrayLine0Based: number): string | null;
46
61
  /** 0-based index into `code-line-*` ids from 1-based inclusive source line numbers. */
47
62
  export declare function codeLineDomIndex0(sourceLine1Based: number): number;
63
+ /**
64
+ * Page-break hosts rendered between a block anchor and the next block anchor (or all breaks after
65
+ * `docTop` when `endExclusive` is null), in tree order.
66
+ */
67
+ export declare function pageBreakHostsBetweenAnchors(docScrollEl: HTMLElement, docTop: HTMLElement, endExclusive: HTMLElement | null): HTMLElement[];
68
+ /**
69
+ * Lowest viewport Y of rendered companion content for one block, **excluding** synthetic
70
+ * `.commentray-page-break` regions. Used so gutter splines do not extend through tall page-break
71
+ * gaps toward the next block.
72
+ *
73
+ * When `endExclusive` is the next block’s `commentray-block-*` anchor, ranges stop before that
74
+ * node. When it is `null` (last block), the final segment runs to the end of `docScrollEl`.
75
+ */
76
+ export declare function maxRenderableCommentaryContentBottomViewport(docScrollEl: HTMLElement, docTop: HTMLElement, endExclusive: HTMLElement | null): number;
48
77
  //# sourceMappingURL=code-browser-block-rays.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-browser-block-rays.d.ts","sourceRoot":"","sources":["../src/code-browser-block-rays.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AAEvC,sFAAsF;AACtF,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,SAAI,GACT,YAAY,CAMd;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAM,GACxE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAa1C;AAED,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,QAAQ,GACX,MAAM,CAER;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,QAAQ,EACZ,CAAC,EAAE,MAAM,GACR,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAWtF;AAMD,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,mBAAwB,GAC7B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAepC;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAM,GACxE,MAAM,CAGR;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAElF;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EAAE,EACxB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,GAAG,IAAI,CAMf;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAElE"}
1
+ {"version":3,"file":"code-browser-block-rays.d.ts","sourceRoot":"","sources":["../src/code-browser-block-rays.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,31 @@ function fmt(n) {
79
79
  export function sortBlockLinksBySource(links) {
80
80
  return [...links].sort((a, b) => a.sourceStart - b.sourceStart);
81
81
  }
82
+ /** One entry per block id (earliest source span) when scroll-link payloads contain duplicates. */
83
+ export function dedupeBlockScrollLinksById(links) {
84
+ const byId = new Map();
85
+ for (const l of sortBlockLinksBySource(links)) {
86
+ if (!byId.has(l.id))
87
+ byId.set(l.id, l);
88
+ }
89
+ return sortBlockLinksBySource([...byId.values()]);
90
+ }
91
+ export function sortBlockLinksByCommentrayLine(links) {
92
+ return [...links].sort((a, b) => a.commentrayLine !== b.commentrayLine
93
+ ? a.commentrayLine - b.commentrayLine
94
+ : a.sourceStart - b.sourceStart);
95
+ }
96
+ /**
97
+ * Next block in companion document order (`commentrayLine`). Gutter doc bands must follow
98
+ * rendered markdown order, which can differ from source line order (multi-file / inverted pairs).
99
+ */
100
+ export function nextBlockLinkInCommentrayOrder(all, current) {
101
+ const sorted = sortBlockLinksByCommentrayLine([...all]);
102
+ const idx = sorted.findIndex((l) => l.id === current.id);
103
+ if (idx < 0)
104
+ return undefined;
105
+ return sorted[idx + 1];
106
+ }
82
107
  export function activeBlockIdForViewport(links, topSourceLine1Based) {
83
108
  if (links.length === 0)
84
109
  return null;
@@ -88,8 +113,103 @@ export function activeBlockIdForViewport(links, topSourceLine1Based) {
88
113
  const b = links.find((x) => x.commentrayLine === mdLine);
89
114
  return b?.id ?? null;
90
115
  }
116
+ /**
117
+ * Which index-backed block owns the companion line at/above `topCommentrayLine0Based`, in
118
+ * markdown order. Matches {@link pickSourceLine0ForCommentrayScroll}’s block choice so gutter
119
+ * “active” emphasis tracks the **doc** viewport (what the reader is reading), not only the code
120
+ * pane’s top line — which can disagree briefly (e.g. tall page-break gaps).
121
+ */
122
+ export function activeBlockIdForCommentrayLine0(links, topCommentrayLine0Based) {
123
+ if (links.length === 0)
124
+ return null;
125
+ const sorted = sortBlockLinksByCommentrayLine([...links]);
126
+ const head = sorted[0];
127
+ if (head === undefined)
128
+ return null;
129
+ let best = head;
130
+ for (const b of sorted) {
131
+ if (b.commentrayLine <= topCommentrayLine0Based)
132
+ best = b;
133
+ }
134
+ return best.id;
135
+ }
91
136
  /** 0-based index into `code-line-*` ids from 1-based inclusive source line numbers. */
92
137
  export function codeLineDomIndex0(sourceLine1Based) {
93
138
  return Math.max(0, sourceLine1Based - 1);
94
139
  }
140
+ const PAGE_BREAK_HOST_SELECTOR = '.commentray-page-break[data-commentray-page-break="true"]';
141
+ function elementFollowsInDocumentOrder(a, b) {
142
+ return (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0;
143
+ }
144
+ /**
145
+ * Page-break hosts rendered between a block anchor and the next block anchor (or all breaks after
146
+ * `docTop` when `endExclusive` is null), in tree order.
147
+ */
148
+ export function pageBreakHostsBetweenAnchors(docScrollEl, docTop, endExclusive) {
149
+ return Array.from(docScrollEl.querySelectorAll(PAGE_BREAK_HOST_SELECTOR)).filter((pb) => elementFollowsInDocumentOrder(docTop, pb) &&
150
+ (endExclusive === null || elementFollowsInDocumentOrder(pb, endExclusive)));
151
+ }
152
+ const MIN_LAYOUT_RECT_SIDE = 0.5;
153
+ function isInsidePageBreakHost(el) {
154
+ const host = el.closest(PAGE_BREAK_HOST_SELECTOR);
155
+ return Boolean(host && !el.isSameNode(host));
156
+ }
157
+ /**
158
+ * Lowest `getBoundingClientRect().bottom` among laid-out elements strictly after `startAfter` and
159
+ * strictly before `endBefore`, excluding page-break hosts and their descendants (same visual intent
160
+ * as a `Range` over the gap, without relying on `Range#getClientRects`, which jsdom omits).
161
+ */
162
+ /**
163
+ * Walks laid-out descendants of `docScrollEl` strictly after `startAfter`; when `endBefore` is set,
164
+ * only elements strictly before that node contribute. Shared by bounded segments and the
165
+ * open-ended tail after the last page break.
166
+ */
167
+ function maxContentBottomByElementWalk(docScrollEl, startAfter, endBefore) {
168
+ let maxBottom = startAfter.getBoundingClientRect().top + 2;
169
+ for (const el of Array.from(docScrollEl.querySelectorAll("*"))) {
170
+ if (!(el instanceof HTMLElement))
171
+ continue;
172
+ if (endBefore !== null) {
173
+ if (el === endBefore)
174
+ continue;
175
+ if (!elementFollowsInDocumentOrder(el, endBefore))
176
+ continue;
177
+ }
178
+ if (!elementFollowsInDocumentOrder(startAfter, el))
179
+ continue;
180
+ if (isInsidePageBreakHost(el))
181
+ continue;
182
+ if (el.matches(PAGE_BREAK_HOST_SELECTOR))
183
+ continue;
184
+ const br = el.getBoundingClientRect();
185
+ if (br.width < MIN_LAYOUT_RECT_SIDE || br.height < MIN_LAYOUT_RECT_SIDE)
186
+ continue;
187
+ maxBottom = Math.max(maxBottom, br.bottom);
188
+ }
189
+ return maxBottom;
190
+ }
191
+ /**
192
+ * Lowest viewport Y of rendered companion content for one block, **excluding** synthetic
193
+ * `.commentray-page-break` regions. Used so gutter splines do not extend through tall page-break
194
+ * gaps toward the next block.
195
+ *
196
+ * When `endExclusive` is the next block’s `commentray-block-*` anchor, ranges stop before that
197
+ * node. When it is `null` (last block), the final segment runs to the end of `docScrollEl`.
198
+ */
199
+ export function maxRenderableCommentaryContentBottomViewport(docScrollEl, docTop, endExclusive) {
200
+ const breaks = pageBreakHostsBetweenAnchors(docScrollEl, docTop, endExclusive);
201
+ let maxBottom = docTop.getBoundingClientRect().top + 2;
202
+ let cursor = docTop;
203
+ for (const pb of breaks) {
204
+ maxBottom = Math.max(maxBottom, maxContentBottomByElementWalk(docScrollEl, cursor, pb));
205
+ cursor = pb;
206
+ }
207
+ if (endExclusive) {
208
+ maxBottom = Math.max(maxBottom, maxContentBottomByElementWalk(docScrollEl, cursor, endExclusive));
209
+ }
210
+ else {
211
+ maxBottom = Math.max(maxBottom, maxContentBottomByElementWalk(docScrollEl, cursor, null));
212
+ }
213
+ return maxBottom;
214
+ }
95
215
  //# sourceMappingURL=code-browser-block-rays.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-browser-block-rays.js","sourceRoot":"","sources":["../src/code-browser-block-rays.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-browser-block-rays.js","sourceRoot":"","sources":["../src/code-browser-block-rays.ts"],"names":[],"mappings":"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"}