ugly-app 0.1.724 → 0.1.725

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.
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.724";
1
+ export declare const CLI_VERSION = "0.1.725";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.724";
2
+ export const CLI_VERSION = "0.1.725";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MdastViewer.d.ts","sourceRoot":"","sources":["../../../src/markdown/client/MdastViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,OAAO,EAUL,sBAAsB,EAKvB,MAAM,yBAAyB,CAAC;AAKjC,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,CAAC;AA6BtD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,GAAG,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxE,mGAAmG;IACnG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAuGlD;AAmpBD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;;;EAMvD"}
1
+ {"version":3,"file":"MdastViewer.d.ts","sourceRoot":"","sources":["../../../src/markdown/client/MdastViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,OAAO,EAYL,sBAAsB,EAKvB,MAAM,yBAAyB,CAAC;AAKjC,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,CAAC;AAgCtD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,GAAG,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxE,mGAAmG;IACnG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA4GlD;AAwzBD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;;;EAMvD"}
@@ -20,6 +20,7 @@ const MdastViewerContext = createContext({
20
20
  scrollToView: false,
21
21
  isDark: false,
22
22
  onCheckboxToggle: undefined,
23
+ footnoteNumbers: new Map(),
23
24
  });
24
25
  function useMdastViewerData() {
25
26
  return useContext(MdastViewerContext);
@@ -97,6 +98,9 @@ export function MdastViewer(props) {
97
98
  };
98
99
  }, [priorityOffset, shouldScroll, markdown, ast, scrollView]);
99
100
  const themeClass = props.isDark ? 'prosemirror-dark' : 'prosemirror-light';
