@graview/primitives 0.1.30 → 0.1.32

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 (161) hide show
  1. package/dist/app-bar.d.ts +2 -0
  2. package/dist/app-bar.d.ts.map +1 -1
  3. package/dist/app-bar.js +9 -2
  4. package/dist/app-bar.js.map +1 -1
  5. package/dist/chat.d.ts +8 -6
  6. package/dist/chat.d.ts.map +1 -1
  7. package/dist/chat.js +6 -3
  8. package/dist/chat.js.map +1 -1
  9. package/dist/default-views.d.ts.map +1 -1
  10. package/dist/default-views.js +24 -4
  11. package/dist/default-views.js.map +1 -1
  12. package/dist/draft-frame.d.ts.map +1 -1
  13. package/dist/draft-frame.js +29 -2
  14. package/dist/draft-frame.js.map +1 -1
  15. package/dist/editable.d.ts.map +1 -1
  16. package/dist/editable.js +42 -9
  17. package/dist/editable.js.map +1 -1
  18. package/dist/find.d.ts.map +1 -1
  19. package/dist/find.js +7 -6
  20. package/dist/find.js.map +1 -1
  21. package/dist/first-look-door.d.ts +2 -2
  22. package/dist/first-look-door.js +2 -2
  23. package/dist/first-look.d.ts.map +1 -1
  24. package/dist/first-look.js +7 -4
  25. package/dist/first-look.js.map +1 -1
  26. package/dist/frame.d.ts +1 -0
  27. package/dist/frame.d.ts.map +1 -1
  28. package/dist/frame.js +2 -0
  29. package/dist/frame.js.map +1 -1
  30. package/dist/index.d.ts +13 -2
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +13 -2
  33. package/dist/index.js.map +1 -1
  34. package/dist/inline-ai-door.d.ts +15 -0
  35. package/dist/inline-ai-door.d.ts.map +1 -0
  36. package/dist/inline-ai-door.js +54 -0
  37. package/dist/inline-ai-door.js.map +1 -0
  38. package/dist/inline-ai-env.d.ts +29 -0
  39. package/dist/inline-ai-env.d.ts.map +1 -0
  40. package/dist/inline-ai-env.js +22 -0
  41. package/dist/inline-ai-env.js.map +1 -0
  42. package/dist/inline-ai-menu.d.ts +58 -0
  43. package/dist/inline-ai-menu.d.ts.map +1 -0
  44. package/dist/inline-ai-menu.js +297 -0
  45. package/dist/inline-ai-menu.js.map +1 -0
  46. package/dist/lens/calendar-dates.d.ts.map +1 -1
  47. package/dist/lens/calendar-dates.js +12 -0
  48. package/dist/lens/calendar-dates.js.map +1 -1
  49. package/dist/lens/calendar-options.d.ts +1 -1
  50. package/dist/lens-keeping.js +2 -3
  51. package/dist/lens-keeping.js.map +1 -1
  52. package/dist/map-panel.js +51 -2
  53. package/dist/map-panel.js.map +1 -1
  54. package/dist/notice-place.d.ts +2 -2
  55. package/dist/notice-place.js +2 -2
  56. package/dist/notify-door.d.ts +57 -0
  57. package/dist/notify-door.d.ts.map +1 -0
  58. package/dist/notify-door.js +136 -0
  59. package/dist/notify-door.js.map +1 -0
  60. package/dist/notify-sheet.d.ts +27 -0
  61. package/dist/notify-sheet.d.ts.map +1 -0
  62. package/dist/notify-sheet.js +102 -0
  63. package/dist/notify-sheet.js.map +1 -0
  64. package/dist/pages.d.ts +15 -4
  65. package/dist/pages.d.ts.map +1 -1
  66. package/dist/pages.js +15 -4
  67. package/dist/pages.js.map +1 -1
  68. package/dist/primitives/measure.d.ts +10 -0
  69. package/dist/primitives/measure.d.ts.map +1 -1
  70. package/dist/primitives/measure.js +27 -7
  71. package/dist/primitives/measure.js.map +1 -1
  72. package/dist/quick-ask-desk.d.ts +38 -0
  73. package/dist/quick-ask-desk.d.ts.map +1 -0
  74. package/dist/quick-ask-desk.js +36 -0
  75. package/dist/quick-ask-desk.js.map +1 -0
  76. package/dist/quick-ask-door.d.ts +33 -0
  77. package/dist/quick-ask-door.d.ts.map +1 -0
  78. package/dist/quick-ask-door.js +70 -0
  79. package/dist/quick-ask-door.js.map +1 -0
  80. package/dist/quick-ask-setting.d.ts +9 -0
  81. package/dist/quick-ask-setting.d.ts.map +1 -0
  82. package/dist/quick-ask-setting.js +11 -0
  83. package/dist/quick-ask-setting.js.map +1 -0
  84. package/dist/quick-ask.d.ts +23 -0
  85. package/dist/quick-ask.d.ts.map +1 -0
  86. package/dist/quick-ask.js +327 -0
  87. package/dist/quick-ask.js.map +1 -0
  88. package/dist/record-interactions-door.d.ts +8 -0
  89. package/dist/record-interactions-door.d.ts.map +1 -0
  90. package/dist/record-interactions-door.js +42 -0
  91. package/dist/record-interactions-door.js.map +1 -0
  92. package/dist/record-interactions.d.ts +13 -0
  93. package/dist/record-interactions.d.ts.map +1 -0
  94. package/dist/record-interactions.js +9 -0
  95. package/dist/record-interactions.js.map +1 -0
  96. package/dist/scene-css.d.ts.map +1 -1
  97. package/dist/scene-css.js +47 -13
  98. package/dist/scene-css.js.map +1 -1
  99. package/dist/scene.d.ts +9 -2
  100. package/dist/scene.d.ts.map +1 -1
  101. package/dist/scene.js +8 -1
  102. package/dist/scene.js.map +1 -1
  103. package/dist/shell.d.ts +14 -25
  104. package/dist/shell.d.ts.map +1 -1
  105. package/dist/shell.js +5 -3
  106. package/dist/shell.js.map +1 -1
  107. package/dist/spec-views.d.ts.map +1 -1
  108. package/dist/spec-views.js +6 -3
  109. package/dist/spec-views.js.map +1 -1
  110. package/dist/stretched-link.d.ts +18 -0
  111. package/dist/stretched-link.d.ts.map +1 -0
  112. package/dist/stretched-link.js +47 -0
  113. package/dist/stretched-link.js.map +1 -0
  114. package/dist/timeline.d.ts.map +1 -1
  115. package/dist/timeline.js +23 -2
  116. package/dist/timeline.js.map +1 -1
  117. package/dist/when-input-door.d.ts +8 -0
  118. package/dist/when-input-door.d.ts.map +1 -0
  119. package/dist/when-input-door.js +19 -0
  120. package/dist/when-input-door.js.map +1 -0
  121. package/dist/when-input.d.ts +34 -0
  122. package/dist/when-input.d.ts.map +1 -0
  123. package/dist/when-input.js +122 -0
  124. package/dist/when-input.js.map +1 -0
  125. package/dist/when-picker-door.d.ts +6 -0
  126. package/dist/when-picker-door.d.ts.map +1 -0
  127. package/dist/when-picker-door.js +15 -0
  128. package/dist/when-picker-door.js.map +1 -0
  129. package/dist/when-picker.d.ts +16 -0
  130. package/dist/when-picker.d.ts.map +1 -0
  131. package/dist/when-picker.js +108 -0
  132. package/dist/when-picker.js.map +1 -0
  133. package/dist/workbench/activity.d.ts +4 -0
  134. package/dist/workbench/activity.d.ts.map +1 -1
  135. package/dist/workbench/activity.js +41 -12
  136. package/dist/workbench/activity.js.map +1 -1
  137. package/dist/workbench/agent-seat.d.ts.map +1 -1
  138. package/dist/workbench/agent-seat.js +5 -2
  139. package/dist/workbench/agent-seat.js.map +1 -1
  140. package/dist/workbench/ai-entries.d.ts +22 -0
  141. package/dist/workbench/ai-entries.d.ts.map +1 -0
  142. package/dist/workbench/ai-entries.js +75 -0
  143. package/dist/workbench/ai-entries.js.map +1 -0
  144. package/dist/workbench/ai-feed.d.ts +12 -0
  145. package/dist/workbench/ai-feed.d.ts.map +1 -0
  146. package/dist/workbench/ai-feed.js +14 -0
  147. package/dist/workbench/ai-feed.js.map +1 -0
  148. package/dist/workbench/answer-args.d.ts.map +1 -1
  149. package/dist/workbench/answer-args.js +23 -5
  150. package/dist/workbench/answer-args.js.map +1 -1
  151. package/dist/workbench/inspector.js +1 -1
  152. package/dist/workbench/inspector.js.map +1 -1
  153. package/package.json +6 -6
  154. package/dist/seat-field.d.ts +0 -58
  155. package/dist/seat-field.d.ts.map +0 -1
  156. package/dist/seat-field.js +0 -185
  157. package/dist/seat-field.js.map +0 -1
  158. package/dist/seat-panel.d.ts +0 -38
  159. package/dist/seat-panel.d.ts.map +0 -1
  160. package/dist/seat-panel.js +0 -212
  161. package/dist/seat-panel.js.map +0 -1
