@medicine-wheel/graph-viz 0.17.9 → 0.17.11

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/README.md CHANGED
@@ -126,8 +126,25 @@ import { LineageWeb } from '@medicine-wheel/graph-viz';
126
126
  | `layout` | `DEFAULT_LINEAGE_WEB_LAYOUT` | Margins, band gap, head and foot room for arcs, minimum step and width |
127
127
  | `startAt` | `'start'` | `'end'` opens scrolled to the newest episodes |
128
128
 
129
+ Moving and reading it by hand (jgwill/medicine-wheel#163):
130
+
131
+ | Gesture | What it does |
132
+ |---------|--------------|
133
+ | Drag the empty canvas (mouse) | Moves along time; a finger scrolls natively. A press without a drag clears the selection |
134
+ | − + Fit, Ctrl/⌘ + wheel, pinch | Zoom, keeping the moment under the pointer in place; Fit puts the whole span in the box |
135
+ | Hover or tap an arc | Lights it and its two ends; the strip names both episodes and shows the relation's words. A tap pins it |
136
+ | ← → | Step along time |
137
+ | ↑ ↓ | Choose one of the selected episode's relations; its words show and its other end scrolls into view |
138
+ | Enter | Follow the chosen relation, or open the selected episode |
139
+ | Esc | Let the relation go, then the selection |
140
+ | − + 0 | Zoom out, in, fit |
141
+
142
+ A new selection scrolls into view, the episode in focus and its relatives are labelled at any size,
143
+ and the band names stay at the left edge.
144
+
129
145
  The geometry is exported without React: `visibleLineage`, `lineageNeighbourhood`,
130
- `layoutLineageWeb`, `lineageArcPath`, `threadChains`.
146
+ `layoutLineageWeb`, `lineageArcPath`, `threadChains`, `lineageWebWidth`, `fitZoom`,
147
+ `zoomScrollLeft`, `stepAlongSpine`, `relationsAround`, `lineageEdgeKey`.
131
148
 
132
149
  ## License
133
150
 
@@ -12,6 +12,13 @@
12
12
  * The options bar chooses the whole chronicle or the selected episode's
13
13
  * relatives, which kinds of relation to draw, and the thread chains.
14
14
  * jgwill/medicine-wheel#162.
15
+ *
16
+ * Moved and read by hand (#163): drag the empty canvas along time; zoom with
17
+ * − + Fit, Ctrl/⌘ + wheel or a pinch, the moment under the pointer staying put;
18
+ * hover or tap an arc for the words that say why the relation holds; ← → step
19
+ * along time, ↑ ↓ choose a relation, Enter follows it or opens the episode,
20
+ * Esc steps back. A new selection scrolls into view, and the band names stay
21
+ * at the left edge.
15
22
  */
16
23
  import React from 'react';
17
24
  import { LINEAGE_BANDS, type LineageWebEdge, type LineageWebEpisode, type LineageWebLayoutConfig, type LineageWebView } from './lineage-web.js';
@@ -27,7 +34,7 @@ export interface LineageWebColors {
27
34
  border: string;
28
35
  /** The lit arcs, the active option, the selection ring. */
29
36
  accent: string;
30
- /** The chip's ground. */
37
+ /** The ground of the band names and the strip. */
31
38
  panel: string;
32
39
  }
33
40
  export declare const DEFAULT_LINEAGE_WEB_COLORS: LineageWebColors;
@@ -38,7 +45,7 @@ export interface LineageWebProps {
38
45
  /** The selected episode. Pass it to control the selection; leave it out to let the web hold it. */
39
46
  selected?: string | null;
40
47
  onSelect?: (id: string | null) => void;
41
- /** A second tap on the selected episode. */
48
+ /** A second tap on the selected episode, or Enter. */
42
49
  onOpen?: (id: string) => void;
43
50
  /** The episodes a search matched, or null when nothing is typed. */
44
51
  matches?: ReadonlySet<string> | null;
@@ -50,17 +57,17 @@ export interface LineageWebProps {
50
57
  onViewChange?: (view: LineageWebView) => void;
51
58
  /** The options bar above the canvas. Default true. */
52
59
  controls?: boolean;
53
- /** A chip naming the hovered or selected episode. Default true. */
60
+ /** The strip under the canvas naming the episode or relation in focus. Default true. */
54
61
  chip?: boolean;
55
62
  colors?: Partial<LineageWebColors>;
56
63
  /** Thread name → colour of its chain. */
57
64
  threadColors?: Record<string, string>;
58
65
  layout?: Partial<LineageWebLayoutConfig>;
59
- /** Where the canvas opens when it is wider than its box. Default `start`. */
66
+ /** Where the canvas opens when it is wider than its box and nothing is selected. Default `start`. */
60
67
  startAt?: 'start' | 'end';
61
68
  /** Words for the band labels, e.g. `{ east: 'East · Waabinong' }`. */
62
69
  bandLabels?: Partial<Record<(typeof LINEAGE_BANDS)[number], string>>;
63
- /** Each episode's `label` beside its dot. `auto` (default) shows them when 40 or fewer episodes are drawn. */
70
+ /** Labels beside the dots. `auto` (default): all when 40 or fewer are drawn, else the episode in focus and its relatives. */
64
71
  labels?: 'auto' | 'always' | 'never';
65
72
  style?: React.CSSProperties;
66
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LineageWeb.d.ts","sourceRoot":"","sources":["../src/LineageWeb.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAA+C,MAAM,OAAO,CAAC;AAEpE,OAAO,EAGL,aAAa,EAMb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,0BAA0B,EAAE,gBAWxC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,oEAAoE;IACpE,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACrC,6FAA6F;IAC7F,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,gFAAgF;IAChF,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC1B,sEAAsE;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,8GAA8G;IAC9G,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAID,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,QAAQ,EAAE,YAAY,EACtB,QAAQ,EACR,MAAM,EACN,OAAc,EACd,SAAiB,EACjB,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,QAAe,EACf,IAAW,EACX,MAAM,EAAE,UAAU,EAClB,YAAiB,EACjB,MAAM,EAAE,UAAU,EAClB,OAAiB,EACjB,UAAe,EACf,MAAe,EACf,KAAK,GACN,EAAE,eAAe,qBAiTjB"}
1
+ {"version":3,"file":"LineageWeb.d.ts","sourceRoot":"","sources":["../src/LineageWeb.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAgE,MAAM,OAAO,CAAC;AAErF,OAAO,EAGL,aAAa,EAWb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,0BAA0B,EAAE,gBAWxC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvC,sDAAsD;IACtD,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,oEAAoE;IACpE,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACrC,6FAA6F;IAC7F,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,gFAAgF;IAChF,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzC,qGAAqG;IACrG,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC1B,sEAAsE;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,6HAA6H;IAC7H,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAQD,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,QAAQ,EAAE,YAAY,EACtB,QAAQ,EACR,MAAM,EACN,OAAc,EACd,SAAiB,EACjB,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,QAAe,EACf,IAAW,EACX,MAAM,EAAE,UAAU,EAClB,YAAiB,EACjB,MAAM,EAAE,UAAU,EAClB,OAAiB,EACjB,UAAe,EACf,MAAe,EACf,KAAK,GACN,EAAE,eAAe,qBA0lBjB"}
@@ -18,6 +18,13 @@ const jsx_runtime_1 = require("react/jsx-runtime");
18
18
  * The options bar chooses the whole chronicle or the selected episode's
19
19
  * relatives, which kinds of relation to draw, and the thread chains.
20
20
  * jgwill/medicine-wheel#162.
21
+ *
22
+ * Moved and read by hand (#163): drag the empty canvas along time; zoom with
23
+ * − + Fit, Ctrl/⌘ + wheel or a pinch, the moment under the pointer staying put;
24
+ * hover or tap an arc for the words that say why the relation holds; ← → step
25
+ * along time, ↑ ↓ choose a relation, Enter follows it or opens the episode,
26
+ * Esc steps back. A new selection scrolls into view, and the band names stay
27
+ * at the left edge.
21
28
  */
22
29
  const react_1 = require("react");
23
30
  const lineage_web_js_1 = require("./lineage-web.js");
@@ -34,6 +41,10 @@ exports.DEFAULT_LINEAGE_WEB_COLORS = {
34
41
  panel: 'var(--mw-card, #12122A)',
35
42
  };
36
43
  const FONT_MONO = 'ui-monospace, SFMono-Regular, Menlo, monospace';
44
+ const MAX_ZOOM = 8;
45
+ const KIND_LABEL = { continuation: 'continues from', relation: 'relates to' };
46
+ // useLayoutEffect warns during server rendering; the scroll it sets only matters in a browser.
47
+ const useIsoLayoutEffect = typeof window === 'undefined' ? react_1.useEffect : react_1.useLayoutEffect;
37
48
  function LineageWeb({ episodes, edges, selected: selectedProp, onSelect, onOpen, matches = null, matchMode = 'kin', view: viewProp, defaultView, onViewChange, controls = true, chip = true, colors: colorsProp, threadColors = {}, layout: layoutProp, startAt = 'start', bandLabels = {}, labels = 'auto', style, }) {
38
49
  const colors = { ...exports.DEFAULT_LINEAGE_WEB_COLORS, ...colorsProp };
39
50
  const [ownSelected, setOwnSelected] = (0, react_1.useState)(null);
@@ -41,8 +52,18 @@ function LineageWeb({ episodes, edges, selected: selectedProp, onSelect, onOpen,
41
52
  const [ownView, setOwnView] = (0, react_1.useState)({ ...lineage_web_js_1.DEFAULT_LINEAGE_VIEW, ...defaultView });
42
53
  const view = viewProp ?? ownView;
43
54
  const [hovered, setHovered] = (0, react_1.useState)(null);
55
+ const [hoveredEdge, setHoveredEdge] = (0, react_1.useState)(null);
56
+ const [pinnedEdge, setPinnedEdge] = (0, react_1.useState)(null);
57
+ const [zoom, setZoom] = (0, react_1.useState)(1);
58
+ const [dragging, setDragging] = (0, react_1.useState)(false);
59
+ const [keyboard, setKeyboard] = (0, react_1.useState)(false);
44
60
  const scroller = (0, react_1.useRef)(null);
61
+ const drag = (0, react_1.useRef)(null);
62
+ const suppressClick = (0, react_1.useRef)(false);
63
+ const anchor = (0, react_1.useRef)(null);
64
+ const revealed = (0, react_1.useRef)(null);
45
65
  const select = (id) => {
66
+ setPinnedEdge(null);
46
67
  if (selectedProp === undefined)
47
68
  setOwnSelected(id);
48
69
  onSelect?.(id);
@@ -54,6 +75,9 @@ function LineageWeb({ episodes, edges, selected: selectedProp, onSelect, onOpen,
54
75
  onViewChange?.(next);
55
76
  };
56
77
  const shown = (0, react_1.useMemo)(() => (0, lineage_web_js_1.visibleLineage)(episodes, edges, { view, focus: selected, matches, matchMode }), [episodes, edges, view, selected, matches, matchMode]);
78
+ const order = (0, react_1.useMemo)(() => shown.episodes.map((e) => e.id), [shown.episodes]);
79
+ const byId = (0, react_1.useMemo)(() => new Map(shown.episodes.map((e) => [e.id, e])), [shown.episodes]);
80
+ const edgeByKey = (0, react_1.useMemo)(() => new Map(shown.edges.map((e) => [(0, lineage_web_js_1.lineageEdgeKey)(e), e])), [shown.edges]);
57
81
  // The canvas fills its box: `layout.minWidth` is a floor, the box's width the fill.
58
82
  const [boxWidth, setBoxWidth] = (0, react_1.useState)(0);
59
83
  (0, react_1.useEffect)(() => {
@@ -64,29 +88,88 @@ function LineageWeb({ episodes, edges, selected: selectedProp, onSelect, onOpen,
64
88
  observer.observe(el);
65
89
  return () => observer.disconnect();
66
90
  }, []);
91
+ const base = { ...lineage_web_js_1.DEFAULT_LINEAGE_WEB_LAYOUT, ...layoutProp };
92
+ const box = boxWidth || base.minWidth;
93
+ const fit = (0, lineage_web_js_1.fitZoom)(shown.episodes.length, box, base);
94
+ const minZoom = Math.min(1, fit);
95
+ const maxZoom = Math.max(MAX_ZOOM, fit * MAX_ZOOM);
96
+ const z = Math.min(maxZoom, Math.max(minZoom, zoom));
67
97
  const layout = (0, react_1.useMemo)(() => (0, lineage_web_js_1.layoutLineageWeb)(shown.episodes, {
68
98
  ...layoutProp,
69
- minWidth: Math.max(layoutProp?.minWidth ?? lineage_web_js_1.DEFAULT_LINEAGE_WEB_LAYOUT.minWidth, boxWidth),
70
- }), [shown.episodes, layoutProp, boxWidth]);
71
- // A month label that would overlap the one before it is left out.
72
- const monthLabels = (0, react_1.useMemo)(() => {
73
- const kept = [];
74
- for (const m of layout.months) {
75
- if (!kept.length || m.x - kept[kept.length - 1].x >= 56)
76
- kept.push(m);
77
- }
78
- return kept;
79
- }, [layout.months]);
80
- const chains = (0, react_1.useMemo)(() => (view.threads ? (0, lineage_web_js_1.threadChains)(shown.episodes) : []), [shown.episodes, view.threads]);
81
- const byId = (0, react_1.useMemo)(() => new Map(shown.episodes.map((e) => [e.id, e])), [shown.episodes]);
82
- const hasThreads = (0, react_1.useMemo)(() => episodes.some((e) => e.thread), [episodes]);
99
+ minStep: base.minStep * z,
100
+ minWidth: Math.max(base.minWidth, boxWidth),
101
+ }),
102
+ // `base` is rebuilt each render from `layoutProp`; its fields are what matter.
103
+ // eslint-disable-next-line react-hooks/exhaustive-deps
104
+ [shown.episodes, layoutProp, boxWidth, z]);
105
+ const wider = layout.width > box + 1;
106
+ // Zooming keeps the moment under the pointer (or the box's middle) in place.
107
+ const zoomTo = (next, pointerX) => {
108
+ const target = Math.min(maxZoom, Math.max(minZoom, next));
109
+ if (Math.abs(target - z) < 1e-6)
110
+ return;
111
+ const el = scroller.current;
112
+ anchor.current = { pointerX: pointerX ?? (el?.clientWidth ?? box) / 2, scrollLeft: el?.scrollLeft ?? 0, oldWidth: layout.width };
113
+ setZoom(target);
114
+ };
115
+ // Zooming in starts from what is on screen: below `fit`, the canvas already fills the box.
116
+ const zoomBy = (factor, pointerX) => zoomTo((factor > 1 ? Math.max(z, fit) : z) * factor, pointerX);
117
+ const zoomByRef = (0, react_1.useRef)(zoomBy);
118
+ zoomByRef.current = zoomBy;
119
+ useIsoLayoutEffect(() => {
120
+ const a = anchor.current;
121
+ const el = scroller.current;
122
+ if (!a || !el)
123
+ return;
124
+ anchor.current = null;
125
+ el.scrollLeft = (0, lineage_web_js_1.zoomScrollLeft)(a.scrollLeft, a.pointerX, a.oldWidth, layout.width, base);
126
+ // eslint-disable-next-line react-hooks/exhaustive-deps
127
+ }, [layout.width]);
128
+ // Ctrl/⌘ + wheel (and a trackpad pinch, which arrives as one) zooms at the pointer.
129
+ // A plain wheel still scrolls the page. React's wheel listener is passive, so this one is added by hand.
130
+ (0, react_1.useEffect)(() => {
131
+ const el = scroller.current;
132
+ if (!el)
133
+ return;
134
+ const onWheel = (event) => {
135
+ if (!(event.ctrlKey || event.metaKey))
136
+ return;
137
+ event.preventDefault();
138
+ const rect = el.getBoundingClientRect();
139
+ zoomByRef.current(Math.exp(-event.deltaY * 0.0025), event.clientX - rect.left);
140
+ };
141
+ el.addEventListener('wheel', onWheel, { passive: false });
142
+ return () => el.removeEventListener('wheel', onWheel);
143
+ }, []);
144
+ // A new selection, or a new set of episodes, scrolls the selection into view.
145
+ // Zoom does not: it keeps its own anchor.
83
146
  (0, react_1.useEffect)(() => {
84
147
  const el = scroller.current;
85
- if (el && startAt === 'end')
148
+ if (!el)
149
+ return;
150
+ const key = `${selected ?? ''}|${order.length}|${order[0] ?? ''}`;
151
+ if (key === revealed.current)
152
+ return;
153
+ const first = revealed.current === null;
154
+ revealed.current = key;
155
+ const p = selected ? layout.positions.get(selected) : undefined;
156
+ if (p) {
157
+ const margin = 48;
158
+ if (p.x < el.scrollLeft + margin || p.x > el.scrollLeft + el.clientWidth - margin) {
159
+ el.scrollTo({ left: Math.max(0, p.x - el.clientWidth / 2), behavior: first ? 'auto' : 'smooth' });
160
+ }
161
+ }
162
+ else if (startAt === 'end') {
86
163
  el.scrollLeft = el.scrollWidth;
87
- }, [layout.width, startAt]);
88
- const focus = hovered ?? selected;
164
+ }
165
+ }, [selected, order, layout, startAt]);
166
+ // What is in focus: a hovered episode, else a hovered or pinned relation, else the selection.
167
+ const edgeKeyInFocus = hovered ? null : (hoveredEdge ?? pinnedEdge);
168
+ const edgeInFocus = edgeKeyInFocus ? edgeByKey.get(edgeKeyInFocus) ?? null : null;
169
+ const focus = edgeInFocus ? null : (hovered ?? selected);
89
170
  const near = (0, react_1.useMemo)(() => {
171
+ if (edgeInFocus)
172
+ return new Set([edgeInFocus.from, edgeInFocus.to]);
90
173
  if (!focus || !byId.has(focus))
91
174
  return null;
92
175
  const set = new Set([focus]);
@@ -97,72 +180,233 @@ function LineageWeb({ episodes, edges, selected: selectedProp, onSelect, onOpen,
97
180
  set.add(e.from);
98
181
  }
99
182
  return set;
100
- }, [focus, byId, shown.edges]);
183
+ }, [edgeInFocus, focus, byId, shown.edges]);
184
+ const anyFocus = near !== null;
185
+ // A month label that would overlap the one before it is left out.
186
+ const monthLabels = (0, react_1.useMemo)(() => {
187
+ const kept = [];
188
+ for (const m of layout.months) {
189
+ if (!kept.length || m.x - kept[kept.length - 1].x >= 56)
190
+ kept.push(m);
191
+ }
192
+ return kept;
193
+ }, [layout.months]);
194
+ const chains = (0, react_1.useMemo)(() => (view.threads ? (0, lineage_web_js_1.threadChains)(shown.episodes) : []), [shown.episodes, view.threads]);
195
+ const hasThreads = (0, react_1.useMemo)(() => episodes.some((e) => e.thread), [episodes]);
101
196
  const colorOf = (direction) => direction && lineage_web_js_1.LINEAGE_BANDS.includes(direction)
102
197
  ? colors[direction]
103
198
  : colors.undirected;
104
199
  const tap = (id) => {
105
- if (selected === id)
200
+ if (suppressClick.current)
201
+ return;
202
+ if (selected === id && !pinnedEdge)
106
203
  onOpen?.(id);
107
204
  else
108
205
  select(id);
109
206
  };
110
- const active = focus ? byId.get(focus) ?? null : null;
111
- const showLabels = labels === 'always' || (labels === 'auto' && shown.episodes.length <= 40);
207
+ const scrollIntoView = (id) => {
208
+ const el = scroller.current;
209
+ const p = layout.positions.get(id);
210
+ if (!el || !p)
211
+ return;
212
+ if (p.x < el.scrollLeft + 48 || p.x > el.scrollLeft + el.clientWidth - 48) {
213
+ el.scrollTo({ left: Math.max(0, p.x - el.clientWidth / 2), behavior: 'smooth' });
214
+ }
215
+ };
216
+ // ── Drag the empty canvas along time (a mouse; a finger already scrolls) ──
217
+ const onPointerDown = (event) => {
218
+ setKeyboard(false);
219
+ if (event.pointerType !== 'mouse' || event.button !== 0)
220
+ return;
221
+ if (event.target.closest?.('[data-episode]'))
222
+ return;
223
+ const el = scroller.current;
224
+ if (!el)
225
+ return;
226
+ drag.current = { x: event.clientX, left: el.scrollLeft, moved: false, pointer: event.pointerId };
227
+ };
228
+ const onPointerMove = (event) => {
229
+ const d = drag.current;
230
+ const el = scroller.current;
231
+ if (!d || !el)
232
+ return;
233
+ const dx = event.clientX - d.x;
234
+ if (!d.moved && Math.abs(dx) > 4) {
235
+ d.moved = true;
236
+ el.setPointerCapture?.(d.pointer);
237
+ setDragging(true);
238
+ setHovered(null);
239
+ setHoveredEdge(null);
240
+ }
241
+ if (d.moved)
242
+ el.scrollLeft = d.left - dx;
243
+ };
244
+ const endDrag = () => {
245
+ const d = drag.current;
246
+ drag.current = null;
247
+ if (!d?.moved)
248
+ return;
249
+ setDragging(false);
250
+ // The click that ends a drag is not a click on the canvas.
251
+ suppressClick.current = true;
252
+ setTimeout(() => (suppressClick.current = false), 0);
253
+ };
254
+ // ── Keys: walk the lineage ──
255
+ const onKeyDown = (event) => {
256
+ const current = selected && byId.has(selected) ? selected : null;
257
+ switch (event.key) {
258
+ case 'ArrowRight':
259
+ case 'ArrowLeft': {
260
+ const next = (0, lineage_web_js_1.stepAlongSpine)(order, current, event.key === 'ArrowRight' ? 1 : -1);
261
+ if (next)
262
+ select(next);
263
+ break;
264
+ }
265
+ case 'ArrowDown':
266
+ case 'ArrowUp': {
267
+ if (!current)
268
+ return;
269
+ const keys = (0, lineage_web_js_1.relationsAround)(current, shown.edges, order).map(lineage_web_js_1.lineageEdgeKey);
270
+ if (!keys.length)
271
+ break;
272
+ const at = pinnedEdge ? keys.indexOf(pinnedEdge) : -1;
273
+ const next = event.key === 'ArrowDown' ? (at + 1) % keys.length : at <= 0 ? keys.length - 1 : at - 1;
274
+ setPinnedEdge(keys[next]);
275
+ const e = edgeByKey.get(keys[next]);
276
+ if (e)
277
+ scrollIntoView(e.from === current ? e.to : e.from);
278
+ break;
279
+ }
280
+ case 'Enter': {
281
+ if (current && edgeInFocus && (edgeInFocus.from === current || edgeInFocus.to === current)) {
282
+ select(edgeInFocus.from === current ? edgeInFocus.to : edgeInFocus.from);
283
+ }
284
+ else if (current) {
285
+ onOpen?.(current);
286
+ }
287
+ else
288
+ return;
289
+ break;
290
+ }
291
+ case 'Escape':
292
+ if (pinnedEdge)
293
+ setPinnedEdge(null);
294
+ else if (selected)
295
+ select(null);
296
+ else
297
+ return;
298
+ break;
299
+ case '+':
300
+ case '=':
301
+ zoomBy(1.5);
302
+ break;
303
+ case '-':
304
+ case '_':
305
+ zoomBy(1 / 1.5);
306
+ break;
307
+ case '0':
308
+ zoomTo(fit);
309
+ break;
310
+ default:
311
+ return;
312
+ }
313
+ // The keys lead now: a pointer resting on a dot or an arc no longer overrides them.
314
+ setHovered(null);
315
+ setHoveredEdge(null);
316
+ setKeyboard(true);
317
+ event.preventDefault();
318
+ };
319
+ const showAllLabels = labels === 'always' || (labels === 'auto' && shown.episodes.length <= 40);
320
+ const labelled = (id) => labels !== 'never' && (showAllLabels || id === selected || (near?.has(id) ?? false));
112
321
  const relatives = shown.found ? shown.episodes.length - shown.found.size : 0;
113
322
  const summary = shown.found
114
323
  ? `${shown.found.size} found · ${relatives} related · ${shown.edges.length} relations`
115
324
  : `${shown.episodes.length} episodes · ${shown.edges.length} relations`;
116
- const option = (on) => ({
325
+ const active = !edgeInFocus && focus ? byId.get(focus) ?? null : null;
326
+ const option = (on, enabled = true) => ({
117
327
  padding: '3px 10px',
118
328
  borderRadius: 999,
119
329
  fontSize: 12,
120
330
  fontFamily: 'inherit',
121
- cursor: 'pointer',
331
+ cursor: enabled ? 'pointer' : 'default',
122
332
  background: 'transparent',
123
333
  color: on ? colors.text : colors.muted,
124
334
  border: `1px solid ${on ? colors.accent : colors.border}`,
125
335
  fontWeight: on ? 700 : 500,
126
336
  whiteSpace: 'nowrap',
337
+ opacity: enabled ? 1 : 0.4,
127
338
  });
128
- const kindLabel = { continuation: 'continues from', relation: 'relates to' };
129
- return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 8, minWidth: 0, ...style }, children: [controls && ((0, jsx_runtime_1.jsxs)("div", { role: "toolbar", "aria-label": "Lineage view", style: { display: 'flex', gap: 6, flexWrap: 'wrap', alignItems: 'center', fontSize: 12, color: colors.muted }, children: [(0, jsx_runtime_1.jsx)("button", { type: "button", "aria-pressed": view.scope === 'all', style: option(view.scope === 'all'), onClick: () => changeView({ scope: 'all' }), children: "Whole chronicle" }), (0, jsx_runtime_1.jsx)("button", { type: "button", "aria-pressed": view.scope === 'around', style: option(view.scope === 'around'), onClick: () => changeView({ scope: 'around' }), title: "The selected episode and the episodes related to it", children: "Around the selected episode" }), (0, jsx_runtime_1.jsx)("button", { type: "button", style: option(view.depth === 2), "aria-pressed": view.depth === 2, onClick: () => changeView({ depth: view.depth === 2 ? 1 : 2 }), title: "How far relatives reach, around an episode and in a search", children: view.depth === 2 ? '2 steps' : '1 step' }), (0, jsx_runtime_1.jsx)("span", { style: { width: 1, height: 16, background: colors.border, margin: '0 4px' } }), ['continuation', 'relation'].map((kind) => ((0, jsx_runtime_1.jsxs)("button", { type: "button", "aria-pressed": view.kinds[kind], style: option(view.kinds[kind]), onClick: () => changeView({ kinds: { ...view.kinds, [kind]: !view.kinds[kind] } }), children: [(0, jsx_runtime_1.jsx)("svg", { width: 18, height: 8, "aria-hidden": true, style: { display: 'inline-block', marginRight: 6, verticalAlign: 'middle' }, children: (0, jsx_runtime_1.jsx)("line", { x1: 1, y1: 4, x2: 17, y2: 4, stroke: "currentColor", strokeWidth: 1.6, strokeDasharray: kind === 'relation' ? '3 3' : undefined }) }), kindLabel[kind]] }, kind))), hasThreads && ((0, jsx_runtime_1.jsx)("button", { type: "button", "aria-pressed": view.threads, style: option(view.threads), onClick: () => changeView({ threads: !view.threads }), children: "threads" })), (0, jsx_runtime_1.jsx)("span", { style: { marginLeft: 'auto', fontFamily: FONT_MONO, fontSize: 11 }, children: summary })] })), (0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', minWidth: 0 }, children: [(0, jsx_runtime_1.jsx)("div", { ref: scroller, style: { overflowX: 'auto' }, children: (0, jsx_runtime_1.jsxs)("svg", { width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, role: "img", "aria-label": `${summary}, in chronicle order`, style: { display: 'block', maxWidth: 'none' }, onClick: (event) => {
130
- if (event.target === event.currentTarget)
339
+ const separator = (0, jsx_runtime_1.jsx)("span", { style: { width: 1, height: 16, background: colors.border, margin: '0 4px' } });
340
+ const mark = (e, fallback) => ((0, jsx_runtime_1.jsx)("span", { style: { fontFamily: FONT_MONO, fontWeight: 700, color: colorOf(e?.direction) }, children: e?.label ?? fallback }));
341
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 8, minWidth: 0, ...style }, children: [controls && ((0, jsx_runtime_1.jsxs)("div", { role: "toolbar", "aria-label": "Lineage view", style: { display: 'flex', gap: 6, flexWrap: 'wrap', alignItems: 'center', fontSize: 12, color: colors.muted }, children: [(0, jsx_runtime_1.jsx)("button", { type: "button", "aria-pressed": view.scope === 'all', style: option(view.scope === 'all'), onClick: () => changeView({ scope: 'all' }), children: "Whole chronicle" }), (0, jsx_runtime_1.jsx)("button", { type: "button", "aria-pressed": view.scope === 'around', style: option(view.scope === 'around'), onClick: () => changeView({ scope: 'around' }), title: "The selected episode and the episodes related to it", children: "Around the selected episode" }), (0, jsx_runtime_1.jsx)("button", { type: "button", style: option(view.depth === 2), "aria-pressed": view.depth === 2, onClick: () => changeView({ depth: view.depth === 2 ? 1 : 2 }), title: "How far relatives reach, around an episode and in a search", children: view.depth === 2 ? '2 steps' : '1 step' }), separator, ['continuation', 'relation'].map((kind) => ((0, jsx_runtime_1.jsxs)("button", { type: "button", "aria-pressed": view.kinds[kind], style: option(view.kinds[kind]), onClick: () => changeView({ kinds: { ...view.kinds, [kind]: !view.kinds[kind] } }), children: [(0, jsx_runtime_1.jsx)("svg", { width: 18, height: 8, "aria-hidden": true, style: { display: 'inline-block', marginRight: 6, verticalAlign: 'middle' }, children: (0, jsx_runtime_1.jsx)("line", { x1: 1, y1: 4, x2: 17, y2: 4, stroke: "currentColor", strokeWidth: 1.6, strokeDasharray: kind === 'relation' ? '3 3' : undefined }) }), KIND_LABEL[kind]] }, kind))), hasThreads && ((0, jsx_runtime_1.jsx)("button", { type: "button", "aria-pressed": view.threads, style: option(view.threads), onClick: () => changeView({ threads: !view.threads }), children: "threads" })), separator, (0, jsx_runtime_1.jsxs)("span", { role: "group", "aria-label": "Zoom", style: { display: 'inline-flex', gap: 4 }, children: [(0, jsx_runtime_1.jsx)("button", { type: "button", "aria-label": "Zoom out", title: "Zoom out (\u2212)", disabled: !wider, style: option(false, wider), onClick: () => zoomBy(1 / 1.5), children: "\u2212" }), (0, jsx_runtime_1.jsx)("button", { type: "button", "aria-label": "Zoom in", title: "Zoom in (+)", disabled: z >= maxZoom, style: option(false, z < maxZoom), onClick: () => zoomBy(1.5), children: "+" }), (0, jsx_runtime_1.jsx)("button", { type: "button", title: "The whole span in the box (0)", disabled: !wider, style: option(false, wider), onClick: () => zoomTo(fit), children: "Fit" })] }), (0, jsx_runtime_1.jsx)("span", { style: { marginLeft: 'auto', fontFamily: FONT_MONO, fontSize: 11 }, children: summary })] })), (0, jsx_runtime_1.jsxs)("div", { role: "group", "aria-label": "Lineage web. Left and right arrows step along time, up and down choose a relation, Enter follows it or opens the episode, Escape steps back, minus, plus and 0 zoom.", tabIndex: 0, onKeyDown: onKeyDown, onBlur: () => setKeyboard(false), style: {
342
+ position: 'relative',
343
+ minWidth: 0,
344
+ outline: keyboard ? `2px solid ${colors.accent}` : 'none',
345
+ outlineOffset: 2,
346
+ borderRadius: 4,
347
+ }, children: [(0, jsx_runtime_1.jsx)("div", { ref: scroller, onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: endDrag, onPointerCancel: endDrag, style: { overflowX: 'auto', cursor: dragging ? 'grabbing' : wider ? 'grab' : 'default', userSelect: 'none' }, children: (0, jsx_runtime_1.jsxs)("svg", { width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, role: "img", "aria-label": `${summary}, in chronicle order`, style: { display: 'block', maxWidth: 'none' }, onClick: (event) => {
348
+ if (suppressClick.current || event.target !== event.currentTarget)
349
+ return;
350
+ if (pinnedEdge)
351
+ setPinnedEdge(null);
352
+ else
131
353
  select(null);
132
- }, children: [lineage_web_js_1.LINEAGE_BANDS.map((band) => ((0, jsx_runtime_1.jsxs)("g", { pointerEvents: "none", children: [(0, jsx_runtime_1.jsx)("line", { x1: 0, x2: layout.width, y1: layout.bandY[band], y2: layout.bandY[band], stroke: colors.border, strokeWidth: 1, strokeDasharray: "2 8" }), (0, jsx_runtime_1.jsx)("text", { x: 10, y: layout.bandY[band] - 22, fill: colors[band], fontSize: 11, fontFamily: FONT_MONO, children: bandLabels[band] ?? band })] }, band))), monthLabels.map((m) => ((0, jsx_runtime_1.jsx)("text", { x: m.x, y: layout.height - 7, textAnchor: m.x > layout.width - 60 ? 'end' : 'start', fontSize: 10, fontFamily: FONT_MONO, fill: colors.muted, pointerEvents: "none", children: m.label }, m.label))), chains.map((c) => {
354
+ }, children: [lineage_web_js_1.LINEAGE_BANDS.map((band) => ((0, jsx_runtime_1.jsx)("line", { x1: 0, x2: layout.width, y1: layout.bandY[band], y2: layout.bandY[band], stroke: colors.border, strokeWidth: 1, strokeDasharray: "2 8", pointerEvents: "none" }, band))), monthLabels.map((m) => ((0, jsx_runtime_1.jsx)("text", { x: m.x, y: layout.height - 7, textAnchor: m.x > layout.width - 60 ? 'end' : 'start', fontSize: 10, fontFamily: FONT_MONO, fill: colors.muted, pointerEvents: "none", children: m.label }, m.label))), chains.map((c) => {
133
355
  const a = layout.positions.get(c.from);
134
356
  const b = layout.positions.get(c.to);
135
357
  if (!a || !b)
136
358
  return null;
137
- return ((0, jsx_runtime_1.jsx)("line", { x1: a.x, y1: a.y, x2: b.x, y2: b.y, stroke: threadColors[c.thread] ?? colors.muted, strokeWidth: 0.6, opacity: focus ? 0.08 : 0.2, pointerEvents: "none" }, `t:${c.from}:${c.to}`));
359
+ return ((0, jsx_runtime_1.jsx)("line", { x1: a.x, y1: a.y, x2: b.x, y2: b.y, stroke: threadColors[c.thread] ?? colors.muted, strokeWidth: 0.6, opacity: anyFocus ? 0.08 : 0.2, pointerEvents: "none" }, `t:${c.from}:${c.to}`));
138
360
  }), shown.edges.map((e, i) => {
139
361
  const a = layout.positions.get(e.from);
140
362
  const b = layout.positions.get(e.to);
141
363
  if (!a || !b)
142
364
  return null;
143
- const lit = focus !== null && (e.from === focus || e.to === focus);
144
- const from = byId.get(e.from);
145
- return ((0, jsx_runtime_1.jsx)("path", { d: (0, lineage_web_js_1.lineageArcPath)(a, b, e.kind, layout), fill: "none", stroke: lit ? colors.accent : colorOf(from?.direction), strokeWidth: lit ? 2 : 1.2, strokeDasharray: e.kind === 'relation' ? '4 3' : undefined, opacity: lit ? 1 : focus ? 0.1 : e.kind === 'continuation' ? 0.55 : 0.4, pointerEvents: "none", children: e.words && (0, jsx_runtime_1.jsx)("title", { children: e.words }) }, e.id ?? `${e.from}:${e.kind}:${e.to}:${i}`));
365
+ const key = (0, lineage_web_js_1.lineageEdgeKey)(e);
366
+ const lit = edgeInFocus ? key === edgeKeyInFocus : focus !== null && (e.from === focus || e.to === focus);
367
+ const d = (0, lineage_web_js_1.lineageArcPath)(a, b, e.kind, layout);
368
+ return ((0, jsx_runtime_1.jsxs)("g", { children: [(0, jsx_runtime_1.jsx)("path", { d: d, fill: "none", stroke: lit ? colors.accent : colorOf(byId.get(e.from)?.direction), strokeWidth: lit ? (key === edgeKeyInFocus ? 2.6 : 2) : 1.2, strokeDasharray: e.kind === 'relation' ? '4 3' : undefined, opacity: lit ? 1 : anyFocus ? 0.1 : e.kind === 'continuation' ? 0.55 : 0.4, pointerEvents: "none" }), (0, jsx_runtime_1.jsx)("path", { "data-edge": true, d: d, fill: "none", stroke: "transparent", strokeWidth: 12, pointerEvents: "stroke", style: { cursor: 'pointer' }, onMouseEnter: () => !drag.current?.moved && setHoveredEdge(key), onMouseLeave: () => setHoveredEdge(null), onClick: (event) => {
369
+ event.stopPropagation();
370
+ if (suppressClick.current)
371
+ return;
372
+ setPinnedEdge((current) => (current === key ? null : key));
373
+ }, children: (0, jsx_runtime_1.jsx)("title", { children: `${byId.get(e.from)?.label ?? e.from} ${KIND_LABEL[e.kind]} ${byId.get(e.to)?.label ?? e.to}${e.words ? ` — ${e.words}` : ''}` }) })] }, `${key}:${i}`));
146
374
  }), shown.episodes.map((episode) => {
147
375
  const p = layout.positions.get(episode.id);
148
376
  const color = colorOf(episode.direction);
149
377
  const relative = shown.found !== null && !shown.found.has(episode.id);
150
378
  const dim = shown.faded.has(episode.id) || (near !== null && !near.has(episode.id));
151
379
  const isSelected = episode.id === selected;
152
- return ((0, jsx_runtime_1.jsxs)("g", { transform: `translate(${p.x} ${p.y})`, style: { cursor: 'pointer' }, opacity: dim ? 0.25 : 1, onClick: () => tap(episode.id), onMouseEnter: () => setHovered(episode.id), onMouseLeave: () => setHovered(null), children: [(0, jsx_runtime_1.jsx)("title", { children: `${episode.label} · ${episode.title ?? episode.id}${relative ? ' (related)' : ''}` }), (0, jsx_runtime_1.jsx)("circle", { r: 10, fill: "transparent" }), episode.id === focus && (0, jsx_runtime_1.jsx)("circle", { r: 11, fill: color, opacity: 0.22 }), relative ? ((0, jsx_runtime_1.jsx)("circle", { r: 4.5, fill: "none", stroke: color, strokeWidth: 1.6 })) : ((0, jsx_runtime_1.jsx)("circle", { r: isSelected ? 6 : 4, fill: color })), isSelected && (0, jsx_runtime_1.jsx)("circle", { r: 8.5, fill: "none", stroke: colors.text, strokeWidth: 1.4 }), showLabels && (
380
+ const isFocus = episode.id === focus || (edgeInFocus !== null && near?.has(episode.id));
381
+ const atRight = p.x > layout.width - 48;
382
+ return ((0, jsx_runtime_1.jsxs)("g", { "data-episode": true, transform: `translate(${p.x} ${p.y})`, style: { cursor: 'pointer' }, opacity: dim ? 0.25 : 1, onClick: () => tap(episode.id), onMouseEnter: () => !drag.current?.moved && setHovered(episode.id), onMouseLeave: () => setHovered(null), children: [(0, jsx_runtime_1.jsx)("title", { children: `${episode.label} · ${episode.title ?? episode.id}${relative ? ' (related)' : ''}` }), (0, jsx_runtime_1.jsx)("circle", { r: 10, fill: "transparent" }), isFocus && (0, jsx_runtime_1.jsx)("circle", { r: 11, fill: color, opacity: 0.22 }), relative ? ((0, jsx_runtime_1.jsx)("circle", { r: 4.5, fill: "none", stroke: color, strokeWidth: 1.6 })) : ((0, jsx_runtime_1.jsx)("circle", { r: isSelected ? 6 : 4, fill: color })), isSelected && (0, jsx_runtime_1.jsx)("circle", { r: 8.5, fill: "none", stroke: colors.text, strokeWidth: 1.4 }), labelled(episode.id) && (
153
383
  // Near the right edge the label sits to the left of its dot, inside the canvas.
154
- (0, jsx_runtime_1.jsx)("text", { x: p.x > layout.width - 48 ? -7 : 7, y: -8, textAnchor: p.x > layout.width - 48 ? 'end' : 'start', fontSize: 10, fontFamily: FONT_MONO, fill: colors.muted, pointerEvents: "none", children: episode.label }))] }, episode.id));
155
- })] }) }), chip && active && ((0, jsx_runtime_1.jsxs)("div", { style: {
156
- position: 'absolute',
157
- left: 12,
158
- bottom: 30,
159
- maxWidth: 320,
160
- background: colors.panel,
161
- border: `1px solid ${colors.border}`,
162
- borderLeft: `3px solid ${colorOf(active.direction)}`,
163
- borderRadius: 10,
164
- padding: '10px 12px',
165
- pointerEvents: 'none',
166
- }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: 8, marginBottom: 4, fontSize: 11, color: colors.muted }, children: [(0, jsx_runtime_1.jsx)("span", { style: { fontFamily: FONT_MONO, fontWeight: 700, color: colorOf(active.direction) }, children: active.label }), active.date && (0, jsx_runtime_1.jsx)("span", { style: { fontFamily: FONT_MONO }, children: active.date }), active.caption && (0, jsx_runtime_1.jsx)("span", { style: { marginLeft: 'auto' }, children: active.caption })] }), (0, jsx_runtime_1.jsx)("div", { style: { fontSize: 14, fontWeight: 800, lineHeight: 1.2, color: colors.text }, children: active.title ?? active.id }), shown.found && !shown.found.has(active.id) && ((0, jsx_runtime_1.jsx)("div", { style: { fontSize: 11, color: colors.muted, marginTop: 4 }, children: "related to an episode the search found" }))] }))] })] }));
384
+ (0, jsx_runtime_1.jsx)("text", { x: atRight ? -7 : 7, y: -8, textAnchor: atRight ? 'end' : 'start', fontSize: 10, fontFamily: FONT_MONO, fill: isFocus || isSelected ? colors.text : colors.muted, pointerEvents: "none", children: episode.label }))] }, episode.id));
385
+ })] }) }), (0, jsx_runtime_1.jsx)("div", { "aria-hidden": true, style: { position: 'absolute', left: 0, top: 0, pointerEvents: 'none' }, children: lineage_web_js_1.LINEAGE_BANDS.map((band) => ((0, jsx_runtime_1.jsx)("div", { style: {
386
+ position: 'absolute',
387
+ left: 6,
388
+ top: layout.bandY[band] - 33,
389
+ fontSize: 11,
390
+ lineHeight: '14px',
391
+ fontFamily: FONT_MONO,
392
+ color: colors[band],
393
+ background: colors.panel,
394
+ padding: '1px 5px',
395
+ borderRadius: 4,
396
+ whiteSpace: 'nowrap',
397
+ }, children: bandLabels[band] ?? band }, band))) })] }), chip && ((0, jsx_runtime_1.jsx)("div", { "aria-live": "polite", style: {
398
+ minHeight: 42,
399
+ display: 'flex',
400
+ flexWrap: 'wrap',
401
+ alignItems: 'baseline',
402
+ columnGap: 10,
403
+ rowGap: 2,
404
+ padding: '6px 4px 4px',
405
+ borderTop: `1px solid ${colors.border}`,
406
+ borderLeft: `3px solid ${edgeInFocus ? colors.accent : active ? colorOf(active.direction) : 'transparent'}`,
407
+ paddingLeft: 10,
408
+ fontSize: 11,
409
+ color: colors.muted,
410
+ }, children: edgeInFocus ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [mark(byId.get(edgeInFocus.from), edgeInFocus.from), (0, jsx_runtime_1.jsx)("span", { style: { fontSize: 13, fontWeight: 700, color: colors.text }, children: byId.get(edgeInFocus.from)?.title ?? edgeInFocus.from }), (0, jsx_runtime_1.jsx)("span", { style: { fontStyle: 'italic' }, children: KIND_LABEL[edgeInFocus.kind] }), mark(byId.get(edgeInFocus.to), edgeInFocus.to), (0, jsx_runtime_1.jsx)("span", { style: { fontSize: 13, fontWeight: 700, color: colors.text }, children: byId.get(edgeInFocus.to)?.title ?? edgeInFocus.to }), (0, jsx_runtime_1.jsx)("span", { style: { flexBasis: '100%', fontSize: 12.5, lineHeight: 1.45, color: edgeInFocus.words ? colors.text : colors.muted }, children: edgeInFocus.words ?? 'No words say why this relation holds yet.' }), pinnedEdge && !hoveredEdge && ((0, jsx_runtime_1.jsx)("span", { style: { flexBasis: '100%' }, children: "Enter follows it \u00B7 Esc or a tap on the canvas lets it go" }))] })) : active ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [mark(active, active.id), active.date && (0, jsx_runtime_1.jsx)("span", { style: { fontFamily: FONT_MONO }, children: active.date }), (0, jsx_runtime_1.jsx)("span", { style: { fontSize: 13.5, fontWeight: 800, lineHeight: 1.25, color: colors.text }, children: active.title ?? active.id }), active.caption && (0, jsx_runtime_1.jsx)("span", { children: active.caption }), shown.found && !shown.found.has(active.id) && (0, jsx_runtime_1.jsx)("span", { children: "related to an episode the search found" })] })) : ((0, jsx_runtime_1.jsx)("span", { children: "Hover or tap an episode to name it, again to open it; hover an arc for why it holds. Drag the canvas along time; Ctrl + wheel or \u2212 + to zoom; arrow keys walk the lineage." })) }))] }));
167
411
  }
