@commentray/render 0.0.5 → 0.0.8

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 (59) hide show
  1. package/dist/browse-page-slug.d.ts +6 -0
  2. package/dist/browse-page-slug.d.ts.map +1 -0
  3. package/dist/browse-page-slug.js +9 -0
  4. package/dist/browse-page-slug.js.map +1 -0
  5. package/dist/build-commentray-nav-search.d.ts +11 -5
  6. package/dist/build-commentray-nav-search.d.ts.map +1 -1
  7. package/dist/build-commentray-nav-search.js +11 -11
  8. package/dist/build-commentray-nav-search.js.map +1 -1
  9. package/dist/code-browser-block-rays.d.ts +48 -0
  10. package/dist/code-browser-block-rays.d.ts.map +1 -0
  11. package/dist/code-browser-block-rays.js +95 -0
  12. package/dist/code-browser-block-rays.js.map +1 -0
  13. package/dist/code-browser-client.bundle.js +12 -12
  14. package/dist/code-browser-client.js +1106 -145
  15. package/dist/code-browser-client.js.map +1 -1
  16. package/dist/code-browser-color-theme.d.ts +15 -0
  17. package/dist/code-browser-color-theme.d.ts.map +1 -0
  18. package/dist/code-browser-color-theme.js +73 -0
  19. package/dist/code-browser-color-theme.js.map +1 -0
  20. package/dist/code-browser-pair-nav.d.ts +31 -0
  21. package/dist/code-browser-pair-nav.d.ts.map +1 -0
  22. package/dist/code-browser-pair-nav.js +77 -0
  23. package/dist/code-browser-pair-nav.js.map +1 -0
  24. package/dist/code-browser-scroll-sync.js +1 -1
  25. package/dist/code-browser-scroll-sync.js.map +1 -1
  26. package/dist/code-browser-search.d.ts +45 -0
  27. package/dist/code-browser-search.d.ts.map +1 -1
  28. package/dist/code-browser-search.js +89 -0
  29. package/dist/code-browser-search.js.map +1 -1
  30. package/dist/code-browser.d.ts +24 -3
  31. package/dist/code-browser.d.ts.map +1 -1
  32. package/dist/code-browser.js +1202 -288
  33. package/dist/code-browser.js.map +1 -1
  34. package/dist/hljs-stylesheet-themes.d.ts +13 -0
  35. package/dist/hljs-stylesheet-themes.d.ts.map +1 -0
  36. package/dist/hljs-stylesheet-themes.js +19 -0
  37. package/dist/hljs-stylesheet-themes.js.map +1 -0
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/inline-favicon.d.ts +2 -0
  43. package/dist/inline-favicon.d.ts.map +1 -0
  44. package/dist/inline-favicon.js +25 -0
  45. package/dist/inline-favicon.js.map +1 -0
  46. package/dist/markdown-pipeline.d.ts.map +1 -1
  47. package/dist/markdown-pipeline.js +38 -2
  48. package/dist/markdown-pipeline.js.map +1 -1
  49. package/dist/mermaid-runtime-html.d.ts.map +1 -1
  50. package/dist/mermaid-runtime-html.js +13 -3
  51. package/dist/mermaid-runtime-html.js.map +1 -1
  52. package/dist/package-version.d.ts.map +1 -1
  53. package/dist/package-version.js +4 -4
  54. package/dist/package-version.js.map +1 -1
  55. package/dist/side-by-side-layout.css +58 -0
  56. package/dist/side-by-side.d.ts.map +1 -1
  57. package/dist/side-by-side.js +10 -12
  58. package/dist/side-by-side.js.map +1 -1
  59. package/package.json +2 -2
