@graview/primitives 0.1.37 → 0.1.38
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.map +1 -1
- package/dist/app-bar.js +51 -3
- package/dist/app-bar.js.map +1 -1
- package/dist/bar-panes.d.ts +8 -0
- package/dist/bar-panes.d.ts.map +1 -1
- package/dist/bar-panes.js +16 -3
- package/dist/bar-panes.js.map +1 -1
- package/dist/board-move-section.d.ts +34 -0
- package/dist/board-move-section.d.ts.map +1 -0
- package/dist/board-move-section.js +29 -0
- package/dist/board-move-section.js.map +1 -0
- package/dist/declared-lens-doors.js +1 -1
- package/dist/declared-lens-doors.js.map +1 -1
- package/dist/hover-chip.d.ts +11 -0
- package/dist/hover-chip.d.ts.map +1 -0
- package/dist/hover-chip.js +120 -0
- package/dist/hover-chip.js.map +1 -0
- package/dist/hover-chips.d.ts +47 -0
- package/dist/hover-chips.d.ts.map +1 -0
- package/dist/hover-chips.js +130 -0
- package/dist/hover-chips.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/inline-ai-env.d.ts.map +1 -1
- package/dist/inline-ai-env.js +2 -1
- package/dist/inline-ai-env.js.map +1 -1
- package/dist/inline-ai-menu.d.ts +14 -3
- package/dist/inline-ai-menu.d.ts.map +1 -1
- package/dist/inline-ai-menu.js +30 -10
- package/dist/inline-ai-menu.js.map +1 -1
- package/dist/lens/arranging.d.ts +5 -0
- package/dist/lens/arranging.d.ts.map +1 -1
- package/dist/lens/arranging.js +2 -1
- package/dist/lens/arranging.js.map +1 -1
- package/dist/lens/calendar-options.d.ts +4 -0
- package/dist/lens/calendar-options.d.ts.map +1 -1
- package/dist/lens/calendar-options.js.map +1 -1
- package/dist/lens/calendar-view.d.ts.map +1 -1
- package/dist/lens/calendar-view.js +2 -0
- package/dist/lens/calendar-view.js.map +1 -1
- package/dist/lens/columns.d.ts +28 -3
- package/dist/lens/columns.d.ts.map +1 -1
- package/dist/lens/columns.js +184 -20
- package/dist/lens/columns.js.map +1 -1
- package/dist/lens/coverage.d.ts +4 -0
- package/dist/lens/coverage.d.ts.map +1 -1
- package/dist/lens/coverage.js +1 -1
- package/dist/lens/coverage.js.map +1 -1
- package/dist/lens/move-to.d.ts +18 -0
- package/dist/lens/move-to.d.ts.map +1 -0
- package/dist/lens/move-to.js +16 -0
- package/dist/lens/move-to.js.map +1 -0
- package/dist/pages.d.ts +3 -0
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +4 -0
- package/dist/pages.js.map +1 -1
- package/dist/place-menu.d.ts +25 -0
- package/dist/place-menu.d.ts.map +1 -0
- package/dist/place-menu.js +89 -0
- package/dist/place-menu.js.map +1 -0
- package/dist/quick-ask.d.ts +1 -1
- package/dist/quick-ask.d.ts.map +1 -1
- package/dist/quick-ask.js +24 -2
- package/dist/quick-ask.js.map +1 -1
- package/dist/scene-places.d.ts.map +1 -1
- package/dist/scene-places.js +6 -4
- package/dist/scene-places.js.map +1 -1
- package/dist/scene.d.ts +3 -0
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +4 -0
- package/dist/scene.js.map +1 -1
- package/dist/several-ai.d.ts +11 -0
- package/dist/several-ai.d.ts.map +1 -0
- package/dist/several-ai.js +53 -0
- package/dist/several-ai.js.map +1 -0
- package/dist/several-bar.d.ts.map +1 -1
- package/dist/several-bar.js +20 -4
- package/dist/several-bar.js.map +1 -1
- package/dist/shell.d.ts +11 -2
- package/dist/shell.d.ts.map +1 -1
- package/dist/shell.js +8 -3
- package/dist/shell.js.map +1 -1
- package/dist/spec-views.d.ts +3 -2
- package/dist/spec-views.d.ts.map +1 -1
- package/dist/spec-views.js +3 -3
- package/dist/spec-views.js.map +1 -1
- package/dist/view-tidying-sections.d.ts +22 -0
- package/dist/view-tidying-sections.d.ts.map +1 -0
- package/dist/view-tidying-sections.js +97 -0
- package/dist/view-tidying-sections.js.map +1 -0
- package/dist/view-tidying.d.ts +31 -0
- package/dist/view-tidying.d.ts.map +1 -0
- package/dist/view-tidying.js +132 -0
- package/dist/view-tidying.js.map +1 -0
- package/dist/workbench/inspector-door.d.ts.map +1 -1
- package/dist/workbench/inspector-door.js +35 -9
- package/dist/workbench/inspector-door.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { layer } from "@graview/core";
|
|
3
|
+
import { aiTargetOf } from "@graview/core/catalog";
|
|
4
|
+
import { inTopLayer } from "@graview/react/provider";
|
|
5
|
+
import { fastOf, HOVER_CHIP_CONFIDENCE } from "@graview/tools/inline-ai";
|
|
6
|
+
import { useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
7
|
+
import { useInlineEnv } from "./inline-ai-env.js";
|
|
8
|
+
import { heldSuggestion, suggestOnce, takeOffer } from "./inline-ai-menu.js";
|
|
9
|
+
import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
|
|
10
|
+
/** The first suggestion, when the model was sure enough of it. */
|
|
11
|
+
function sureOf(result) {
|
|
12
|
+
if (!result || result.interaction.outcome === "failed")
|
|
13
|
+
return null;
|
|
14
|
+
const offer = result.offers[0];
|
|
15
|
+
const confidence = offer ? result.interaction.offered.find((one) => one.id === offer.id)?.confidence : undefined;
|
|
16
|
+
return offer && confidence !== undefined && confidence >= HOVER_CHIP_CONFIDENCE ? { offer, confidence } : null;
|
|
17
|
+
}
|
|
18
|
+
export function HoverChip({ rest, hold, leave }) {
|
|
19
|
+
const env = useInlineEnv();
|
|
20
|
+
const target = useMemo(() => aiTargetOf(rest.target, (id) => env.store.graph.has(id)), [rest.target, env.store]);
|
|
21
|
+
const asks = target.on === "record" && fastOf(env.ai) !== undefined;
|
|
22
|
+
const held = asks ? heldSuggestion(env, target) : undefined;
|
|
23
|
+
const key = JSON.stringify(target);
|
|
24
|
+
const [answered, setAnswered] = useState(null);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (!asks || held !== undefined)
|
|
27
|
+
return;
|
|
28
|
+
let live = true;
|
|
29
|
+
void suggestOnce(env, target).then((result) => {
|
|
30
|
+
if (live)
|
|
31
|
+
setAnswered({ key, result });
|
|
32
|
+
});
|
|
33
|
+
return () => {
|
|
34
|
+
live = false;
|
|
35
|
+
};
|
|
36
|
+
// Asked once per record it rests on.
|
|
37
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38
|
+
}, [key, asks]);
|
|
39
|
+
const result = held ?? (answered?.key === key ? answered.result : undefined);
|
|
40
|
+
const sure = asks ? sureOf(result) : null;
|
|
41
|
+
const shown = sure?.offer.id ?? null;
|
|
42
|
+
const chip = useRef(null);
|
|
43
|
+
/* Put away by a press anywhere else, the wheel, or the window moving: a chip never stands over what moved under it. */
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (shown === null)
|
|
46
|
+
return;
|
|
47
|
+
const away = (event) => {
|
|
48
|
+
if (event.target instanceof Node && chip.current?.contains(event.target))
|
|
49
|
+
return;
|
|
50
|
+
leave(true);
|
|
51
|
+
};
|
|
52
|
+
document.addEventListener("pointerdown", away, { capture: true, passive: true });
|
|
53
|
+
document.addEventListener("contextmenu", away, { capture: true, passive: true });
|
|
54
|
+
addEventListener("scroll", away, { capture: true, passive: true });
|
|
55
|
+
addEventListener("resize", away, { passive: true });
|
|
56
|
+
return () => {
|
|
57
|
+
document.removeEventListener("pointerdown", away, { capture: true });
|
|
58
|
+
document.removeEventListener("contextmenu", away, { capture: true });
|
|
59
|
+
removeEventListener("scroll", away, { capture: true });
|
|
60
|
+
removeEventListener("resize", away);
|
|
61
|
+
};
|
|
62
|
+
}, [shown, leave]);
|
|
63
|
+
useLayoutEffect(() => {
|
|
64
|
+
const element = chip.current;
|
|
65
|
+
if (!element)
|
|
66
|
+
return;
|
|
67
|
+
if (typeof element.showPopover === "function" && !inTopLayer(element)) {
|
|
68
|
+
try {
|
|
69
|
+
element.showPopover();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// The toast rung holds it over the face where the top layer is not there.
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// At the record's top edge, inside the window: above it where there is room, else just inside it.
|
|
76
|
+
const box = rest.element.getBoundingClientRect();
|
|
77
|
+
const own = element.getBoundingClientRect();
|
|
78
|
+
const top = box.top - own.height - 4 >= 4 ? box.top - own.height - 4 : Math.min(innerHeight - own.height - 4, box.top + 4);
|
|
79
|
+
const left = Math.max(4, Math.min(innerWidth - own.width - 4, box.right - own.width));
|
|
80
|
+
element.style.top = `${Math.round(top)}px`;
|
|
81
|
+
element.style.left = `${Math.round(left)}px`;
|
|
82
|
+
}, [shown, rest.element]);
|
|
83
|
+
if (!sure)
|
|
84
|
+
return null;
|
|
85
|
+
const { offer, confidence } = sure;
|
|
86
|
+
const kindSaid = offer.type === "panel" ? "a panel" : offer.type === "place" ? "go there" : offer.type === "record" ? "open it" : "suggested";
|
|
87
|
+
return (_jsxs("button", { ref: chip, type: "button", ...{ popover: "manual" }, "data-testid": "hover-chip", "data-ai-offer": offer.id, "data-ai-offer-type": offer.type, "data-graview-overlay": "", "data-graview-popover": "", "aria-label": `Suggested by AI: ${offer.label}`, title: `Suggested by AI, ${Math.round(confidence * 100)}% sure`, onPointerEnter: hold, onPointerLeave: () => leave(), onClick: () => {
|
|
88
|
+
// The keyboard goes back to the record the chip was about, never <body>, as the chip goes.
|
|
89
|
+
const home = rest.element.closest("[tabindex], a[href], button");
|
|
90
|
+
home?.focus({ preventScroll: true });
|
|
91
|
+
leave(true);
|
|
92
|
+
void takeOffer(env, result, offer);
|
|
93
|
+
}, style: CHIP, children: [_jsxs("span", { "aria-hidden": "true", style: { color: "var(--graview-accent)" }, children: ["\u2726", " "] }), offer.label, _jsxs("span", { style: { color: "var(--graview-ink-faint)" }, children: [" \u00B7 ", kindSaid] })] }));
|
|
94
|
+
}
|
|
95
|
+
const CHIP = {
|
|
96
|
+
position: "fixed",
|
|
97
|
+
inset: "auto",
|
|
98
|
+
top: 0,
|
|
99
|
+
left: 0,
|
|
100
|
+
margin: 0,
|
|
101
|
+
zIndex: layer("toast"),
|
|
102
|
+
boxSizing: "border-box",
|
|
103
|
+
width: "max-content",
|
|
104
|
+
maxWidth: "min(320px, calc(100vw - 8px))",
|
|
105
|
+
height: "auto",
|
|
106
|
+
minHeight: 24,
|
|
107
|
+
padding: "2px 10px",
|
|
108
|
+
overflow: "hidden",
|
|
109
|
+
textOverflow: "ellipsis",
|
|
110
|
+
whiteSpace: "nowrap",
|
|
111
|
+
borderRadius: 999,
|
|
112
|
+
border: "1px solid var(--graview-edge)",
|
|
113
|
+
background: "var(--graview-float)",
|
|
114
|
+
color: "var(--graview-ink)",
|
|
115
|
+
boxShadow: "var(--graview-lift-high)",
|
|
116
|
+
font: "inherit",
|
|
117
|
+
fontSize: "0.75rem",
|
|
118
|
+
cursor: "pointer",
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=hover-chip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-chip.js","sourceRoot":"","sources":["../src/hover-chip.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type MenuTarget, type ReaderMemory } from "@graview/react/provider";
|
|
2
|
+
import { type CSSProperties } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* THE QUIET HOVER CHIPS (Roadmap f-inline-ai-framework-finish). Where the
|
|
5
|
+
* host asked for hover chips (`ai.hoverChips: true`, with a Fast slot) and
|
|
6
|
+
* the reader has not turned them off, the pointer resting on a record for
|
|
7
|
+
* as long as it takes the menu to get ready (the menu's own dwell, in
|
|
8
|
+
* `inspector-door.tsx`, which tells `restOn` and `leaveRest`) shows, beside
|
|
9
|
+
* it, the Fast slot's one suggestion there — when the model is sure enough
|
|
10
|
+
* of it (`HOVER_CHIP_CONFIDENCE`).
|
|
11
|
+
*
|
|
12
|
+
* ONE PLACE THE POINTER RESTS, so AT MOST ONE CHIP: resting somewhere else
|
|
13
|
+
* moves it, leaving puts it away. A pointer passing over rests nowhere and
|
|
14
|
+
* asks nothing; the keyboard and a finger never raise one. Fetched only
|
|
15
|
+
* where the host asked for chips, and the chip itself with the first rest
|
|
16
|
+
* (`hover-chip.tsx`): a page whose host did not ask never carries either.
|
|
17
|
+
*/
|
|
18
|
+
/** Where the pointer rests, and on what: one at a time. */
|
|
19
|
+
export interface HoverRest {
|
|
20
|
+
readonly target: MenuTarget;
|
|
21
|
+
readonly element: Element;
|
|
22
|
+
}
|
|
23
|
+
/** The pointer has rested on a record: its chip, if it has one, is the only one. */
|
|
24
|
+
export declare function restOn(target: MenuTarget, element: Element): void;
|
|
25
|
+
/** The pointer has left: the chip goes, a moment later, unless the pointer reaches it. */
|
|
26
|
+
export declare function leaveRest(now?: boolean): void;
|
|
27
|
+
/** The pointer is on the chip: it stays. */
|
|
28
|
+
export declare const holdRest: () => void;
|
|
29
|
+
/** Whether this reader wants hover chips: yes unless they turned them off, kept where their other choices are. */
|
|
30
|
+
export declare function hoverChipsWanted(memory?: ReaderMemory): boolean;
|
|
31
|
+
/** The reader turns hover chips on or off, for this browser (or the host's memory). */
|
|
32
|
+
export declare function setHoverChipsWanted(on: boolean, memory?: ReaderMemory): void;
|
|
33
|
+
/** The reader's switch as a hook: whether the host offers chips at all, whether this reader wants them, and the way to change it. */
|
|
34
|
+
export declare function useHoverChipsSetting(): {
|
|
35
|
+
readonly offered: boolean;
|
|
36
|
+
readonly on: boolean;
|
|
37
|
+
readonly set: (on: boolean) => void;
|
|
38
|
+
};
|
|
39
|
+
/** THE READER'S OWN SWITCH FOR HOVER CHIPS, where the host offers them: kept in their browser, as their other choices are. Drawn in the person's menu, fetched with the chips. */
|
|
40
|
+
export declare function HoverChipsSwitch({ legend, style, choice }: {
|
|
41
|
+
readonly legend: CSSProperties;
|
|
42
|
+
readonly style: CSSProperties;
|
|
43
|
+
readonly choice: (chosen: boolean) => CSSProperties;
|
|
44
|
+
}): import("react").JSX.Element | null;
|
|
45
|
+
/** The one chip, where the pointer rests; nothing where chips are off, AI is off, or the pointer rests nowhere. */
|
|
46
|
+
export declare function HoverChipDoor(): import("react").JSX.Element | null;
|
|
47
|
+
//# sourceMappingURL=hover-chips.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-chips.d.ts","sourceRoot":"","sources":["../src/hover-chips.tsx"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE1G,OAAO,EAAwF,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAGjI;;;;;;;;;;;;;;GAcG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAqBD,oFAAoF;AACpF,wBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAMjE;AAED,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,GAAG,UAAQ,GAAG,IAAI,CAa3C;AAED,4CAA4C;AAC5C,eAAO,MAAM,QAAQ,QAAO,IAAqB,CAAC;AASlD,kHAAkH;AAClH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAO/D;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAS5E;AAED,qIAAqI;AACrI,wBAAgB,oBAAoB,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,CAO/H;AAED,kLAAkL;AAClL,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,aAAa,CAAA;CAAE,sCAgBjL;AAeD,mHAAmH;AACnH,wBAAgB,aAAa,uCA0B5B"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { retryingImport } from "@graview/core/retry";
|
|
3
|
+
import { lazyModule, useGraviewIfAny } from "@graview/react/provider";
|
|
4
|
+
import { hoverChipsOn } from "@graview/tools/frame";
|
|
5
|
+
import { Suspense, useCallback, useEffect, useState, useSyncExternalStore } from "react";
|
|
6
|
+
let resting = null;
|
|
7
|
+
let leaving = null;
|
|
8
|
+
const told = new Set();
|
|
9
|
+
const tell = () => {
|
|
10
|
+
for (const listener of told)
|
|
11
|
+
listener();
|
|
12
|
+
};
|
|
13
|
+
const listen = (listener) => {
|
|
14
|
+
told.add(listener);
|
|
15
|
+
return () => void told.delete(listener);
|
|
16
|
+
};
|
|
17
|
+
/** How long a chip stays once the pointer leaves what it is about: long enough to reach the chip itself. */
|
|
18
|
+
const LEAVE_MS = 300;
|
|
19
|
+
const stopLeaving = () => {
|
|
20
|
+
if (leaving !== null)
|
|
21
|
+
clearTimeout(leaving);
|
|
22
|
+
leaving = null;
|
|
23
|
+
};
|
|
24
|
+
/** The pointer has rested on a record: its chip, if it has one, is the only one. */
|
|
25
|
+
export function restOn(target, element) {
|
|
26
|
+
stopLeaving();
|
|
27
|
+
chip.prefetch();
|
|
28
|
+
if (resting?.element === element && resting.target.on === target.on)
|
|
29
|
+
return;
|
|
30
|
+
resting = { target, element };
|
|
31
|
+
tell();
|
|
32
|
+
}
|
|
33
|
+
/** The pointer has left: the chip goes, a moment later, unless the pointer reaches it. */
|
|
34
|
+
export function leaveRest(now = false) {
|
|
35
|
+
stopLeaving();
|
|
36
|
+
if (resting === null)
|
|
37
|
+
return;
|
|
38
|
+
if (now) {
|
|
39
|
+
resting = null;
|
|
40
|
+
tell();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
leaving = setTimeout(() => {
|
|
44
|
+
leaving = null;
|
|
45
|
+
resting = null;
|
|
46
|
+
tell();
|
|
47
|
+
}, LEAVE_MS);
|
|
48
|
+
}
|
|
49
|
+
/** The pointer is on the chip: it stays. */
|
|
50
|
+
export const holdRest = () => stopLeaving();
|
|
51
|
+
const restingNow = () => resting;
|
|
52
|
+
// ── the reader's own switch ─────────────────────────────────────────────────
|
|
53
|
+
const WANTED_KEY = "graview:hover-chips";
|
|
54
|
+
let wantedHere;
|
|
55
|
+
/** Whether this reader wants hover chips: yes unless they turned them off, kept where their other choices are. */
|
|
56
|
+
export function hoverChipsWanted(memory) {
|
|
57
|
+
if (wantedHere !== undefined)
|
|
58
|
+
return wantedHere;
|
|
59
|
+
try {
|
|
60
|
+
return (memory ?? localStorage).getItem(WANTED_KEY) !== "off";
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** The reader turns hover chips on or off, for this browser (or the host's memory). */
|
|
67
|
+
export function setHoverChipsWanted(on, memory) {
|
|
68
|
+
wantedHere = on;
|
|
69
|
+
try {
|
|
70
|
+
(memory ?? localStorage).setItem(WANTED_KEY, on ? "on" : "off");
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// The choice still holds for this visit.
|
|
74
|
+
}
|
|
75
|
+
if (!on)
|
|
76
|
+
resting = null;
|
|
77
|
+
tell();
|
|
78
|
+
}
|
|
79
|
+
/** The reader's switch as a hook: whether the host offers chips at all, whether this reader wants them, and the way to change it. */
|
|
80
|
+
export function useHoverChipsSetting() {
|
|
81
|
+
const context = useGraviewIfAny();
|
|
82
|
+
const offered = hoverChipsOn(context?.ai);
|
|
83
|
+
const memory = context?.memory;
|
|
84
|
+
const on = useSyncExternalStore(listen, () => hoverChipsWanted(memory), () => false);
|
|
85
|
+
const set = useCallback((next) => setHoverChipsWanted(next, memory), [memory]);
|
|
86
|
+
return { offered, on: offered && on, set };
|
|
87
|
+
}
|
|
88
|
+
/** THE READER'S OWN SWITCH FOR HOVER CHIPS, where the host offers them: kept in their browser, as their other choices are. Drawn in the person's menu, fetched with the chips. */
|
|
89
|
+
export function HoverChipsSwitch({ legend, style, choice }) {
|
|
90
|
+
const chips = useHoverChipsSetting();
|
|
91
|
+
if (!chips.offered)
|
|
92
|
+
return null;
|
|
93
|
+
return (_jsxs("fieldset", { "data-testid": "setting-hover-chips", style: { border: 0, margin: 0, padding: 0, display: "grid", gap: 5, ...style }, children: [_jsx("legend", { style: { ...legend, padding: 0 }, children: "AI suggestions on hover" }), _jsx("span", { style: { fontSize: "0.8125rem", color: "var(--graview-ink-muted)" }, children: "A quiet suggestion beside a record the pointer rests on, when the AI is sure of one." }), _jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 4 }, children: [true, false].map((value) => (_jsx("button", { type: "button", "aria-pressed": chips.on === value, "data-testid": `setting-hover-chips-${value ? "on" : "off"}`, onClick: () => chips.set(value), style: choice(chips.on === value), children: value ? "On" : "Off" }, String(value)))) })] }));
|
|
94
|
+
}
|
|
95
|
+
const chip = /* @__PURE__ */ lazyModule(retryingImport(() => import("./hover-chip.js")));
|
|
96
|
+
const Chip = /* @__PURE__ */ chip.part((module, props) => {
|
|
97
|
+
const Drawn = module.HoverChip;
|
|
98
|
+
return _jsx(Drawn, { ...props });
|
|
99
|
+
}, { quiet: true });
|
|
100
|
+
/* Two faces on one page each have a door; the first one drawn draws the chip, so there is still only one. */
|
|
101
|
+
let drawing = null;
|
|
102
|
+
const drawingNow = () => drawing;
|
|
103
|
+
/** The one chip, where the pointer rests; nothing where chips are off, AI is off, or the pointer rests nowhere. */
|
|
104
|
+
export function HoverChipDoor() {
|
|
105
|
+
const { on } = useHoverChipsSetting();
|
|
106
|
+
const rest = useSyncExternalStore(listen, restingNow, () => null);
|
|
107
|
+
const [me] = useState(() => Symbol("hover-chip"));
|
|
108
|
+
const owner = useSyncExternalStore(listen, drawingNow, () => null);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (!on)
|
|
111
|
+
return;
|
|
112
|
+
if (drawing === null) {
|
|
113
|
+
drawing = me;
|
|
114
|
+
tell();
|
|
115
|
+
}
|
|
116
|
+
return () => {
|
|
117
|
+
if (drawing !== me)
|
|
118
|
+
return;
|
|
119
|
+
// Gone with the face it was drawn on: where the pointer rested there is no longer anywhere.
|
|
120
|
+
drawing = null;
|
|
121
|
+
resting = null;
|
|
122
|
+
stopLeaving();
|
|
123
|
+
tell();
|
|
124
|
+
};
|
|
125
|
+
}, [on, me, owner]);
|
|
126
|
+
if (!on || rest === null || owner !== me || !rest.element.isConnected)
|
|
127
|
+
return null;
|
|
128
|
+
return (_jsx(Suspense, { fallback: null, children: _jsx(Chip, { rest: rest, hold: holdRest, leave: leaveRest }) }));
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=hover-chips.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-chips.js","sourceRoot":"","sources":["../src/hover-chips.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -35,6 +35,12 @@ export { DraftDoor } from "./draft-door.js";
|
|
|
35
35
|
export { GhostDoor, InlineAiSections, useInlineAiSection } from "./inline-ai-door.js";
|
|
36
36
|
export type { GhostDoorProps } from "./inline-ai-door.js";
|
|
37
37
|
export { askToNotify, NotifiedDoor, NotifyButton, NotifyDoor, NotifySections, useNotifiedCount, useNotifySection } from "./notify-door.js";
|
|
38
|
+
export { BoardMoveSections, holdBoard, useBoardMoveSection } from "./board-move-section.js";
|
|
39
|
+
export type { BoardHere } from "./board-move-section.js";
|
|
40
|
+
export { openPlaceMenu, PLACE_MENU_EVENT, placeAim, placeGesture } from "./place-menu.js";
|
|
41
|
+
export type { PlaceAim } from "./place-menu.js";
|
|
42
|
+
export { TidyGroups, useKeptViewsState, useTidied } from "./view-tidying.js";
|
|
43
|
+
export { placeAfter, useViewTidyingSection, ViewTidyingSections } from "./view-tidying-sections.js";
|
|
38
44
|
export type { NotifyAsk } from "./notify-sheet.js";
|
|
39
45
|
export { RecordInteractionsDoor } from "./record-interactions-door.js";
|
|
40
46
|
export type { DraftFrameProps } from "./draft-frame.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,11 @@ export { DraftDoor } from "./draft-door.js";
|
|
|
27
27
|
export { GhostDoor, InlineAiSections, useInlineAiSection } from "./inline-ai-door.js";
|
|
28
28
|
// Notify me (Roadmap f-notify-subscriptions): its part of the context menu, the sheet, a face's own press and Activity's list, the sheet and list fetched when first drawn.
|
|
29
29
|
export { askToNotify, NotifiedDoor, NotifyButton, NotifyDoor, NotifySections, useNotifiedCount, useNotifySection } from "./notify-door.js";
|
|
30
|
+
// "Move to ›" on a card on a status board (Roadmap f-board-move-without-buttons).
|
|
31
|
+
export { BoardMoveSections, holdBoard, useBoardMoveSection } from "./board-move-section.js";
|
|
32
|
+
export { openPlaceMenu, PLACE_MENU_EVENT, placeAim, placeGesture } from "./place-menu.js";
|
|
33
|
+
export { TidyGroups, useKeptViewsState, useTidied } from "./view-tidying.js";
|
|
34
|
+
export { placeAfter, useViewTidyingSection, ViewTidyingSections } from "./view-tidying-sections.js";
|
|
30
35
|
// What AI did on a record, on its page (Roadmap f-activity-ai-entries), fetched with the first entry.
|
|
31
36
|
export { RecordInteractionsDoor } from "./record-interactions-door.js";
|
|
32
37
|
export { appKeyOf, readerLenses, readerLensesKey } from "./reader-lenses.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,OAAO,EACP,cAAc,EACd,SAAS,EACT,MAAM,EACN,cAAc,EACd,aAAa,EACb,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpQ,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrG,qGAAqG;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,qHAAqH;AACrH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,8FAA8F;AAC9F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,gHAAgH;AAChH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAErE,sKAAsK;AACtK,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAChF,oIAAoI;AACpI,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,4IAA4I;AAC5I,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEtF,4KAA4K;AAC5K,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-ai-env.d.ts","sourceRoot":"","sources":["../src/inline-ai-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAqC,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,qEAAqE;AACrE,wBAAgB,YAAY,IAAI,SAAS,
|
|
1
|
+
{"version":3,"file":"inline-ai-env.d.ts","sourceRoot":"","sources":["../src/inline-ai-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAqC,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,qEAAqE;AACrE,wBAAgB,YAAY,IAAI,SAAS,CAqBxC"}
|
package/dist/inline-ai-env.js
CHANGED
|
@@ -13,7 +13,8 @@ export function useInlineEnv() {
|
|
|
13
13
|
desk: aiDesk,
|
|
14
14
|
seatTalk,
|
|
15
15
|
goTo,
|
|
16
|
-
|
|
16
|
+
// What each place is and reads go too: the menu offers the view an app has before it draws a second (`existingViewsOf`).
|
|
17
|
+
places: [...views.places()],
|
|
17
18
|
app: app ?? { name: brand?.name ?? "app", schema: store.schema, ...(store.policy ? { policy: store.policy } : {}) },
|
|
18
19
|
...(place ? { place } : {}),
|
|
19
20
|
selection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-ai-env.js","sourceRoot":"","sources":["../src/inline-ai-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAyC,MAAM,yBAAyB,CAAC;AAEnH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAyBhC,qEAAqE;AACrE,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,EAAa,CAAC;IACtH,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,SAAS;QACT,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,QAAQ;QACR,IAAI;QACJ,
|
|
1
|
+
{"version":3,"file":"inline-ai-env.js","sourceRoot":"","sources":["../src/inline-ai-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAyC,MAAM,yBAAyB,CAAC;AAEnH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAyBhC,qEAAqE;AACrE,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,EAAa,CAAC;IACtH,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,SAAS;QACT,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,QAAQ;QACR,IAAI;QACJ,yHAAyH;QACzH,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,GAAG,EAAG,GAAyC,IAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAuC;QAChM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,SAAS;KACV,CAAC,EACF,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CACpF,CAAC;AACJ,CAAC"}
|
package/dist/inline-ai-menu.d.ts
CHANGED
|
@@ -11,7 +11,9 @@ import "./frame.js";
|
|
|
11
11
|
* suggestions, picked from the catalog (a value to fill, an act that asks
|
|
12
12
|
* nothing, a panel, a place, a record), each taken with one press; "Fill
|
|
13
13
|
* in" for a record whose fields the catalog has values for; "Draw a panel"
|
|
14
|
-
* for whatever has a kind
|
|
14
|
+
* for whatever has a kind — after "Open …" for up to three views the app
|
|
15
|
+
* already has that fit it, when it has any, and then "Draw a new view". A
|
|
16
|
+
* proposed change is a ghost, waiting on the
|
|
15
17
|
* tray (`GhostTray`) for Accept, Accept some or Dismiss, and then for its
|
|
16
18
|
* one undo; a panel is drawn where the seat draws a view, where "Keep as a
|
|
17
19
|
* lens" makes it a real one. Every interaction the person takes up is an
|
|
@@ -40,10 +42,19 @@ export declare function drawPanel(env: InlineEnv, panel: AiPanel, landing?: () =
|
|
|
40
42
|
* before what was asked for lands: the ghost held, the panel drawn.
|
|
41
43
|
*/
|
|
42
44
|
export declare function askInline(env: InlineEnv, kind: "suggest" | "fill" | "record" | "panel", target: AiTarget, said?: string, landing?: () => void): Promise<InlineResult>;
|
|
45
|
+
/**
|
|
46
|
+
* WHO ASKS, AND HOW: the menu's own suggestion (`"menu"`) unless said — the
|
|
47
|
+
* selection bar asks its own question of the same records (`"several"`),
|
|
48
|
+
* kept apart, by the same rules.
|
|
49
|
+
*/
|
|
50
|
+
export interface SuggestAsker {
|
|
51
|
+
readonly by: string;
|
|
52
|
+
readonly ask: () => Promise<InlineResult>;
|
|
53
|
+
}
|
|
43
54
|
/** What was suggested here before, while nothing it depends on has changed. */
|
|
44
|
-
export declare function heldSuggestion(env: InlineEnv, target: AiTarget): InlineResult | undefined;
|
|
55
|
+
export declare function heldSuggestion(env: InlineEnv, target: AiTarget, by?: string): InlineResult | undefined;
|
|
45
56
|
/** The suggestions here: held, on their way, or asked now — once. */
|
|
46
|
-
export declare function suggestOnce(env: InlineEnv, target: AiTarget): Promise<InlineResult>;
|
|
57
|
+
export declare function suggestOnce(env: InlineEnv, target: AiTarget, asker?: SuggestAsker): Promise<InlineResult>;
|
|
47
58
|
/**
|
|
48
59
|
* TAKE ONE OF A SUGGESTION'S OFFERS: a change waits as a ghost; a panel is
|
|
49
60
|
* drawn; a place or a record is gone to — each the way the face it was
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-ai-menu.d.ts","sourceRoot":"","sources":["../src/inline-ai-menu.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"inline-ai-menu.d.ts","sourceRoot":"","sources":["../src/inline-ai-menu.tsx"],"names":[],"mappings":"AACA,OAAO,EAA2D,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACnK,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEpG,OAAO,EAA4J,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEvO,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,sIAAsI;AACtI,wBAAgB,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAwBhF;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASjH;AAsBD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAwB3K;AAwCD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C;AAMD,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAGtG;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBzG;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6B3I;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAOjG;AAKD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,iBAAiB,+BAiNtE;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,SAAqB,EAAE,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,sCAgIxG"}
|
package/dist/inline-ai-menu.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { layer } from "@graview/core";
|
|
3
|
-
import { aiTargetOf, catalogOf, recordsOfTarget } from "@graview/core/catalog";
|
|
3
|
+
import { aiTargetOf, catalogOf, existingViewsOf, recordsOfTarget } from "@graview/core/catalog";
|
|
4
4
|
import { useAiDeskState, useGraview, useLiveStore } from "@graview/react/provider";
|
|
5
5
|
import { deriveAffordances } from "@graview/tools/derive";
|
|
6
6
|
import { acceptedEntry, acceptGhost, dismissedEntry, fillHere, ghostOf, interactionId, panelHere, proposalOf, recordHere, suggestHere, suggestsOnOpen, thinkingOf } from "@graview/tools/inline-ai";
|
|
@@ -16,7 +16,9 @@ import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, pa
|
|
|
16
16
|
* suggestions, picked from the catalog (a value to fill, an act that asks
|
|
17
17
|
* nothing, a panel, a place, a record), each taken with one press; "Fill
|
|
18
18
|
* in" for a record whose fields the catalog has values for; "Draw a panel"
|
|
19
|
-
* for whatever has a kind
|
|
19
|
+
* for whatever has a kind — after "Open …" for up to three views the app
|
|
20
|
+
* already has that fit it, when it has any, and then "Draw a new view". A
|
|
21
|
+
* proposed change is a ghost, waiting on the
|
|
20
22
|
* tray (`GhostTray`) for Accept, Accept some or Dismiss, and then for its
|
|
21
23
|
* one undo; a panel is drawn where the seat draws a view, where "Keep as a
|
|
22
24
|
* lens" makes it a real one. Every interaction the person takes up is an
|
|
@@ -144,26 +146,26 @@ const dependsOn = (store, target) => {
|
|
|
144
146
|
const records = recordsOfTarget(target);
|
|
145
147
|
return records.length > 0 ? records.map((id) => store.graph.getNode(id)) : [changesOf(store)];
|
|
146
148
|
};
|
|
147
|
-
const keyOf = (env, target) => JSON.stringify({ target, seat: env.principal });
|
|
149
|
+
const keyOf = (env, target, by) => JSON.stringify({ target, seat: env.principal, by });
|
|
148
150
|
const standing = (env, target, entry) => {
|
|
149
151
|
const now = dependsOn(env.store, target);
|
|
150
152
|
return entry.schema === env.store.schema && entry.ai === env.ai && now.length === entry.depends.length && now.every((one, at) => one === entry.depends[at]);
|
|
151
153
|
};
|
|
152
154
|
/** What was suggested here before, while nothing it depends on has changed. */
|
|
153
|
-
export function heldSuggestion(env, target) {
|
|
154
|
-
const entry = SUGGESTED.get(env.store)?.get(keyOf(env, target));
|
|
155
|
+
export function heldSuggestion(env, target, by = "menu") {
|
|
156
|
+
const entry = SUGGESTED.get(env.store)?.get(keyOf(env, target, by));
|
|
155
157
|
return entry?.result !== undefined && standing(env, target, entry) ? entry.result : undefined;
|
|
156
158
|
}
|
|
157
159
|
/** The suggestions here: held, on their way, or asked now — once. */
|
|
158
|
-
export function suggestOnce(env, target) {
|
|
160
|
+
export function suggestOnce(env, target, asker) {
|
|
159
161
|
let kept = SUGGESTED.get(env.store);
|
|
160
162
|
if (!kept)
|
|
161
163
|
SUGGESTED.set(env.store, (kept = new Map()));
|
|
162
|
-
const key = keyOf(env, target);
|
|
164
|
+
const key = keyOf(env, target, asker?.by ?? "menu");
|
|
163
165
|
const was = kept.get(key);
|
|
164
166
|
if (was && standing(env, target, was))
|
|
165
167
|
return was.result ? Promise.resolve(was.result) : was.asked;
|
|
166
|
-
const asked = askInline(env, "suggest", target);
|
|
168
|
+
const asked = asker ? asker.ask() : askInline(env, "suggest", target);
|
|
167
169
|
const entry = { schema: env.store.schema, ai: env.ai, depends: dependsOn(env.store, target), asked };
|
|
168
170
|
kept.delete(key);
|
|
169
171
|
kept.set(key, entry);
|
|
@@ -242,6 +244,17 @@ export function InlineAiMenu({ target: menu, close }) {
|
|
|
242
244
|
}, [env, target]);
|
|
243
245
|
const fills = catalog.candidates.some((candidate) => candidate.type === "fill");
|
|
244
246
|
const panels = catalog.candidates.some((candidate) => candidate.type === "panel");
|
|
247
|
+
/*
|
|
248
|
+
* A VIEW THE APP ALREADY HAS, BEFORE A NEW ONE (Roadmap
|
|
249
|
+
* f-menu-suggests-existing-views): where a panel would be drawn, the
|
|
250
|
+
* places that fit the target — read from the places, asking no model,
|
|
251
|
+
* once per target with the catalog. With no words asked there is
|
|
252
|
+
* nothing to rank one view of the kind above another by, so the menu
|
|
253
|
+
* offers the best one, in a row the suggestions give up: the menu is no
|
|
254
|
+
* taller than with its three suggestions. The quick ask, which has the
|
|
255
|
+
* words, offers up to three.
|
|
256
|
+
*/
|
|
257
|
+
const existing = useMemo(() => (panels ? existingViewsOf(env.store, target, { principal: env.principal, places: env.places, most: 1 }) : []), [panels, env, target]);
|
|
245
258
|
// A record made by an act that asks for words, where a thinking model can write them.
|
|
246
259
|
const makes = useMemo(() => new Set(env.store.allMutations().filter((mutation) => (mutation.creates ?? []).length > 0).map((mutation) => mutation.name)), [env.store]);
|
|
247
260
|
const records = thinkingOf(env.ai) !== undefined && catalog.candidates.some((candidate) => candidate.type === "act" && candidate.asks.length > 0 && makes.has(candidate.mutation));
|
|
@@ -274,6 +287,8 @@ export function InlineAiMenu({ target: menu, close }) {
|
|
|
274
287
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
275
288
|
}, [askedOf, pressed]);
|
|
276
289
|
const suggested = held ?? answered;
|
|
290
|
+
/* The suggestions and the views it has share the three rows the suggestions had: a place offered already is not offered again. */
|
|
291
|
+
const offers = (suggested?.offers ?? []).filter((offer) => !(offer.type === "place" && existing.some((view) => view.place === offer.place))).slice(0, Math.max(0, 3 - existing.length));
|
|
277
292
|
const failed = suggested?.interaction.outcome === "failed" ? (suggested.interaction.failed ?? "The AI could not suggest anything here.") : null;
|
|
278
293
|
/* "Suggest…" pressed from the keyboard and gone with the answer: the keyboard goes to the first row after it — never <body>. */
|
|
279
294
|
const keyboardOnSuggest = useRef(false);
|
|
@@ -324,12 +339,17 @@ export function InlineAiMenu({ target: menu, close }) {
|
|
|
324
339
|
});
|
|
325
340
|
};
|
|
326
341
|
const failureOf = (result) => (result.interaction.outcome === "failed" ? (result.interaction.failed ?? "The AI could not do that here.") : undefined);
|
|
327
|
-
return (_jsxs("div", { ref: section, "data-testid": "inline-ai", style: { display: "grid", gap: 2 }, children: [busy && !pressed ? (_jsx("p", { role: "status", "data-testid": "inline-ai-thinking", style: QUIET, children: "Thinking\u2026" })) : asking ? (_jsx("p", { role: "status", "data-testid": "inline-ai-asking", style: QUIET, children: "Asking\u2026" })) : refused ? (_jsx("p", { role: "alert", "data-testid": "inline-ai-failed", style: { ...QUIET, color: "var(--graview-warn)" }, children: refused })) : 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: [
|
|
342
|
+
return (_jsxs("div", { ref: section, "data-testid": "inline-ai", style: { display: "grid", gap: 2 }, children: [busy && !pressed ? (_jsx("p", { role: "status", "data-testid": "inline-ai-thinking", style: QUIET, children: "Thinking\u2026" })) : asking ? (_jsx("p", { role: "status", "data-testid": "inline-ai-asking", style: QUIET, children: "Asking\u2026" })) : refused ? (_jsx("p", { role: "alert", "data-testid": "inline-ai-failed", style: { ...QUIET, color: "var(--graview-warn)" }, children: refused })) : 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: [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((landing) => takeOffer(env, suggested, offer, landing)), 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))), !onOpen && suggested === null ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-suggest", "aria-disabled": pressed || undefined, onClick: (event) => {
|
|
328
343
|
if (pressed)
|
|
329
344
|
return;
|
|
330
345
|
keyboardOnSuggest.current = document.activeElement === event.currentTarget;
|
|
331
346
|
setPressed(true);
|
|
332
|
-
}, style: ROW, children: pressed ? "Thinking…" : "Suggest…" }) })) : null, fills ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-fill", onClick: () => run(async (landing) => failureOf(await askInline(env, "fill", target, "Fill in", landing))), style: ROW, children: "Fill in with AI" }) })) : null, records ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-record", onClick: () => run(async (landing) => failureOf(await askInline(env, "record", target, "Add one", landing))), style: ROW, children: "Add one with AI" }) })) : null,
|
|
347
|
+
}, style: ROW, children: pressed ? "Thinking…" : "Suggest…" }) })) : null, fills ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-fill", onClick: () => run(async (landing) => failureOf(await askInline(env, "fill", target, "Fill in", landing))), style: ROW, children: "Fill in with AI" }) })) : null, records ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-record", onClick: () => run(async (landing) => failureOf(await askInline(env, "record", target, "Add one", landing))), style: ROW, children: "Add one with AI" }) })) : null, existing.map((view) => (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": `ai-open:${view.place}`, "data-ai-existing": view.fit, onClick: () => {
|
|
348
|
+
close();
|
|
349
|
+
env.goTo.place(view.place);
|
|
350
|
+
if (view.fit === "partial")
|
|
351
|
+
openQuickAsk(env.desk, { target: { on: "lens", place: view.place, ...(view.kind ? { kind: view.kind } : {}) } });
|
|
352
|
+
}, style: ROW, children: view.fit === "full" ? `Open ${view.title}` : `Open and adjust ${view.title}` }) }, view.place))), panels ? (_jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-panel", onClick: () => run(async (landing) => failureOf(await askInline(env, "panel", target, "Draw a panel", landing))), style: ROW, children: existing.length > 0 ? "Draw a new view" : "Draw a panel" }) })) : null, _jsx("li", { children: _jsx("button", { type: "button", "data-menu-item": "ai-ask", onClick: () => {
|
|
333
353
|
const back = document.activeElement;
|
|
334
354
|
close();
|
|
335
355
|
openQuickAsk(env.desk, { target, returnTo: back instanceof HTMLElement && back !== document.body ? back : null });
|