168
412
  //# sourceMappingURL=LineageWeb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LineageWeb.js","sourceRoot":"","sources":["../src/LineageWeb.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LineageWeb.js","sourceRoot":"","sources":["../src/LineageWeb.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  export { MedicineWheelGraph } from './MedicineWheelGraph.js';
11
11
  export { LineageWeb, DEFAULT_LINEAGE_WEB_COLORS } from './LineageWeb.js';
12
12
  export type { LineageWebProps, LineageWebColors } from './LineageWeb.js';
13
- export { DEFAULT_LINEAGE_VIEW, DEFAULT_LINEAGE_WEB_LAYOUT, LINEAGE_BANDS, layoutLineageWeb, lineageArcPath, lineageNeighbourhood, threadChains, visibleLineage, } from './lineage-web.js';
13
+ export { DEFAULT_LINEAGE_VIEW, DEFAULT_LINEAGE_WEB_LAYOUT, LINEAGE_BANDS, fitZoom, layoutLineageWeb, lineageArcPath, lineageEdgeKey, lineageNeighbourhood, lineageWebWidth, relationsAround, stepAlongSpine, threadChains, visibleLineage, zoomScrollLeft, } from './lineage-web.js';
14
14
  export type { LineageBand, LineageEdgeKind, LineageWebEdge, LineageWebEpisode, LineageWebLayout, LineageWebLayoutConfig, LineageWebView, VisibleLineage, VisibleLineageOptions, } from './lineage-web.js';