@@ -0,0 +1,6 @@
1
+ /** Same slug as `_site/browse/<slug>.html` in `github-pages-site.ts` (nav search + browse pages). */
2
+ export declare function browsePageSlugFromPair(pair: {
3
+ sourcePath: string;
4
+ commentrayPath: string;
5
+ }): string;
6
+ //# sourceMappingURL=browse-page-slug.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,9 @@
1
+ import { createHash } from "node:crypto";
2
+ /** Same slug as `_site/browse/<slug>.html` in `github-pages-site.ts` (nav search + browse pages). */
3
+ export function browsePageSlugFromPair(pair) {
4
+ return createHash("sha256")
5
+ .update(`${pair.commentrayPath}\0${pair.sourcePath}`, "utf8")
6
+ .digest("base64url")
7
+ .slice(0, 28);
8
+ }
9
+ //# sourceMappingURL=browse-page-slug.js.map
@@ -0,0 +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"}
@@ -15,12 +15,17 @@ export type CommentrayNavSearchRow = {
15
15
  line: number;
16
16
  text: string;
17
17
  };
18
- /** One indexed source ↔ commentray pair with absolute GitHub blob links for static hub pages. */
18
+ /**
19
+ * One indexed source ↔ commentray pair for the static hub.
20
+ * Optional SCM blob URLs are filled when `[static_site].github_url` is set (GitHub-style today;
21
+ * configurable host URL — see plan). Same-site `./browse/…` links are added by the static-site
22
+ * build so navigation stays on the exported HTML without requiring an external host.
23
+ */
19
24
  export type DocumentedPairNav = {
20
25
  sourcePath: string;
21
26
  commentrayPath: string;
22
- sourceOnGithub: string;
23
- commentrayOnGithub: string;
27
+ sourceOnGithub?: string;
28
+ commentrayOnGithub?: string;
24
29
  /**
25
30
  * When the static Pages build emits per-pair browse HTML (e.g. `_site/browse/…html`), a URL
26
31
  * relative to the site root `index.html` (e.g. `./browse/x.html`) so the hub can open the same
@@ -51,8 +56,9 @@ export type BuildCommentrayNavSearchGithubBlobBase = {
51
56
  * Builds a JSON-serialisable search corpus: **filenames / paths** plus **commentray Markdown lines**
52
57
  * for each indexed pair. Primary source file contents are intentionally omitted.
53
58
  *
54
- * When `githubBlobBase` is set, `documentedPairs` lists every pair with GitHub **blob** URLs for
55
- * the static hub tree and outbound links.
59
+ * `documentedPairs` lists every merged pair. When `githubBlobBase` is set, GitHub-style **blob**
60
+ * URLs are included for optional outbound links; the static-site build always adds same-site
61
+ * `staticBrowseUrl` when it emits `_site/browse/*.html`.
56
62
  *
57
63
  * Pairs are merged from the metadata index, a walk of the configured storage `source` tree for
58
64
  * every `*.md` companion (flat or Angles layout), and an optional single-page `fallback`. For the
@@ -1 +1 @@
1
- {"version":3,"file":"build-commentray-nav-search.d.ts","sourceRoot":"","sources":["../src/build-commentray-nav-search.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oCAAoC,EAAG,CAAU,CAAC;AAE/D,6FAA6F;AAC7F,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACtE;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEN,iGAAiG;AACjG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,OAAO,oCAAoC,CAAC;IAC3D,IAAI,EAAE,sBAAsB,EAAE,CAAC;IAC/B,kGAAkG;IAClG,eAAe,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAmFF;;;;;;;;;;GAUG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,cAAc,CAAC,EAAE,sCAAsC,EACvD,UAAU,SAAgB,GACzB,OAAO,CAAC,2BAA2B,CAAC,CAmCtC"}
1
+ {"version":3,"file":"build-commentray-nav-search.d.ts","sourceRoot":"","sources":["../src/build-commentray-nav-search.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oCAAoC,EAAG,CAAU,CAAC;AAE/D,6FAA6F;AAC7F,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACtE;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,OAAO,oCAAoC,CAAC;IAC3D,IAAI,EAAE,sBAAsB,EAAE,CAAC;IAC/B,kGAAkG;IAClG,eAAe,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAkFF;;;;;;;;;;;GAWG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,cAAc,CAAC,EAAE,sCAAsC,EACvD,UAAU,SAAgB,GACzB,OAAO,CAAC,2BAA2B,CAAC,CAkCtC"}
@@ -2,18 +2,17 @@ import { readFile } from "node:fs/promises";
2
2
  import { discoverCommentrayPairsOnDisk, githubRepoBlobFileUrl, readIndex, resolvePathUnderRepoRoot, } from "@commentray/core";
3
3
  export const COMMENTRAY_NAV_SEARCH_SCHEMA_VERSION = 1;
4
4
  function buildDocumentedPairs(pairs, gh) {
5
- const { owner, repo, branch } = gh;
6
5
  const uniq = new Map();
7
6
  for (const { sourcePath, commentrayPath } of pairs) {
8
7
  const key = `${sourcePath}\0${commentrayPath}`;
9
8
  if (uniq.has(key))
10
9
  continue;
11
- uniq.set(key, {
12
- sourcePath,
13
- commentrayPath,
14
- sourceOnGithub: githubRepoBlobFileUrl(owner, repo, branch, sourcePath),
15
- commentrayOnGithub: githubRepoBlobFileUrl(owner, repo, branch, commentrayPath),
16
- });
10
+ const row = { sourcePath, commentrayPath };
11
+ if (gh !== undefined) {
12
+ row.sourceOnGithub = githubRepoBlobFileUrl(gh.owner, gh.repo, gh.branch, sourcePath);
13
+ row.commentrayOnGithub = githubRepoBlobFileUrl(gh.owner, gh.repo, gh.branch, commentrayPath);
14
+ }
15
+ uniq.set(key, row);
17
16
  }
18
17
  return [...uniq.values()].sort((a, b) => a.sourcePath === b.sourcePath
19
18
  ? a.commentrayPath.localeCompare(b.commentrayPath)
@@ -64,8 +63,9 @@ async function appendPairRowsSync(rows, sourcePath, commentrayPath, markdownAbs)
64
63
  * Builds a JSON-serialisable search corpus: **filenames / paths** plus **commentray Markdown lines**
65
64
  * for each indexed pair. Primary source file contents are intentionally omitted.
66
65
  *
67
- * When `githubBlobBase` is set, `documentedPairs` lists every pair with GitHub **blob** URLs for
68
- * the static hub tree and outbound links.
66
+ * `documentedPairs` lists every merged pair. When `githubBlobBase` is set, GitHub-style **blob**
67
+ * URLs are included for optional outbound links; the static-site build always adds same-site
68
+ * `staticBrowseUrl` when it emits `_site/browse/*.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
@@ -88,11 +88,11 @@ export async function buildCommentrayNavSearchDocument(repoRoot, fallback, githu
88
88
  for (const p of merged) {
89
89
  await appendPairRowsSync(rows, p.sourcePath, p.commentrayPath, markdownAbsForMergedPair(repoRoot, p, fallback));
90
90
  }
91
- const documentedPairs = githubBlobBase !== undefined ? buildDocumentedPairs(merged, githubBlobBase) : undefined;
91
+ const documentedPairs = buildDocumentedPairs(merged, githubBlobBase);
92
92
  return {
93
93
  schemaVersion: COMMENTRAY_NAV_SEARCH_SCHEMA_VERSION,
94
94
  rows,
95
- ...(documentedPairs ? { documentedPairs } : {}),
95
+ documentedPairs,
96
96
  };
97
97
  }
98
98
  //# sourceMappingURL=build-commentray-nav-search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-commentray-nav-search.js","sourceRoot":"","sources":["../src/build-commentray-nav-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-commentray-nav-search.js","sourceRoot":"","sources":["../src/build-commentray-nav-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { type BlockScrollLink } from "./code-browser-scroll-sync.js";
2
+ /** Gutter-local Y after clamping to visible gutter band (viewport-relative input). */
3
+ export type GutterYClamp = {
4
+ y: number;
5
+ clipped: "none" | "above" | "below";
6
+ };
7
+ /**
8
+ * Maps a viewport Y to gutter-local coordinates and clamps into the gutter band
9
+ * so off-screen anchors draw at the top/bottom edge of the gutter.
10
+ */
11
+ export declare function clampViewportYToGutterLocal(yViewport: number, gutterTop: number, gutterHeight: number, margin?: number): GutterYClamp;
12
+ export type GutterClipKind = GutterYClamp["clipped"];
13
+ export type GutterPt = {
14
+ x: number;
15
+ y: number;
16
+ };
17
+ /**
18
+ * Options for gutter Bézier paths: tension, clipping at viewport edges, and optional split for
19
+ * dotted “tail” segments when an anchor is off-screen.
20
+ */
21
+ export type GutterRayBezierOpts = {
22
+ tension?: number;
23
+ clipStart?: GutterClipKind;
24
+ clipEnd?: GutterClipKind;
25
+ splitT?: number;
26
+ };
27
+ /**
28
+ * Horizontal cubic between the code edge (x0) and doc edge (x1), IntelliJ-style.
29
+ *
30
+ * When an endpoint is **clipped** to the top/bottom of the gutter (anchor off-screen), the
31
+ * corresponding control handle is lengthened so the curve **hugs the viewport boundary** with a
32
+ * horizontal tangent there—read as “the ray meets the edge flat,” not a pointer toward far
33
+ * off-screen content.
34
+ */
35
+ export declare function gutterCubicControlPoints(x0: number, y0: number, x1: number, y1: number, opts?: Pick<GutterRayBezierOpts, "tension" | "clipStart" | "clipEnd">): [GutterPt, GutterPt, GutterPt, GutterPt];
36
+ export declare function cubicBezierDFromControlPoints(p0: GutterPt, p1: GutterPt, p2: GutterPt, p3: GutterPt): string;
37
+ /** de Casteljau split of a cubic Bézier at t ∈ (0, 1). */
38
+ export declare function splitCubicAtT(p0: GutterPt, p1: GutterPt, p2: GutterPt, p3: GutterPt, t: number): [[GutterPt, GutterPt, GutterPt, GutterPt], [GutterPt, GutterPt, GutterPt, GutterPt]];
39
+ export declare function gutterRayBezierPaths(x0: number, y0: number, x1: number, y1: number, opts?: GutterRayBezierOpts): {
40
+ solid: string;
41
+ dotted?: string;
42
+ };
43
+ export declare function cubicBezierAcrossGutterD(x0: number, y0: number, x1: number, y1: number, opts?: Pick<GutterRayBezierOpts, "tension" | "clipStart" | "clipEnd">): string;
44
+ export declare function sortBlockLinksBySource(links: BlockScrollLink[]): BlockScrollLink[];
45
+ export declare function activeBlockIdForViewport(links: BlockScrollLink[], topSourceLine1Based: number): string | null;
46
+ /** 0-based index into `code-line-*` ids from 1-based inclusive source line numbers. */
47
+ export declare function codeLineDomIndex0(sourceLine1Based: number): number;
48
+ //# sourceMappingURL=code-browser-block-rays.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,95 @@
1
+ import { pickCommentrayLineForSourceScroll, } from "./code-browser-scroll-sync.js";
2
+ /**
3
+ * Maps a viewport Y to gutter-local coordinates and clamps into the gutter band
4
+ * so off-screen anchors draw at the top/bottom edge of the gutter.
5
+ */
6
+ export function clampViewportYToGutterLocal(yViewport, gutterTop, gutterHeight, margin = 5) {
7
+ const lo = gutterTop + margin;
8
+ const hi = gutterTop + gutterHeight - margin;
9
+ if (yViewport < lo)
10
+ return { y: lo - gutterTop, clipped: "above" };
11
+ if (yViewport > hi)
12
+ return { y: hi - gutterTop, clipped: "below" };
13
+ return { y: yViewport - gutterTop, clipped: "none" };
14
+ }
15
+ /**
16
+ * Horizontal cubic between the code edge (x0) and doc edge (x1), IntelliJ-style.
17
+ *
18
+ * When an endpoint is **clipped** to the top/bottom of the gutter (anchor off-screen), the
19
+ * corresponding control handle is lengthened so the curve **hugs the viewport boundary** with a
20
+ * horizontal tangent there—read as “the ray meets the edge flat,” not a pointer toward far
21
+ * off-screen content.
22
+ */
23
+ export function gutterCubicControlPoints(x0, y0, x1, y1, opts = {}) {
24
+ const { tension = 0.38, clipStart = "none", clipEnd = "none" } = opts;
25
+ const boost = 0.24;
26
+ const boosted = Math.min(0.66, tension + boost);
27
+ const t0 = clipStart === "none" ? tension : boosted;
28
+ const t1 = clipEnd === "none" ? tension : boosted;
29
+ const dx = x1 - x0;
30
+ return [
31
+ { x: x0, y: y0 },
32
+ { x: x0 + dx * t0, y: y0 },
33
+ { x: x1 - dx * t1, y: y1 },
34
+ { x: x1, y: y1 },
35
+ ];
36
+ }
37
+ export function cubicBezierDFromControlPoints(p0, p1, p2, p3) {
38
+ return `M ${fmt(p0.x)} ${fmt(p0.y)} C ${fmt(p1.x)} ${fmt(p1.y)} ${fmt(p2.x)} ${fmt(p2.y)} ${fmt(p3.x)} ${fmt(p3.y)}`;
39
+ }
40
+ /** de Casteljau split of a cubic Bézier at t ∈ (0, 1). */
41
+ export function splitCubicAtT(p0, p1, p2, p3, t) {
42
+ const q0 = lerpPt(p0, p1, t);
43
+ const q1 = lerpPt(p1, p2, t);
44
+ const q2 = lerpPt(p2, p3, t);
45
+ const r0 = lerpPt(q0, q1, t);
46
+ const r1 = lerpPt(q1, q2, t);
47
+ const s = lerpPt(r0, r1, t);
48
+ return [
49
+ [p0, q0, r0, s],
50
+ [s, r1, q2, p3],
51
+ ];
52
+ }
53
+ function lerpPt(a, b, t) {
54
+ return { x: (1 - t) * a.x + t * b.x, y: (1 - t) * a.y + t * b.y };
55
+ }
56
+ export function gutterRayBezierPaths(x0, y0, x1, y1, opts = {}) {
57
+ const { tension = 0.38, clipStart = "none", clipEnd = "none", splitT = 0.66 } = opts;
58
+ const pts = gutterCubicControlPoints(x0, y0, x1, y1, { tension, clipStart, clipEnd });
59
+ const [p0, p1, p2, p3] = pts;
60
+ const interrupt = clipStart !== "none" || clipEnd !== "none";
61
+ if (!interrupt) {
62
+ return { solid: cubicBezierDFromControlPoints(p0, p1, p2, p3) };
63
+ }
64
+ const [left, right] = splitCubicAtT(p0, p1, p2, p3, splitT);
65
+ const [a0, a1, a2, a3] = left;
66
+ const [b0, b1, b2, b3] = right;
67
+ return {
68
+ solid: cubicBezierDFromControlPoints(a0, a1, a2, a3),
69
+ dotted: cubicBezierDFromControlPoints(b0, b1, b2, b3),
70
+ };
71
+ }
72
+ export function cubicBezierAcrossGutterD(x0, y0, x1, y1, opts = {}) {
73
+ const [p0, p1, p2, p3] = gutterCubicControlPoints(x0, y0, x1, y1, opts);
74
+ return cubicBezierDFromControlPoints(p0, p1, p2, p3);
75
+ }
76
+ function fmt(n) {
77
+ return n.toFixed(2);
78
+ }
79
+ export function sortBlockLinksBySource(links) {
80
+ return [...links].sort((a, b) => a.sourceStart - b.sourceStart);
81
+ }
82
+ export function activeBlockIdForViewport(links, topSourceLine1Based) {
83
+ if (links.length === 0)
84
+ return null;
85
+ const mdLine = pickCommentrayLineForSourceScroll(links, topSourceLine1Based);
86
+ if (mdLine === null)
87
+ return null;
88
+ const b = links.find((x) => x.commentrayLine === mdLine);
89
+ return b?.id ?? null;
90
+ }
91
+ /** 0-based index into `code-line-*` ids from 1-based inclusive source line numbers. */
92
+ export function codeLineDomIndex0(sourceLine1Based) {
93
+ return Math.max(0, sourceLine1Based - 1);
94
+ }
95
+ //# sourceMappingURL=code-browser-block-rays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-browser-block-rays.js","sourceRoot":"","sources":["../src/code-browser-block-rays.ts"],"names":[],"mappings":"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"}