101
+ // Number footnotes by first-reference order so refs and the Notes list agree
102
+ // (the def list order in the source can differ from citation order).
103
+ const footnoteNumbers = useMemo(() => collectFootnoteOrder(ast), [ast]);
100
104
  return (_jsx(MdastViewerContext.Provider, { value: {
101
105
  width: props.width,
102
106
  textIndex: props.textIndex ?? undefined,
@@ -106,6 +110,7 @@ export function MdastViewer(props) {
106
110
  isDark: props.isDark ?? false,
107
111
  onCheckboxToggle: props.onCheckboxToggle,
108
112
  priorityOffset: props.priorityOffset,
113
+ footnoteNumbers,
109
114
  }, children: _jsx("div", { ref: rootRef, className: `ProseMirror ${themeClass}`, style: {
110
115
  maxWidth: props.width,
111
116
  color: props.color,
@@ -114,6 +119,43 @@ export function MdastViewer(props) {
114
119
  transformOrigin: props.scale ? 'top left' : undefined,
115
120
  }, children: _jsx(MdastNodeRenderer, { node: ast }) }) }));
116
121
  }
122
+ // --- Footnotes ---
123
+ /** Stable DOM ids for footnote ref <-> definition cross-linking. */
124
+ const footnoteDefDomId = (id) => `mdast-fn-${id}`;
125
+ const footnoteRefDomId = (id) => `mdast-fnref-${id}`;
126
+ /**
127
+ * Number footnotes by FIRST-REFERENCE order (the order they're cited in the
128
+ * body), so the inline marker and the Notes list agree even when the source
129
+ * lists the definitions in a different order. Notes that are defined but never
130
+ * referenced are appended after, so each one still gets a number.
131
+ */
132
+ function collectFootnoteOrder(root) {
133
+ const order = new Map();
134
+ const defined = new Set();
135
+ const walk = (node) => {
136
+ if (!node || typeof node !== 'object')
137
+ return;
138
+ const n = node;
139
+ if (n.type === 'footnoteReference' &&
140
+ n.identifier &&
141
+ !order.has(n.identifier)) {
142
+ order.set(n.identifier, order.size + 1);
143
+ }
144
+ if (n.type === 'footnoteDefinition' && n.identifier) {
145
+ defined.add(n.identifier);
146
+ }
147
+ if (Array.isArray(n.children)) {
148
+ for (const child of n.children)
149
+ walk(child);
150
+ }
151
+ };
152
+ walk(root);
153
+ for (const id of defined) {
154
+ if (!order.has(id))
155
+ order.set(id, order.size + 1);
156
+ }
157
+ return order;
158
+ }
117
159
  function MdastNodeRenderer({ node, isHeader }) {
118
160
  const state = useMdastViewerData();
119
161
  // Early return for cropped content
@@ -167,6 +209,10 @@ function MdastNodeRenderer({ node, isHeader }) {
167
209
  return _jsx(MdastMermaidRenderer, { node: node });
168
210
  case 'html':
169
211
  return _jsx(MdastHtmlRenderer, { node: node });
212
+ case 'footnoteReference':
213
+ return _jsx(MdastFootnoteReferenceRenderer, { node: node });
214
+ case 'footnoteDefinition':
215
+ return _jsx(MdastFootnoteDefinitionRenderer, { node: node });
170
216
  default:
171
217
  // Unknown node type - render children if any
172
218
  if ('children' in node && Array.isArray(node.children)) {
@@ -184,37 +230,91 @@ function MdastNodeRenderer({ node, isHeader }) {
184
230
  const ROOT_BATCH_SIZE = 30;
185
231
  /** Number of batches to render on the first paint (viewport + buffer) */
186
232
  const INITIAL_BATCH_COUNT = 4;
187
- /** Number of additional batches to mount per idle frame */
188
- const BATCHES_PER_IDLE = 2;
233
+ /** Estimated batch height used to reserve space for not-yet-mounted batches
234
+ * (matches the content-visibility intrinsic-size estimate below). */
235
+ const PLACEHOLDER_HEIGHT = 600;
189
236
  const batchStyle = {
190
237
  contentVisibility: 'auto',
191
- containIntrinsicSize: 'auto 600px',
192
- };
193
- const placeholderStyle = {
194
- height: 600,
238
+ containIntrinsicSize: `auto ${PLACEHOLDER_HEIGHT}px`,
195
239
  };
196
240
  function MdastRoot({ node }) {
197
241
  const state = useMdastViewerData();
198
242
  if (!('children' in node))
199
243
  return null;
200
- const children = node.children;
201
- if (!children)
244
+ const allChildren = node.children;
245
+ if (!allChildren)
202
246
  return null;
203
- // For small documents, render directly without batching overhead
204
- if (children.length <= ROOT_BATCH_SIZE * 2) {
205
- return (_jsx(_Fragment, { children: children.map((child, i) => (_jsx(MdastNodeRenderer, { node: child }, i))) }));
247
+ // Pull footnote definitions out of the flow and collect them into a single
248
+ // "Notes" section rendered at the end (regardless of where they sit in the
249
+ // source), so they're numbered, ordered, and link back to the citation.
250
+ const children = [];
251
+ const footnoteDefs = [];
252
+ for (const child of allChildren) {
253
+ if (child.type === 'footnoteDefinition') {
254
+ footnoteDefs.push(child);
255
+ }
256
+ else {
257
+ children.push(child);
258
+ }
206
259
  }
260
+ // For small documents, render directly without batching overhead.
261
+ const body = children.length <= ROOT_BATCH_SIZE * 2 ? (_jsx(_Fragment, { children: children.map((child, i) => (_jsx(MdastNodeRenderer, { node: child }, i))) })) : (
207
262
  // For large documents, batch top-level children and apply
208
- // content-visibility: auto so the browser skips layout/paint
209
- // for off-screen sections. Batches mount progressively to
210
- // reduce initial render cost.
211
- return (_jsx(MdastRootBatched, { priorityOffset: state.priorityOffset, children: children }));
263
+ // content-visibility: auto so the browser skips layout/paint for
264
+ // off-screen sections. Batches mount progressively to reduce render cost.
265
+ _jsx(MdastRootBatched, { priorityOffset: state.priorityOffset, children: children }));
266
+ return (_jsxs(_Fragment, { children: [body, footnoteDefs.length > 0 && _jsx(MdastFootnotesSection, { defs: footnoteDefs })] }));
267
+ }
268
+ // --- Footnote renderers ---
269
+ /** Inline citation marker, e.g. text[1] — links down to its Notes entry. */
270
+ function MdastFootnoteReferenceRenderer({ node }) {
271
+ const { footnoteNumbers } = useMdastViewerData();
272
+ const id = node.identifier;
273
+ const num = footnoteNumbers.get(id) ?? '?';
274
+ return (_jsx("sup", { id: footnoteRefDomId(id), className: "mdast-footnote-ref", children: _jsx("a", { href: `#${footnoteDefDomId(id)}`, "aria-label": `Footnote ${num}`, children: num }) }));
275
+ }
276
+ /** A standalone footnote definition (rare — they're normally grouped into the
277
+ * Notes section by MdastRoot). Rendered inline for completeness. */
278
+ function MdastFootnoteDefinitionRenderer({ node }) {
279
+ return _jsx(MdastFootnoteItem, { node: node });
280
+ }
281
+ /** One entry in the Notes list: number · note body · back-link to the text. */
282
+ function MdastFootnoteItem({ node }) {
283
+ const def = node;
284
+ const id = def.identifier;
285
+ return (_jsxs("li", { id: footnoteDefDomId(id), className: "mdast-footnote-def", children: [def.children?.map((child, i) => (_jsx(MdastNodeRenderer, { node: child }, i))), _jsx("a", { href: `#${footnoteRefDomId(id)}`, className: "mdast-footnote-backref", "aria-label": "Back to text", children: ' ↩' })] }));
286
+ }
287
+ /** The "Notes" section: an ordered list of definitions sorted by citation
288
+ * order, so the `<ol>` numbering matches the inline markers. */
289
+ function MdastFootnotesSection({ defs }) {
290
+ const { footnoteNumbers } = useMdastViewerData();
291
+ const ordered = [...defs].sort((a, b) => {
292
+ const an = footnoteNumbers.get(a.identifier) ?? 0;
293
+ const bn = footnoteNumbers.get(b.identifier) ?? 0;
294
+ return an - bn;
295
+ });
296
+ return (_jsxs("section", { className: "mdast-footnotes", "aria-label": "Notes", children: [_jsx("hr", {}), _jsx("ol", { children: ordered.map((def, i) => (_jsx(MdastFootnoteItem, { node: def }, i))) })] }));
212
297
  }
213
298
  function MdastRootBatched(props) {
214
299
  const { children, priorityOffset } = props;
215
300
  const totalBatches = Math.ceil(children.length / ROOT_BATCH_SIZE);
216
- const [mountedCount, setMountedCount] = useState(() => Math.min(INITIAL_BATCH_COUNT, totalBatches));
217
- // Find which batch the priority offset falls into
301
+ // Mount a batch when it nears the viewport (monotonic — once mounted it stays).
302
+ // The previous strategy mounted batches top-down on every idle frame, which
303
+ // grows the document height UNDER the user and makes the scrollbar jump when
304
+ // you scroll toward the bottom. Proximity-mounting settles each batch's real
305
+ // height ~1 viewport ahead of the scroll, so the bar stays stable.
306
+ const [mounted, setMounted] = useState(() => {
307
+ const init = new Set();
308
+ for (let i = 0; i < Math.min(INITIAL_BATCH_COUNT, totalBatches); i++) {
309
+ init.add(i);
310
+ }
311
+ return init;
312
+ });
313
+ const slotRefs = useRef([]);
314
+ // Real measured heights, reused as placeholder reservations so an unmounted
315
+ // batch never mis-estimates its height once it has been seen.
316
+ const heights = useRef([]);
317
+ // Find which batch the priority offset falls into (deep-link / search target).
218
318
  const priorityBatchIndex = useMemo(() => {
219
319
  if (!isDefined(priorityOffset))
220
320
  return -1;
@@ -229,39 +329,61 @@ function MdastRootBatched(props) {
229
329
  }
230
330
  return -1;
231
331
  }, [priorityOffset, totalBatches, children]);
232
- // Progressively mount more batches during idle time
233
332
  useEffect(() => {
234
- if (mountedCount >= totalBatches)
235
- return;
236
- let rafId;
237
- const mountMore = () => {
238
- setMountedCount((prev) => {
239
- const next = Math.min(prev + BATCHES_PER_IDLE, totalBatches);
240
- if (next < totalBatches) {
241
- rafId = requestAnimationFrame(mountMore);
242
- }
243
- return next;
333
+ // Without IntersectionObserver (e.g. SSR/jsdom), fall back to mounting all.
334
+ if (typeof IntersectionObserver === 'undefined') {
335
+ setMounted(() => {
336
+ const all = new Set();
337
+ for (let i = 0; i < totalBatches; i++)
338
+ all.add(i);
339
+ return all;
244
340
  });
245
- };
246
- rafId = requestAnimationFrame(mountMore);
341
+ return undefined;
342
+ }
343
+ const io = new IntersectionObserver((entries) => {
344
+ let added = false;
345
+ const next = new Set();
346
+ for (const entry of entries) {
347
+ if (!entry.isIntersecting)
348
+ continue;
349
+ const idx = Number(entry.target.dataset.batch);
350
+ if (!Number.isNaN(idx)) {
351
+ next.add(idx);
352
+ added = true;
353
+ }
354
+ }
355
+ if (added)
356
+ setMounted((prev) => new Set([...prev, ...next]));
357
+ },
358
+ // Mount ~one viewport ahead so heights settle off-screen.
359
+ { rootMargin: '1200px 0px' });
360
+ for (const el of slotRefs.current)
361
+ if (el)
362
+ io.observe(el);
247
363
  return () => {
248
- cancelAnimationFrame(rafId);
364
+ io.disconnect();
249
365
  };
250
366
  }, [totalBatches]);
367
+ // Remember each mounted batch's real height for stable placeholder sizing.
368
+ useEffect(() => {
369
+ for (let i = 0; i < slotRefs.current.length; i++) {
370
+ const el = slotRefs.current[i];
371
+ if (el && el.childElementCount > 0)
372
+ heights.current[i] = el.offsetHeight;
373
+ }
374
+ });
251
375
  const batches = [];
252
376
  for (let i = 0; i < totalBatches; i++) {
253
377
  const start = i * ROOT_BATCH_SIZE;
254
378
  const end = Math.min(start + ROOT_BATCH_SIZE, children.length);
255
- // Mount if within the progressive count or is the priority batch (± 1 neighbor)
256
379
  const isPriority = priorityBatchIndex >= 0 &&
257
380
  i >= priorityBatchIndex - 1 &&
258
381
  i <= priorityBatchIndex + 1;
259
- if (i < mountedCount || isPriority) {
260
- batches.push(_jsx("div", { style: batchStyle, children: children.slice(start, end).map((child, j) => (_jsx(MdastNodeRenderer, { node: child }, start + j))) }, start));
261
- }
262
- else {
263
- batches.push(_jsx("div", { style: placeholderStyle }, start));
264
- }
382
+ const show = mounted.has(i) || isPriority;
383
+ batches.push(_jsx("div", { "data-batch": i, ref: (el) => {
384
+ slotRefs.current[i] = el;
385
+ }, style: show ? batchStyle : { height: heights.current[i] ?? PLACEHOLDER_HEIGHT }, children: show &&
386
+ children.slice(start, end).map((child, j) => (_jsx(MdastNodeRenderer, { node: child }, start + j))) }, i));
265
387
  }
266
388
  return _jsx(_Fragment, { children: batches });
267
389
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MdastViewer.js","sourceRoot":"","sources":["../../../src/markdown/client/MdastViewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MdastViewer.js","sourceRoot":"","sources":["../../../src/markdown/client/MdastViewer.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.724",
3
+ "version": "0.1.725",
4
4
  "type": "module",
5
5
  "comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
6
6
  "files": [
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.724";
2
+ export const CLI_VERSION = "0.1.725";
@@ -29,6 +29,8 @@ import {
29
29
  } from '../shared/MdastParser.js';
30
30
  import {
31
31
  MdastCode,
32
+ MdastFootnoteDefinition,
33
+ MdastFootnoteReference,
32
34
  MdastHeading,
33
35
  MdastHtml,
34
36
  MdastImage,
@@ -58,6 +60,8 @@ interface MdastViewerContextData {
58
60
  isDark: boolean;
59
61
  onCheckboxToggle?: (position: { line: number; column: number }) => void;
60
62
  priorityOffset?: number;
63
+ /** GFM footnote identifier -> display number (1-based, by first reference). */
64
+ footnoteNumbers: Map<string, number>;
61
65
  }
62
66
 
63
67
  // --- Context ---
@@ -68,6 +72,7 @@ const MdastViewerContext = createContext<MdastViewerContextData>({
68
72
  scrollToView: false,
69
73
  isDark: false,
70
74
  onCheckboxToggle: undefined,
75
+ footnoteNumbers: new Map(),
71
76
  });
72
77
 
73
78
  function useMdastViewerData() {
@@ -170,6 +175,10 @@ export function MdastViewer(props: MdastViewerProps) {
170
175
 
171
176
  const themeClass = props.isDark ? 'prosemirror-dark' : 'prosemirror-light';
172
177
 
178
+ // Number footnotes by first-reference order so refs and the Notes list agree
179
+ // (the def list order in the source can differ from citation order).
180
+ const footnoteNumbers = useMemo(() => collectFootnoteOrder(ast), [ast]);
181
+
173
182
  return (
174
183
  <MdastViewerContext.Provider
175
184
  value={{
@@ -181,6 +190,7 @@ export function MdastViewer(props: MdastViewerProps) {
181
190
  isDark: props.isDark ?? false,
182
191
  onCheckboxToggle: props.onCheckboxToggle,
183
192
  priorityOffset: props.priorityOffset,
193
+ footnoteNumbers,
184
194
  }}
185
195
  >
186
196
  <div
@@ -207,6 +217,51 @@ interface NodeRendererProps {
207
217
  isHeader?: boolean;
208
218
  }
209
219
 
220
+ // --- Footnotes ---
221
+
222
+ /** Stable DOM ids for footnote ref <-> definition cross-linking. */
223
+ const footnoteDefDomId = (id: string): string => `mdast-fn-${id}`;
224
+ const footnoteRefDomId = (id: string): string => `mdast-fnref-${id}`;
225
+
226
+ /**
227
+ * Number footnotes by FIRST-REFERENCE order (the order they're cited in the
228
+ * body), so the inline marker and the Notes list agree even when the source
229
+ * lists the definitions in a different order. Notes that are defined but never
230
+ * referenced are appended after, so each one still gets a number.
231
+ */
232
+ function collectFootnoteOrder(
233
+ root: MdastNodeWithTextIndex,
234
+ ): Map<string, number> {
235
+ const order = new Map<string, number>();
236
+ const defined = new Set<string>();
237
+ const walk = (node: unknown): void => {
238
+ if (!node || typeof node !== 'object') return;
239
+ const n = node as {
240
+ type?: string;
241
+ identifier?: string;
242
+ children?: unknown[];
243
+ };
244
+ if (
245
+ n.type === 'footnoteReference' &&
246
+ n.identifier &&
247
+ !order.has(n.identifier)
248
+ ) {
249
+ order.set(n.identifier, order.size + 1);
250
+ }
251
+ if (n.type === 'footnoteDefinition' && n.identifier) {
252
+ defined.add(n.identifier);
253
+ }
254
+ if (Array.isArray(n.children)) {
255
+ for (const child of n.children) walk(child);
256
+ }
257
+ };
258
+ walk(root);
259
+ for (const id of defined) {
260
+ if (!order.has(id)) order.set(id, order.size + 1);
261
+ }
262
+ return order;
263
+ }
264
+
210
265
  function MdastNodeRenderer({ node, isHeader }: NodeRendererProps): ReactNode {
211
266
  const state = useMdastViewerData();
212
267
 
@@ -264,6 +319,10 @@ function MdastNodeRenderer({ node, isHeader }: NodeRendererProps): ReactNode {
264
319
  return <MdastMermaidRenderer node={node} />;
265
320
  case 'html':
266
321
  return <MdastHtmlRenderer node={node} />;
322
+ case 'footnoteReference':
323
+ return <MdastFootnoteReferenceRenderer node={node} />;
324
+ case 'footnoteDefinition':
325
+ return <MdastFootnoteDefinitionRenderer node={node} />;
267
326
  default:
268
327
  // Unknown node type - render children if any
269
328
  if ('children' in node && Array.isArray(node.children)) {
@@ -291,43 +350,119 @@ const ROOT_BATCH_SIZE = 30;
291
350
  /** Number of batches to render on the first paint (viewport + buffer) */
292
351
  const INITIAL_BATCH_COUNT = 4;
293
352
 
294
- /** Number of additional batches to mount per idle frame */
295
- const BATCHES_PER_IDLE = 2;
353
+ /** Estimated batch height used to reserve space for not-yet-mounted batches
354
+ * (matches the content-visibility intrinsic-size estimate below). */
355
+ const PLACEHOLDER_HEIGHT = 600;
296
356
 
297
357
  const batchStyle: CSSProperties = {
298
358
  contentVisibility: 'auto',
299
- containIntrinsicSize: 'auto 600px',
300
- };
301
-
302
- const placeholderStyle: CSSProperties = {
303
- height: 600,
359
+ containIntrinsicSize: `auto ${PLACEHOLDER_HEIGHT}px`,
304
360
  };
305
361
 
306
362
  function MdastRoot({ node }: NodeRendererProps) {
307
363
  const state = useMdastViewerData();
308
364
  if (!('children' in node)) return null;
309
- const children = node.children;
310
- if (!children) return null;
365
+ const allChildren = node.children;
366
+ if (!allChildren) return null;
367
+
368
+ // Pull footnote definitions out of the flow and collect them into a single
369
+ // "Notes" section rendered at the end (regardless of where they sit in the
370
+ // source), so they're numbered, ordered, and link back to the citation.
371
+ const children: MdastNodeWithTextIndex[] = [];
372
+ const footnoteDefs: MdastNodeWithTextIndex[] = [];
373
+ for (const child of allChildren) {
374
+ if ((child as { type?: string }).type === 'footnoteDefinition') {
375
+ footnoteDefs.push(child as MdastNodeWithTextIndex);
376
+ } else {
377
+ children.push(child as MdastNodeWithTextIndex);
378
+ }
379
+ }
311
380
 
312
- // For small documents, render directly without batching overhead
313
- if (children.length <= ROOT_BATCH_SIZE * 2) {
314
- return (
381
+ // For small documents, render directly without batching overhead.
382
+ const body =
383
+ children.length <= ROOT_BATCH_SIZE * 2 ? (
315
384
  <>
316
385
  {children.map((child, i) => (
317
- <MdastNodeRenderer key={i} node={child as MdastNodeWithTextIndex} />
386
+ <MdastNodeRenderer key={i} node={child} />
318
387
  ))}
319
388
  </>
389
+ ) : (
390
+ // For large documents, batch top-level children and apply
391
+ // content-visibility: auto so the browser skips layout/paint for
392
+ // off-screen sections. Batches mount progressively to reduce render cost.
393
+ <MdastRootBatched priorityOffset={state.priorityOffset}>
394
+ {children}
395
+ </MdastRootBatched>
320
396
  );
321
- }
322
397
 
323
- // For large documents, batch top-level children and apply
324
- // content-visibility: auto so the browser skips layout/paint
325
- // for off-screen sections. Batches mount progressively to
326
- // reduce initial render cost.
327
398
  return (
328
- <MdastRootBatched priorityOffset={state.priorityOffset}>
329
- {children}
330
- </MdastRootBatched>
399
+ <>
400
+ {body}
401
+ {footnoteDefs.length > 0 && <MdastFootnotesSection defs={footnoteDefs} />}
402
+ </>
403
+ );
404
+ }
405
+
406
+ // --- Footnote renderers ---
407
+
408
+ /** Inline citation marker, e.g. text[1] — links down to its Notes entry. */
409
+ function MdastFootnoteReferenceRenderer({ node }: NodeRendererProps) {
410
+ const { footnoteNumbers } = useMdastViewerData();
411
+ const id = (node as MdastFootnoteReference).identifier;
412
+ const num = footnoteNumbers.get(id) ?? '?';
413
+ return (
414
+ <sup id={footnoteRefDomId(id)} className="mdast-footnote-ref">
415
+ <a href={`#${footnoteDefDomId(id)}`} aria-label={`Footnote ${num}`}>
416
+ {num}
417
+ </a>
418
+ </sup>
419
+ );
420
+ }
421
+
422
+ /** A standalone footnote definition (rare — they're normally grouped into the
423
+ * Notes section by MdastRoot). Rendered inline for completeness. */
424
+ function MdastFootnoteDefinitionRenderer({ node }: NodeRendererProps) {
425
+ return <MdastFootnoteItem node={node} />;
426
+ }
427
+
428
+ /** One entry in the Notes list: number · note body · back-link to the text. */
429
+ function MdastFootnoteItem({ node }: NodeRendererProps) {
430
+ const def = node as MdastNodeWithTextIndex<MdastFootnoteDefinition>;
431
+ const id = def.identifier;
432
+ return (
433
+ <li id={footnoteDefDomId(id)} className="mdast-footnote-def">
434
+ {def.children?.map((child, i) => (
435
+ <MdastNodeRenderer key={i} node={child as MdastNodeWithTextIndex} />
436
+ ))}
437
+ <a
438
+ href={`#${footnoteRefDomId(id)}`}
439
+ className="mdast-footnote-backref"
440
+ aria-label="Back to text"
441
+ >
442
+ {' ↩'}
443
+ </a>
444
+ </li>
445
+ );
446
+ }
447
+
448
+ /** The "Notes" section: an ordered list of definitions sorted by citation
449
+ * order, so the `<ol>` numbering matches the inline markers. */
450
+ function MdastFootnotesSection({ defs }: { defs: MdastNodeWithTextIndex[] }) {
451
+ const { footnoteNumbers } = useMdastViewerData();
452
+ const ordered = [...defs].sort((a, b) => {
453
+ const an = footnoteNumbers.get((a as MdastFootnoteDefinition).identifier) ?? 0;
454
+ const bn = footnoteNumbers.get((b as MdastFootnoteDefinition).identifier) ?? 0;
455
+ return an - bn;
456
+ });
457
+ return (
458
+ <section className="mdast-footnotes" aria-label="Notes">
459
+ <hr />
460
+ <ol>
461
+ {ordered.map((def, i) => (
462
+ <MdastFootnoteItem key={i} node={def} />
463
+ ))}
464
+ </ol>
465
+ </section>
331
466
  );
332
467
  }
333
468
 
@@ -337,11 +472,25 @@ function MdastRootBatched(props: {
337
472
  }) {
338
473
  const { children, priorityOffset } = props;
339
474
  const totalBatches = Math.ceil(children.length / ROOT_BATCH_SIZE);
340
- const [mountedCount, setMountedCount] = useState(() =>
341
- Math.min(INITIAL_BATCH_COUNT, totalBatches),
342
- );
343
475
 
344
- // Find which batch the priority offset falls into
476
+ // Mount a batch when it nears the viewport (monotonic once mounted it stays).
477
+ // The previous strategy mounted batches top-down on every idle frame, which
478
+ // grows the document height UNDER the user and makes the scrollbar jump when
479
+ // you scroll toward the bottom. Proximity-mounting settles each batch's real
480
+ // height ~1 viewport ahead of the scroll, so the bar stays stable.
481
+ const [mounted, setMounted] = useState<Set<number>>(() => {
482
+ const init = new Set<number>();
483
+ for (let i = 0; i < Math.min(INITIAL_BATCH_COUNT, totalBatches); i++) {
484
+ init.add(i);
485
+ }
486
+ return init;
487
+ });
488
+ const slotRefs = useRef<(HTMLDivElement | null)[]>([]);
489
+ // Real measured heights, reused as placeholder reservations so an unmounted
490
+ // batch never mis-estimates its height once it has been seen.
491
+ const heights = useRef<number[]>([]);
492
+
493
+ // Find which batch the priority offset falls into (deep-link / search target).
345
494
  const priorityBatchIndex = useMemo(() => {
346
495
  if (!isDefined(priorityOffset)) return -1;
347
496
  for (let i = 0; i < totalBatches; i++) {
@@ -356,47 +505,73 @@ function MdastRootBatched(props: {
356
505
  return -1;
357
506
  }, [priorityOffset, totalBatches, children]);
358
507
 
359
- // Progressively mount more batches during idle time
360
508
  useEffect(() => {
361
- if (mountedCount >= totalBatches) return;
362
-
363
- let rafId: number;
364
- const mountMore = () => {
365
- setMountedCount((prev) => {
366
- const next = Math.min(prev + BATCHES_PER_IDLE, totalBatches);
367
- if (next < totalBatches) {
368
- rafId = requestAnimationFrame(mountMore);
369
- }
370
- return next;
509
+ // Without IntersectionObserver (e.g. SSR/jsdom), fall back to mounting all.
510
+ if (typeof IntersectionObserver === 'undefined') {
511
+ setMounted(() => {
512
+ const all = new Set<number>();
513
+ for (let i = 0; i < totalBatches; i++) all.add(i);
514
+ return all;
371
515
  });
372
- };
373
- rafId = requestAnimationFrame(mountMore);
374
-
516
+ return undefined;
517
+ }
518
+ const io = new IntersectionObserver(
519
+ (entries) => {
520
+ let added = false;
521
+ const next = new Set<number>();
522
+ for (const entry of entries) {
523
+ if (!entry.isIntersecting) continue;
524
+ const idx = Number((entry.target as HTMLElement).dataset.batch);
525
+ if (!Number.isNaN(idx)) {
526
+ next.add(idx);
527
+ added = true;
528
+ }
529
+ }
530
+ if (added) setMounted((prev) => new Set([...prev, ...next]));
531
+ },
532
+ // Mount ~one viewport ahead so heights settle off-screen.
533
+ { rootMargin: '1200px 0px' },
534
+ );
535
+ for (const el of slotRefs.current) if (el) io.observe(el);
375
536
  return () => {
376
- cancelAnimationFrame(rafId);
537
+ io.disconnect();
377
538
  };
378
539
  }, [totalBatches]);
379
540
 
541
+ // Remember each mounted batch's real height for stable placeholder sizing.
542
+ useEffect(() => {
543
+ for (let i = 0; i < slotRefs.current.length; i++) {
544
+ const el = slotRefs.current[i];
545
+ if (el && el.childElementCount > 0) heights.current[i] = el.offsetHeight;
546
+ }
547
+ });
548
+
380
549
  const batches: ReactNode[] = [];
381
550
  for (let i = 0; i < totalBatches; i++) {
382
551
  const start = i * ROOT_BATCH_SIZE;
383
552
  const end = Math.min(start + ROOT_BATCH_SIZE, children.length);
384
- // Mount if within the progressive count or is the priority batch (± 1 neighbor)
385
553
  const isPriority =
386
554
  priorityBatchIndex >= 0 &&
387
555
  i >= priorityBatchIndex - 1 &&
388
556
  i <= priorityBatchIndex + 1;
389
- if (i < mountedCount || isPriority) {
390
- batches.push(
391
- <div key={start} style={batchStyle}>
392
- {children.slice(start, end).map((child, j) => (
557
+ const show = mounted.has(i) || isPriority;
558
+ batches.push(
559
+ <div
560
+ key={i}
561
+ data-batch={i}
562
+ ref={(el) => {
563
+ slotRefs.current[i] = el;
564
+ }}
565
+ style={
566
+ show ? batchStyle : { height: heights.current[i] ?? PLACEHOLDER_HEIGHT }
567
+ }
568
+ >
569
+ {show &&
570
+ children.slice(start, end).map((child, j) => (
393
571
  <MdastNodeRenderer key={start + j} node={child} />
394
572
  ))}
395
- </div>,
396
- );
397
- } else {
398
- batches.push(<div key={start} style={placeholderStyle} />);
399
- }
573
+ </div>,
574
+ );
400
575
  }
401
576
  return <>{batches}</>;
402
577
  }