@commentray/render 0.2.0 → 0.3.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.
- package/dist/block-stretch-buffer-sync.d.ts +16 -0
- package/dist/block-stretch-buffer-sync.d.ts.map +1 -0
- package/dist/block-stretch-buffer-sync.js +271 -0
- package/dist/block-stretch-buffer-sync.js.map +1 -0
- package/dist/block-stretch-layout.d.ts +18 -5
- package/dist/block-stretch-layout.d.ts.map +1 -1
- package/dist/block-stretch-layout.js +119 -43
- package/dist/block-stretch-layout.js.map +1 -1
- package/dist/browse-page-slug.d.ts +3 -4
- package/dist/browse-page-slug.d.ts.map +1 -1
- package/dist/browse-page-slug.js +3 -4
- package/dist/browse-page-slug.js.map +1 -1
- package/dist/build-commentray-nav-search.d.ts +2 -2
- package/dist/build-commentray-nav-search.js +1 -1
- package/dist/code-browser-block-rays.d.ts +11 -0
- package/dist/code-browser-block-rays.d.ts.map +1 -1
- package/dist/code-browser-block-rays.js +25 -5
- package/dist/code-browser-block-rays.js.map +1 -1
- package/dist/code-browser-client.bundle.js +12 -11
- package/dist/code-browser-client.js +1366 -257
- package/dist/code-browser-client.js.map +1 -1
- package/dist/code-browser-pair-nav.d.ts +9 -2
- package/dist/code-browser-pair-nav.d.ts.map +1 -1
- package/dist/code-browser-pair-nav.js +53 -14
- package/dist/code-browser-pair-nav.js.map +1 -1
- package/dist/code-browser-scroll-sync-monotonic.d.ts +17 -0
- package/dist/code-browser-scroll-sync-monotonic.d.ts.map +1 -0
- package/dist/code-browser-scroll-sync-monotonic.js +22 -0
- package/dist/code-browser-scroll-sync-monotonic.js.map +1 -0
- package/dist/code-browser-scroll-sync-strategy.d.ts +12 -0
- package/dist/code-browser-scroll-sync-strategy.d.ts.map +1 -0
- package/dist/code-browser-scroll-sync-strategy.js +28 -0
- package/dist/code-browser-scroll-sync-strategy.js.map +1 -0
- package/dist/code-browser-scroll-sync.d.ts +2 -2
- package/dist/code-browser-scroll-sync.d.ts.map +1 -1
- package/dist/code-browser-scroll-sync.js +1 -1
- package/dist/code-browser-scroll-sync.js.map +1 -1
- package/dist/code-browser-smooth-reveal-dedup.d.ts +25 -0
- package/dist/code-browser-smooth-reveal-dedup.d.ts.map +1 -0
- package/dist/code-browser-smooth-reveal-dedup.js +25 -0
- package/dist/code-browser-smooth-reveal-dedup.js.map +1 -0
- package/dist/code-browser.d.ts +25 -8
- package/dist/code-browser.d.ts.map +1 -1
- package/dist/code-browser.js +382 -93
- package/dist/code-browser.js.map +1 -1
- package/dist/commentray-anchor-viewport-probe.d.ts +5 -1
- package/dist/commentray-anchor-viewport-probe.d.ts.map +1 -1
- package/dist/commentray-anchor-viewport-probe.js +8 -2
- package/dist/commentray-anchor-viewport-probe.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inject-md-line-anchors.d.ts +1 -1
- package/dist/inject-md-line-anchors.d.ts.map +1 -1
- package/dist/inject-md-line-anchors.js +9 -5
- package/dist/inject-md-line-anchors.js.map +1 -1
- package/dist/markdown-pipeline.d.ts.map +1 -1
- package/dist/markdown-pipeline.js +10 -3
- package/dist/markdown-pipeline.js.map +1 -1
- package/dist/mermaid-runtime-html.d.ts.map +1 -1
- package/dist/mermaid-runtime-html.js +4 -1
- package/dist/mermaid-runtime-html.js.map +1 -1
- package/dist/reading-viewport-comfort.d.ts +12 -0
- package/dist/reading-viewport-comfort.d.ts.map +1 -0
- package/dist/reading-viewport-comfort.js +14 -0
- package/dist/reading-viewport-comfort.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-browser-pair-nav.d.ts","sourceRoot":"","sources":["../src/code-browser-pair-nav.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASrE;
|
|
1
|
+
{"version":3,"file":"code-browser-pair-nav.d.ts","sourceRoot":"","sources":["../src/code-browser-pair-nav.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASrE;AAqBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAiBR;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAQR;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,qBAAqB,EAChE,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GACjB,CAAC,GAAG,SAAS,CAYf;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOzE;AAED,wFAAwF;AACxF,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUzE;AAED,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,qBAAqB,EACxB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAKT"}
|
|
@@ -20,34 +20,44 @@ export function siteRootPathnameFromPathname(pathname) {
|
|
|
20
20
|
return "/";
|
|
21
21
|
return noFile.replace(/\/+$/, "") || "/";
|
|
22
22
|
}
|
|
23
|
-
/**
|
|
24
|
-
const
|
|
25
|
-
/**
|
|
26
|
-
|
|
23
|
+
/** Indexed pair page: `./browse/…/index.html` or path-absolute `/browse/…/index.html`. */
|
|
24
|
+
const STATIC_BROWSE_INDEXED = /^(?:\.\/|\/)?browse\/(.+)\/index\.html$/i;
|
|
25
|
+
/**
|
|
26
|
+
* Flat HTML under `browse/`: a lone `*.html` file (e.g. legacy or opaque slug). Multi-angle pairs
|
|
27
|
+
* use indexed `./browse/…/…/index.html` only. Must not match indexed URLs ending in `/index.html`
|
|
28
|
+
* (check {@link STATIC_BROWSE_INDEXED} first).
|
|
29
|
+
*/
|
|
30
|
+
const STATIC_BROWSE_FLAT_HTML = /^(?:\.\/|\/)?browse\/(.+\.html)$/i;
|
|
27
31
|
/** True when `href` is hub-root-relative static browse (not same-dir `./other.html`). */
|
|
32
|
+
function isStaticBrowseIndexedHref(t) {
|
|
33
|
+
return STATIC_BROWSE_INDEXED.test(t);
|
|
34
|
+
}
|
|
35
|
+
function isStaticBrowseFlatHtmlHref(t) {
|
|
36
|
+
return STATIC_BROWSE_FLAT_HTML.test(t) && !t.toLowerCase().endsWith("/index.html");
|
|
37
|
+
}
|
|
28
38
|
export function isHubRelativeStaticBrowseHref(href) {
|
|
29
39
|
const t = href.trim();
|
|
30
|
-
return
|
|
40
|
+
return isStaticBrowseIndexedHref(t) || isStaticBrowseFlatHtmlHref(t);
|
|
31
41
|
}
|
|
32
42
|
/**
|
|
33
|
-
* Resolves `staticBrowseUrl` from nav JSON (
|
|
43
|
+
* Resolves `staticBrowseUrl` from nav JSON (`./browse/…/index.html` or legacy flat `./browse/…@….html`) to an absolute href.
|
|
34
44
|
*/
|
|
35
45
|
export function resolveStaticBrowseHref(relativeBrowse, pathname, origin) {
|
|
36
46
|
const r = relativeBrowse.trim();
|
|
37
47
|
if (r.startsWith("/"))
|
|
38
48
|
return `${origin}${r}`;
|
|
39
49
|
const root = siteRootPathnameFromPathname(pathname);
|
|
40
|
-
const mFlat = STATIC_BROWSE_FLAT.exec(r);
|
|
41
|
-
if (mFlat?.[1]) {
|
|
42
|
-
const path = root === "/" ? `/browse/${mFlat[1]}` : `${root}/browse/${mFlat[1]}`;
|
|
43
|
-
return `${origin}${path}`;
|
|
44
|
-
}
|
|
45
50
|
const mIdx = STATIC_BROWSE_INDEXED.exec(r);
|
|
46
51
|
if (mIdx?.[1]) {
|
|
47
52
|
const inner = mIdx[1];
|
|
48
53
|
const path = root === "/" ? `/browse/${inner}/index.html` : `${root}/browse/${inner}/index.html`;
|
|
49
54
|
return `${origin}${path}`;
|
|
50
55
|
}
|
|
56
|
+
const mFlat = STATIC_BROWSE_FLAT_HTML.exec(r);
|
|
57
|
+
if (mFlat?.[1] && !r.toLowerCase().endsWith("/index.html")) {
|
|
58
|
+
const path = root === "/" ? `/browse/${mFlat[1]}` : `${root}/browse/${mFlat[1]}`;
|
|
59
|
+
return `${origin}${path}`;
|
|
60
|
+
}
|
|
51
61
|
return new URL(r, `${origin}${pathname}`).href;
|
|
52
62
|
}
|
|
53
63
|
/**
|
|
@@ -59,12 +69,12 @@ export function staticBrowseHrefForShellDataAttribute(staticBrowseUrl, pathname,
|
|
|
59
69
|
const r = staticBrowseUrl.trim();
|
|
60
70
|
if (r.length === 0)
|
|
61
71
|
return "";
|
|
62
|
-
const flat = STATIC_BROWSE_FLAT.exec(r);
|
|
63
|
-
if (flat?.[1])
|
|
64
|
-
return `./browse/${flat[1]}`;
|
|
65
72
|
const indexed = STATIC_BROWSE_INDEXED.exec(r);
|
|
66
73
|
if (indexed?.[1])
|
|
67
74
|
return `./browse/${indexed[1]}/index.html`;
|
|
75
|
+
const flat = STATIC_BROWSE_FLAT_HTML.exec(r);
|
|
76
|
+
if (flat?.[1] && !r.toLowerCase().endsWith("/index.html"))
|
|
77
|
+
return `./browse/${flat[1]}`;
|
|
68
78
|
return resolveStaticBrowseHref(r, pathname, origin);
|
|
69
79
|
}
|
|
70
80
|
export function findDocumentedPair(pairs, commentrayPath, sourcePath) {
|
|
@@ -82,6 +92,35 @@ export function findDocumentedPair(pairs, commentrayPath, sourcePath) {
|
|
|
82
92
|
}
|
|
83
93
|
return undefined;
|
|
84
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Opaque browse pages are files `browse/<slug>.html`. A bare `/…/browse/<slug>` (one segment after
|
|
97
|
+
* `browse/`, no `.` in the slug) has no static file on disk — append `.html` so dev server and
|
|
98
|
+
* address-bar sync match emitted assets (same link shape users should share).
|
|
99
|
+
*/
|
|
100
|
+
export function appendHtmlToOpaqueBrowsePathname(pathname) {
|
|
101
|
+
const needle = "/browse/";
|
|
102
|
+
const idx = pathname.lastIndexOf(needle);
|
|
103
|
+
if (idx < 0)
|
|
104
|
+
return pathname;
|
|
105
|
+
const rest = pathname.slice(idx + needle.length);
|
|
106
|
+
if (rest.length === 0 || rest.includes("/") || rest.includes("."))
|
|
107
|
+
return pathname;
|
|
108
|
+
return `${pathname.slice(0, idx + needle.length)}${rest}.html`;
|
|
109
|
+
}
|
|
110
|
+
/** Apply {@link appendHtmlToOpaqueBrowsePathname} to the path part of a request URL. */
|
|
111
|
+
export function appendHtmlToOpaqueBrowseRequestUrl(rawUrl) {
|
|
112
|
+
try {
|
|
113
|
+
const u = new URL(rawUrl, "http://localhost");
|
|
114
|
+
const nextPath = appendHtmlToOpaqueBrowsePathname(u.pathname);
|
|
115
|
+
if (nextPath === u.pathname)
|
|
116
|
+
return rawUrl;
|
|
117
|
+
u.pathname = nextPath;
|
|
118
|
+
return `${u.pathname}${u.search}${u.hash}`;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return rawUrl;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
85
124
|
export function isSameDocumentedPair(a, curSourcePath, curCommentrayPath) {
|
|
86
125
|
return (normPosixPath(a.sourcePath) === normPosixPath(curSourcePath) &&
|
|
87
126
|
normPosixPath(a.commentrayPath) === normPosixPath(curCommentrayPath));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-browser-pair-nav.js","sourceRoot":"","sources":["../src/code-browser-pair-nav.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAgB;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACtC,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;AAC3C,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"code-browser-pair-nav.js","sourceRoot":"","sources":["../src/code-browser-pair-nav.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normative scroll-sync monotonicity (see `docs/spec/dual-pane-scroll-sync.md`).
|
|
3
|
+
* Pure predicates so Vitest can lock the contract without a browser scroll stack.
|
|
4
|
+
*/
|
|
5
|
+
/** Sub-pixel / wheel noise: ignore driver direction when |delta| is below this. */
|
|
6
|
+
export declare const SCROLL_SYNC_MONOTONIC_EPS = 1.5;
|
|
7
|
+
/**
|
|
8
|
+
* After applying partner scroll from a driver-driven sync, returns whether the partner moved
|
|
9
|
+
* **opposite** to the driver’s direction (forbidden UX: backward jump while scrolling one column).
|
|
10
|
+
*/
|
|
11
|
+
export declare function shouldRevertPartnerScrollForMonotonicity(args: {
|
|
12
|
+
driverDelta: number;
|
|
13
|
+
partnerBefore: number;
|
|
14
|
+
partnerAfter: number;
|
|
15
|
+
eps?: number;
|
|
16
|
+
}): boolean;
|
|
17
|
+
//# sourceMappingURL=code-browser-scroll-sync-monotonic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-scroll-sync-monotonic.d.ts","sourceRoot":"","sources":["../src/code-browser-scroll-sync-monotonic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mFAAmF;AACnF,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,wCAAwC,CAAC,IAAI,EAAE;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAOV"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normative scroll-sync monotonicity (see `docs/spec/dual-pane-scroll-sync.md`).
|
|
3
|
+
* Pure predicates so Vitest can lock the contract without a browser scroll stack.
|
|
4
|
+
*/
|
|
5
|
+
/** Sub-pixel / wheel noise: ignore driver direction when |delta| is below this. */
|
|
6
|
+
export const SCROLL_SYNC_MONOTONIC_EPS = 1.5;
|
|
7
|
+
/**
|
|
8
|
+
* After applying partner scroll from a driver-driven sync, returns whether the partner moved
|
|
9
|
+
* **opposite** to the driver’s direction (forbidden UX: backward jump while scrolling one column).
|
|
10
|
+
*/
|
|
11
|
+
export function shouldRevertPartnerScrollForMonotonicity(args) {
|
|
12
|
+
const eps = args.eps ?? SCROLL_SYNC_MONOTONIC_EPS;
|
|
13
|
+
const { driverDelta, partnerBefore, partnerAfter } = args;
|
|
14
|
+
if (Math.abs(driverDelta) < eps)
|
|
15
|
+
return false;
|
|
16
|
+
if (driverDelta > eps && partnerAfter < partnerBefore - eps)
|
|
17
|
+
return true;
|
|
18
|
+
if (driverDelta < -eps && partnerAfter > partnerBefore + eps)
|
|
19
|
+
return true;
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=code-browser-scroll-sync-monotonic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-scroll-sync-monotonic.js","sourceRoot":"","sources":["../src/code-browser-scroll-sync-monotonic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,wCAAwC,CAAC,IAKxD;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,yBAAyB,CAAC;IAClD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,WAAW,GAAG,GAAG,IAAI,YAAY,GAAG,aAAa,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IACzE,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,YAAY,GAAG,aAAa,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC1E,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mutually exclusive dual-pane scroll correlation modes for the code browser client.
|
|
3
|
+
*
|
|
4
|
+
* Selected at runtime from `#shell` `data-scroll-sync-strategy` (optional; default when absent).
|
|
5
|
+
* Build-time / preview can set {@link CodeBrowserPageOptions.dualPaneScrollSyncStrategy} on the
|
|
6
|
+
* render package to emit the attribute for experiments.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DUAL_PANE_SCROLL_SYNC_STRATEGIES: readonly ["block-aware-proportional", "block-snap-only", "filler-blocks"];
|
|
9
|
+
export type DualPaneScrollSyncStrategyId = (typeof DUAL_PANE_SCROLL_SYNC_STRATEGIES)[number];
|
|
10
|
+
export declare const DEFAULT_DUAL_PANE_SCROLL_SYNC_STRATEGY: DualPaneScrollSyncStrategyId;
|
|
11
|
+
export declare function parseDualPaneScrollSyncStrategy(raw: string | null | undefined): DualPaneScrollSyncStrategyId;
|
|
12
|
+
//# sourceMappingURL=code-browser-scroll-sync-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-scroll-sync-strategy.d.ts","sourceRoot":"","sources":["../src/code-browser-scroll-sync-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,gCAAgC,2EAOnC,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7F,eAAO,MAAM,sCAAsC,EAAE,4BACzB,CAAC;AAE7B,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7B,4BAA4B,CAQ9B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mutually exclusive dual-pane scroll correlation modes for the code browser client.
|
|
3
|
+
*
|
|
4
|
+
* Selected at runtime from `#shell` `data-scroll-sync-strategy` (optional; default when absent).
|
|
5
|
+
* Build-time / preview can set {@link CodeBrowserPageOptions.dualPaneScrollSyncStrategy} on the
|
|
6
|
+
* render package to emit the attribute for experiments.
|
|
7
|
+
*/
|
|
8
|
+
export const DUAL_PANE_SCROLL_SYNC_STRATEGIES = [
|
|
9
|
+
/** Indexed block snaps + proportional mirror in gaps and when there is no index (current product default). */
|
|
10
|
+
"block-aware-proportional",
|
|
11
|
+
/** Block snaps only; partner is not proportionally mirrored in gaps or without an index (partner “holds” until the next snap). */
|
|
12
|
+
"block-snap-only",
|
|
13
|
+
/** Alias of {@link DEFAULT_DUAL_PANE_SCROLL_SYNC_STRATEGY} (reserved id for experiments). */
|
|
14
|
+
"filler-blocks",
|
|
15
|
+
];
|
|
16
|
+
export const DEFAULT_DUAL_PANE_SCROLL_SYNC_STRATEGY = "block-aware-proportional";
|
|
17
|
+
export function parseDualPaneScrollSyncStrategy(raw) {
|
|
18
|
+
if (raw === null || raw === undefined)
|
|
19
|
+
return DEFAULT_DUAL_PANE_SCROLL_SYNC_STRATEGY;
|
|
20
|
+
const t = raw.trim();
|
|
21
|
+
if (t.length === 0)
|
|
22
|
+
return DEFAULT_DUAL_PANE_SCROLL_SYNC_STRATEGY;
|
|
23
|
+
if (DUAL_PANE_SCROLL_SYNC_STRATEGIES.includes(t)) {
|
|
24
|
+
return t;
|
|
25
|
+
}
|
|
26
|
+
return DEFAULT_DUAL_PANE_SCROLL_SYNC_STRATEGY;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=code-browser-scroll-sync-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-scroll-sync-strategy.js","sourceRoot":"","sources":["../src/code-browser-scroll-sync-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,8GAA8G;IAC9G,0BAA0B;IAC1B,kIAAkI;IAClI,iBAAiB;IACjB,6FAA6F;IAC7F,eAAe;CACP,CAAC;AAIX,MAAM,CAAC,MAAM,sCAAsC,GACjD,0BAA0B,CAAC;AAE7B,MAAM,UAAU,+BAA+B,CAC7C,GAA8B;IAE9B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,sCAAsC,CAAC;IACrF,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,sCAAsC,CAAC;IAClE,IAAK,gCAAsD,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,CAAiC,CAAC;IAC3C,CAAC;IACD,OAAO,sCAAsC,CAAC;AAChD,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Static browser scroll helpers: proportional mirror plus block pickers from
|
|
3
3
|
* `@commentray/core/block-scroll-pickers` (small browser bundle entry).
|
|
4
4
|
*/
|
|
5
|
-
export type { BlockScrollLink } from "@commentray/core/block-scroll-pickers";
|
|
6
|
-
export { pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "@commentray/core/block-scroll-pickers";
|
|
5
|
+
export type { BlockScrollLink, BlockScrollStickyState, } from "@commentray/core/block-scroll-pickers";
|
|
6
|
+
export { blockStrictlyContainingSourceViewportLine, commentrayProbeInStrictInterMarkerGap, DEFAULT_COMMENTRAY_VIEWPORT_HYSTERESIS_LINES, DEFAULT_SOURCE_VIEWPORT_HYSTERESIS_LINES, pickBlockScrollLinkForCommentrayScroll, pickBlockScrollLinkForCommentrayViewportWithHysteresis, pickBlockScrollLinkForSourceViewportTop, pickBlockScrollLinkForSourceViewportWithHysteresis, pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, sourceTopLineStrictlyBeforeFirstIndexLine, } from "@commentray/core/block-scroll-pickers";
|
|
7
7
|
/**
|
|
8
8
|
* Maps one pane’s scroll position to the other for **proportional** scroll sync
|
|
9
9
|
* (static code browser). Mirrors the ratio fallback used while editing when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-browser-scroll-sync.d.ts","sourceRoot":"","sources":["../src/code-browser-scroll-sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,
|
|
1
|
+
{"version":3,"file":"code-browser-scroll-sync.d.ts","sourceRoot":"","sources":["../src/code-browser-scroll-sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,yCAAyC,EACzC,qCAAqC,EACrC,4CAA4C,EAC5C,wCAAwC,EACxC,sCAAsC,EACtC,sDAAsD,EACtD,uCAAuC,EACvC,kDAAkD,EAClD,iCAAiC,EACjC,kCAAkC,EAClC,yCAAyC,GAC1C,MAAM,uCAAuC,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAMR"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "@commentray/core/block-scroll-pickers";
|
|
1
|
+
export { blockStrictlyContainingSourceViewportLine, commentrayProbeInStrictInterMarkerGap, DEFAULT_COMMENTRAY_VIEWPORT_HYSTERESIS_LINES, DEFAULT_SOURCE_VIEWPORT_HYSTERESIS_LINES, pickBlockScrollLinkForCommentrayScroll, pickBlockScrollLinkForCommentrayViewportWithHysteresis, pickBlockScrollLinkForSourceViewportTop, pickBlockScrollLinkForSourceViewportWithHysteresis, pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, sourceTopLineStrictlyBeforeFirstIndexLine, } from "@commentray/core/block-scroll-pickers";
|
|
2
2
|
/**
|
|
3
3
|
* Maps one pane’s scroll position to the other for **proportional** scroll sync
|
|
4
4
|
* (static code browser). Mirrors the ratio fallback used while editing when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-browser-scroll-sync.js","sourceRoot":"","sources":["../src/code-browser-scroll-sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"code-browser-scroll-sync.js","sourceRoot":"","sources":["../src/code-browser-scroll-sync.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,yCAAyC,EACzC,qCAAqC,EACrC,4CAA4C,EAC5C,wCAAwC,EACxC,sCAAsC,EACtC,sDAAsD,EACtD,uCAAuC,EACvC,kDAAkD,EAClD,iCAAiC,EACjC,kCAAkC,EAClC,yCAAyC,GAC1C,MAAM,uCAAuC,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,eAAuB,EACvB,kBAA0B,EAC1B,kBAA0B,EAC1B,kBAA0B,EAC1B,kBAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IACvE,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC;IACpE,OAAO,KAAK,GAAG,SAAS,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Historical ceiling for smooth-scroll duration (hash / search helpers may still use `smooth`).
|
|
3
|
+
* Dual-pane block sync uses **instant** partner writes (`applyRevealChildInPane`); partner echo
|
|
4
|
+
* suppression stays above this constant so any remaining smooth paths do not masquerade as driver
|
|
5
|
+
* input mid-gesture.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Ceiling used when sizing partner echo suppression in `code-browser-client` so a smooth
|
|
9
|
+
* programmatic scroll (if any) is not mistaken for user input mid-animation.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SMOOTH_REVEAL_INFLIGHT_DEDUP_MS = 800;
|
|
12
|
+
/** Sub-pixel tolerance — clamp / `getBoundingClientRect` math drifts by less than this between frames. */
|
|
13
|
+
export declare const SMOOTH_REVEAL_TARGET_EPSILON_PX = 0.5;
|
|
14
|
+
export type SmoothRevealInFlight = {
|
|
15
|
+
/** Clamped scrollTop the most recent `scrollTo` was aimed at. */
|
|
16
|
+
target: number;
|
|
17
|
+
/** `performance.now()` at the moment of issue. */
|
|
18
|
+
issuedAt: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* True when `target` essentially equals the last-issued target and the in-flight glide is still
|
|
22
|
+
* within the typical animation duration. The caller should skip its `scrollTo` in that case.
|
|
23
|
+
*/
|
|
24
|
+
export declare function smoothRevealAlreadyInFlight(last: SmoothRevealInFlight | null, target: number, now: number): boolean;
|
|
25
|
+
//# sourceMappingURL=code-browser-smooth-reveal-dedup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-smooth-reveal-dedup.d.ts","sourceRoot":"","sources":["../src/code-browser-smooth-reveal-dedup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,0GAA0G;AAC1G,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,oBAAoB,GAAG,IAAI,EACjC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAIT"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Historical ceiling for smooth-scroll duration (hash / search helpers may still use `smooth`).
|
|
3
|
+
* Dual-pane block sync uses **instant** partner writes (`applyRevealChildInPane`); partner echo
|
|
4
|
+
* suppression stays above this constant so any remaining smooth paths do not masquerade as driver
|
|
5
|
+
* input mid-gesture.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Ceiling used when sizing partner echo suppression in `code-browser-client` so a smooth
|
|
9
|
+
* programmatic scroll (if any) is not mistaken for user input mid-animation.
|
|
10
|
+
*/
|
|
11
|
+
export const SMOOTH_REVEAL_INFLIGHT_DEDUP_MS = 800;
|
|
12
|
+
/** Sub-pixel tolerance — clamp / `getBoundingClientRect` math drifts by less than this between frames. */
|
|
13
|
+
export const SMOOTH_REVEAL_TARGET_EPSILON_PX = 0.5;
|
|
14
|
+
/**
|
|
15
|
+
* True when `target` essentially equals the last-issued target and the in-flight glide is still
|
|
16
|
+
* within the typical animation duration. The caller should skip its `scrollTo` in that case.
|
|
17
|
+
*/
|
|
18
|
+
export function smoothRevealAlreadyInFlight(last, target, now) {
|
|
19
|
+
if (last === null)
|
|
20
|
+
return false;
|
|
21
|
+
if (Math.abs(last.target - target) > SMOOTH_REVEAL_TARGET_EPSILON_PX)
|
|
22
|
+
return false;
|
|
23
|
+
return now - last.issuedAt < SMOOTH_REVEAL_INFLIGHT_DEDUP_MS;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=code-browser-smooth-reveal-dedup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-browser-smooth-reveal-dedup.js","sourceRoot":"","sources":["../src/code-browser-smooth-reveal-dedup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AASnD;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAiC,EACjC,MAAc,EACd,GAAW;IAEX,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,+BAA+B;QAAE,OAAO,KAAK,CAAC;IACnF,OAAO,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,+BAA+B,CAAC;AAC/D,CAAC"}
|
package/dist/code-browser.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type CommentrayIndex } from "@commentray/core";
|
|
2
|
+
import { type StretchBufferSyncStrategy } from "./block-stretch-layout.js";
|
|
2
3
|
import { type CommentrayOutputUrlOptions } from "./markdown-pipeline.js";
|
|
4
|
+
import { type DualPaneScrollSyncStrategyId } from "./code-browser-scroll-sync-strategy.js";
|
|
3
5
|
/** One angle tab for {@link CodeBrowserPageOptions.multiAngleBrowsing}. */
|
|
4
6
|
export type CodeBrowserMultiAngleSpec = {
|
|
5
7
|
id: string;
|
|
@@ -9,9 +11,8 @@ export type CodeBrowserMultiAngleSpec = {
|
|
|
9
11
|
commentrayOnGithubUrl?: string;
|
|
10
12
|
/**
|
|
11
13
|
* When the static site emits per-pair browse pages, same-tab navigation for the Doc toolbar
|
|
12
|
-
* (preferred over {@link commentrayOnGithubUrl} on the hub).
|
|
13
|
-
* `./browse
|
|
14
|
-
* remains valid for the canonical HTML file on disk.
|
|
14
|
+
* (preferred over {@link commentrayOnGithubUrl} on the hub). Paths mirror the companion layout
|
|
15
|
+
* under `./browse/…/index.html` (see `staticBrowseIndexRelPathFromPair` in `@commentray/core`).
|
|
15
16
|
*/
|
|
16
17
|
staticBrowseUrl?: string;
|
|
17
18
|
/**
|
|
@@ -48,8 +49,9 @@ export type CodeBrowserPageOptions = {
|
|
|
48
49
|
*/
|
|
49
50
|
githubRepoUrl?: string;
|
|
50
51
|
/**
|
|
51
|
-
* Same-site URL for the static documentation hub (e.g. `./` on `index.html`,
|
|
52
|
-
*
|
|
52
|
+
* Same-site URL for the static documentation hub (e.g. `./` on `index.html`, or a
|
|
53
|
+
* depth-correct relative path to the hub from nested `browse/…` pages — see static export).
|
|
54
|
+
* When set, the first toolbar control is a **home** link here instead of
|
|
53
55
|
* {@link githubRepoUrl}. Uses the same path safety rules as {@link commentrayStaticBrowseUrl}.
|
|
54
56
|
*/
|
|
55
57
|
siteHubUrl?: string;
|
|
@@ -104,6 +106,18 @@ export type CodeBrowserPageOptions = {
|
|
|
104
106
|
* **block-aware** scroll sync and separator lines in the commentray pane.
|
|
105
107
|
*/
|
|
106
108
|
codeBrowserLayout?: "auto" | "dual";
|
|
109
|
+
/**
|
|
110
|
+
* Stretch layout only. Omitted uses `DEFAULT_STRETCH_BUFFER_SYNC` from `@commentray/core`
|
|
111
|
+
* (`flow-synchronizer`: sync ids + measure wrappers + client `BufferingFlowSynchronizer`).
|
|
112
|
+
* `table`: legacy row height only, no shell flag / client padding pass.
|
|
113
|
+
*/
|
|
114
|
+
stretchBufferSync?: StretchBufferSyncStrategy;
|
|
115
|
+
/**
|
|
116
|
+
* Dual-pane scroll correlation (`#shell data-scroll-sync-strategy`). Strategies are mutually
|
|
117
|
+
* exclusive in the client; omit or set to the default for normal builds. `filler-blocks` is
|
|
118
|
+
* reserved until height-matched buffer layout exists (currently behaves like the default).
|
|
119
|
+
*/
|
|
120
|
+
dualPaneScrollSyncStrategy?: DualPaneScrollSyncStrategyId;
|
|
107
121
|
/**
|
|
108
122
|
* `full` (default): in-page search indexes every source line and every commentray line.
|
|
109
123
|
* `commentray-and-paths`: search only **toolbar path labels** plus commentray Markdown (no code-body line corpus).
|
|
@@ -121,8 +135,8 @@ export type CodeBrowserPageOptions = {
|
|
|
121
135
|
*/
|
|
122
136
|
commentrayOnGithubUrl?: string;
|
|
123
137
|
/**
|
|
124
|
-
* When set (e.g. `./browse/…/index.html
|
|
125
|
-
* the Doc toolbar icon opens this URL on the **same origin** instead of GitHub.
|
|
138
|
+
* When set (e.g. `./browse/…/index.html`, `/browse/…/index.html`, or `./browse/<hash>.html` from
|
|
139
|
+
* the static Pages build), the Doc toolbar icon opens this URL on the **same origin** instead of GitHub.
|
|
126
140
|
*/
|
|
127
141
|
commentrayStaticBrowseUrl?: string;
|
|
128
142
|
/**
|
|
@@ -138,7 +152,8 @@ export type CodeBrowserPageOptions = {
|
|
|
138
152
|
documentedPairsEmbeddedB64?: string;
|
|
139
153
|
/**
|
|
140
154
|
* When **two or more** angles are listed for the same static browse session, the shell renders
|
|
141
|
-
* an Angle selector
|
|
155
|
+
* an Angle selector. If every angle can build a block-stretch table (`layout` `auto`), the shell
|
|
156
|
+
* uses **stretch** (one scroll + row-aligned table); otherwise **dual** panes with client swap.
|
|
142
157
|
*/
|
|
143
158
|
multiAngleBrowsing?: CodeBrowserMultiAngleBrowsing;
|
|
144
159
|
/**
|
|
@@ -154,4 +169,6 @@ export type CodeBrowserPageOptions = {
|
|
|
154
169
|
* token-in-line quick search (all non-whitespace tokens must appear on the same line).
|
|
155
170
|
*/
|
|
156
171
|
export declare function renderCodeBrowserHtml(opts: CodeBrowserPageOptions): Promise<string>;
|
|
172
|
+
export type { DualPaneScrollSyncStrategyId } from "./code-browser-scroll-sync-strategy.js";
|
|
173
|
+
export type { StretchBufferSyncStrategy } from "./block-stretch-layout.js";
|
|
157
174
|
//# sourceMappingURL=code-browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-browser.d.ts","sourceRoot":"","sources":["../src/code-browser.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"code-browser.d.ts","sourceRoot":"","sources":["../src/code-browser.ts"],"names":[],"mappings":"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"}
|