15
15
  export type { MWGraphNode, MWGraphNodePosition, MWGraphNodePositions, MWGraphLink, MWGraphData, LinkStyle, LayoutMode, WheelLayoutConfig, MedicineWheelGraphProps, QuadrantGeometry, } from './types.js';
16
16
  export { applyLineageLayout, DEFAULT_LINEAGE_LAYOUT, } from './lineage-layout.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,aAAa,EACb,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@
9
9
  * @packageDocumentation
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.toMermaidDiagram = exports.toCeremonyTimelineData = exports.toDirectionWheelData = exports.toReciprocityFlowDiagram = exports.toKinshipGraphLayout = exports.buildGraphData = exports.relationsToGraphLinks = exports.edgesToGraphLinks = exports.nodesToGraphNodes = exports.constrainToWheel = exports.directionForPoint = exports.directionLabelPosition = exports.curvedLinkPath = exports.quadrantArcPath = exports.getQuadrantGeometries = exports.DEFAULT_LAYOUT = exports.applyWheelLayout = exports.DEFAULT_LINEAGE_LAYOUT = exports.applyLineageLayout = exports.visibleLineage = exports.threadChains = exports.lineageNeighbourhood = exports.lineageArcPath = exports.layoutLineageWeb = exports.LINEAGE_BANDS = exports.DEFAULT_LINEAGE_WEB_LAYOUT = exports.DEFAULT_LINEAGE_VIEW = exports.DEFAULT_LINEAGE_WEB_COLORS = exports.LineageWeb = exports.MedicineWheelGraph = void 0;
12
+ exports.toMermaidDiagram = exports.toCeremonyTimelineData = exports.toDirectionWheelData = exports.toReciprocityFlowDiagram = exports.toKinshipGraphLayout = exports.buildGraphData = exports.relationsToGraphLinks = exports.edgesToGraphLinks = exports.nodesToGraphNodes = exports.constrainToWheel = exports.directionForPoint = exports.directionLabelPosition = exports.curvedLinkPath = exports.quadrantArcPath = exports.getQuadrantGeometries = exports.DEFAULT_LAYOUT = exports.applyWheelLayout = exports.DEFAULT_LINEAGE_LAYOUT = exports.applyLineageLayout = exports.zoomScrollLeft = exports.visibleLineage = exports.threadChains = exports.stepAlongSpine = exports.relationsAround = exports.lineageWebWidth = exports.lineageNeighbourhood = exports.lineageEdgeKey = exports.lineageArcPath = exports.layoutLineageWeb = exports.fitZoom = exports.LINEAGE_BANDS = exports.DEFAULT_LINEAGE_WEB_LAYOUT = exports.DEFAULT_LINEAGE_VIEW = exports.DEFAULT_LINEAGE_WEB_COLORS = exports.LineageWeb = exports.MedicineWheelGraph = void 0;
13
13
  // ── Component ───────────────────────────────────────────────────────────────