@@ -0,0 +1,297 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { layer } from "@graview/core";
3
+ import { aiTargetOf, catalogOf } from "@graview/core/catalog";
4
+ import { useAiDeskState, useGraview, useLiveStore } from "@graview/react/provider";
5
+ import { deriveAffordances } from "@graview/tools/derive";
6
+ import { acceptedEntry, acceptGhost, dismissedEntry, fillHere, ghostOf, interactionId, panelHere, proposalOf, recordHere, suggestHere, thinkingOf } from "@graview/tools/inline-ai";
7
+ import { useEffect, useMemo, useRef, useState } from "react";
8
+ import { useInlineEnv } from "./inline-ai-env.js";
9
+ import { openQuickAsk } from "./quick-ask-desk.js";
10
+ import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
11
+ /**
12
+ * THE INLINE AI, AS THE FACES DRAW IT (Roadmap f-ai-candidate-catalog) —
13
+ * fetched with the first menu that shows it (`inline-ai-door.tsx`).
14
+ *
15
+ * In the context menu, on what it was opened on: the Fast model's few
16
+ * suggestions, picked from the catalog (a value to fill, an act that asks
17
+ * nothing, a panel, a place, a record), each taken with one press; "Fill
18
+ * in" for a record whose fields the catalog has values for; "Draw a panel"
19
+ * for whatever has a kind. A proposed change is a ghost, waiting on the
20
+ * tray (`GhostTray`) for Accept, Accept some or Dismiss, and then for its
21
+ * one undo; a panel is drawn where the seat draws a view, where "Keep as a
22
+ * lens" makes it a real one. Every interaction the person takes up is an
23
+ * entry Activity draws (`aiDesk.record`), and its host keeps.
24
+ *
25
+ * The runner (`inlineEnv`, `askInline`, `takeOffer`, `drawPanel`,
26
+ * `askAgain`) takes plain values, not hooks, so Activity's "Ask again" and
27
+ * "Show the panel" and the quick ask's card (`quick-ask.tsx`) reach the
28
+ * same code. "Ask about this…" opens the quick ask's bar on the target.
29
+ */
30
+ /** One ask of the inline AI, as the engine takes it: the acts the derivation offers this viewer there, the places, where they are. */
31
+ export function askOf(env, target, said) {
32
+ const about = target.on === "selection" ? target.ids : target.on === "record" || target.on === "field" ? [target.id] : [];
33
+ const acts = about.length > 0
34
+ ? deriveAffordances(env.store, about, { principal: env.principal, ...(about.length === 1 ? { focus: about[0] } : {}) }).affordances.map((affordance) => ({
35
+ mutation: affordance.mutation,
36
+ label: affordance.label,
37
+ args: affordance.args,
38
+ open: affordance.open,
39
+ why: affordance.why,
40
+ ...(affordance.destructive ? { destructive: true } : {}),
41
+ }))
42
+ : undefined;
43
+ return {
44
+ store: env.store,
45
+ target,
46
+ principal: env.principal,
47
+ interaction: interactionId(),
48
+ places: env.places,
49
+ selection: env.selection,
50
+ ...(acts ? { acts } : {}),
51
+ ...(env.place ? { place: env.place } : {}),
52
+ ...(said ? { said } : {}),
53
+ };
54
+ }
55
+ /** DRAWN WHERE THE SEAT DRAWS A VIEW, from its recipe: "Keep as a lens" there makes it a real lens. Answers a sentence when it cannot be drawn. */
56
+ export async function drawPanel(env, panel) {
57
+ const engine = await import("@graview/tools/draft");
58
+ const drafted = engine.recipeDraft(panel.recipe, { app: env.app, sight: engine.draftSight(env.app, env.principal) });
59
+ if (engine.isDraftFailure(drafted))
60
+ return drafted.failed;
61
+ env.seatTalk.setDraft(drafted, null);
62
+ env.goTo.draft?.();
63
+ keyboardToTheDraft();
64
+ return undefined;
65
+ }
66
+ /*
67
+ * THE KEYBOARD GOES TO THE PANEL. The menu row that asked for it is gone,
68
+ * and over the scene the panel stands in place of the picture, which is
69
+ * made inert under it: a keyboard left behind would land on <body>. Once
70
+ * the frame is drawn — fetched, the first time, so for up to three seconds
71
+ * of frames — "Keep as a lens" takes it, unless the reader has already put
72
+ * the keyboard somewhere of their own.
73
+ */
74
+ function keyboardToTheDraft(tries = 180) {
75
+ if (typeof document === "undefined")
76
+ return;
77
+ const keep = document.querySelector('[data-testid="draft-keep"]');
78
+ const active = document.activeElement;
79
+ const nowhere = !active || active === document.body || active.closest?.("[inert]") !== null;
80
+ if (keep) {
81
+ if (nowhere)
82
+ keep.focus();
83
+ return;
84
+ }
85
+ if (tries > 0)
86
+ requestAnimationFrame(() => keyboardToTheDraft(tries - 1));
87
+ }
88
+ /** A ghost of these proposals, waiting on the tray, its entry kept. */
89
+ function holdGhost(env, entry, result) {
90
+ if (!result.ghost || result.ghost.proposals.length === 0)
91
+ return;
92
+ env.desk.setGhost({ ghost: result.ghost });
93
+ env.desk.record(entry);
94
+ }
95
+ /**
96
+ * ASK THE INLINE AI: a suggestion (answered, not yet kept — the menu shows
97
+ * it), fills (a ghost on the tray, its entry kept), or a panel (drawn, its
98
+ * entry kept). A failure is kept too, said in its entry.
99
+ */
100
+ export async function askInline(env, kind, target, said) {
101
+ const ask = askOf(env, target, said);
102
+ const result = kind === "suggest" ? await suggestHere(env.ai, ask) : kind === "fill" ? await fillHere(env.ai, ask) : kind === "record" ? await recordHere(env.ai, ask) : await panelHere(env.ai, ask);
103
+ if (result.interaction.outcome === "failed") {
104
+ if (kind !== "suggest")
105
+ env.desk.record(result.interaction);
106
+ return result;
107
+ }
108
+ if (kind === "fill" || kind === "record") {
109
+ if (result.ghost)
110
+ holdGhost(env, result.interaction, result);
111
+ else
112
+ env.desk.record({ ...result.interaction, outcome: "failed", failed: "Nothing here could be filled in." });
113
+ }
114
+ if (kind === "panel" && result.panel) {
115
+ const failed = await drawPanel(env, result.panel);
116
+ env.desk.record(failed ? { ...result.interaction, outcome: "failed", failed } : result.interaction);
117
+ }
118
+ return result;
119
+ }
120
+ /** TAKE ONE OF A SUGGESTION'S OFFERS: a change waits as a ghost; a panel is drawn; a place or a record is gone to. Its entry is kept. */
121
+ export async function takeOffer(env, result, offer) {
122
+ const entry = result.interaction;
123
+ const proposal = proposalOf(offer);
124
+ if (proposal) {
125
+ const model = entry.usage?.at(-1)?.model;
126
+ const confidence = entry.offered.find((one) => one.id === offer.id)?.confidence;
127
+ const ghost = ghostOf(env.store, { interaction: entry.id, target: entry.target, basis: `${entry.ask.said}: ${offer.label}`, ...(model ? { model } : {}), proposals: [{ ...proposal, ...(confidence !== undefined ? { confidence } : {}) }] }, env.principal);
128
+ if (ghost.proposals.length === 0) {
129
+ env.desk.record({ ...entry, outcome: "failed", failed: "That can't be done now." });
130
+ return;
131
+ }
132
+ env.desk.setGhost({ ghost });
133
+ env.desk.record(entry);
134
+ return;
135
+ }
136
+ if (offer.type === "panel") {
137
+ const title = offer.label;
138
+ const panel = { title, recipe: { ...offer.panel, title } };
139
+ const failed = await drawPanel(env, panel);
140
+ env.desk.record(failed ? { ...entry, outcome: "failed", failed } : { ...entry, outcome: "drawn", accepted: [offer.id], panel });
141
+ return;
142
+ }
143
+ if (offer.type === "place")
144
+ env.goTo.place(offer.place);
145
+ else if (offer.type === "record")
146
+ env.goTo.record(offer.record);
147
+ env.desk.record({ ...entry, outcome: "accepted", accepted: [offer.id] });
148
+ }
149
+ /**
150
+ * ASK AGAIN, from an entry in Activity: the same ask, on the same target, as
151
+ * a new interaction. A suggestion asked again is a fill; words asked of the
152
+ * quick ask are asked again on its card, beside the target.
153
+ */
154
+ export async function askAgain(env, entry) {
155
+ if (entry.ask.kind === "ask") {
156
+ openQuickAsk(env.desk, { target: entry.target, asked: entry.ask.said });
157
+ return null;
158
+ }
159
+ const kind = entry.ask.kind === "panel" || entry.ask.kind === "record" ? entry.ask.kind : "fill";
160
+ return askInline(env, kind, entry.target, entry.ask.said);
161
+ }
162
+ const ROW = { padding: "5px 10px", fontSize: "0.875rem", borderRadius: 8, width: "100%", textAlign: "left", borderWidth: 1, borderStyle: "solid", borderColor: "transparent", background: "none", boxShadow: "none" };
163
+ const QUIET = { margin: 0, padding: "4px 10px", fontSize: "0.8125rem", color: "var(--graview-ink-muted)" };
164
+ /** The menu's AI section: the suggestions as they arrive, then the asks this target supports. */
165
+ export function InlineAiMenu({ target: menu, close }) {
166
+ const env = useInlineEnv();
167
+ const target = useMemo(() => aiTargetOf(menu, (id) => env.store.graph.has(id)), [menu, env.store]);
168
+ // What the target supports at all, read once: a fill only where there are values, a panel only where there is a kind.
169
+ const catalog = useMemo(() => {
170
+ const ask = askOf(env, target);
171
+ return catalogOf(env.store, target, { principal: env.principal, places: env.places, ...(ask.acts ? { acts: ask.acts } : {}) });
172
+ }, [env, target]);
173
+ const fills = catalog.candidates.some((candidate) => candidate.type === "fill");
174
+ const panels = catalog.candidates.some((candidate) => candidate.type === "panel");
175
+ // A record made by an act that asks for words, where a thinking model can write them.
176
+ const makes = useMemo(() => new Set(env.store.allMutations().filter((mutation) => (mutation.creates ?? []).length > 0).map((mutation) => mutation.name)), [env.store]);
177
+ const records = thinkingOf(env.ai) !== undefined && catalog.candidates.some((candidate) => candidate.type === "act" && candidate.asks.length > 0 && makes.has(candidate.mutation));
178
+ const [suggested, setSuggested] = useState(null);
179
+ const [busy, setBusy] = useState(true);
180
+ const [failed, setFailed] = useState(null);
181
+ useEffect(() => {
182
+ let live = true;
183
+ setBusy(true);
184
+ void askInline(env, "suggest", target).then((result) => {
185
+ if (!live)
186
+ return;
187
+ setSuggested(result);
188
+ setBusy(false);
189
+ if (result.interaction.outcome === "failed")
190
+ setFailed(result.interaction.failed ?? "The AI could not suggest anything here.");
191
+ });
192
+ return () => {
193
+ live = false;
194
+ };
195
+ // Asked once per target: the menu is drawn again as the graph moves, and the suggestion stands.
196
+ // eslint-disable-next-line react-hooks/exhaustive-deps
197
+ }, [target]);
198
+ const run = (work) => {
199
+ close();
200
+ void work();
201
+ };
202
+ return (_jsxs("div", { "data-testid": "inline-ai", style: { display: "grid", gap: 2 }, children: [busy ? (_jsx("p", { role: "status", "data-testid": "inline-ai-thinking", style: QUIET, children: "Thinking\u2026" })) : failed ? (_jsx("p", { role: "status", style: QUIET, children: failed })) : null, _jsxs("ul", { style: { margin: 0, padding: 0, listStyle: "none", display: "flex", flexDirection: "column", gap: 2 }, children: [(suggested?.offers ?? []).map((offer) => (_jsx("li", { children: _jsxs("button", { type: "button", "data-menu-item": `ai-offer:${offer.id}`, "data-ai-offer": offer.id, "data-ai-offer-type": offer.type, onClick: () => run(() => takeOffer(env, suggested, offer)), style: ROW, children: [offer.label, _jsxs("span", { style: { color: "var(--graview-ink-faint)" }, children: [" \u00B7 ", offer.type === "panel" ? "a panel" : offer.type === "place" ? "go there" : offer.type === "record" ? "open it" : "suggested"] })] }) }, offer.id))), fills ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-fill", onClick: () => run(() => askInline(env, "fill", target, "Fill in")), style: ROW, children: "Fill in with AI" }) })) : null, records ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-record", onClick: () => run(() => askInline(env, "record", target, "Add one")), style: ROW, children: "Add one with AI" }) })) : null, panels ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-panel", onClick: () => run(() => askInline(env, "panel", target, "Draw a panel")), style: ROW, children: "Draw a panel" }) })) : null, _jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-ask", onClick: () => {
203
+ const back = document.activeElement;
204
+ close();
205
+ openQuickAsk(env.desk, { target, returnTo: back instanceof HTMLElement && back !== document.body ? back : null });
206
+ }, style: ROW, children: "Ask about this\u2026" }) })] })] }));
207
+ }
208
+ const LINK = { display: "inline-flex", alignItems: "center", minHeight: 28, padding: "2px 10px", fontSize: "0.8125rem", borderRadius: 8 };
209
+ /**
210
+ * THE GHOST: changes the AI proposed and has not made, each in the act's
211
+ * own sentence and how sure the model was, with a box to keep it or leave
212
+ * it out. Accept takes the ones ticked as one batch; Dismiss puts it away;
213
+ * once taken, Undo takes the batch back.
214
+ */
215
+ export function GhostTray({ placement = "picture" }) {
216
+ const { store: shown, principal, aiDesk } = useGraview();
217
+ const store = useLiveStore(shown, principal);
218
+ const { ghost: held, entries } = useAiDeskState(aiDesk);
219
+ const [off, setOff] = useState(new Set());
220
+ useEffect(() => setOff(new Set()), [held?.ghost.interaction]);
221
+ const tray = useRef(null);
222
+ const undoing = useRef(null);
223
+ /* Accepted, the keyboard goes to the way back: the buttons it pressed are gone. */
224
+ const batch = held?.batch;
225
+ useEffect(() => {
226
+ if (batch !== undefined)
227
+ undoing.current?.focus();
228
+ }, [batch]);
229
+ if (!held)
230
+ return null;
231
+ const { ghost } = held;
232
+ const entry = entries.find((one) => one.id === ghost.interaction);
233
+ /*
234
+ * PUT AWAY, THE KEYBOARD GOES BACK TO WHAT IT WAS ABOUT: the record's card
235
+ * or its page's heading, else the picture or the page — never <body>.
236
+ */
237
+ const putAway = () => {
238
+ const id = ghost.target.on === "record" || ghost.target.on === "field" ? ghost.target.id : undefined;
239
+ const root = tray.current?.closest("[data-graview-face], main")?.parentElement ?? document;
240
+ const home = (id ? root.querySelector(`[data-graview-view="${CSS.escape(id)}"][tabindex]`) : null) ??
241
+ document.querySelector("[data-graview-page-title]") ??
242
+ tray.current?.closest("main") ??
243
+ document.querySelector("main");
244
+ if (home && !home.hasAttribute("tabindex"))
245
+ home.setAttribute("tabindex", "-1");
246
+ home?.focus({ preventScroll: true });
247
+ aiDesk.setGhost(null);
248
+ };
249
+ const chosen = ghost.proposals.filter((proposal) => !off.has(proposal.id)).map((proposal) => proposal.id);
250
+ const accept = () => {
251
+ const kept = acceptGhost(store, ghost, { author: principal, ids: chosen });
252
+ if (!kept.ok) {
253
+ aiDesk.setGhost({ ...held, refused: kept.refused });
254
+ return;
255
+ }
256
+ if (entry)
257
+ aiDesk.record(acceptedEntry(entry, kept.accepted, kept.batch));
258
+ aiDesk.setGhost({ ghost, batch: kept.batch, took: kept.accepted.length, ...(held.onCard ? { onCard: true } : {}) });
259
+ };
260
+ const dismiss = () => {
261
+ if (entry && held.batch === undefined)
262
+ aiDesk.record(dismissedEntry(entry));
263
+ putAway();
264
+ };
265
+ const undo = () => {
266
+ if (held.batch === undefined)
267
+ return;
268
+ try {
269
+ store.undo(held.batch, { author: principal });
270
+ putAway();
271
+ }
272
+ catch (error) {
273
+ aiDesk.setGhost({ ...held, refused: error instanceof Error ? error.message : String(error) });
274
+ }
275
+ };
276
+ return (_jsxs("section", { ref: tray, "data-testid": "ai-ghost", "data-interaction": ghost.interaction, "aria-label": "Proposed by AI", style: {
277
+ // Over the picture it stands in; on a page, over the window; on the quick ask's card, in its flow.
278
+ ...(placement === "card"
279
+ ? { position: "static" }
280
+ : { position: placement === "page" ? "fixed" : "absolute", insetInline: "max(12px, calc(50% - 220px))", bottom: "calc(var(--graview-foot-room, 0px) + 72px)", zIndex: layer("toast"), boxShadow: "var(--graview-lift-high)" }),
281
+ display: "grid",
282
+ gap: 8,
283
+ padding: 12,
284
+ borderRadius: 12,
285
+ border: "1px dashed var(--graview-accent)",
286
+ background: "var(--graview-float)",
287
+ fontSize: "0.875rem",
288
+ }, children: [_jsx("p", { style: { margin: 0, color: "var(--graview-ink-muted)" }, children: held.batch !== undefined ? `Done: ${held.took === 1 ? "one change" : `${held.took} changes`}, as one.` : `Proposed by AI · ${ghost.basis}` }), held.batch === undefined ? (_jsx("ul", { style: { margin: 0, padding: 0, listStyle: "none", display: "grid", gap: 4 }, children: ghost.proposals.map((proposal) => (_jsx("li", { "data-ghost-proposal": proposal.id, children: _jsxs("label", { style: { display: "flex", alignItems: "baseline", gap: 8, cursor: "pointer" }, children: [_jsx("input", { type: "checkbox", checked: !off.has(proposal.id), onChange: (event) => {
289
+ const next = new Set(off);
290
+ if (event.target.checked)
291
+ next.delete(proposal.id);
292
+ else
293
+ next.add(proposal.id);
294
+ setOff(next);
295
+ } }), _jsx("span", { style: { fontStyle: "italic", color: "var(--graview-ink)" }, children: proposal.said }), proposal.confidence !== undefined ? _jsxs("span", { style: { color: "var(--graview-ink-faint)" }, children: [Math.round(proposal.confidence * 100), "% sure"] }) : null] }) }, proposal.id))) })) : null, held.refused ? (_jsx("p", { role: "alert", style: { margin: 0, color: "var(--graview-warn)" }, children: held.refused })) : null, _jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 6 }, children: held.batch === undefined ? (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", "data-testid": "ghost-accept", disabled: chosen.length === 0, onClick: accept, style: LINK, children: chosen.length === ghost.proposals.length ? "Accept" : `Accept ${chosen.length} of ${ghost.proposals.length}` }), _jsx("button", { type: "button", "data-testid": "ghost-dismiss", onClick: dismiss, style: LINK, children: "Dismiss" })] })) : (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", ref: undoing, "data-testid": "ghost-undo", onClick: undo, style: LINK, children: "Undo" }), _jsx("button", { type: "button", "data-testid": "ghost-close", onClick: putAway, style: LINK, children: "Close" })] })) })] }));
296
+ }
297
+ //# sourceMappingURL=inline-ai-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-ai-menu.js","sourceRoot":"","sources":["../src/inline-ai-menu.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-dates.d.ts","sourceRoot":"","sources":["../../src/lens/calendar-dates.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,GAAG,WAAa,CAAC;AAE9B,uEAAuE;AACvE,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAInD;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAIvD;AAGD,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,KAAG,MAAoD,CAAC;AAEzF,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED,8CAA8C;AAC9C,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,MAAwC,CAAC;AAEjF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,MAAM,CAGjE;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAAiC,CAAC;AAE7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9D;AAQD,wDAAwD;AACxD,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAAuC,CAAC;AAEvF,+EAA+E;AAC/E,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,MAAkD,CAAC;AAEzF,4DAA4D;AAC5D,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,KAAG,MAAgC,CAAC"}
1
+ {"version":3,"file":"calendar-dates.d.ts","sourceRoot":"","sources":["../../src/lens/calendar-dates.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,GAAG,WAAa,CAAC;AAU9B,uEAAuE;AACvE,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKnD;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKvD;AAGD,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,KAAG,MAAoD,CAAC;AAEzF,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED,8CAA8C;AAC9C,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,MAAwC,CAAC;AAEjF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,MAAM,CAGjE;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAAiC,CAAC;AAE7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9D;AAQD,wDAAwD;AACxD,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAAuC,CAAC;AAEvF,+EAA+E;AAC/E,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,MAAkD,CAAC;AAEzF,4DAA4D;AAC5D,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,KAAG,MAAgC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { minutesAsRead, weekdayAsRead, weekdayName } from "@graview/core";
2
+ import { namesInstant, wallOfStored } from "@graview/core/words";
2
3
  /*
3
4
  * DATE ARITHMETIC ON STRINGS, in UTC, and nowhere near a local `Date`.
4
5
  *
@@ -8,10 +9,19 @@ import { minutesAsRead, weekdayAsRead, weekdayName } from "@graview/core";
8
9
  * through `Date.UTC`, so the picture is the same in Auckland and in Lima.
9
10
  */
10
11
  export const DAY = 86_400_000;
12
+ /*
13
+ * AN INSTANT IS ON THE READER'S CLOCK. A moment kept with its zone
14
+ * ("2026-10-17T19:00:00Z") is a meeting at 3 PM in New York: its day and
15
+ * time are where the reader is, not the day and hour of UTC, which put an
16
+ * evening's meeting on the next day (Roadmap f-date-inputs). This is the one
17
+ * place here a local clock is read, and only for such a moment.
18
+ */
11
19
  /** The ISO day a value names, or null when it names no date at all. */
12
20
  export function dayOf(value) {
13
21
  if (typeof value !== "string")
14
22
  return null;
23
+ if (namesInstant(value))
24
+ return wallOfStored(value)?.day ?? null;
15
25
  const match = /^(\d{4}-\d{2}-\d{2})/.exec(value);
16
26
  return match ? match[1] : null;
17
27
  }
@@ -19,6 +29,8 @@ export function dayOf(value) {
19
29
  export function minutesOf(value) {
20
30
  if (typeof value !== "string")
21
31
  return null;
32
+ if (namesInstant(value))
33
+ return wallOfStored(value)?.minutes ?? null;
22
34
  const match = /^\d{4}-\d{2}-\d{2}[T ](\d{2}):(\d{2})/.exec(value);
23
35
  return match ? Number(match[1]) * 60 + Number(match[2]) : null;
24
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-dates.js","sourceRoot":"","sources":["../../src/lens/calendar-dates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calendar-dates.js","sourceRoot":"","sources":["../../src/lens/calendar-dates.ts"],"names":[],"mappings":"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"}
@@ -78,7 +78,7 @@ export interface CalendarOptions {
78
78
  * morning, and no harness could photograph it twice.
79
79
  *
80
80
  * Unsaid, the store's own day (`Store.today()`, the day its rules are
81
- * judged on) — so a calendar kept from the ask field, or declared without
81
+ * judged on) — so a calendar kept from a drawn panel, or declared without
82
82
  * a day, opens on the same day the app's late and due-this-week mean —
83
83
  * and only where the store names none, the reader's own.
84
84
  */
@@ -116,9 +116,8 @@ export function useLensKeeping(go) {
116
116
  const kept = { edit, written };
117
117
  seatTalk.setDraft(null);
118
118
  seatTalk.setTurns((turns) => [...turns, { role: "seat", text: sentence, kept }]);
119
- // Said once: in the open conversation, with its Take back; else in a notice (FR-133) that goes when the way back on a face does, after `WAY_BACK_MS` (FR-152; the number, not the module, which would come with it), never both over each other.
120
- if (!seatTalk.get().open)
121
- board?.notify({ kind: "toast", id: `kept:${title}`, sentence, timeout: 10_000, action: { label: "Take back", onSelect: () => void takeBack(kept) } });
119
+ // Said in a notice (FR-133) with its Take back, that goes when the way back on a face does, after `WAY_BACK_MS` (FR-152; the number, not the module, which would come with it); and in the conversation, where a product draws one.
120
+ board?.notify({ kind: "toast", id: `kept:${title}`, sentence, timeout: 10_000, action: { label: "Take back", onSelect: () => void takeBack(kept) } });
122
121
  if (place)
123
122
  go({ to: "picture", kind: place.kind, as: place.as, title, address: placePath(place.as, sharesItsName(place, places) ? kindPath(store.schema, place.kind).slice(1) : undefined), said: `Went to ${title}.` });
124
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lens-keeping.js","sourceRoot":"","sources":["../src/lens-keeping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAkB,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAE,UAAU,EAAsC,MAAM,yBAAyB,CAAC;AAGzF,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAC;AAG5F;;;;;;;;;;;;;;;;;GAiBG;AAEH,SAAS,KAAK,CAAC,GAAW,EAAE,MAA2B;IACrD,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;;YAClE,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;IACzE,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,IAAc;IACxD,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,KAAa;IACvD,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,0DAA0D;AAC1D,SAAS,eAAe,CAAC,QAAsC,EAAE,KAAa;IAC5E,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AACtH,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,MAAsB,EAAyD,EAAE,CAChG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAE9L,MAAM,MAAM,GAAG,CAAC,IAAiB,EAAY,EAAE,CAAC,CAAC;IAC/C,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACnD,CAAC,CAAC;AAEH,uEAAuE;AACvE,SAAS,SAAS,CAAC,KAAa,EAAE,KAAiE;IACjG,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACxG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;AAC5E,CAAC;AASD,qGAAqG;AACrG,MAAM,UAAU,cAAc,CAAC,EAA4B;IACzD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAa,CAAC;IAC9E,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;QACvD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,MAAM,CAAC;gBACP,0FAA0F;YAC5F,CAAC;QACH,CAAC;QACD,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,eAAe,CAAC,KAAgD,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9E,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3B,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxJ,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,KAAK,2BAA2B,EAAE;SAChF,CAAC,CAAC;QACH,sGAAsG;QACtG,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,KAAK,GAAG,EAAE,CAAC,CAAC;IAChH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAAE,KAAgB,EAAiB,EAAE;QACrD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAgB,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACnD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAwB,CAAC;QAC7B,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACxD,MAAM,QAAQ,GACZ,IAAI;YACJ,CAAC,OAAO;gBACN,CAAC,CAAC,SAAS,KAAK,uCAAuC;gBACvD,CAAC,CAAC,UAAU;oBACV,CAAC,CAAC,SAAS,KAAK,4DAA4D;oBAC5E,CAAC,CAAC,SAAS,KAAK,qBAAqB,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,iPAAiP;QACjP,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI;YAAE,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAChL,IAAI,KAAK;YAAE,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,KAAK,GAAG,EAAE,CAAC,CAAC;IAC3N,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"lens-keeping.js","sourceRoot":"","sources":["../src/lens-keeping.ts"],"names":[],"mappings":"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"}
package/dist/map-panel.js CHANGED
@@ -101,7 +101,7 @@ function PanelFrame({ label, wide, testId, head, onClose, children, sheetHeight,
101
101
  }, []);
102
102
  return (_jsxs("section", { ref: region, "aria-label": label, "data-testid": testId, "data-graview-map-panel": sheet ? "sheet" : "dock", "data-graview-overlay": "", "data-graview-offstage": "", className: "graview-map-panel", style: {
103
103
  position: "absolute",
104
- // On the rail's rung, drawn after the ask field: a sheet stands over the field rather than being cut through by it.
104
+ // On the rail's rung: a sheet stands over what is at the foot rather than being cut through by it.
105
105
  zIndex: layer("rail"),
106
106
  boxSizing: "border-box",
107
107
  display: "flex",
@@ -158,6 +158,52 @@ function ActsButton({ on, about }) {
158
158
  }
159
159
  /** Going to a record from the panel: the same stop a double-click on it in the scene makes, on the ground. */
160
160
  const travelTo = (view, id) => ({ ...withFocus(withOverview(view, false), id), relation: null });
161
+ /**
162
+ * THE KEYBOARD GOES WHERE "GO TO IT" WENT. The press takes the panel, and
163
+ * the button in it, away with the map; the keyboard fell to <body> until
164
+ * the Shell's rescue found something, and on a slow machine that was
165
+ * seconds, or a record that was not this one. It goes to the record's
166
+ * card on the ground as soon as the card is drawn — unless a person put it
167
+ * somewhere meanwhile, which ends the wait.
168
+ *
169
+ * AND IT IS NEVER ON NOTHING MEANWHILE. Waiting for the card left the
170
+ * keyboard on <body> for as long as the scene took to draw it, which on the
171
+ * nightly's loaded runner was longer than the watch waits. So at the press
172
+ * it moves to the scene's ground — the one thing the press does not take
173
+ * away — and waits there: a stop of its own only while it holds the
174
+ * keyboard, handed on to the card once the card is drawn.
175
+ */
176
+ function handTheKeyboardTo(id, pressed) {
177
+ const wanted = `[data-graview-stage] [data-graview-view="${CSS.escape(id)}"][tabindex]`;
178
+ // The ground of this scene: the nearest one around the press, for a page with more than one app on it.
179
+ let ground = null;
180
+ for (let at = pressed?.parentElement ?? null; at && !ground; at = at.parentElement)
181
+ ground = at.querySelector(".graview-ground");
182
+ ground ??= document.querySelector(".graview-ground");
183
+ const holding = ground !== null && !ground.hasAttribute("tabindex");
184
+ if (ground && holding) {
185
+ ground.setAttribute("tabindex", "-1");
186
+ // Once the keyboard leaves it, by the card or by a person, the ground is not a stop.
187
+ ground.addEventListener("focusout", (event) => {
188
+ if (event.target === ground)
189
+ ground.removeAttribute("tabindex");
190
+ }, { once: true });
191
+ }
192
+ ground?.focus({ preventScroll: true });
193
+ const until = performance.now() + 5000;
194
+ const land = () => {
195
+ const at = document.activeElement;
196
+ const free = at === null || at === document.body || at === document.documentElement || at === pressed || at === ground;
197
+ if (!free)
198
+ return;
199
+ const card = document.querySelector(wanted);
200
+ if (card && card.isConnected && !card.closest("[inert]"))
201
+ return card.focus({ preventScroll: true });
202
+ if (performance.now() < until)
203
+ requestAnimationFrame(land);
204
+ };
205
+ requestAnimationFrame(land);
206
+ }
161
207
  /* -------------------------------------------------------------- the lens */
162
208
  /**
163
209
  * A LENS, AT FULL SIZE, BESIDE THE MAP. The same component the place draws,
@@ -270,7 +316,10 @@ function RecordPanel({ id }) {
270
316
  const ownCard = Card !== undefined && !isDefaultView(Card);
271
317
  /* A record risen from (in focus, not chosen) is put away by leaving it, as a lens is. */
272
318
  const close = () => (view.focusId === id ? go({ ...withFocus(view, null), selection: [] }) : setSelection([]));
273
- return (_jsxs(PanelFrame, { label: `${name(id)}: its links`, testId: "record-panel", wide: ownCard ? "min(max(440px, 46%), 760px)" : "min(360px, 40%)", sheetHeight: "52%", onClose: close, head: _jsxs(_Fragment, { children: [_jsx("div", { style: eyebrow, children: noun }), _jsx("h2", { style: title, "data-testid": "record-panel-title", children: name(id) }), _jsxs("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginTop: 10 }, children: [_jsx("button", { type: "button", "data-testid": "record-panel-go", style: pressStyle, onClick: () => go(travelTo(view, id)), children: "Go to it" }), _jsx(ActsButton, { on: id, about: name(id) }), _jsxs("button", { type: "button", "data-testid": "record-panel-district", style: pressStyle, onClick: () => setSelection([kindCardId(kind)]), children: ["All ", pluralLabel(store.schema, kind).toLowerCase()] })] })] }), children: [_jsx("div", { "data-graview-record-card": id, style: { padding: "8px 18px 0" }, children: ownCard ? (_jsx(ViewBoundary, { kind: kind, children: _jsx(Card, { node: node, fidelity: "full", cardinality: "one", mode: "fullscreen", selected: false }) })) : (_jsx(Fields, { id: id, shown: [name(id)] })) }), groups.length === 0 ? _jsx("p", { style: { ...quiet, margin: "14px 18px" }, children: "No links yet." }) : null, groups.map((group) => (_jsxs("section", { "aria-label": group.words, "data-graview-links": group.edge, children: [_jsxs("h3", { style: heading, children: [group.words.charAt(0).toUpperCase() + group.words.slice(1), " ", _jsxs("span", { style: { fontWeight: 400, color: "var(--graview-ink-faint)" }, children: ["\u00B7 ", group.others.length] })] }), _jsx("ul", { style: listStyle, children: group.others.map((other) => (_jsx("li", { children: _jsxs("button", { type: "button", className: "graview-map-panel-row", "data-graview-record": other, style: rowStyle, onClick: () => setSelection([other]),
319
+ return (_jsxs(PanelFrame, { label: `${name(id)}: its links`, testId: "record-panel", wide: ownCard ? "min(max(440px, 46%), 760px)" : "min(360px, 40%)", sheetHeight: "52%", onClose: close, head: _jsxs(_Fragment, { children: [_jsx("div", { style: eyebrow, children: noun }), _jsx("h2", { style: title, "data-testid": "record-panel-title", children: name(id) }), _jsxs("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginTop: 10 }, children: [_jsx("button", { type: "button", "data-testid": "record-panel-go", style: pressStyle, onClick: (event) => {
320
+ go(travelTo(view, id));
321
+ handTheKeyboardTo(id, event.currentTarget);
322
+ }, children: "Go to it" }), _jsx(ActsButton, { on: id, about: name(id) }), _jsxs("button", { type: "button", "data-testid": "record-panel-district", style: pressStyle, onClick: () => setSelection([kindCardId(kind)]), children: ["All ", pluralLabel(store.schema, kind).toLowerCase()] })] })] }), children: [_jsx("div", { "data-graview-record-card": id, style: { padding: "8px 18px 0" }, children: ownCard ? (_jsx(ViewBoundary, { kind: kind, children: _jsx(Card, { node: node, fidelity: "full", cardinality: "one", mode: "fullscreen", selected: false }) })) : (_jsx(Fields, { id: id, shown: [name(id)] })) }), groups.length === 0 ? _jsx("p", { style: { ...quiet, margin: "14px 18px" }, children: "No links yet." }) : null, groups.map((group) => (_jsxs("section", { "aria-label": group.words, "data-graview-links": group.edge, children: [_jsxs("h3", { style: heading, children: [group.words.charAt(0).toUpperCase() + group.words.slice(1), " ", _jsxs("span", { style: { fontWeight: 400, color: "var(--graview-ink-faint)" }, children: ["\u00B7 ", group.others.length] })] }), _jsx("ul", { style: listStyle, children: group.others.map((other) => (_jsx("li", { children: _jsxs("button", { type: "button", className: "graview-map-panel-row", "data-graview-record": other, style: rowStyle, onClick: () => setSelection([other]),
274
323
  // Its acts, as on the map: a right-click (or a long press) opens the menu about it, here.
275
324
  onContextMenu: (event) => actsAt(event, other), children: [_jsx("span", { style: { flex: "1 1 auto", minWidth: 0, overflowWrap: "anywhere" }, children: name(other) }), group.kind !== kind ? null : _jsx("span", { style: { fontSize: "0.75rem", color: "var(--graview-ink-faint)" }, children: noun })] }) }, other))) })] }, group.key)))] }));
276
325
  }