@graview/react 0.1.27 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/affordances.d.ts +2 -1
  2. package/dist/affordances.d.ts.map +1 -1
  3. package/dist/affordances.js +2 -1
  4. package/dist/affordances.js.map +1 -1
  5. package/dist/beside-the-map.d.ts +13 -0
  6. package/dist/beside-the-map.d.ts.map +1 -0
  7. package/dist/beside-the-map.js +14 -0
  8. package/dist/beside-the-map.js.map +1 -0
  9. package/dist/channels.d.ts +2 -1
  10. package/dist/channels.d.ts.map +1 -1
  11. package/dist/channels.js +121 -22
  12. package/dist/channels.js.map +1 -1
  13. package/dist/connectors.d.ts +27 -2
  14. package/dist/connectors.d.ts.map +1 -1
  15. package/dist/connectors.js +135 -21
  16. package/dist/connectors.js.map +1 -1
  17. package/dist/context.d.ts +38 -2
  18. package/dist/context.d.ts.map +1 -1
  19. package/dist/context.js +63 -14
  20. package/dist/context.js.map +1 -1
  21. package/dist/drawn.d.ts +1 -1
  22. package/dist/drawn.d.ts.map +1 -1
  23. package/dist/drawn.js +1 -1
  24. package/dist/drawn.js.map +1 -1
  25. package/dist/edge-signs.d.ts +1 -1
  26. package/dist/edge-signs.d.ts.map +1 -1
  27. package/dist/edge-signs.js +52 -7
  28. package/dist/edge-signs.js.map +1 -1
  29. package/dist/index.d.ts +6 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +5 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/last-visit.d.ts +18 -0
  34. package/dist/last-visit.d.ts.map +1 -0
  35. package/dist/last-visit.js +79 -0
  36. package/dist/last-visit.js.map +1 -0
  37. package/dist/map-choice.d.ts +55 -0
  38. package/dist/map-choice.d.ts.map +1 -0
  39. package/dist/map-choice.js +73 -0
  40. package/dist/map-choice.js.map +1 -0
  41. package/dist/plots.d.ts +30 -24
  42. package/dist/plots.d.ts.map +1 -1
  43. package/dist/plots.js +168 -149
  44. package/dist/plots.js.map +1 -1
  45. package/dist/provider.d.ts +2 -1
  46. package/dist/provider.d.ts.map +1 -1
  47. package/dist/provider.js +3 -1
  48. package/dist/provider.js.map +1 -1
  49. package/dist/record-links-layer.d.ts +80 -0
  50. package/dist/record-links-layer.d.ts.map +1 -0
  51. package/dist/record-links-layer.js +127 -0
  52. package/dist/record-links-layer.js.map +1 -0
  53. package/dist/record-links.d.ts +58 -0
  54. package/dist/record-links.d.ts.map +1 -0
  55. package/dist/record-links.js +72 -0
  56. package/dist/record-links.js.map +1 -0
  57. package/dist/resolved-view.d.ts.map +1 -1
  58. package/dist/resolved-view.js +4 -0
  59. package/dist/resolved-view.js.map +1 -1
  60. package/dist/ribbon-width.d.ts +8 -0
  61. package/dist/ribbon-width.d.ts.map +1 -0
  62. package/dist/ribbon-width.js +15 -0
  63. package/dist/ribbon-width.js.map +1 -0
  64. package/dist/ribbons-layer.d.ts +56 -0
  65. package/dist/ribbons-layer.d.ts.map +1 -0
  66. package/dist/ribbons-layer.js +167 -0
  67. package/dist/ribbons-layer.js.map +1 -0
  68. package/dist/ribbons.d.ts +70 -0
  69. package/dist/ribbons.d.ts.map +1 -0
  70. package/dist/ribbons.js +400 -0
  71. package/dist/ribbons.js.map +1 -0
  72. package/dist/scene-camera.d.ts.map +1 -1
  73. package/dist/scene-camera.js +10 -4
  74. package/dist/scene-camera.js.map +1 -1
  75. package/dist/scene-covered.d.ts +8 -0
  76. package/dist/scene-covered.d.ts.map +1 -0
  77. package/dist/scene-covered.js +118 -0
  78. package/dist/scene-covered.js.map +1 -0
  79. package/dist/scene-hand.d.ts +15 -0
  80. package/dist/scene-hand.d.ts.map +1 -1
  81. package/dist/scene-hand.js +45 -1
  82. package/dist/scene-hand.js.map +1 -1
  83. package/dist/scene-lines.d.ts +15 -2
  84. package/dist/scene-lines.d.ts.map +1 -1
  85. package/dist/scene-lines.js +215 -85
  86. package/dist/scene-lines.js.map +1 -1
  87. package/dist/scene-options.d.ts +7 -2
  88. package/dist/scene-options.d.ts.map +1 -1
  89. package/dist/scene-options.js +22 -8
  90. package/dist/scene-options.js.map +1 -1
  91. package/dist/scene-root.d.ts +1 -0
  92. package/dist/scene-root.d.ts.map +1 -1
  93. package/dist/scene-root.js +197 -154
  94. package/dist/scene-root.js.map +1 -1
  95. package/dist/view-host.d.ts.map +1 -1
  96. package/dist/view-host.js +6 -1
  97. package/dist/view-host.js.map +1 -1
  98. package/dist/view-registry.d.ts +5 -0
  99. package/dist/view-registry.d.ts.map +1 -1
  100. package/dist/view-registry.js +2 -6
  101. package/dist/view-registry.js.map +1 -1
  102. package/dist/where-drawn.d.ts +3 -1
  103. package/dist/where-drawn.d.ts.map +1 -1
  104. package/dist/where-drawn.js +10 -16
  105. package/dist/where-drawn.js.map +1 -1
  106. package/package.json +5 -5