14
14
  var MedicineWheelGraph_js_1 = require("./MedicineWheelGraph.js");
15
15
  Object.defineProperty(exports, "MedicineWheelGraph", { enumerable: true, get: function () { return MedicineWheelGraph_js_1.MedicineWheelGraph; } });
@@ -21,11 +21,17 @@ var lineage_web_js_1 = require("./lineage-web.js");
21
21
  Object.defineProperty(exports, "DEFAULT_LINEAGE_VIEW", { enumerable: true, get: function () { return lineage_web_js_1.DEFAULT_LINEAGE_VIEW; } });
22
22
  Object.defineProperty(exports, "DEFAULT_LINEAGE_WEB_LAYOUT", { enumerable: true, get: function () { return lineage_web_js_1.DEFAULT_LINEAGE_WEB_LAYOUT; } });
23
23
  Object.defineProperty(exports, "LINEAGE_BANDS", { enumerable: true, get: function () { return lineage_web_js_1.LINEAGE_BANDS; } });
24
+ Object.defineProperty(exports, "fitZoom", { enumerable: true, get: function () { return lineage_web_js_1.fitZoom; } });
24
25
  Object.defineProperty(exports, "layoutLineageWeb", { enumerable: true, get: function () { return lineage_web_js_1.layoutLineageWeb; } });
