@graview/primitives 0.1.29 → 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.
- package/dist/app-bar.d.ts +2 -0
- package/dist/app-bar.d.ts.map +1 -1
- package/dist/app-bar.js +46 -9
- package/dist/app-bar.js.map +1 -1
- package/dist/app-link.d.ts.map +1 -1
- package/dist/app-link.js +5 -2
- package/dist/app-link.js.map +1 -1
- package/dist/app-title.d.ts +1 -1
- package/dist/app-title.d.ts.map +1 -1
- package/dist/app-title.js +7 -3
- package/dist/app-title.js.map +1 -1
- package/dist/arrange-bar.d.ts +10 -0
- package/dist/arrange-bar.d.ts.map +1 -1
- package/dist/arrange-bar.js +25 -4
- package/dist/arrange-bar.js.map +1 -1
- package/dist/arrange-lists.d.ts +4 -0
- package/dist/arrange-lists.d.ts.map +1 -1
- package/dist/arrange-lists.js +30 -2
- package/dist/arrange-lists.js.map +1 -1
- package/dist/bar-panes.d.ts +1 -1
- package/dist/bar-panes.d.ts.map +1 -1
- package/dist/bar-panes.js +1 -1
- package/dist/bar-panes.js.map +1 -1
- package/dist/bar-suggested.d.ts +2 -0
- package/dist/bar-suggested.d.ts.map +1 -0
- package/dist/bar-suggested.js +22 -0
- package/dist/bar-suggested.js.map +1 -0
- package/dist/chat.d.ts +8 -6
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +6 -3
- package/dist/chat.js.map +1 -1
- package/dist/connections.d.ts +1 -1
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +39 -4
- package/dist/connections.js.map +1 -1
- package/dist/declared-lens-doors.d.ts.map +1 -1
- package/dist/declared-lens-doors.js +4 -1
- package/dist/declared-lens-doors.js.map +1 -1
- package/dist/default-views.d.ts.map +1 -1
- package/dist/default-views.js +60 -17
- package/dist/default-views.js.map +1 -1
- package/dist/draft-frame.d.ts.map +1 -1
- package/dist/draft-frame.js +29 -2
- package/dist/draft-frame.js.map +1 -1
- package/dist/editable.d.ts +8 -1
- package/dist/editable.d.ts.map +1 -1
- package/dist/editable.js +58 -15
- package/dist/editable.js.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +29 -5
- package/dist/files.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +110 -11
- package/dist/find.js.map +1 -1
- package/dist/first-look-door.d.ts +71 -0
- package/dist/first-look-door.d.ts.map +1 -0
- package/dist/first-look-door.js +95 -0
- package/dist/first-look-door.js.map +1 -0
- package/dist/first-look.d.ts +12 -0
- package/dist/first-look.d.ts.map +1 -0
- package/dist/first-look.js +265 -0
- package/dist/first-look.js.map +1 -0
- package/dist/frame.d.ts +3 -0
- package/dist/frame.d.ts.map +1 -1
- package/dist/frame.js +4 -0
- package/dist/frame.js.map +1 -1
- package/dist/here.d.ts +24 -1
- package/dist/here.d.ts.map +1 -1
- package/dist/here.js +36 -1
- package/dist/here.js.map +1 -1
- package/dist/index.d.ts +19 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/inline-ai-door.d.ts +15 -0
- package/dist/inline-ai-door.d.ts.map +1 -0
- package/dist/inline-ai-door.js +54 -0
- package/dist/inline-ai-door.js.map +1 -0
- package/dist/inline-ai-env.d.ts +29 -0
- package/dist/inline-ai-env.d.ts.map +1 -0
- package/dist/inline-ai-env.js +22 -0
- package/dist/inline-ai-env.js.map +1 -0
- package/dist/inline-ai-menu.d.ts +58 -0
- package/dist/inline-ai-menu.d.ts.map +1 -0
- package/dist/inline-ai-menu.js +297 -0
- package/dist/inline-ai-menu.js.map +1 -0
- package/dist/kind-stop.d.ts +3 -1
- package/dist/kind-stop.d.ts.map +1 -1
- package/dist/kind-stop.js +3 -2
- package/dist/kind-stop.js.map +1 -1
- package/dist/lens/arranging.d.ts.map +1 -1
- package/dist/lens/arranging.js +9 -1
- package/dist/lens/arranging.js.map +1 -1
- package/dist/lens/calendar-dates.d.ts.map +1 -1
- package/dist/lens/calendar-dates.js +12 -0
- package/dist/lens/calendar-dates.js.map +1 -1
- package/dist/lens/calendar-drawing.d.ts.map +1 -1
- package/dist/lens/calendar-drawing.js +6 -2
- package/dist/lens/calendar-drawing.js.map +1 -1
- package/dist/lens/calendar-options.d.ts +10 -1
- package/dist/lens/calendar-options.d.ts.map +1 -1
- package/dist/lens/calendar-options.js.map +1 -1
- package/dist/lens/calendar-spans.d.ts +5 -0
- package/dist/lens/calendar-spans.d.ts.map +1 -1
- package/dist/lens/calendar-spans.js +13 -2
- package/dist/lens/calendar-spans.js.map +1 -1
- package/dist/lens/calendar-view.d.ts.map +1 -1
- package/dist/lens/calendar-view.js +16 -2
- package/dist/lens/calendar-view.js.map +1 -1
- package/dist/lens/columns.d.ts +3 -1
- package/dist/lens/columns.d.ts.map +1 -1
- package/dist/lens/columns.js +6 -5
- package/dist/lens/columns.js.map +1 -1
- package/dist/lens/coverage.d.ts +8 -2
- package/dist/lens/coverage.d.ts.map +1 -1
- package/dist/lens/coverage.js +36 -10
- package/dist/lens/coverage.js.map +1 -1
- package/dist/lens-keeping.js +2 -3
- package/dist/lens-keeping.js.map +1 -1
- package/dist/linked-record-door.d.ts +4 -0
- package/dist/linked-record-door.d.ts.map +1 -0
- package/dist/linked-record-door.js +12 -0
- package/dist/linked-record-door.js.map +1 -0
- package/dist/linked-record.d.ts +34 -0
- package/dist/linked-record.d.ts.map +1 -0
- package/dist/linked-record.js +142 -0
- package/dist/linked-record.js.map +1 -0
- package/dist/map-panel.js +52 -3
- package/dist/map-panel.js.map +1 -1
- package/dist/notice-place.d.ts +2 -2
- package/dist/notice-place.js +2 -2
- package/dist/notify-door.d.ts +57 -0
- package/dist/notify-door.d.ts.map +1 -0
- package/dist/notify-door.js +136 -0
- package/dist/notify-door.js.map +1 -0
- package/dist/notify-sheet.d.ts +27 -0
- package/dist/notify-sheet.d.ts.map +1 -0
- package/dist/notify-sheet.js +102 -0
- package/dist/notify-sheet.js.map +1 -0
- package/dist/pages.d.ts +23 -4
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +24 -4
- package/dist/pages.js.map +1 -1
- package/dist/past-bar.d.ts +13 -0
- package/dist/past-bar.d.ts.map +1 -0
- package/dist/past-bar.js +26 -0
- package/dist/past-bar.js.map +1 -0
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +3 -2
- package/dist/places.js.map +1 -1
- package/dist/primitives/index.d.ts +8 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +67 -29
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/measure.d.ts +10 -0
- package/dist/primitives/measure.d.ts.map +1 -1
- package/dist/primitives/measure.js +27 -7
- package/dist/primitives/measure.js.map +1 -1
- package/dist/quick-ask-desk.d.ts +38 -0
- package/dist/quick-ask-desk.d.ts.map +1 -0
- package/dist/quick-ask-desk.js +36 -0
- package/dist/quick-ask-desk.js.map +1 -0
- package/dist/quick-ask-door.d.ts +33 -0
- package/dist/quick-ask-door.d.ts.map +1 -0
- package/dist/quick-ask-door.js +70 -0
- package/dist/quick-ask-door.js.map +1 -0
- package/dist/quick-ask-setting.d.ts +9 -0
- package/dist/quick-ask-setting.d.ts.map +1 -0
- package/dist/quick-ask-setting.js +11 -0
- package/dist/quick-ask-setting.js.map +1 -0
- package/dist/quick-ask.d.ts +23 -0
- package/dist/quick-ask.d.ts.map +1 -0
- package/dist/quick-ask.js +327 -0
- package/dist/quick-ask.js.map +1 -0
- package/dist/record-interactions-door.d.ts +8 -0
- package/dist/record-interactions-door.d.ts.map +1 -0
- package/dist/record-interactions-door.js +42 -0
- package/dist/record-interactions-door.js.map +1 -0
- package/dist/record-interactions.d.ts +13 -0
- package/dist/record-interactions.d.ts.map +1 -0
- package/dist/record-interactions.js +9 -0
- package/dist/record-interactions.js.map +1 -0
- package/dist/scene-bar.d.ts.map +1 -1
- package/dist/scene-bar.js +5 -2
- package/dist/scene-bar.js.map +1 -1
- package/dist/scene-css.d.ts.map +1 -1
- package/dist/scene-css.js +79 -8
- package/dist/scene-css.js.map +1 -1
- package/dist/scene-way-back-door.d.ts.map +1 -1
- package/dist/scene-way-back-door.js +9 -0
- package/dist/scene-way-back-door.js.map +1 -1
- package/dist/scene.d.ts +11 -2
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +10 -1
- package/dist/scene.js.map +1 -1
- package/dist/shell.d.ts +23 -24
- package/dist/shell.d.ts.map +1 -1
- package/dist/shell.js +9 -3
- package/dist/shell.js.map +1 -1
- package/dist/spec-css.d.ts.map +1 -1
- package/dist/spec-css.js +22 -2
- package/dist/spec-css.js.map +1 -1
- package/dist/spec-views.d.ts +6 -1
- package/dist/spec-views.d.ts.map +1 -1
- package/dist/spec-views.js +82 -16
- package/dist/spec-views.js.map +1 -1
- package/dist/stretched-link.d.ts +18 -0
- package/dist/stretched-link.d.ts.map +1 -0
- package/dist/stretched-link.js +47 -0
- package/dist/stretched-link.js.map +1 -0
- package/dist/suggested.d.ts +13 -0
- package/dist/suggested.d.ts.map +1 -0
- package/dist/suggested.js +82 -0
- package/dist/suggested.js.map +1 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +25 -28
- package/dist/theme.js.map +1 -1
- package/dist/timeline.d.ts +6 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +150 -0
- package/dist/timeline.js.map +1 -0
- package/dist/way-back.d.ts.map +1 -1
- package/dist/way-back.js +3 -0
- package/dist/way-back.js.map +1 -1
- package/dist/when-input-door.d.ts +8 -0
- package/dist/when-input-door.d.ts.map +1 -0
- package/dist/when-input-door.js +19 -0
- package/dist/when-input-door.js.map +1 -0
- package/dist/when-input.d.ts +34 -0
- package/dist/when-input.d.ts.map +1 -0
- package/dist/when-input.js +122 -0
- package/dist/when-input.js.map +1 -0
- package/dist/when-picker-door.d.ts +6 -0
- package/dist/when-picker-door.d.ts.map +1 -0
- package/dist/when-picker-door.js +15 -0
- package/dist/when-picker-door.js.map +1 -0
- package/dist/when-picker.d.ts +16 -0
- package/dist/when-picker.d.ts.map +1 -0
- package/dist/when-picker.js +108 -0
- package/dist/when-picker.js.map +1 -0
- package/dist/workbench/activity.d.ts +24 -0
- package/dist/workbench/activity.d.ts.map +1 -1
- package/dist/workbench/activity.js +159 -33
- package/dist/workbench/activity.js.map +1 -1
- package/dist/workbench/agent-seat.d.ts.map +1 -1
- package/dist/workbench/agent-seat.js +5 -2
- package/dist/workbench/agent-seat.js.map +1 -1
- package/dist/workbench/ai-entries.d.ts +22 -0
- package/dist/workbench/ai-entries.d.ts.map +1 -0
- package/dist/workbench/ai-entries.js +75 -0
- package/dist/workbench/ai-entries.js.map +1 -0
- package/dist/workbench/ai-feed.d.ts +12 -0
- package/dist/workbench/ai-feed.d.ts.map +1 -0
- package/dist/workbench/ai-feed.js +14 -0
- package/dist/workbench/ai-feed.js.map +1 -0
- package/dist/workbench/answer-args.d.ts.map +1 -1
- package/dist/workbench/answer-args.js +87 -10
- package/dist/workbench/answer-args.js.map +1 -1
- package/dist/workbench/back-out.d.ts.map +1 -1
- package/dist/workbench/back-out.js +7 -2
- package/dist/workbench/back-out.js.map +1 -1
- package/dist/workbench/inspector-door.d.ts +3 -1
- package/dist/workbench/inspector-door.d.ts.map +1 -1
- package/dist/workbench/inspector-door.js +7 -6
- package/dist/workbench/inspector-door.js.map +1 -1
- package/dist/workbench/inspector.d.ts +2 -1
- package/dist/workbench/inspector.d.ts.map +1 -1
- package/dist/workbench/inspector.js +94 -17
- package/dist/workbench/inspector.js.map +1 -1
- package/dist/workbench/trail.d.ts.map +1 -1
- package/dist/workbench/trail.js +10 -2
- package/dist/workbench/trail.js.map +1 -1
- package/package.json +6 -6
- package/dist/seat-field.d.ts +0 -58
- package/dist/seat-field.d.ts.map +0 -1
- package/dist/seat-field.js +0 -183
- package/dist/seat-field.js.map +0 -1
- package/dist/seat-panel.d.ts +0 -38
- package/dist/seat-panel.d.ts.map +0 -1
- package/dist/seat-panel.js +0 -212
- package/dist/seat-panel.js.map +0 -1
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { layer, pluralOf } from "@graview/core";
|
|
3
|
+
import { aiTargetOf, catalogOf, recordsOfTarget } from "@graview/core/catalog";
|
|
4
|
+
import { search } from "@graview/core/search";
|
|
5
|
+
import { useAiDeskState, useGraview } from "@graview/react/provider";
|
|
6
|
+
import { applyAffordance, deriveAffordances, previewAffordance } from "@graview/tools/derive";
|
|
7
|
+
import { answerHere, targetWords } from "@graview/tools/inline-ai";
|
|
8
|
+
import { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
9
|
+
import { askOf, drawPanel, GhostTray, takeOffer } from "./inline-ai-menu.js";
|
|
10
|
+
import { useInlineEnv } from "./inline-ai-env.js";
|
|
11
|
+
import { VISUALLY_HIDDEN } from "./primitives/measure.js";
|
|
12
|
+
import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
|
|
13
|
+
/** Words that say what kind of row is wanted, not which: "show", "go to", "open". */
|
|
14
|
+
const LEADING = new Set(["show", "go", "to", "open", "the", "a", "an", "me"]);
|
|
15
|
+
const folded = (text) => text.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g, "");
|
|
16
|
+
/** Whether every word typed (but the leading ones) is in the row's words. */
|
|
17
|
+
const fits = (label, words) => {
|
|
18
|
+
const said = folded(label);
|
|
19
|
+
return words.every((word) => said.includes(word));
|
|
20
|
+
};
|
|
21
|
+
const sentenceCase = (text) => (text ? `${text[0].toLowerCase()}${text.slice(1)}` : text);
|
|
22
|
+
/** How many of each kind of row the bar lists. */
|
|
23
|
+
const MOST = { act: 4, show: 3, place: 3, record: 4 };
|
|
24
|
+
/** The card's width on a desk, and its distance from what it stands beside and from the window's edges. */
|
|
25
|
+
const WIDTH = 360;
|
|
26
|
+
const GAP = 12;
|
|
27
|
+
export function QuickAskCard({ face, opening, close }) {
|
|
28
|
+
const env = useInlineEnv();
|
|
29
|
+
const { setMenuAt } = useGraview();
|
|
30
|
+
const target = useMemo(() => opening.target ?? aiTargetOf(opening.pointed ?? { about: [] }, (id) => env.store.graph.has(id)), [opening, env.store]);
|
|
31
|
+
const about = useMemo(() => targetWords(env.store, target, env.places), [env.store, target, env.places]);
|
|
32
|
+
const [words, setWords] = useState("");
|
|
33
|
+
const [active, setActive] = useState(-1);
|
|
34
|
+
const [answering, setAnswering] = useState(null);
|
|
35
|
+
const [said, setSaid] = useState(null);
|
|
36
|
+
const pane = useRef(null);
|
|
37
|
+
const field = useRef(null);
|
|
38
|
+
const list = useId();
|
|
39
|
+
const live = useRef(true);
|
|
40
|
+
const { ghost: held } = useAiDeskState(env.desk);
|
|
41
|
+
useEffect(() => () => {
|
|
42
|
+
live.current = false;
|
|
43
|
+
// Put away with a change still proposed on it: the change waits on the tray at the foot instead.
|
|
44
|
+
const waiting = env.desk.get().ghost;
|
|
45
|
+
if (waiting?.onCard)
|
|
46
|
+
env.desk.setGhost({ ...waiting, onCard: false });
|
|
47
|
+
}, [env.desk]);
|
|
48
|
+
/* THE CATALOG OF THIS TARGET: its panels ("Show …") and places, and the acts the derivation offers this viewer on its records. */
|
|
49
|
+
const catalog = useMemo(() => {
|
|
50
|
+
const ask = askOf(env, target);
|
|
51
|
+
return catalogOf(env.store, target, { principal: env.principal, places: env.places, ...(ask.acts ? { acts: ask.acts } : {}) });
|
|
52
|
+
}, [env, target]);
|
|
53
|
+
const acts = useMemo(() => {
|
|
54
|
+
const ids = recordsOfTarget(target);
|
|
55
|
+
if (ids.length === 0)
|
|
56
|
+
return [];
|
|
57
|
+
const offered = new Set(catalog.candidates.flatMap((candidate) => (candidate.type === "act" ? [candidate.mutation] : [])));
|
|
58
|
+
return deriveAffordances(env.store, ids, { principal: env.principal, ...(ids.length === 1 ? { focus: ids[0] } : {}) }).affordances.filter((affordance) => !affordance.destructive && offered.has(affordance.mutation));
|
|
59
|
+
}, [env.store, env.principal, target, catalog]);
|
|
60
|
+
/* Where the keyboard goes when the card is put away: where it was, else the thing it was about, else the face. */
|
|
61
|
+
const putAway = useCallback(() => {
|
|
62
|
+
const back = opening.returnTo;
|
|
63
|
+
const anchor = anchorOf(pane.current, target, face);
|
|
64
|
+
close();
|
|
65
|
+
requestAnimationFrame(() => {
|
|
66
|
+
if (back?.isConnected && !back.closest("[inert]"))
|
|
67
|
+
return back.focus({ preventScroll: true });
|
|
68
|
+
const home = (anchor && anchor.tabIndex >= 0 ? anchor : null) ?? document.querySelector("[data-graview-page-title]") ?? document.querySelector("main");
|
|
69
|
+
if (home && home.tabIndex < 0 && !home.hasAttribute("tabindex"))
|
|
70
|
+
home.setAttribute("tabindex", "-1");
|
|
71
|
+
home?.focus({ preventScroll: true });
|
|
72
|
+
});
|
|
73
|
+
}, [opening.returnTo, target, face, close]);
|
|
74
|
+
const act = useCallback((affordance) => {
|
|
75
|
+
if (affordance.open.length > 0) {
|
|
76
|
+
// An act that asks for something is asked in its own form, on the menu at its subject.
|
|
77
|
+
const box = pane.current?.getBoundingClientRect();
|
|
78
|
+
close();
|
|
79
|
+
setMenuAt({ x: box?.left ?? 0, y: box?.top ?? 0, on: affordance.args["id"] ?? recordsOfTarget(target)[0], about: recordsOfTarget(target) });
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
previewAffordance(env.store, affordance, {});
|
|
84
|
+
applyAffordance(env.store, affordance, {}, { author: env.principal });
|
|
85
|
+
putAway();
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
setSaid(error instanceof Error ? error.message : String(error));
|
|
89
|
+
}
|
|
90
|
+
}, [env.store, env.principal, close, putAway, setMenuAt, target]);
|
|
91
|
+
const ask = useCallback(async (question) => {
|
|
92
|
+
const asked = question.trim();
|
|
93
|
+
if (!asked)
|
|
94
|
+
return;
|
|
95
|
+
const before = answering?.result?.answer ? { said: answering.said, answer: answering.result.answer } : undefined;
|
|
96
|
+
setWords("");
|
|
97
|
+
setActive(-1);
|
|
98
|
+
setSaid(null);
|
|
99
|
+
setAnswering({ said: asked, result: null });
|
|
100
|
+
const result = await answerHere(env.ai, { ...askOf(env, target, asked), said: asked, ...(before ? { follows: before } : {}) });
|
|
101
|
+
env.desk.record(result.interaction);
|
|
102
|
+
// Its proposed change is a ghost, drawn on this card: accepted there as one batch, with its one undo.
|
|
103
|
+
if (result.ghost && result.ghost.proposals.length > 0)
|
|
104
|
+
env.desk.setGhost({ ghost: result.ghost, onCard: true });
|
|
105
|
+
if (live.current)
|
|
106
|
+
setAnswering({ said: asked, result });
|
|
107
|
+
}, [answering, env, target]);
|
|
108
|
+
/* Opened with words already (Find's "Ask: ‘…’", Activity's "Ask again"): asked at once. */
|
|
109
|
+
const first = useRef(opening.asked);
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
const asked = first.current;
|
|
112
|
+
first.current = undefined;
|
|
113
|
+
if (asked)
|
|
114
|
+
void ask(asked);
|
|
115
|
+
// Once, as the card opens.
|
|
116
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
117
|
+
}, []);
|
|
118
|
+
/* THE ROWS: what fits the words, of each kind, then the words asked. */
|
|
119
|
+
const rows = useMemo(() => {
|
|
120
|
+
const typed = words.trim();
|
|
121
|
+
// An answer card lists nothing until a follow-up is typed: the answer is what it shows.
|
|
122
|
+
if (!typed && answering)
|
|
123
|
+
return [];
|
|
124
|
+
const wanted = folded(typed).split(/\s+/).filter((word) => word && !LEADING.has(word));
|
|
125
|
+
const showing = /^show\b/i.test(typed);
|
|
126
|
+
const going = /^(go|open)\b/i.test(typed);
|
|
127
|
+
const out = [];
|
|
128
|
+
if (!showing && !going) {
|
|
129
|
+
for (const affordance of acts.filter((one) => fits(one.label, wanted)).slice(0, MOST.act)) {
|
|
130
|
+
out.push({ id: `act:${affordance.id}`, kind: "act", label: affordance.label, hint: affordance.open.length > 0 ? "asks more" : "do it", take: () => act(affordance) });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!going) {
|
|
134
|
+
const panels = catalog.candidates.filter((candidate) => candidate.type === "panel");
|
|
135
|
+
for (const panel of panels.filter((one) => fits(`show ${one.label}`, wanted)).slice(0, MOST.show)) {
|
|
136
|
+
out.push({
|
|
137
|
+
id: panel.id,
|
|
138
|
+
kind: "show",
|
|
139
|
+
label: `Show ${sentenceCase(panel.label)}`,
|
|
140
|
+
hint: "a panel",
|
|
141
|
+
take: () => {
|
|
142
|
+
close();
|
|
143
|
+
void drawPanel(env, { title: panel.label, recipe: { ...panel.panel, title: panel.label } });
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (!showing) {
|
|
149
|
+
for (const place of env.places.filter((one) => fits(one.title, wanted)).slice(0, MOST.place)) {
|
|
150
|
+
out.push({ id: `place:${place.as}`, kind: "place", label: `Go to ${place.title}`, take: () => (close(), env.goTo.place(place.as)) });
|
|
151
|
+
}
|
|
152
|
+
if (wanted.length > 0) {
|
|
153
|
+
const hits = search(env.store, typed.replace(/^(go to|open)\s+/i, ""), { principal: env.principal, from: recordsOfTarget(target), limit: MOST.record }).hits;
|
|
154
|
+
for (const hit of hits) {
|
|
155
|
+
if (hit.about !== "node")
|
|
156
|
+
continue;
|
|
157
|
+
out.push({ id: `record:${hit.id}`, kind: "record", label: hit.label, hint: pluralOf(env.store.schema, hit.kind), take: () => (close(), env.goTo.record(hit.id)) });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (typed)
|
|
162
|
+
out.push({ id: "ask", kind: "ask", label: typed, take: () => void ask(typed) });
|
|
163
|
+
return out;
|
|
164
|
+
}, [words, acts, catalog, env, target, act, ask, close, answering]);
|
|
165
|
+
// Words typed light the first row; with none, nothing is lit until the arrows move.
|
|
166
|
+
useEffect(() => setActive(words.trim() ? 0 : -1), [words]);
|
|
167
|
+
/* PLACED BESIDE WHAT IT IS ABOUT, in the top layer, following it as the picture moves. */
|
|
168
|
+
useLayoutEffect(() => {
|
|
169
|
+
const element = pane.current;
|
|
170
|
+
if (!element)
|
|
171
|
+
return;
|
|
172
|
+
if (typeof element.showPopover === "function") {
|
|
173
|
+
try {
|
|
174
|
+
element.showPopover();
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// Shown already, or not in the page yet: the ladder's rung still holds it over the rails.
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
field.current?.focus({ preventScroll: true });
|
|
181
|
+
let frame = 0;
|
|
182
|
+
const follow = () => {
|
|
183
|
+
placeBeside(element, anchorOf(element, target, face));
|
|
184
|
+
frame = requestAnimationFrame(follow);
|
|
185
|
+
};
|
|
186
|
+
follow();
|
|
187
|
+
return () => cancelAnimationFrame(frame);
|
|
188
|
+
}, [target, face]);
|
|
189
|
+
/* A press outside the bar puts it away; an answer stays until it is closed. */
|
|
190
|
+
useEffect(() => {
|
|
191
|
+
if (answering)
|
|
192
|
+
return;
|
|
193
|
+
const outside = (event) => {
|
|
194
|
+
if (event.target instanceof Node && pane.current?.contains(event.target))
|
|
195
|
+
return;
|
|
196
|
+
close();
|
|
197
|
+
};
|
|
198
|
+
document.addEventListener("pointerdown", outside, true);
|
|
199
|
+
return () => document.removeEventListener("pointerdown", outside, true);
|
|
200
|
+
}, [answering, close]);
|
|
201
|
+
const onKeyDown = (event) => {
|
|
202
|
+
if (event.key === "ArrowDown" && rows.length > 0) {
|
|
203
|
+
event.preventDefault();
|
|
204
|
+
setActive((at) => Math.min(rows.length - 1, at + 1));
|
|
205
|
+
}
|
|
206
|
+
else if (event.key === "ArrowUp" && rows.length > 0) {
|
|
207
|
+
event.preventDefault();
|
|
208
|
+
setActive((at) => Math.max(0, at - 1));
|
|
209
|
+
}
|
|
210
|
+
else if (event.key === "Enter") {
|
|
211
|
+
event.preventDefault();
|
|
212
|
+
const row = rows[active];
|
|
213
|
+
if (row)
|
|
214
|
+
row.take();
|
|
215
|
+
else if (words.trim())
|
|
216
|
+
void ask(words);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
const result = answering?.result ?? null;
|
|
220
|
+
const lit = rows[active];
|
|
221
|
+
return (_jsxs("section", { ref: pane, popover: "manual", role: "region", "aria-label": answering ? `Answer about ${about}` : `Ask about ${about}`, "data-testid": "quick-ask", "data-quick-ask": answering ? "answer" : "bar", "data-quick-ask-face": face, "data-graview-offstage": "", "data-graview-overlay": "", onKeyDown: (event) => {
|
|
222
|
+
if (event.key !== "Escape")
|
|
223
|
+
return;
|
|
224
|
+
// The card's Escape is the card's: the scene's back-out does not hear it too.
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
event.stopPropagation();
|
|
227
|
+
putAway();
|
|
228
|
+
}, onMouseDown: (event) => event.stopPropagation(), style: CARD, children: [_jsxs("div", { style: { display: "flex", alignItems: "baseline", gap: 8 }, children: [_jsxs("p", { "data-testid": "quick-ask-about", style: { margin: 0, flex: "1 1 auto", minWidth: 0, fontSize: "0.75rem", color: "var(--graview-ink-muted)", overflowWrap: "anywhere" }, children: ["About ", about] }), _jsx("button", { type: "button", "data-testid": "quick-ask-close", "aria-label": "Close", title: "Close", onClick: putAway, style: ICON, children: _jsx("span", { "aria-hidden": "true", children: "\u2715" }) })] }), answering ? (_jsxs("div", { "data-testid": "quick-answer", style: { display: "grid", gap: 8 }, children: [_jsxs("p", { "data-testid": "quick-answer-asked", style: { margin: 0, fontSize: "0.8125rem", color: "var(--graview-ink-muted)", fontStyle: "italic", overflowWrap: "anywhere" }, children: ["\u201C", answering.said, "\u201D"] }), _jsx("p", { "data-testid": "quick-answer-text", "aria-live": "polite", style: { margin: 0, fontSize: "0.9375rem", lineHeight: 1.45, color: result?.interaction.outcome === "failed" ? "var(--graview-warn)" : "var(--graview-ink)", overflowWrap: "anywhere" }, children: result === null ? "Thinking…" : result.interaction.outcome === "failed" ? (result.interaction.failed ?? "The AI could not answer that here.") : (result.answer ?? "") }), result && result.offers.length > 0 ? (_jsx("ul", { "aria-label": "What acts on it", style: { margin: 0, padding: 0, listStyle: "none", display: "flex", flexWrap: "wrap", gap: 6 }, children: result.offers.map((offer) => (_jsx("li", { children: _jsx("button", { type: "button", "data-testid": "quick-answer-offer", "data-ai-offer": offer.id, "data-ai-offer-type": offer.type, onClick: () => {
|
|
229
|
+
close();
|
|
230
|
+
void takeOffer(env, result, offer);
|
|
231
|
+
}, style: OFFER, children: offer.type === "panel" ? `Show ${sentenceCase(offer.label)}` : offer.type === "place" ? `Go to ${offer.label}` : offer.label }) }, offer.id))) })) : null, held?.onCard && held.ghost.interaction === result?.interaction.id ? _jsx(GhostTray, { placement: "card" }) : null] })) : null, _jsxs("div", { style: { display: "grid", gap: 4 }, children: [_jsx("input", { ref: field, type: "text", role: "combobox", "data-testid": "quick-ask-input", "aria-label": answering ? `Ask a follow-up about ${about}` : `Ask about ${about}, or go somewhere`, "aria-expanded": rows.length > 0, "aria-controls": list, "aria-autocomplete": "list", ...(lit ? { "aria-activedescendant": `${list}-${active}` } : {}), autoComplete: "off", enterKeyHint: "go", placeholder: answering ? "Ask a follow-up…" : "Ask, or go to…", value: words,
|
|
232
|
+
// Read-only while it answers, never disabled: a disabled field lets go of the keyboard.
|
|
233
|
+
readOnly: answering !== null && result === null, "aria-busy": answering !== null && result === null, onChange: (event) => setWords(event.target.value), onKeyDown: onKeyDown, style: FIELD }), _jsx("div", { id: list, role: "listbox", "aria-label": words.trim() ? `What “${words.trim()}” finds here` : "What can be done here", hidden: rows.length === 0, style: { display: rows.length === 0 ? "none" : "grid", gap: 1, maxHeight: 280, overflowY: "auto" }, children: rows.map((row, at) => (_jsx("div", { id: `${list}-${at}`, role: "option", "aria-selected": at === active, "data-testid": "quick-ask-option", "data-quick-ask-kind": row.kind, "data-quick-ask-row": row.id, onMouseEnter: () => setActive(at), onMouseDown: (event) => event.preventDefault(), onClick: row.take, style: { ...OPTION, background: at === active ? "var(--graview-panel-muted)" : "transparent", ...(row.kind === "ask" ? { borderTop: "1px solid var(--graview-edge)", marginTop: 2 } : {}) }, children: row.kind === "ask" ? (_jsxs("span", { children: ["Ask: ", _jsxs("span", { style: { fontWeight: 600 }, children: ["\u2018", row.label, "\u2019"] })] })) : (_jsxs("span", { children: [row.label, row.hint ? _jsxs("span", { style: { color: "var(--graview-ink-faint)" }, children: [" \u00B7 ", row.hint] }) : null] })) }, row.id))) })] }), said ? (_jsx("p", { role: "alert", "data-testid": "quick-ask-refused", style: { margin: 0, fontSize: "0.8125rem", color: "var(--graview-warn)" }, children: said })) : null, _jsx("span", { style: VISUALLY_HIDDEN, "aria-live": "polite", children: rows.length > 0 && words.trim() ? `${rows.length} ${rows.length === 1 ? "way" : "ways"} to go on` : "" })] }));
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* WHAT THE CARD STANDS BESIDE: the record's card or the kind's district on
|
|
237
|
+
* the scene, else where the record is picked from (a district's row, a
|
|
238
|
+
* page's row), else the page's own heading; nothing for a place, and the
|
|
239
|
+
* card stands under the bar.
|
|
240
|
+
*/
|
|
241
|
+
function anchorOf(pane, target, face) {
|
|
242
|
+
const root = pane?.closest("[data-graview-embed]") ?? document;
|
|
243
|
+
const ids = target.on === "list" ? [`aggregate:${target.kind}`, `kind:${target.kind}`] : target.on === "lens" && target.kind ? [`aggregate:${target.kind}`] : recordsOfTarget(target);
|
|
244
|
+
for (const id of ids) {
|
|
245
|
+
// The record's own card where the picture draws one; else where it is picked from (a row of a district's list).
|
|
246
|
+
for (const element of root.querySelectorAll(`[data-graview-view="${CSS.escape(id)}"], [data-graview-pick="${CSS.escape(id)}"]`)) {
|
|
247
|
+
if (pane?.contains(element))
|
|
248
|
+
continue;
|
|
249
|
+
const box = element.getBoundingClientRect();
|
|
250
|
+
if (box.width > 0 && box.height > 0)
|
|
251
|
+
return element;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
if (face === "pages")
|
|
255
|
+
return root.querySelector("main [data-graview-page-title]") ?? root.querySelector("main h1");
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
/** Beside the anchor where the window has room — its right, else its left — else under it (over it, near the window's foot); under the bar for nothing. */
|
|
259
|
+
function placeBeside(pane, anchor) {
|
|
260
|
+
const view = { width: document.documentElement.clientWidth || innerWidth, height: innerHeight };
|
|
261
|
+
const width = Math.min(WIDTH, view.width - 2 * GAP);
|
|
262
|
+
const height = pane.getBoundingClientRect().height;
|
|
263
|
+
const at = anchor?.getBoundingClientRect();
|
|
264
|
+
let left;
|
|
265
|
+
let top;
|
|
266
|
+
let side;
|
|
267
|
+
const clampTop = (wanted) => Math.max(GAP, Math.min(wanted, view.height - height - GAP));
|
|
268
|
+
if (at && at.width > 0 && at.bottom > 0 && at.top < view.height) {
|
|
269
|
+
if (at.right + GAP + width <= view.width - GAP) {
|
|
270
|
+
left = at.right + GAP;
|
|
271
|
+
top = clampTop(at.top);
|
|
272
|
+
side = "right";
|
|
273
|
+
}
|
|
274
|
+
else if (at.left - GAP - width >= GAP) {
|
|
275
|
+
left = at.left - GAP - width;
|
|
276
|
+
top = clampTop(at.top);
|
|
277
|
+
side = "left";
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
left = Math.max(GAP, Math.min(at.left, view.width - width - GAP));
|
|
281
|
+
const below = at.bottom + GAP;
|
|
282
|
+
top = below + height <= view.height - GAP ? below : clampTop(at.top - GAP - height);
|
|
283
|
+
side = below + height <= view.height - GAP ? "below" : "above";
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
left = (view.width - width) / 2;
|
|
288
|
+
top = clampTop(72);
|
|
289
|
+
side = "top";
|
|
290
|
+
}
|
|
291
|
+
const style = pane.style;
|
|
292
|
+
const next = { left: `${Math.round(left)}px`, top: `${Math.round(top)}px`, width: `${Math.round(width)}px` };
|
|
293
|
+
if (style.left !== next.left)
|
|
294
|
+
style.left = next.left;
|
|
295
|
+
if (style.top !== next.top)
|
|
296
|
+
style.top = next.top;
|
|
297
|
+
if (style.width !== next.width)
|
|
298
|
+
style.width = next.width;
|
|
299
|
+
const beside = anchor?.getAttribute("data-graview-view") ?? anchor?.getAttribute("data-graview-pick") ?? (anchor ? "page" : "");
|
|
300
|
+
if (pane.getAttribute("data-quick-ask-beside") !== beside)
|
|
301
|
+
pane.setAttribute("data-quick-ask-beside", beside);
|
|
302
|
+
if (pane.getAttribute("data-quick-ask-side") !== side)
|
|
303
|
+
pane.setAttribute("data-quick-ask-side", side);
|
|
304
|
+
}
|
|
305
|
+
const CARD = {
|
|
306
|
+
position: "fixed",
|
|
307
|
+
inset: "auto",
|
|
308
|
+
margin: 0,
|
|
309
|
+
zIndex: layer("popover"),
|
|
310
|
+
boxSizing: "border-box",
|
|
311
|
+
display: "grid",
|
|
312
|
+
gap: 10,
|
|
313
|
+
padding: 12,
|
|
314
|
+
borderRadius: 12,
|
|
315
|
+
border: "1px solid var(--graview-edge)",
|
|
316
|
+
background: "var(--graview-float)",
|
|
317
|
+
color: "var(--graview-ink)",
|
|
318
|
+
boxShadow: "var(--graview-lift-high)",
|
|
319
|
+
maxHeight: "calc(100dvh - 24px)",
|
|
320
|
+
overflowY: "auto",
|
|
321
|
+
fontSize: "0.875rem",
|
|
322
|
+
};
|
|
323
|
+
const ICON = { display: "inline-grid", placeItems: "center", width: 28, height: 28, padding: 0, font: "inherit", fontSize: "0.875rem", lineHeight: 1, color: "var(--graview-ink-muted)", background: "transparent", border: "1px solid transparent", borderRadius: 6, boxShadow: "none", cursor: "pointer" };
|
|
324
|
+
const FIELD = { boxSizing: "border-box", width: "100%", height: 36, padding: "0 10px", font: "inherit", fontSize: "max(1rem,16px)", color: "var(--graview-ink)", background: "var(--graview-panel)", border: "1px solid var(--graview-edge)", borderRadius: 8 };
|
|
325
|
+
const OPTION = { display: "flex", alignItems: "center", minHeight: 30, padding: "4px 8px", borderRadius: 6, cursor: "pointer", overflowWrap: "anywhere" };
|
|
326
|
+
const OFFER = { display: "inline-flex", alignItems: "center", minHeight: 30, padding: "2px 10px", font: "inherit", fontSize: "0.8125rem", borderRadius: 8 };
|
|
327
|
+
//# sourceMappingURL=quick-ask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-ask.js","sourceRoot":"","sources":["../src/quick-ask.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CSSProperties } from "react";
|
|
2
|
+
export declare function RecordInteractionsDoor({ id, style, headingStyle, className }: {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly style?: CSSProperties;
|
|
5
|
+
readonly headingStyle?: CSSProperties;
|
|
6
|
+
readonly className?: string;
|
|
7
|
+
}): import("react").JSX.Element | null;
|
|
8
|
+
//# sourceMappingURL=record-interactions-door.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interactions-door.d.ts","sourceRoot":"","sources":["../src/record-interactions-door.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAoD,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AA0B7F,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,sCAoBzM"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { retryingImport } from "@graview/core/retry";
|
|
3
|
+
import { lazyModule, useAiDeskState, useGraview } from "@graview/react/provider";
|
|
4
|
+
import { Suspense, useEffect, useMemo } from "react";
|
|
5
|
+
/**
|
|
6
|
+
* WHAT AI DID ON A RECORD, ON ITS PAGE (Roadmap f-activity-ai-entries): the
|
|
7
|
+
* interactions about it — asked of it, offering it, or making a change
|
|
8
|
+
* that wrote it — as Activity draws them, with their undo. Nothing at all
|
|
9
|
+
* while there are none, or when the host says AI is off; the rows are
|
|
10
|
+
* fetched with the first.
|
|
11
|
+
*/
|
|
12
|
+
const rowsModule = /* @__PURE__ */ lazyModule(retryingImport(() => import("./record-interactions.js")));
|
|
13
|
+
const Rows = /* @__PURE__ */ rowsModule.part((module, props) => {
|
|
14
|
+
const Drawn = module.RecordInteractions;
|
|
15
|
+
return _jsx(Drawn, { ...props });
|
|
16
|
+
}, { quiet: true });
|
|
17
|
+
/** Whether an entry is about this record: its target names it, it offered it, or a batch it made wrote it. */
|
|
18
|
+
function about(entry, id, written) {
|
|
19
|
+
const target = entry.target;
|
|
20
|
+
const named = target.on === "record" || target.on === "field" ? target.id === id : target.on === "selection" ? target.ids.includes(id) : target.on === "act" ? target.id === id : false;
|
|
21
|
+
return named || entry.offered.some((offer) => offer.id === `record:${id}` || offer.id.startsWith(`fill:${id}:`)) || (entry.batches ?? []).some((batch) => written(batch).includes(id));
|
|
22
|
+
}
|
|
23
|
+
export function RecordInteractionsDoor({ id, style, headingStyle, className }) {
|
|
24
|
+
const { ai, aiDesk, store } = useGraview();
|
|
25
|
+
const { entries } = useAiDeskState(aiDesk);
|
|
26
|
+
const off = ai.off === true;
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (!off)
|
|
29
|
+
aiDesk.load();
|
|
30
|
+
}, [aiDesk, off]);
|
|
31
|
+
const length = store.log.length;
|
|
32
|
+
const here = useMemo(() => {
|
|
33
|
+
const written = (batch) => store.log.all().flatMap((op) => (op.batch === batch ? op.writes : []));
|
|
34
|
+
return entries.filter((entry) => about(entry, id, written));
|
|
35
|
+
// The log only grows at its end: its length says when to read it again.
|
|
36
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37
|
+
}, [entries, id, store, length]);
|
|
38
|
+
if (off || here.length === 0)
|
|
39
|
+
return null;
|
|
40
|
+
return (_jsx(Suspense, { fallback: null, children: _jsx(Rows, { entries: here, ...(style ? { style } : {}), ...(headingStyle ? { headingStyle } : {}), ...(className ? { className } : {}) }) }));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=record-interactions-door.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interactions-door.js","sourceRoot":"","sources":["../src/record-interactions-door.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AiInteraction } from "@graview/core/catalog";
|
|
2
|
+
import type { CSSProperties } from "react";
|
|
3
|
+
import "./frame.js";
|
|
4
|
+
export interface RecordInteractionsProps {
|
|
5
|
+
readonly entries: readonly AiInteraction[];
|
|
6
|
+
/** The section's own look and its heading's, where the page has them. */
|
|
7
|
+
readonly style?: CSSProperties;
|
|
8
|
+
readonly headingStyle?: CSSProperties;
|
|
9
|
+
readonly className?: string;
|
|
10
|
+
}
|
|
11
|
+
/** The AI's entries about one record, as Activity draws them — fetched with the first (`record-interactions-door.tsx`). */
|
|
12
|
+
export declare function RecordInteractions({ entries, style, headingStyle, className }: RecordInteractionsProps): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=record-interactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interactions.d.ts","sourceRoot":"","sources":["../src/record-interactions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,YAAY,CAAC;AAEpB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,2HAA2H;AAC3H,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,uBAAuB,+BAWtG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { UndoTurn } from "./workbench/activity.js";
|
|
3
|
+
import { InteractionRow } from "./workbench/ai-entries.js";
|
|
4
|
+
import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
|
|
5
|
+
/** The AI's entries about one record, as Activity draws them — fetched with the first (`record-interactions-door.tsx`). */
|
|
6
|
+
export function RecordInteractions({ entries, style, headingStyle, className }) {
|
|
7
|
+
return (_jsxs("section", { ...(className ? { className } : {}), "data-testid": "record-ai", "aria-label": "What AI did here", style: { display: "grid", gap: 10, ...style }, children: [_jsx("h2", { style: headingStyle ?? { margin: 0, fontSize: "1rem" }, children: "What AI did here" }), _jsx("ol", { style: { margin: 0, padding: 0, listStyle: "none", display: "grid", gap: 8, fontSize: "0.875rem" }, children: entries.slice(0, 8).map((entry) => (_jsx(InteractionRow, { entry: entry, undo: (batch) => _jsx(UndoTurn, { batch: batch }) }, entry.id))) })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=record-interactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interactions.js","sourceRoot":"","sources":["../src/record-interactions.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,YAAY,CAAC,CAAC,2FAA2F;AAUhH,2HAA2H;AAC3H,MAAM,UAAU,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAA2B;IACrG,OAAO,CACL,sBAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAc,WAAW,gBAAY,kBAAkB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,aAChJ,aAAI,KAAK,EAAE,YAAY,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,iCAAuB,EACjF,aAAI,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,YACnG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAClC,KAAC,cAAc,IAAgB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,IAAnE,KAAK,CAAC,EAAE,CAA+D,CAC7F,CAAC,GACC,IACG,CACX,CAAC;AACJ,CAAC"}
|
package/dist/scene-bar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-bar.d.ts","sourceRoot":"","sources":["../src/scene-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"scene-bar.d.ts","sourceRoot":"","sources":["../src/scene-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAmC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA0B5C,wHAAwH;AACxH,wBAAgB,UAAU,IAAI,SAAS,CAAC,SAAS,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,CAWrF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,EACjD,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,SAAiB,GAClB,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B,sCAmBA;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAW,EAAE,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,+BAwB5E"}
|
package/dist/scene-bar.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { layer } from "@graview/core";
|
|
3
|
-
import { useCallback, useState } from "react";
|
|
3
|
+
import { Suspense, useCallback, useState } from "react";
|
|
4
|
+
import { BarSuggested } from "./bar-suggested.js";
|
|
4
5
|
import { createPortal } from "react-dom";
|
|
5
6
|
import { FindBox } from "./find.js";
|
|
6
7
|
import { ActivityRail } from "./workbench/activity.js";
|
|
@@ -46,7 +47,9 @@ export function useCallLog() {
|
|
|
46
47
|
export function SceneBarTools({ find, calls, seat, remembers = false, }) {
|
|
47
48
|
if (!find)
|
|
48
49
|
return null;
|
|
49
|
-
return (_jsxs(_Fragment, { children: [createPortal(_jsx(FindBox, { compact: find.compact }), find.slot), find.own
|
|
50
|
+
return (_jsxs(_Fragment, { children: [createPortal(_jsx(FindBox, { compact: find.compact }), find.slot), find.own
|
|
51
|
+
? createPortal(_jsxs(_Fragment, { children: [_jsx(Suspense, { fallback: null, children: _jsx(BarSuggested, {}) }), _jsx(ActivityRail, { calls: calls, remembers: remembers, ...(seat !== undefined ? { seat } : {}) })] }), find.own)
|
|
52
|
+
: null] }));
|
|
50
53
|
}
|
|
51
54
|
/**
|
|
52
55
|
* WHAT THE PICTURE IS DOING, ON THE PICTURE: the past, zoomed in, what a
|
package/dist/scene-bar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-bar.js","sourceRoot":"","sources":["../src/scene-bar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"scene-bar.js","sourceRoot":"","sources":["../src/scene-bar.tsx"],"names":[],"mappings":"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"}
|
package/dist/scene-css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-css.d.ts","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAA0C,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scene-css.d.ts","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAA0C,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AA61CtG,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGvF;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,KAAK,GAAE,KAAqB,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGrH"}
|