package/dist/plots.js CHANGED
@@ -1,14 +1,15 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { hueFor } from "@graview/core";
3
- import { BLOCK, roadsOf, toIso, villageOf } from "@graview/core/scene";
4
- import { kindCardId, kindOfCard } from "@graview/layout";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { labelOf, numberAsRead, SCENE_LAYERS } from "@graview/core";
3
+ import { districtBlocks, districtState, TIER_HEIGHT, toIso } from "@graview/core/scene";
5
4
  import { memo, useCallback, useMemo, useRef } from "react";
6
- import { useGraview } from "./context.js";
5
+ import { useGraph, useGraview } from "./context.js";
7
6
  import { useFlagged } from "./emphasis.js";
7
+ import { ownRecords, useSinceLastVisit } from "./last-visit.js";
8
+ import "./provider.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
8
9
  /** The four corners of a plot's tile on the canvas: back, right, front, left — clockwise from the top. */
9
10
  export function tileCorners(plot, city, pan = { x: 0, y: 0 }) {
10
11
  const at = (col, row) => {
11
- const iso = toIso(col, row, city.cell);
12
+ const iso = toIso(col, row, city.cell, city.tilt);
12
13
  return { x: city.originX + pan.x + iso.x, y: city.originY + pan.y + iso.y };
13
14
  };
14
15
  return [
@@ -30,14 +31,21 @@ const points = (corners) => corners.map((p) => `${p.x.toFixed(1)},${p.y.toFixed(
30
31
  * group, so a pan or a tween changes one attribute. Each plot is its own
31
32
  * memoized tile whose village is kept for as long as that plot and its
32
33
  * members are the same, so dragging one district redraws that district and
33
- * the roads, not every building in the city on every frame.
34
+ * its tile, not every building in the city on every frame.
34
35
  */
35
- export function Plots({ frame, width, height, pan, brand, pinned, swallowed, onFocus }) {
36
- const { selection, store, emphasis } = useGraview();
36
+ export function Plots({ frame, width, height, pan, pinned, close, today, swallowed, chosen = [], onFocus }) {
37
+ const { selection, store, scheme, principal } = useGraview();
38
+ const nodes = useGraph();
39
+ /* What somebody else wrote since this seat last left, and what is its own (last-visit.ts). */
40
+ // eslint-disable-next-line react-hooks/exhaustive-deps
41
+ const ops = useMemo(() => store.log.all(), [store, nodes]);
42
+ const recent = useSinceLastVisit(ops, store.schema.kinds, principal);
43
+ const own = useMemo(() => ownRecords(store.graph, ops, principal?.id), [store, ops, principal?.id]);
37
44
  const flagged = useFlagged();
38
45
  const city = frame.city;
39
46
  const tiles = frame.nodes.filter((node) => node.plot !== undefined && Math.round(node.plane) === 2);
40
47
  const cell = city?.cell ?? 0;
48
+ const tilt = city?.tilt ?? 0.5;
41
49
  // The callback is read when the tile is pressed, so a new one each render redraws nothing.
42
50
  const focus = useRef(onFocus);
43
51
  focus.current = onFocus;
@@ -48,50 +56,66 @@ export function Plots({ frame, width, height, pan, brand, pinned, swallowed, onF
48
56
  return true;
49
57
  }, [swallowed]);
50
58
  /*
51
- * THE ROADS, one per pair of plots joined by any declared edge
52
- * (`roadsOf`), curb to curb along the gutters. They depend on every
53
- * plot, so they are routed again when any plot moves — and only then.
59
+ * EACH PLOT'S GROUND, kept while that plot and where its members stand
60
+ * are unchanged: a row of blocks per value of the kind's main choice
61
+ * (`districtState`), back row first in the declared order, each block as
62
+ * tall as its value reads — done flat, active raised.
54
63
  */
55
- const plotsSignature = `${cell}|${tiles.map((node) => `${node.id}:${node.plot.col},${node.plot.row},${node.plot.side}`).join(";")}`;
56
- const roads = useMemo(() => {
57
- if (!city)
58
- return [];
59
- const at0 = { cell, originX: 0, originY: 0 };
60
- const plotsByKind = new Map();
61
- for (const node of tiles) {
62
- const kind = kindOfCard(node.id);
63
- if (kind !== null && node.plot)
64
- plotsByKind.set(kind, node.plot);
65
- }
66
- return roadsOf(store.schema, plotsByKind).map((road) => ({
67
- ...road,
68
- d: roadBetween(plotsByKind.get(road.from), plotsByKind.get(road.to), at0, { x: 0, y: 0 })
69
- .map((p, i) => `${i === 0 ? "M" : "L"} ${p.x.toFixed(1)} ${p.y.toFixed(1)}`)
70
- .join(" "),
71
- }));
72
- // `plotsSignature` stands for the tiles and the cell.
73
- }, [plotsSignature, store.schema]);
74
- /* EACH PLOT'S GROUND, kept while that plot and its members are unchanged. */
75
64
  const drawn = useRef(new Map());
76
65
  const kept = new Map();
77
66
  for (const node of tiles) {
78
67
  const members = node.aggregate?.memberIds ?? [];
79
- const key = `${cell}|${node.plot.col},${node.plot.row},${node.plot.side}|${members.join(",")}`;
68
+ const state = districtState(store.schema, node.kind);
69
+ const valueOf = (id) => (state ? store.graph.getNode(id)?.[state.field] : undefined);
70
+ /* A chosen record is never one of the "+504": it stands first in its row, so its building is there to light and to draw its links from. */
71
+ const first = members.filter((id) => chosen.includes(id));
72
+ const key = `${cell}|${tilt}|${node.plot.col},${node.plot.row},${node.plot.side}|${first.join(",")}|${members.map((id) => `${id}=${String(valueOf(id))}`).join(",")}`;
80
73
  const held = drawn.current.get(node.id);
81
74
  if (held && held.key === key) {
82
75
  kept.set(node.id, held);
83
76
  continue;
84
77
  }
85
- const at0 = { cell, originX: 0, originY: 0 };
78
+ const at0 = { cell, originX: 0, originY: 0, tilt };
86
79
  const none = { x: 0, y: 0 };
87
- const { buildings, rest } = villageOf(node.plot, members);
80
+ const definition = store.schema.tryDefinition(node.kind);
81
+ const nameOf = (id) => {
82
+ const record = store.graph.getNode(id);
83
+ return record ? labelOf(definition, record) : id;
84
+ };
85
+ const lanes = state ? state.values.map(() => []) : [[]];
86
+ const tiers = state ? [...state.tiers] : ["waiting"];
87
+ for (const id of first.length > 0 ? [...first, ...members.filter((id) => !first.includes(id))] : members) {
88
+ const at = state ? state.values.indexOf(valueOf(id)) : 0;
89
+ if (at >= 0)
90
+ lanes[at].push(id);
91
+ else {
92
+ if (lanes.length === tiers.length) {
93
+ lanes.push([]);
94
+ tiers.push("waiting");
95
+ }
96
+ lanes[lanes.length - 1].push(id);
97
+ }
98
+ }
99
+ const { blocks, rests } = districtBlocks(node.plot, lanes, tiers.map((tier) => TIER_HEIGHT[tier]));
88
100
  const corners = tileCorners(node.plot, at0, none);
101
+ // A record's due date past and not done: overdue, lit like a problem.
102
+ const due = state ? dueField(store.schema, node.kind) : undefined;
89
103
  kept.set(node.id, {
90
104
  key,
91
105
  tile: points(corners),
92
- front: corners[2],
93
- rest,
94
- buildings: buildings.map((building) => ({ id: building.id, ...buildingFaces(building, at0, none) })),
106
+ rests: rests.map((rest) => ({ count: rest.count, at: toIso(rest.col, rest.row, cell, tilt) })),
107
+ buildings: blocks.map((block) => {
108
+ const record = due ? store.graph.getNode(block.id) : undefined;
109
+ const when = record?.[due];
110
+ return {
111
+ id: block.id,
112
+ tier: tiers[block.lane],
113
+ overdue: typeof when === "string" && tiers[block.lane] !== "done" && when.slice(0, 10) < (today ?? new Date().toISOString().slice(0, 10)),
114
+ name: nameOf(block.id),
115
+ width: block.footprint * cell,
116
+ ...buildingFaces(block, at0, none),
117
+ };
118
+ }),
95
119
  });
96
120
  }
97
121
  drawn.current = kept;
@@ -100,30 +124,86 @@ export function Plots({ frame, width, height, pan, brand, pinned, swallowed, onF
100
124
  const style = { position: "absolute", left: 0, top: 0, pointerEvents: "none", overflow: "visible" };
101
125
  const chosenKey = selection.join("\n");
102
126
  const flaggedKey = flagged.join("\n");
103
- return (_jsx("svg", { className: "graview-plots", "aria-hidden": "true", "data-graview-world": "", width: width, height: height, style: style, "data-graview-plots": tiles.length, children: _jsxs("g", { transform: `translate(${(city.originX + pan.x).toFixed(1)} ${(city.originY + pan.y).toFixed(1)})`, children: [_jsx("g", { className: "graview-roads", "data-graview-roads": roads.length, children: roads.map((road) => road.d.includes("L") ? (_jsxs("g", { className: "graview-road", "data-graview-road": road.edges.join(","), "data-graview-from": kindCardId(road.from), "data-graview-to": kindCardId(road.to), "data-graview-lit": emphasis !== null && road.edges.includes(emphasis) ? "" : undefined, children: [_jsx("path", { className: "graview-road-edge", d: road.d }), _jsx("path", { className: "graview-road-bed", d: road.d })] }, `${road.from}|${road.to}`)) : null) }), tiles.map((node) => (_jsx(PlotTile, { id: node.id, hue: Math.round(hueFor(node.kind, brand?.accents)), drawing: kept.get(node.id), pinned: pinned?.has(node.id) ?? false, chosenKey: chosenKey, flaggedKey: flaggedKey, press: press }, node.id)))] }) }));
127
+ const recentKey = recent ? [...recent].join("\n") : "";
128
+ const ownKey = own ? [...own].join("\n") : "";
129
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: groundCss(scheme) }), _jsx("svg", { className: "graview-plots", "aria-hidden": "true", "data-graview-world": "", width: width, height: height, style: style, "data-graview-plots": tiles.length, "data-graview-named": close ? "" : undefined, children: _jsx("g", { transform: `translate(${(city.originX + pan.x).toFixed(1)} ${(city.originY + pan.y).toFixed(1)})`, children: tiles.map((node) => (_jsx(PlotTile, { id: node.id, drawing: kept.get(node.id), pinned: pinned?.has(node.id) ?? false, chosenKey: chosenKey, flaggedKey: flaggedKey, recentKey: recentKey, ownKey: ownKey, named: close ?? false, press: press }, node.id))) }) })] }));
130
+ }
131
+ /** A block's name is written over it once the block is this wide on the screen: coming down, the blocks are named. */
132
+ const NAMED_FROM = 34;
133
+ /** How wide a letter of a block's name is taken to be, and how far above and below its baseline it reaches (`.graview-building-name`: .625rem). */
134
+ const NAME_LETTER = 6;
135
+ const NAME_ABOVE = 9;
136
+ const NAME_BELOW = 3;
137
+ /** The clear space kept around a name, so two never touch. */
138
+ const NAME_CLEAR = 2;
139
+ /** A block's name as it is written over it: whole while the block is wide enough for it, else cut with an ellipsis. */
140
+ function nameOver(block, whole) {
141
+ if (whole || block.name.length * NAME_LETTER <= block.width * 1.6)
142
+ return block.name;
143
+ return `${block.name.slice(0, Math.max(1, Math.floor((block.width * 1.6) / NAME_LETTER) - 1))}…`;
144
+ }
145
+ /**
146
+ * WHICH BLOCKS SAY THEIR NAMES, so that no two names on a plot lie over each
147
+ * other. A district's blocks stand a step apart on the diagonal, and every
148
+ * name was written over its own block whatever stood beside it: coming down
149
+ * on the locations, "The workshop", "The kitchen" and "The yard" were one
150
+ * smudge across the block somebody had chosen. The district nameplates' own
151
+ * rule, a name only where it has room: the chosen block says its name first
152
+ * and whole, then each block wide enough to be named, back to front, as long
153
+ * as its name has room beside the names already written. The rest say
154
+ * theirs once the camera comes down far enough to part them.
155
+ */
156
+ export function namesWithRoom(buildings, chosen) {
157
+ const said = new Map();
158
+ const taken = [];
159
+ const first = buildings.filter((block) => chosen.has(block.id));
160
+ for (const block of [...first, ...buildings.filter((block) => !chosen.has(block.id))]) {
161
+ const whole = chosen.has(block.id);
162
+ if (!whole && block.width < NAMED_FROM)
163
+ continue;
164
+ const text = nameOver(block, whole);
165
+ const half = (text.length * NAME_LETTER) / 2 + NAME_CLEAR;
166
+ const baseline = block.top.y - 3;
167
+ const box = { left: block.top.x - half, right: block.top.x + half, top: baseline - NAME_ABOVE - NAME_CLEAR, bottom: baseline + NAME_BELOW + NAME_CLEAR };
168
+ if (taken.some((other) => other.left < box.right && box.left < other.right && other.top < box.bottom && box.top < other.bottom))
169
+ continue;
170
+ taken.push(box);
171
+ said.set(block.id, text);
172
+ }
173
+ return said;
104
174
  }
105
- const PlotTile = memo(function PlotTile({ id, hue, drawing, pinned, chosenKey, flaggedKey, press, }) {
175
+ const PlotTile = memo(function PlotTile({ id, drawing, pinned, chosenKey, flaggedKey, recentKey, ownKey, named, press, }) {
106
176
  const chosen = new Set(chosenKey.split("\n"));
107
177
  const broken = new Set(flaggedKey.split("\n"));
108
- return (_jsxs("g", { className: "graview-plot", "data-graview-plot": id, "data-graview-pinned": pinned ? "" : undefined, style: { ["--graview-hue"]: hue }, children: [_jsx("polygon", { className: "graview-plot-tile", points: drawing.tile, onClick: (event) => {
178
+ const recent = new Set(recentKey.split("\n"));
179
+ const own = new Set(ownKey.split("\n"));
180
+ // eslint-disable-next-line react-hooks/exhaustive-deps
181
+ const names = useMemo(() => (named ? namesWithRoom(drawing.buildings, chosen) : null), [named, drawing, chosenKey]);
182
+ return (_jsxs("g", { className: "graview-plot", "data-graview-plot": id, "data-graview-pinned": pinned ? "" : undefined, children: [_jsx("polygon", { className: "graview-plot-tile", points: drawing.tile, onClick: (event) => {
109
183
  if (press(id))
110
184
  event.stopPropagation();
111
- } }), drawing.buildings.length > 0 ? (_jsxs("g", { className: "graview-village", "data-graview-village": drawing.buildings.length, "data-graview-rest": drawing.rest || undefined, children: [drawing.buildings.map((faces) => (_jsxs("g", { className: "graview-building", "data-graview-building": faces.id, "data-graview-flagged": broken.has(faces.id) ? "" : undefined, "data-graview-selected": chosen.has(faces.id) ? "" : undefined, children: [_jsx("polygon", { className: "graview-iso-left", points: faces.left }), _jsx("polygon", { className: "graview-iso-right", points: faces.right }), _jsx("polygon", { className: "graview-iso-roof", points: faces.roof })] }, faces.id))), drawing.rest > 0 ? (_jsxs("text", { className: "graview-village-rest", x: drawing.front.x, y: drawing.front.y - 4, textAnchor: "middle", children: ["+", drawing.rest] })) : null] })) : null] }));
185
+ } }), drawing.buildings.length > 0 ? (_jsxs("g", { className: "graview-village", "data-graview-village": drawing.buildings.length, "data-graview-rest": drawing.rests.reduce((sum, rest) => sum + rest.count, 0) || undefined, children: [drawing.buildings.map((block) => (_jsxs("g", { className: "graview-building", "data-graview-building": block.id, "data-graview-tier": block.tier, "data-graview-flagged": broken.has(block.id) || block.overdue ? "" : undefined, "data-graview-overdue": block.overdue ? "" : undefined, "data-graview-recent": recent.has(block.id) ? "" : undefined, "data-graview-own": own.has(block.id) ? "" : undefined, "data-graview-selected": chosen.has(block.id) ? "" : undefined, children: [_jsx("polygon", { className: "graview-iso-left", points: block.left }), _jsx("polygon", { className: "graview-iso-right", points: block.right }), _jsx("polygon", { className: "graview-iso-roof", points: block.roof }), names?.has(block.id) ? (_jsx("text", { className: "graview-building-name", x: block.top.x, y: block.top.y - 3, textAnchor: "middle", children: names.get(block.id) })) : null] }, block.id))), drawing.rests.map((rest, i) => (_jsxs("text", { className: "graview-village-rest", x: rest.at.x - 3, y: rest.at.y + 4, textAnchor: "end", children: [_jsx("title", { children: `${numberAsRead(rest.count)} more in this row than the plot has room to show` }), "+", numberAsRead(rest.count)] }, i)))] })) : null] }));
112
186
  });
187
+ /** A kind's due date, by the name such a field goes by; undefined when it has none. */
188
+ function dueField(schema, kind) {
189
+ return Object.keys((schema.tryDefinition(kind)?.fields.shape ?? {})).find((name) => /^(due|deadline|due[-_ ]?(on|date|at|by))$/i.test(name));
190
+ }
113
191
  /* ------------------------------------------------------------ the village */
114
192
  /*
115
193
  * WHERE THE MEMBERS STAND is @graview/core's (`villageOf`), so a picture
116
194
  * drawn without a browser (`sceneThumbnail`) puts them where this does.
117
195
  */
118
- export { heightOf, villageCap, villageOf } from "@graview/core/scene";
196
+ export { districtBlocks, heightOf, villageCap, villageOf } from "@graview/core/scene";
119
197
  /** The three faces of one building on the canvas, from its foot cell. */
120
198
  export function buildingFaces(building, city, pan) {
121
199
  const half = building.footprint / 2;
122
200
  const at = (col, row, lift = 0) => {
123
- const iso = toIso(col, row, city.cell);
201
+ const iso = toIso(col, row, city.cell, city.tilt);
124
202
  return { x: city.originX + pan.x + iso.x, y: city.originY + pan.y + iso.y - lift };
125
203
  };
126
- const rise = building.footprint * city.cell * 0.5 * building.height;
204
+ // A wall shows as much as the ground is tilted away from straight above: none at all from there.
205
+ const tilt = Math.min(1, city.tilt ?? 0.5);
206
+ const rise = building.footprint * city.cell * 0.5 * building.height * (Math.sqrt(1 - tilt * tilt) / Math.sqrt(0.75));
127
207
  const back = at(building.col - half, building.row - half, rise);
128
208
  const right = at(building.col + half, building.row - half, rise);
129
209
  const front = at(building.col + half, building.row + half, rise);
@@ -138,115 +218,54 @@ export function buildingFaces(building, city, pan) {
138
218
  top: back,
139
219
  };
140
220
  }
141
- /* --------------------------------------------------------------- the roads */
221
+ /* ------------------------------------------------------------- the lattice */
142
222
  /** Lattice coordinates of a canvas point: the isometric map run backwards. */
143
223
  export function toLattice(point, city, pan) {
144
224
  const x = point.x - city.originX - pan.x;
145
225
  const y = point.y - city.originY - pan.y;
146
- return { col: x / city.cell + (2 * y) / city.cell, row: (2 * y) / city.cell - x / city.cell };
147
- }
148
- const insidePlot = (point, plot, city, pan) => {
149
- const { col, row } = toLattice(point, city, pan);
150
- return col >= plot.col && col <= plot.col + plot.side && row >= plot.row && row <= plot.row + plot.side;
151
- };
152
- const lerp = (a, b, t) => ({ x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t });
153
- /**
154
- * THE STREETS. Plots stand at multiples of BLOCK and never fill their
155
- * block, so between every block there is a gutter — a row and a column
156
- * of cells nothing stands on. A road runs along them: out of its plot to
157
- * the gutter beside its block, along that gutter, up the gutter beside
158
- * the other block, and in. Every leg is a lattice line (one coordinate
159
- * held), no leg crosses a third plot, and the whole city reads as
160
- * villages on a street grid rather than lines drawn over it.
161
- */
162
- export function streetPoints(from, to) {
163
- const ca = from.col + from.side / 2;
164
- const ra = from.row + from.side / 2;
165
- const cb = to.col + to.side / 2;
166
- const rb = to.row + to.side / 2;
167
- const blockRow = (plot) => Math.floor(plot.row / BLOCK);
168
- const blockCol = (plot) => Math.floor(plot.col / BLOCK);
169
- const ja = blockRow(from);
170
- const jb = blockRow(to);
171
- const ia = blockCol(from);
172
- const ib = blockCol(to);
173
- // The gutter row beside `from`, on the side `to` lies; the gutter column beside `to`, on the side `from` lies.
174
- const gr = jb > ja ? ja * BLOCK + BLOCK - 0.5 : jb < ja ? ja * BLOCK - 0.5 : ja * BLOCK + BLOCK - 0.5;
175
- const gc = ib > ia ? ib * BLOCK - 0.5 : ib < ia ? ib * BLOCK + BLOCK - 0.5 : ib * BLOCK - 0.5;
176
- const raw = [
177
- { col: ca, row: ra },
178
- { col: ca, row: gr },
179
- { col: gc, row: gr },
180
- { col: gc, row: rb },
181
- { col: cb, row: rb },
182
- ];
183
- // Drop a leg of no length, and a middle point that lies on the line of its neighbors.
184
- const out = [];
185
- for (const p of raw) {
186
- const last = out[out.length - 1];
187
- if (last && Math.abs(last.col - p.col) < 1e-9 && Math.abs(last.row - p.row) < 1e-9)
188
- continue;
189
- out.push(p);
190
- }
191
- for (let i = out.length - 2; i > 0; i--) {
192
- const a = out[i - 1];
193
- const b = out[i];
194
- const c = out[i + 1];
195
- const sameCol = Math.abs(a.col - b.col) < 1e-9 && Math.abs(b.col - c.col) < 1e-9;
196
- const sameRow = Math.abs(a.row - b.row) < 1e-9 && Math.abs(b.row - c.row) < 1e-9;
197
- if (sameCol || sameRow)
198
- out.splice(i, 1);
199
- }
200
- return out;
226
+ const t = city.tilt ?? 0.5;
227
+ return { col: x / city.cell + y / (city.cell * t), row: y / (city.cell * t) - x / city.cell };
201
228
  }
202
- /**
203
- * A ROAD FROM CURB TO CURB: the street between two plots, with the run
204
- * inside either plot cut away, so the road starts at one curb and ends at
205
- * the other rather than diving under the buildings. Sampled and bisected,
206
- * the same way a connector is clipped against a box.
229
+ /*
230
+ * Come down far enough that the blocks say their names, a district's
231
+ * landmark steps back for them: it stands in the square, over the names of
232
+ * the blocks around it, and its lines struck through every one of them.
233
+ * The nameplate still says whose district it is.
234
+ *
235
+ * THE GROUND'S OWN RULES, fetched with the ground: the scene draws the city
236
+ * only from altitude, so a page that never rises never carries them.
237
+ *
238
+ * COLOR CARRIES STATE, NOT KIND. Every district stands on the same neutral
239
+ * ground in the ground's own ink — a kind is told by its name and where it
240
+ * stands, not by a hue of its own — so the strong colors are left for what
241
+ * needs seeing. The blocks, a row per value: waiting in a middle gray,
242
+ * active darker (and taller), done flat and pale; a record with a problem,
243
+ * or past its due date and not done, lit in the warning color; one
244
+ * somebody else changed since you were last here aglow in the accent; your
245
+ * own with an ink rim; a selected one in the accent. A hand-placed district's curb is dashed.
207
246
  */
208
- export function roadBetween(from, to, city, pan) {
209
- const points = streetPoints(from, to).map((p) => {
210
- const iso = toIso(p.col, p.row, city.cell);
211
- return { x: city.originX + pan.x + iso.x, y: city.originY + pan.y + iso.y };
212
- });
213
- // Walk out of `from`: the first point on the polyline outside its plot.
214
- const out = [];
215
- let started = false;
216
- for (let i = 0; i < points.length - 1; i++) {
217
- const a = points[i];
218
- const b = points[i + 1];
219
- if (!started) {
220
- if (insidePlot(b, from, city, pan))
221
- continue;
222
- let lo = 0;
223
- let hi = 1;
224
- for (let k = 0; k < 12; k++) {
225
- const mid = (lo + hi) / 2;
226
- if (insidePlot(lerp(a, b, mid), from, city, pan))
227
- lo = mid;
228
- else
229
- hi = mid;
230
- }
231
- out.push(lerp(a, b, hi));
232
- started = true;
233
- }
234
- // Walk into `to`: the first point on the polyline inside its plot.
235
- if (insidePlot(b, to, city, pan)) {
236
- let lo = 0;
237
- let hi = 1;
238
- for (let k = 0; k < 12; k++) {
239
- const mid = (lo + hi) / 2;
240
- if (insidePlot(lerp(a, b, mid), to, city, pan))
241
- hi = mid;
242
- else
243
- lo = mid;
244
- }
245
- out.push(lerp(a, b, lo));
246
- return out;
247
- }
248
- out.push(b);
249
- }
250
- return out;
247
+ function groundCss(scheme) {
248
+ const light = scheme === "light";
249
+ const mix = (share, of = "var(--graview-ink)") => `color-mix(in oklab, ${of} ${share}, var(--graview-panel))`;
250
+ return `.graview-plots{z-index:${SCENE_LAYERS.plots};opacity:var(--graview-altitude);transition:opacity 640ms cubic-bezier(.33,0,.2,1)}
251
+ .graview-plot-tile{fill:color-mix(in oklab,var(--graview-ink) ${light ? 5 : 9}%,transparent);stroke:color-mix(in oklab,var(--graview-ink) ${light ? 22 : 30}%,transparent);stroke-linejoin:round;pointer-events:auto;cursor:pointer}
252
+ .graview-plot-tile:hover{fill:color-mix(in oklab,var(--graview-ink) ${light ? 10 : 16}%,transparent)}
253
+ .graview-plot[data-graview-pinned] .graview-plot-tile{stroke-dasharray:4 3}
254
+ .graview-village{pointer-events:none}
255
+ .graview-building{--s:${light ? 30 : 40}%}
256
+ .graview-building[data-graview-tier=active]{--s:${light ? 64 : 70}%}
257
+ .graview-building polygon{stroke:var(--graview-panel);stroke-width:.6;stroke-opacity:.6;fill:${mix("var(--s)")}}
258
+ .graview-building .graview-iso-left{fill:${mix(`calc(var(--s) + ${light ? 15 : -10}%)`)}}
259
+ .graview-building .graview-iso-right{fill:${mix(`calc(var(--s) + ${light ? 8 : -16}%)`)}}
260
+ .graview-building[data-graview-tier=done] polygon{fill:${mix(light ? "13%" : "18%")}}
261
+ .graview-building[data-graview-flagged] polygon{fill:var(--graview-warn);stroke:var(--graview-warn)}
262
+ .graview-building[data-graview-flagged] .graview-iso-left{fill:color-mix(in oklab,var(--graview-warn) 80%,var(--graview-ink))}
263
+ .graview-building[data-graview-recent]{filter:drop-shadow(0 0 2px color-mix(in oklab,var(--graview-accent) 70%,transparent))}
264
+ .graview-building[data-graview-own] .graview-iso-roof{stroke:var(--graview-ink);stroke-width:1.4;stroke-opacity:1}
265
+ .graview-building[data-graview-selected] polygon{stroke:var(--graview-accent);stroke-width:1.4;stroke-opacity:1}
266
+ .graview-building[data-graview-selected] .graview-iso-roof{fill:${mix("45%", "var(--graview-accent)")}}
267
+ .graview-building-name{font-size:.625rem;fill:var(--graview-ink);paint-order:stroke;stroke:var(--graview-ground);stroke-width:3px}
268
+ .graview-ground:has(> .graview-plots[data-graview-named]) [data-graview-plot] .graview-kind-landmark{opacity:.3;transition:opacity 240ms}
269
+ .graview-village-rest{font-size:.6875rem;font-variant-numeric:tabular-nums;fill:var(--graview-ink-muted)}`;
251
270
  }
252
271
  //# sourceMappingURL=plots.js.map
package/dist/plots.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plots.js","sourceRoot":"","sources":["../src/plots.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plots.js","sourceRoot":"","sources":["../src/plots.tsx"],"names":[],"mappings":"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"}
@@ -17,8 +17,9 @@
17
17
  * the boundary, the emphasis sets, the editable fields, the others placed —
18
18
  * is `@graview/react/drawing`'s, fetched with the face that draws it.
19
19
  */
20
- export { GraviewProvider, openingView, ROBOT_REST_MS, useFound, useGraph, useGraview, useGraviewIfAny, useNode, useRobots, useScenePointer, useTheWatchKnowsWhatIsUnseen, useViewMode, useWhereIs, ViewModeProvider } from "./context.js";
20
+ export { GraviewProvider, matchWith, openingView, ROBOT_REST_MS, useFound, useGraph, useGraview, useGraviewIfAny, useNode, useRobots, useScenePointer, useTheWatchKnowsWhatIsUnseen, useViewMode, useWhereIs, ViewModeProvider } from "./context.js";
21
21
  export { GoToContext, useGoTo } from "./go.js";
22
+ export { BesideTheMap } from "./beside-the-map.js";
22
23
  export { HostFilesContext, useHostFiles } from "./files.js";
23
24
  export type { GoTo } from "./go.js";
24
25
  export type { ActsDoor, AdministeredModule, DrawnBox, GraviewContextValue, GraviewProviderProps, PointerMenu, SceneHandle, Scheme, Seat, ViewMode } from "./context.js";
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrP,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxK,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvH,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9H,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1H,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEtG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjJ,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/provider.js CHANGED
@@ -17,8 +17,10 @@
17
17
  * the boundary, the emphasis sets, the editable fields, the others placed —
18
18
  * is `@graview/react/drawing`'s, fetched with the face that draws it.
19
19
  */
20
- export { GraviewProvider, openingView, ROBOT_REST_MS, useFound, useGraph, useGraview, useGraviewIfAny, useNode, useRobots, useScenePointer, useTheWatchKnowsWhatIsUnseen, useViewMode, useWhereIs, ViewModeProvider } from "./context.js";
20
+ export { GraviewProvider, matchWith, openingView, ROBOT_REST_MS, useFound, useGraph, useGraview, useGraviewIfAny, useNode, useRobots, useScenePointer, useTheWatchKnowsWhatIsUnseen, useViewMode, useWhereIs, ViewModeProvider } from "./context.js";
21
21
  export { GoToContext, useGoTo } from "./go.js";
22
+ // Whether a panel beside the map lists a district opened from altitude.
23
+ export { BesideTheMap } from "./beside-the-map.js";
22
24
  // The host's files (FR-163), where a file field's editor finds them.
23
25
  export { HostFilesContext, useHostFiles } from "./files.js";
24
26
  export { HEARTBEAT_MS, PRESENCE_SETTINGS, SHARE_OVER, SHARE_WHERE, tabSession, usePresenceState } from "./presence.js";
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1O,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,qEAAqE;AACrE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEvH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9H,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE1H,0GAA0G;AAC1G,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,6EAA6E;AAC7E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrP,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,wEAAwE;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,qEAAqE;AACrE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEvH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9H,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE1H,0GAA0G;AAC1G,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,6EAA6E;AAC7E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { type AnySchema } from "@graview/core";
2
+ import type { InterpolatedLayout } from "@graview/layout";
3
+ import { type ReactElement } from "react";
4
+ import "./provider.js";
5
+ /**
6
+ * THE CHOSEN RECORD'S LINKS, FROM ALTITUDE (see `linksOfRecords`).
7
+ *
8
+ * One manner per meaning, and the Key says which: a solid line ending in a
9
+ * dot reaches a record the map draws on its own — its building, or its chip
10
+ * in an opened district; a dashed line reaches a district, for the records
11
+ * in it the map does not draw one by one, and says how many. Every line says
12
+ * its relation at its far end, in the chosen record's kind's words. Lines
13
+ * pass under the districts' names rather than over them, and everything the
14
+ * chosen record does not reach recedes.
15
+ *
16
+ * Measured after commit, against the DOM the frame drew, for the reason the
17
+ * ties are: a building is where the plot layer put it, not where the layout
18
+ * last said.
19
+ */
20
+ export interface RecordLinksProps {
21
+ readonly frame: InterpolatedLayout;
22
+ readonly width: number;
23
+ readonly height: number;
24
+ readonly stageRef: {
25
+ current: HTMLElement | null;
26
+ };
27
+ /** Bumped after a scroll or a resize: measure again. */
28
+ readonly tick: number;
29
+ readonly store: {
30
+ readonly schema: AnySchema;
31
+ readonly graph: {
32
+ allEdges(): Iterable<{
33
+ readonly kind: string;
34
+ readonly from: string;
35
+ readonly to: string;
36
+ }>;
37
+ getNode(id: string): ({
38
+ readonly id: string;
39
+ readonly kind: string;
40
+ } & Record<string, unknown>) | undefined;
41
+ };
42
+ };
43
+ readonly graphVersion: unknown;
44
+ readonly selection: readonly string[];
45
+ readonly view: {
46
+ readonly overview?: boolean | undefined;
47
+ readonly focusId: string | null;
48
+ readonly beside?: boolean;
49
+ };
50
+ /** The scene's own rulers: what of an element shows in the stage, and the runs of a curve outside some boxes. */
51
+ readonly rulers: {
52
+ readonly visibleRect: (el: Element, stage: HTMLElement) => Box | null;
53
+ readonly clipQuadratic: (curve: {
54
+ p0: Point;
55
+ c: Point;
56
+ p1: Point;
57
+ }, boxes: readonly Box[]) => {
58
+ p0: Point;
59
+ c: Point;
60
+ p1: Point;
61
+ }[];
62
+ /** A link still provisional (FR-172): what its maker based it on, by the edge it is; and the manner the scene draws such a link in. */
63
+ readonly unsureOf?: (edge: string, from: string, to: string) => string | undefined;
64
+ readonly unsureDash: string;
65
+ readonly unsureOpacity: number;
66
+ };
67
+ }
68
+ type Point = {
69
+ x: number;
70
+ y: number;
71
+ };
72
+ type Box = {
73
+ x: number;
74
+ y: number;
75
+ width: number;
76
+ height: number;
77
+ };
78
+ export declare function RecordLinks({ frame, width, height, stageRef, tick, store, graphVersion: nodes, selection, view, rulers: { visibleRect, clipQuadratic, unsureOf, unsureDash, unsureOpacity } }: RecordLinksProps): ReactElement | null;
79
+ export {};
80
+ //# sourceMappingURL=record-links-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-links-layer.d.ts","sourceRoot":"","sources":["../src/record-links-layer.tsx"],"names":[],"mappings":"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"}