25
26
  Object.defineProperty(exports, "lineageArcPath", { enumerable: true, get: function () { return lineage_web_js_1.lineageArcPath; } });
27
+ Object.defineProperty(exports, "lineageEdgeKey", { enumerable: true, get: function () { return lineage_web_js_1.lineageEdgeKey; } });
26
28
  Object.defineProperty(exports, "lineageNeighbourhood", { enumerable: true, get: function () { return lineage_web_js_1.lineageNeighbourhood; } });
29
+ Object.defineProperty(exports, "lineageWebWidth", { enumerable: true, get: function () { return lineage_web_js_1.lineageWebWidth; } });
30
+ Object.defineProperty(exports, "relationsAround", { enumerable: true, get: function () { return lineage_web_js_1.relationsAround; } });
31
+ Object.defineProperty(exports, "stepAlongSpine", { enumerable: true, get: function () { return lineage_web_js_1.stepAlongSpine; } });
27
32
  Object.defineProperty(exports, "threadChains", { enumerable: true, get: function () { return lineage_web_js_1.threadChains; } });
28
33
  Object.defineProperty(exports, "visibleLineage", { enumerable: true, get: function () { return lineage_web_js_1.visibleLineage; } });
34
+ Object.defineProperty(exports, "zoomScrollLeft", { enumerable: true, get: function () { return lineage_web_js_1.zoomScrollLeft; } });
29
35
  // ── Layout Engine ───────────────────────────────────────────────────────────
