@commentray/render 0.0.5 → 0.0.6
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/browse-page-slug.d.ts +6 -0
- package/dist/browse-page-slug.d.ts.map +1 -0
- package/dist/browse-page-slug.js +9 -0
- package/dist/browse-page-slug.js.map +1 -0
- package/dist/build-commentray-nav-search.d.ts +11 -5
- package/dist/build-commentray-nav-search.d.ts.map +1 -1
- package/dist/build-commentray-nav-search.js +11 -11
- package/dist/build-commentray-nav-search.js.map +1 -1
- package/dist/code-browser-block-rays.d.ts +48 -0
- package/dist/code-browser-block-rays.d.ts.map +1 -0
- package/dist/code-browser-block-rays.js +95 -0
- package/dist/code-browser-block-rays.js.map +1 -0
- package/dist/code-browser-client.bundle.js +12 -12
- package/dist/code-browser-client.js +388 -70
- package/dist/code-browser-client.js.map +1 -1
- package/dist/code-browser-pair-nav.d.ts +23 -0
- package/dist/code-browser-pair-nav.d.ts.map +1 -0
- package/dist/code-browser-pair-nav.js +59 -0
- package/dist/code-browser-pair-nav.js.map +1 -0
- package/dist/code-browser-search.d.ts +45 -0
- package/dist/code-browser-search.d.ts.map +1 -1
- package/dist/code-browser-search.js +89 -0
- package/dist/code-browser-search.js.map +1 -1
- package/dist/code-browser.d.ts +22 -1
- package/dist/code-browser.d.ts.map +1 -1
- package/dist/code-browser.js +342 -103
- package/dist/code-browser.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/markdown-pipeline.d.ts.map +1 -1
- package/dist/markdown-pipeline.js +2 -1
- package/dist/markdown-pipeline.js.map +1 -1
- package/dist/mermaid-runtime-html.d.ts.map +1 -1
- package/dist/mermaid-runtime-html.js +3 -1
- package/dist/mermaid-runtime-html.js.map +1 -1
- package/package.json +2 -2
|
@@ -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
|
-
/**
|
|
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
|
|
23
|
-
commentrayOnGithub
|
|
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,
|
|
55
|
-
*
|
|
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
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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,
|
|
68
|
-
*
|
|
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 =
|
|
91
|
+
const documentedPairs = buildDocumentedPairs(merged, githubBlobBase);
|
|
92
92
|
return {
|
|
93
93
|
schemaVersion: COMMENTRAY_NAV_SEARCH_SCHEMA_VERSION,
|
|
94
94
|
rows,
|
|
95
|
-
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,SAAS,EACT,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAU,CAAC;
|
|
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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"}
|