@graview/react 0.1.0
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/LICENSE +96 -0
- package/README.md +20 -0
- package/dist/activity.d.ts +113 -0
- package/dist/activity.d.ts.map +1 -0
- package/dist/activity.js +207 -0
- package/dist/activity.js.map +1 -0
- package/dist/animation.d.ts +64 -0
- package/dist/animation.d.ts.map +1 -0
- package/dist/animation.js +245 -0
- package/dist/animation.js.map +1 -0
- package/dist/captions.d.ts +43 -0
- package/dist/captions.d.ts.map +1 -0
- package/dist/captions.js +61 -0
- package/dist/captions.js.map +1 -0
- package/dist/channels.d.ts +15 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +114 -0
- package/dist/channels.js.map +1 -0
- package/dist/connectors.d.ts +176 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +837 -0
- package/dist/connectors.js.map +1 -0
- package/dist/context.d.ts +348 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +568 -0
- package/dist/context.js.map +1 -0
- package/dist/drawn.d.ts +60 -0
- package/dist/drawn.d.ts.map +1 -0
- package/dist/drawn.js +58 -0
- package/dist/drawn.js.map +1 -0
- package/dist/edge-signs.d.ts +13 -0
- package/dist/edge-signs.d.ts.map +1 -0
- package/dist/edge-signs.js +76 -0
- package/dist/edge-signs.js.map +1 -0
- package/dist/hooks.d.ts +160 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +457 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/keyboard.d.ts +5 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +178 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/kit.d.ts +10 -0
- package/dist/kit.d.ts.map +1 -0
- package/dist/kit.js +32 -0
- package/dist/kit.js.map +1 -0
- package/dist/local-intelligence.d.ts +31 -0
- package/dist/local-intelligence.d.ts.map +1 -0
- package/dist/local-intelligence.js +66 -0
- package/dist/local-intelligence.js.map +1 -0
- package/dist/motion.d.ts +17 -0
- package/dist/motion.d.ts.map +1 -0
- package/dist/motion.js +26 -0
- package/dist/motion.js.map +1 -0
- package/dist/occupants.d.ts +45 -0
- package/dist/occupants.d.ts.map +1 -0
- package/dist/occupants.js +57 -0
- package/dist/occupants.js.map +1 -0
- package/dist/parallel.d.ts +19 -0
- package/dist/parallel.d.ts.map +1 -0
- package/dist/parallel.js +30 -0
- package/dist/parallel.js.map +1 -0
- package/dist/picking.d.ts +30 -0
- package/dist/picking.d.ts.map +1 -0
- package/dist/picking.js +140 -0
- package/dist/picking.js.map +1 -0
- package/dist/plots.d.ts +106 -0
- package/dist/plots.d.ts.map +1 -0
- package/dist/plots.js +306 -0
- package/dist/plots.js.map +1 -0
- package/dist/pointer.d.ts +27 -0
- package/dist/pointer.d.ts.map +1 -0
- package/dist/pointer.js +39 -0
- package/dist/pointer.js.map +1 -0
- package/dist/presence.d.ts +110 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +280 -0
- package/dist/presence.js.map +1 -0
- package/dist/rails.d.ts +11 -0
- package/dist/rails.d.ts.map +1 -0
- package/dist/rails.js +15 -0
- package/dist/rails.js.map +1 -0
- package/dist/resolved-view.d.ts +78 -0
- package/dist/resolved-view.d.ts.map +1 -0
- package/dist/resolved-view.js +365 -0
- package/dist/resolved-view.js.map +1 -0
- package/dist/robot.d.ts +114 -0
- package/dist/robot.d.ts.map +1 -0
- package/dist/robot.js +93 -0
- package/dist/robot.js.map +1 -0
- package/dist/routes.d.ts +50 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +150 -0
- package/dist/routes.js.map +1 -0
- package/dist/scene-camera.d.ts +25 -0
- package/dist/scene-camera.d.ts.map +1 -0
- package/dist/scene-camera.js +130 -0
- package/dist/scene-camera.js.map +1 -0
- package/dist/scene-hand.d.ts +110 -0
- package/dist/scene-hand.d.ts.map +1 -0
- package/dist/scene-hand.js +317 -0
- package/dist/scene-hand.js.map +1 -0
- package/dist/scene-helpers.d.ts +46 -0
- package/dist/scene-helpers.d.ts.map +1 -0
- package/dist/scene-helpers.js +108 -0
- package/dist/scene-helpers.js.map +1 -0
- package/dist/scene-lines.d.ts +76 -0
- package/dist/scene-lines.d.ts.map +1 -0
- package/dist/scene-lines.js +578 -0
- package/dist/scene-lines.js.map +1 -0
- package/dist/scene-root.d.ts +71 -0
- package/dist/scene-root.d.ts.map +1 -0
- package/dist/scene-root.js +790 -0
- package/dist/scene-root.js.map +1 -0
- package/dist/scene.d.ts +17 -0
- package/dist/scene.d.ts.map +1 -0
- package/dist/scene.js +17 -0
- package/dist/scene.js.map +1 -0
- package/dist/seat-marks.d.ts +35 -0
- package/dist/seat-marks.d.ts.map +1 -0
- package/dist/seat-marks.js +43 -0
- package/dist/seat-marks.js.map +1 -0
- package/dist/settings.d.ts +30 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +73 -0
- package/dist/settings.js.map +1 -0
- package/dist/view-boundary.d.ts +33 -0
- package/dist/view-boundary.d.ts.map +1 -0
- package/dist/view-boundary.js +53 -0
- package/dist/view-boundary.js.map +1 -0
- package/dist/view-host.d.ts +57 -0
- package/dist/view-host.d.ts.map +1 -0
- package/dist/view-host.js +474 -0
- package/dist/view-host.js.map +1 -0
- package/dist/view-registry.d.ts +122 -0
- package/dist/view-registry.d.ts.map +1 -0
- package/dist/view-registry.js +20 -0
- package/dist/view-registry.js.map +1 -0
- package/dist/where-drawn.d.ts +151 -0
- package/dist/where-drawn.d.ts.map +1 -0
- package/dist/where-drawn.js +231 -0
- package/dist/where-drawn.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { type Connector } from "@graview/layout";
|
|
2
|
+
import type { ActivityMark } from "./activity.js";
|
|
3
|
+
import type { SceneNode } from "./scene-root.js";
|
|
4
|
+
/**
|
|
5
|
+
* Where a line toward `towards` should MEET a box: on its border, not at its
|
|
6
|
+
* centre.
|
|
7
|
+
*
|
|
8
|
+
* Centre-anchored lines cross the card's own interior on the way out — the
|
|
9
|
+
* yellow dash sawing through the middle of REASONS was this — and where
|
|
10
|
+
* several relations share an endpoint they converge to a single point at the
|
|
11
|
+
* centre, which reads as a knot rather than as several roads arriving. The
|
|
12
|
+
* border is where a road meets a building.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* HOW A TIE RUNS between two measured drawings — a pure decision, so it is
|
|
16
|
+
* testable without a browser.
|
|
17
|
+
*
|
|
18
|
+
* Two drawings stacked in one column used to get a near-straight vertical
|
|
19
|
+
* aimed centre-to-centre — a line THROUGH every row between them, whose
|
|
20
|
+
* hit corridor then stole those rows' clicks. Boxes that share a column
|
|
21
|
+
* stitch along their common right edge, in the gutter; boxes that share a
|
|
22
|
+
* row stitch over the top. Only ends with clear air between them take the
|
|
23
|
+
* direct arc. Returns null when no honest line exists: one drawing inside
|
|
24
|
+
* another is the view's own composition, and anchors within a few pixels
|
|
25
|
+
* are one drawing restating itself.
|
|
26
|
+
*/
|
|
27
|
+
export declare function tieRoute(fromBox: {
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
width: number;
|
|
31
|
+
height: number;
|
|
32
|
+
}, toBox: {
|
|
33
|
+
x: number;
|
|
34
|
+
y: number;
|
|
35
|
+
width: number;
|
|
36
|
+
height: number;
|
|
37
|
+
}): {
|
|
38
|
+
from: {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
};
|
|
42
|
+
to: {
|
|
43
|
+
x: number;
|
|
44
|
+
y: number;
|
|
45
|
+
};
|
|
46
|
+
control: {
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
};
|
|
50
|
+
mode: "stacked" | "abreast" | "direct";
|
|
51
|
+
} | null;
|
|
52
|
+
/** A box in stage space, anchored at its top-left. */
|
|
53
|
+
export type Box = {
|
|
54
|
+
x: number;
|
|
55
|
+
y: number;
|
|
56
|
+
width: number;
|
|
57
|
+
height: number;
|
|
58
|
+
};
|
|
59
|
+
type SceneConnector = Connector & {
|
|
60
|
+
readonly opacity?: number;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* ONE DRAWN LINE: an anchor at each end, and the real edges that run
|
|
64
|
+
* between them.
|
|
65
|
+
*
|
|
66
|
+
* Layout resolves an edge's ends to whatever is PLACED — a session inside
|
|
67
|
+
* the week resolves to the week — and bundles every edge that lands on the
|
|
68
|
+
* same pair. That is right for the layout, which cannot see inside a view.
|
|
69
|
+
* The renderer can: the week draws each session as its own span, a session
|
|
70
|
+
* card draws each drill as a chip, and any element wearing
|
|
71
|
+
* `data-graview-pick` for a member is where a line to that member should
|
|
72
|
+
* start. So a connector is unpicked here into strands, one per distinct
|
|
73
|
+
* pair of anchors, and bundled again only where the view draws nothing for
|
|
74
|
+
* the member. A strand that stands for exactly one edge is selectable.
|
|
75
|
+
*/
|
|
76
|
+
export interface Strand {
|
|
77
|
+
readonly key: string;
|
|
78
|
+
readonly connector: SceneConnector;
|
|
79
|
+
readonly edges: readonly {
|
|
80
|
+
readonly from: string;
|
|
81
|
+
readonly to: string;
|
|
82
|
+
}[];
|
|
83
|
+
readonly fromBox: Box;
|
|
84
|
+
readonly toBox: Box;
|
|
85
|
+
/** What each end is anchored ON: the drawn node, or a member drawn inside it. */
|
|
86
|
+
readonly fromAnchor: string;
|
|
87
|
+
readonly toAnchor: string;
|
|
88
|
+
/** Every other drawn box, so the line can dive under cards it merely crosses. */
|
|
89
|
+
readonly obstacles: readonly Box[];
|
|
90
|
+
/** Both ends are chips of the relation band: every chip of it, so the line can take the gutters. */
|
|
91
|
+
readonly band?: readonly Box[];
|
|
92
|
+
/**
|
|
93
|
+
* The cards an end is drawn INSIDE, when it lands on a member: the line
|
|
94
|
+
* is visible across them (that is what landing on a member means), but
|
|
95
|
+
* its hit stroke is not, so a line to Ravi never takes a click meant
|
|
96
|
+
* for June above him.
|
|
97
|
+
*/
|
|
98
|
+
readonly hosts: readonly Box[];
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Resolves the frame's connectors into the strands the scene will draw.
|
|
102
|
+
*
|
|
103
|
+
* Pure of React and null-safe without a DOM: headless, every strand is
|
|
104
|
+
* anchored on the layout's own boxes, which is the old behaviour exactly.
|
|
105
|
+
* From altitude nothing is unpicked — the constellation is a picture of
|
|
106
|
+
* kinds, and a line from a span inside the shrunk stamp would say nothing
|
|
107
|
+
* the road between two districts does not.
|
|
108
|
+
*/
|
|
109
|
+
export declare function connectorStrands(nodes: readonly SceneNode[], connectors: readonly SceneConnector[], stageEl: HTMLElement | null, overview: boolean, scheme: "light" | "dark"): Strand[];
|
|
110
|
+
type Point = {
|
|
111
|
+
x: number;
|
|
112
|
+
y: number;
|
|
113
|
+
};
|
|
114
|
+
type Quadratic = {
|
|
115
|
+
p0: Point;
|
|
116
|
+
c: Point;
|
|
117
|
+
p1: Point;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* THE VISIBLE RUNS of a curve: every stretch of it that lies outside the
|
|
121
|
+
* given boxes, as exact pieces of the same curve.
|
|
122
|
+
*
|
|
123
|
+
* A line used to be clipped by sitting BEHIND the cards, which was free and
|
|
124
|
+
* was also why a line anchored on a span inside the week never showed the
|
|
125
|
+
* stretch from the span to the panel's edge — it was under the panel. The
|
|
126
|
+
* lines now sit over the cards and clip themselves: out of the box they
|
|
127
|
+
* start in, into the box they end in, and under any card they cross on
|
|
128
|
+
* the way. Sampled, then each crossing refined by bisection, so a run ends
|
|
129
|
+
* on a border rather than a sample shy of it.
|
|
130
|
+
*/
|
|
131
|
+
export declare function clipQuadratic(q: Quadratic, boxes: readonly Box[]): Quadratic[];
|
|
132
|
+
/**
|
|
133
|
+
* Connectors, drawn in SVG over the scene on BOTH renderer paths.
|
|
134
|
+
*
|
|
135
|
+
* A deliberate choice, not an omission: the GPU pipeline earns its cost on
|
|
136
|
+
* per-plane blur of captured pixels, and lines are the one thing it would be
|
|
137
|
+
* worse at. SVG strokes stay crisp at any scale, carry their edge kind into
|
|
138
|
+
* the DOM where a test or a screen reader can find it, and cost nothing to
|
|
139
|
+
* restyle. The capture inside a `layoutsubtree` canvas is not disturbed,
|
|
140
|
+
* because this sits outside it.
|
|
141
|
+
*/
|
|
142
|
+
export declare function Connectors({ strands, result, scheme, overview, selection, emphasis, stageRef, liveOf, onPickEdge, }: {
|
|
143
|
+
/** The lines to draw, resolved once per render by `connectorStrands`. */
|
|
144
|
+
readonly strands: readonly Strand[];
|
|
145
|
+
readonly overview: boolean;
|
|
146
|
+
/** For measuring the boxes a person can actually see. */
|
|
147
|
+
readonly stageRef: {
|
|
148
|
+
current: HTMLElement | null;
|
|
149
|
+
};
|
|
150
|
+
/** So a chosen kind's relations can stand out from the rest. */
|
|
151
|
+
readonly selection: readonly string[];
|
|
152
|
+
/** A relation the legend is asking about: its lines come forward. */
|
|
153
|
+
readonly emphasis: string | null;
|
|
154
|
+
/** Select the ONE edge a line stands for; `at` set means "and menu here". */
|
|
155
|
+
readonly onPickEdge?: (edgeId: string, at?: {
|
|
156
|
+
x: number;
|
|
157
|
+
y: number;
|
|
158
|
+
}) => void;
|
|
159
|
+
/** What just happened to this relation, if anything. */
|
|
160
|
+
liveOf?: (connector: {
|
|
161
|
+
from: string;
|
|
162
|
+
to: string;
|
|
163
|
+
}) => ActivityMark | undefined;
|
|
164
|
+
result: {
|
|
165
|
+
nodes: readonly SceneNode[];
|
|
166
|
+
width: number;
|
|
167
|
+
height: number;
|
|
168
|
+
/** Present at altitude: the roads run along this lattice. */
|
|
169
|
+
city?: {
|
|
170
|
+
readonly cell: number;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
scheme: "light" | "dark";
|
|
174
|
+
}): import("react").JSX.Element | null;
|
|
175
|
+
export {};
|
|
176
|
+
//# sourceMappingURL=connectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../src/connectors.tsx"],"names":[],"mappings":"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"}
|