30
36
  var lineage_layout_js_1 = require("./lineage-layout.js");
31
37
  Object.defineProperty(exports, "applyLineageLayout", { enumerable: true, get: function () { return lineage_layout_js_1.applyLineageLayout; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,+EAA+E;AAC/E,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAC3B,iDAAyE;AAAhE,2GAAA,UAAU,OAAA;AAAE,2HAAA,0BAA0B,OAAA;AAG/C,+EAA+E;AAC/E,mDAS0B;AARxB,sHAAA,oBAAoB,OAAA;AACpB,4HAAA,0BAA0B,OAAA;AAC1B,+GAAA,aAAa,OAAA;AACb,kHAAA,gBAAgB,OAAA;AAChB,gHAAA,cAAc,OAAA;AACd,sHAAA,oBAAoB,OAAA;AACpB,8GAAA,YAAY,OAAA;AACZ,gHAAA,cAAc,OAAA;AA4BhB,+EAA+E;AAC/E,yDAG6B;AAF3B,uHAAA,kBAAkB,OAAA;AAClB,2HAAA,sBAAsB,OAAA;AAIxB,yCASqB;AARnB,6GAAA,gBAAgB,OAAA;AAChB,2GAAA,cAAc,OAAA;AACd,kHAAA,qBAAqB,OAAA;AACrB,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,mHAAA,sBAAsB,OAAA;AACtB,8GAAA,iBAAiB,OAAA;AACjB,6GAAA,gBAAgB,OAAA;AAGlB,+EAA+E;AAC/E,iDAKyB;AAJvB,kHAAA,iBAAiB,OAAA;AACjB,kHAAA,iBAAiB,OAAA;AACjB,sHAAA,qBAAqB,OAAA;AACrB,+GAAA,cAAc,OAAA;AAahB,6CAMuB;AALrB,mHAAA,oBAAoB,OAAA;AACpB,uHAAA,wBAAwB,OAAA;AACxB,mHAAA,oBAAoB,OAAA;AACpB,qHAAA,sBAAsB,OAAA;AACtB,+GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,+EAA+E;AAC/E,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAC3B,iDAAyE;AAAhE,2GAAA,UAAU,OAAA;AAAE,2HAAA,0BAA0B,OAAA;AAG/C,+EAA+E;AAC/E,mDAe0B;AAdxB,sHAAA,oBAAoB,OAAA;AACpB,4HAAA,0BAA0B,OAAA;AAC1B,+GAAA,aAAa,OAAA;AACb,yGAAA,OAAO,OAAA;AACP,kHAAA,gBAAgB,OAAA;AAChB,gHAAA,cAAc,OAAA;AACd,gHAAA,cAAc,OAAA;AACd,sHAAA,oBAAoB,OAAA;AACpB,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AACf,gHAAA,cAAc,OAAA;AACd,8GAAA,YAAY,OAAA;AACZ,gHAAA,cAAc,OAAA;AACd,gHAAA,cAAc,OAAA;AA4BhB,+EAA+E;AAC/E,yDAG6B;AAF3B,uHAAA,kBAAkB,OAAA;AAClB,2HAAA,sBAAsB,OAAA;AAIxB,yCASqB;AARnB,6GAAA,gBAAgB,OAAA;AAChB,2GAAA,cAAc,OAAA;AACd,kHAAA,qBAAqB,OAAA;AACrB,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,mHAAA,sBAAsB,OAAA;AACtB,8GAAA,iBAAiB,OAAA;AACjB,6GAAA,gBAAgB,OAAA;AAGlB,+EAA+E;AAC/E,iDAKyB;AAJvB,kHAAA,iBAAiB,OAAA;AACjB,kHAAA,iBAAiB,OAAA;AACjB,sHAAA,qBAAqB,OAAA;AACrB,+GAAA,cAAc,OAAA;AAahB,6CAMuB;AALrB,mHAAA,oBAAoB,OAAA;AACpB,uHAAA,wBAAwB,OAAA;AACxB,mHAAA,oBAAoB,OAAA;AACpB,qHAAA,sBAAsB,OAAA;AACtB,+GAAA,gBAAgB,OAAA"}
@@ -135,4 +135,19 @@ export declare function threadChains(episodes: readonly LineageWebEpisode[]): Ar
135
135
  to: string;
136
136
  thread: string;
137
137
  }>;
138
+ /** The canvas width for `count` episodes at `zoom`, never narrower than `boxWidth`. */
139
+ export declare function lineageWebWidth(count: number, zoom: number, boxWidth: number, config?: Partial<LineageWebLayoutConfig>): number;
140
+ /** The zoom at which `count` episodes fill `boxWidth` exactly: the whole span in view. */
141
+ export declare function fitZoom(count: number, boxWidth: number, config?: Partial<LineageWebLayoutConfig>): number;
142
+ /**
143
+ * Where to scroll after the canvas changed width, so the point at `pointerX`
144
+ * (measured from the box's left edge) shows the same moment on the spine.
145
+ */
146
+ export declare function zoomScrollLeft(scrollLeft: number, pointerX: number, oldWidth: number, newWidth: number, config?: Partial<LineageWebLayoutConfig>): number;
147
+ /** The next or previous episode along the spine; from nothing, the first or the last. */
148
+ export declare function stepAlongSpine(order: readonly string[], current: string | null, step: 1 | -1): string | null;
149
+ /** An episode's relations, ordered by where the episode at the other end sits on the spine. */
150
+ export declare function relationsAround(id: string, edges: readonly LineageWebEdge[], order: readonly string[]): LineageWebEdge[];
151
+ /** A key for an edge that survives a change of view: its id, or its two ends and kind. */
152
+ export declare function lineageEdgeKey(e: LineageWebEdge): string;
138
153
  //# sourceMappingURL=lineage-web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lineage-web.d.ts","sourceRoot":"","sources":["../src/lineage-web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lineage-web.d.ts","sourceRoot":"","sources":["../src/lineage-web.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,12 @@ exports.visibleLineage = visibleLineage;
21
21
  exports.layoutLineageWeb = layoutLineageWeb;
22
22
  exports.lineageArcPath = lineageArcPath;
23
23
  exports.threadChains = threadChains;
24
+ exports.lineageWebWidth = lineageWebWidth;
25
+ exports.fitZoom = fitZoom;
26
+ exports.zoomScrollLeft = zoomScrollLeft;
27
+ exports.stepAlongSpine = stepAlongSpine;
28
+ exports.relationsAround = relationsAround;
29
+ exports.lineageEdgeKey = lineageEdgeKey;
24
30
  exports.LINEAGE_BANDS = ['east', 'south', 'west', 'north'];
25
31
  exports.DEFAULT_LINEAGE_VIEW = {
26
32
  scope: 'all',
@@ -191,4 +197,48 @@ function threadChains(episodes) {
191
197
  }
192
198
  return chains;
193
199
  }
200
+ // ── Moving through the web by hand (#163) ───────────────────────────────────
201
+ /** The canvas width for `count` episodes at `zoom`, never narrower than `boxWidth`. */
202
+ function lineageWebWidth(count, zoom, boxWidth, config = {}) {
203
+ const cfg = { ...exports.DEFAULT_LINEAGE_WEB_LAYOUT, ...config };
204
+ const span = Math.max(0, count - 1) * cfg.minStep * zoom;
205
+ return Math.max(cfg.minWidth, boxWidth, cfg.marginL + cfg.marginR + span);
206
+ }
207
+ /** The zoom at which `count` episodes fill `boxWidth` exactly: the whole span in view. */
208
+ function fitZoom(count, boxWidth, config = {}) {
209
+ const cfg = { ...exports.DEFAULT_LINEAGE_WEB_LAYOUT, ...config };
210
+ const span = Math.max(1, count - 1) * cfg.minStep;
211
+ return Math.max(0.01, (boxWidth - cfg.marginL - cfg.marginR) / span);
212
+ }
213
+ /**
214
+ * Where to scroll after the canvas changed width, so the point at `pointerX`
215
+ * (measured from the box's left edge) shows the same moment on the spine.
216
+ */
217
+ function zoomScrollLeft(scrollLeft, pointerX, oldWidth, newWidth, config = {}) {
218
+ const cfg = { ...exports.DEFAULT_LINEAGE_WEB_LAYOUT, ...config };
219
+ const inner = (w) => Math.max(1, w - cfg.marginL - cfg.marginR);
220
+ const fraction = (scrollLeft + pointerX - cfg.marginL) / inner(oldWidth);
221
+ return Math.max(0, cfg.marginL + fraction * inner(newWidth) - pointerX);
222
+ }
223
+ /** The next or previous episode along the spine; from nothing, the first or the last. */
224
+ function stepAlongSpine(order, current, step) {
225
+ if (order.length === 0)
226
+ return null;
227
+ const at = current === null ? -1 : order.indexOf(current);
228
+ if (at === -1)
229
+ return step === 1 ? order[0] : order[order.length - 1];
230
+ return order[Math.min(order.length - 1, Math.max(0, at + step))];
231
+ }
232
+ /** An episode's relations, ordered by where the episode at the other end sits on the spine. */
233
+ function relationsAround(id, edges, order) {
234
+ const position = new Map(order.map((other, i) => [other, i]));
235
+ const other = (e) => (e.from === id ? e.to : e.from);
236
+ return edges
237
+ .filter((e) => (e.from === id || e.to === id) && e.from !== e.to)
238
+ .sort((a, b) => (position.get(other(a)) ?? 0) - (position.get(other(b)) ?? 0));
239
+ }
240
+ /** A key for an edge that survives a change of view: its id, or its two ends and kind. */
241
+ function lineageEdgeKey(e) {
242
+ return e.id ?? `${e.from}:${e.kind}:${e.to}`;
243
+ }
194
244
  //# sourceMappingURL=lineage-web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lineage-web.js","sourceRoot":"","sources":["../src/lineage-web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lineage-web.js","sourceRoot":"","sources":["../src/lineage-web.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medicine-wheel/graph-viz",
3
- "version": "0.17.9",
3
+ "version": "0.17.11",
4
4
  "description": "Medicine Wheel graph visualization — circular layout with four-direction node positioning, ceremony-aware edges, and OCAP® indicators",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -47,7 +47,7 @@
47
47
  "directory": "src/graph-viz"
48
48
  },
49
49
  "dependencies": {
50
- "@medicine-wheel/ontology-core": "^0.17.9"
50
+ "@medicine-wheel/ontology-core": "^0.17.11"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "react": ">=18.0.0",