@graview/react 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/ai-desk.d.ts +45 -0
- package/dist/ai-desk.d.ts.map +1 -0
- package/dist/ai-desk.js +52 -0
- package/dist/ai-desk.js.map +1 -0
- package/dist/connectors.d.ts.map +1 -1
- package/dist/connectors.js +9 -2
- package/dist/connectors.js.map +1 -1
- package/dist/context.d.ts +83 -3
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +58 -4
- package/dist/context.js.map +1 -1
- package/dist/drawing.d.ts +2 -0
- package/dist/drawing.d.ts.map +1 -1
- package/dist/drawing.js +2 -0
- package/dist/drawing.js.map +1 -1
- package/dist/edge-signs.d.ts +28 -2
- package/dist/edge-signs.d.ts.map +1 -1
- package/dist/edge-signs.js +112 -13
- package/dist/edge-signs.js.map +1 -1
- package/dist/go.d.ts +34 -10
- package/dist/go.d.ts.map +1 -1
- package/dist/go.js +14 -5
- package/dist/go.js.map +1 -1
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/linked-reads.d.ts +3 -0
- package/dist/linked-reads.d.ts.map +1 -0
- package/dist/linked-reads.js +50 -0
- package/dist/linked-reads.js.map +1 -0
- package/dist/menu-sections.d.ts +69 -0
- package/dist/menu-sections.d.ts.map +1 -0
- package/dist/menu-sections.js +35 -0
- package/dist/menu-sections.js.map +1 -0
- package/dist/occupants.d.ts +1 -1
- package/dist/occupants.d.ts.map +1 -1
- package/dist/occupants.js +3 -1
- package/dist/occupants.js.map +1 -1
- package/dist/past.d.ts +58 -0
- package/dist/past.d.ts.map +1 -0
- package/dist/past.js +70 -0
- package/dist/past.js.map +1 -0
- package/dist/placement.d.ts +4 -0
- package/dist/placement.d.ts.map +1 -1
- package/dist/placement.js +7 -2
- package/dist/placement.js.map +1 -1
- package/dist/popover.d.ts +9 -1
- package/dist/popover.d.ts.map +1 -1
- package/dist/popover.js +3 -1
- package/dist/popover.js.map +1 -1
- package/dist/provider.d.ts +9 -4
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +6 -2
- package/dist/provider.js.map +1 -1
- package/dist/rails.d.ts +7 -7
- package/dist/rails.d.ts.map +1 -1
- package/dist/rails.js +7 -7
- package/dist/rails.js.map +1 -1
- package/dist/robot.d.ts +2 -2
- package/dist/routes.d.ts +6 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +8 -0
- package/dist/routes.js.map +1 -1
- package/dist/scene-blur.d.ts +25 -0
- package/dist/scene-blur.d.ts.map +1 -0
- package/dist/scene-blur.js +92 -0
- package/dist/scene-blur.js.map +1 -0
- package/dist/scene-lines.d.ts.map +1 -1
- package/dist/scene-lines.js +91 -2
- package/dist/scene-lines.js.map +1 -1
- package/dist/scene-options.d.ts +10 -4
- package/dist/scene-options.d.ts.map +1 -1
- package/dist/scene-options.js +36 -17
- package/dist/scene-options.js.map +1 -1
- package/dist/scene-root.d.ts +31 -6
- package/dist/scene-root.d.ts.map +1 -1
- package/dist/scene-root.js +105 -32
- package/dist/scene-root.js.map +1 -1
- package/dist/seat-talk.d.ts +6 -17
- package/dist/seat-talk.d.ts.map +1 -1
- package/dist/seat-talk.js +3 -22
- package/dist/seat-talk.js.map +1 -1
- package/dist/tie-labels.d.ts +83 -0
- package/dist/tie-labels.d.ts.map +1 -0
- package/dist/tie-labels.js +98 -0
- package/dist/tie-labels.js.map +1 -0
- package/dist/view-host.d.ts +3 -1
- package/dist/view-host.d.ts.map +1 -1
- package/dist/view-host.js +10 -18
- package/dist/view-host.js.map +1 -1
- package/package.json +5 -5
package/dist/go.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../src/go.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAK/C
|
|
1
|
+
{"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../src/go.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAK/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,IAAI;IACnB,oEAAoE;IACpE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1C,oGAAoG;IACpG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzC,sFAAsF;IACtF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1C;;;;OAIG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,WAAW,QAAQ;IACvB,qHAAqH;IACrH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0GAA0G;IAC1G,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,gGAAgG;AAChG,eAAO,MAAM,WAAW,sCAAmC,CAAC;AAE5D,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,KAAK,IAAI,CA2BnD"}
|
package/dist/go.js
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
import { withFocus, withOverview,
|
|
1
|
+
import { aggregateId, withFocus, withOverview, withWithin } from "@graview/layout/view";
|
|
2
2
|
import { createContext, useContext, useMemo } from "react";
|
|
3
3
|
import { useGraviewIfAny } from "./context.js";
|
|
4
4
|
/** What a face says going somewhere means there. The Graview face's own, when none is given. */
|
|
5
5
|
export const GoToContext = createContext(null);
|
|
6
|
-
/** How to go to a record or a
|
|
6
|
+
/** How to go to a record, a place or a list from here. */
|
|
7
7
|
export function useGoTo() {
|
|
8
8
|
const given = useContext(GoToContext);
|
|
9
9
|
const graview = useGraviewIfAny();
|
|
10
|
+
/*
|
|
11
|
+
* A KIND'S DISTRICT, with a picture of it or its own stop, narrowed as
|
|
12
|
+
* asked (`in.filter`, which the stop's arranging line reads) — or not at
|
|
13
|
+
* all: a destination gone to without a filter is not narrowed by the last.
|
|
14
|
+
*/
|
|
15
|
+
const stop = (kind, as, also) => graview?.setView((view) => withWithin(withWithin(withOverview(withFocus(view, aggregateId(kind)), false), "view", as), "filter", also?.filter ?? null));
|
|
10
16
|
return useMemo(() => given ?? {
|
|
11
17
|
record: (id) => {
|
|
12
18
|
if (!graview)
|
|
@@ -14,11 +20,14 @@ export function useGoTo() {
|
|
|
14
20
|
graview.setView((view) => withFocus(withOverview(view, false), id));
|
|
15
21
|
graview.setSelection([id]);
|
|
16
22
|
},
|
|
17
|
-
place: (as) => {
|
|
23
|
+
place: (as, also) => {
|
|
18
24
|
const place = graview?.views.places().find((candidate) => candidate.as === as);
|
|
19
25
|
if (place)
|
|
20
|
-
|
|
26
|
+
stop(place.kind, place.as, also);
|
|
21
27
|
},
|
|
22
|
-
|
|
28
|
+
list: (kind, also) => stop(kind, null, also),
|
|
29
|
+
},
|
|
30
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31
|
+
[given, graview]);
|
|
23
32
|
}
|
|
24
33
|
//# sourceMappingURL=go.js.map
|
package/dist/go.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go.js","sourceRoot":"","sources":["../src/go.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../src/go.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA4C/C,gGAAgG;AAChG,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAc,IAAI,CAAC,CAAC;AAE5D,0DAA0D;AAC1D,MAAM,UAAU,OAAO;IACrB,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,eAAe,EAAK,CAAC;IACrC;;;;OAIG;IACH,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAiB,EAAE,IAAe,EAAE,EAAE,CAChE,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC;IAC1J,OAAO,OAAO,CACZ,GAAG,EAAE,CACH,KAAK,IAAI;QACP,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;YACb,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/E,IAAI,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;KAC7C;IACH,uDAAuD;IACvD,CAAC,KAAK,EAAE,OAAO,CAAC,CACjB,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
export { GraviewProvider, matchWith, openingView, ROBOT_REST_MS, useFound, useGraph, useGraview, useGraviewIfAny, useNode, useRobots, useScenePointer, useTheWatchKnowsWhatIsUnseen, useViewMode, useWhereIs, ViewModeProvider } from "./context.js";
|
|
1
|
+
export { GraviewProvider, hasLanded, markLanded, matchWith, openingView, ROBOT_REST_MS, useFound, useGraph, useGraview, useGraviewIfAny, useNode, useRobots, useScenePointer, useTheWatchKnowsWhatIsUnseen, useViewMode, useWhereIs, ViewModeProvider } from "./context.js";
|
|
2
2
|
export { GoToContext, useGoTo } from "./go.js";
|
|
3
|
+
export { MenuSections, useMenuSections } from "./menu-sections.js";
|
|
4
|
+
export type { MenuItem, MenuSection, MenuSectionSource, MenuTarget } from "./menu-sections.js";
|
|
3
5
|
export { BesideTheMap } from "./beside-the-map.js";
|
|
4
6
|
export { HostFilesContext, useHostFiles } from "./files.js";
|
|
5
|
-
export type { GoTo } from "./go.js";
|
|
7
|
+
export type { GoTo, GoToAlso } from "./go.js";
|
|
6
8
|
export { Figure, Occupants, PersonFigure } from "./occupants.js";
|
|
7
9
|
export { HEARTBEAT_MS, PRESENCE_SETTINGS, SHARE_OVER, SHARE_WHERE, tabSession, usePresenceState } from "./presence.js";
|
|
8
10
|
export type { PresenceInputs, PresenceState } from "./presence.js";
|
|
@@ -56,8 +58,12 @@ export { landingIn, useTheKeyboardLandsSomewhere } from "./keyboard.js";
|
|
|
56
58
|
export { inTopLayer, placePane, POPOVER_STYLE, POPOVERS, raiseOverPopovers, usePopover, useTopLayer } from "./popover.js";
|
|
57
59
|
export type { PlaceOptions, Popover, PopoverAnchor, PopoverName, PopoverOptions } from "./popover.js";
|
|
58
60
|
export { lazyModule, retryLazyParts } from "./lazy-part.js";
|
|
59
|
-
export { createSeatTalk, seatTalkKey,
|
|
60
|
-
export
|
|
61
|
+
export { createSeatTalk, seatTalkKey, useSeatTalkState } from "./seat-talk.js";
|
|
62
|
+
export { createAiDesk, useAiDeskState } from "./ai-desk.js";
|
|
63
|
+
export type { AiDesk, AiDeskState, HeldGhost } from "./ai-desk.js";
|
|
64
|
+
export type { KeepLensAnswer, KeepLensHost, LensEdit, SeatKept, SeatOutcome, SeatTalk, SeatTalkState, SeatTurn } from "./seat-talk.js";
|
|
61
65
|
export type { LazyModule, LazyPartOptions } from "./lazy-part.js";
|
|
62
66
|
export { useAffordances, useApplyAffordance } from "./affordances.js";
|
|
67
|
+
export { PlaybackContext, useLiveStore, useOwnPlayback, usePlayback } from "./past.js";
|
|
68
|
+
export type { PastShown, Playback } from "./past.js";
|
|
63
69
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { GraviewProvider, matchWith, openingView, ROBOT_REST_MS, useFound, useGraph, useGraview, useGraviewIfAny, useNode, useRobots, useScenePointer, useTheWatchKnowsWhatIsUnseen, useViewMode, useWhereIs, ViewModeProvider } from "./context.js";
|
|
1
|
+
export { GraviewProvider, hasLanded, markLanded, matchWith, openingView, ROBOT_REST_MS, useFound, useGraph, useGraview, useGraviewIfAny, useNode, useRobots, useScenePointer, useTheWatchKnowsWhatIsUnseen, useViewMode, useWhereIs, ViewModeProvider } from "./context.js";
|
|
2
2
|
export { GoToContext, useGoTo } from "./go.js";
|
|
3
|
+
export { MenuSections, useMenuSections } from "./menu-sections.js";
|
|
3
4
|
export { BesideTheMap } from "./beside-the-map.js";
|
|
4
5
|
export { HostFilesContext, useHostFiles } from "./files.js";
|
|
5
6
|
export { Figure, Occupants, PersonFigure } from "./occupants.js";
|
|
@@ -36,6 +37,10 @@ export { landingIn, useTheKeyboardLandsSomewhere } from "./keyboard.js";
|
|
|
36
37
|
export { inTopLayer, placePane, POPOVER_STYLE, POPOVERS, raiseOverPopovers, usePopover, useTopLayer } from "./popover.js";
|
|
37
38
|
export { lazyModule, retryLazyParts } from "./lazy-part.js";
|
|
38
39
|
// The conversation with the seat, held by the app so a face switch keeps it.
|
|
39
|
-
export { createSeatTalk, seatTalkKey,
|
|
40
|
+
export { createSeatTalk, seatTalkKey, useSeatTalkState } from "./seat-talk.js";
|
|
41
|
+
// The inline AI's desk: the interactions Activity draws and the ghost waiting to be accepted, held by the app.
|
|
42
|
+
export { createAiDesk, useAiDeskState } from "./ai-desk.js";
|
|
40
43
|
export { useAffordances, useApplyAffordance } from "./affordances.js";
|
|
44
|
+
// The app as it was (Roadmap f-playback): the moment a face draws instead of now, held by its outermost provider.
|
|
45
|
+
export { PlaybackContext, useLiveStore, useOwnPlayback, usePlayback } from "./past.js";
|
|
41
46
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type AnySchema, type LinkedReads, type LinkedRecords, type Principal, type Store } from "@graview/core";
|
|
2
|
+
export declare function useLinkedReads<S extends AnySchema>(store: Store<S>, host: LinkedRecords | undefined, viewer: Principal): LinkedReads | undefined;
|
|
3
|
+
//# sourceMappingURL=linked-reads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linked-reads.d.ts","sourceRoot":"","sources":["../src/linked-reads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAmBlK,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CA8BhJ"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { linkedReads, linkedRelations, readLinkedThrough } from "@graview/core";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
/*
|
|
4
|
+
* RECORDS IN ANOTHER APP, READ AS WHOEVER IS LOOKING (FR-171).
|
|
5
|
+
*
|
|
6
|
+
* Where the host hands the provider `linkedRecords` and the app has a
|
|
7
|
+
* relation to another app's kind, the page reads far records through one
|
|
8
|
+
* cache for this viewer: each asked of the host once, and the store told
|
|
9
|
+
* to read again (`store.reread()`) as answers arrive — so a computed value,
|
|
10
|
+
* a rule or a label that walks the link reads the far value once it is in,
|
|
11
|
+
* and reads it as not read until then. Registered on the store's graph, so
|
|
12
|
+
* every expression judged over it walks the link as this viewer. What draws
|
|
13
|
+
* a linked record is `@graview/primitives`'s, fetched with the first one.
|
|
14
|
+
*/
|
|
15
|
+
/** Whether an app has a relation to another app's kind at all. */
|
|
16
|
+
const linksAnotherApp = (schema) => schema.definitions.some((definition) => linkedRelations(definition).size > 0);
|
|
17
|
+
export function useLinkedReads(store, host, viewer) {
|
|
18
|
+
const [reads, setReads] = useState(undefined);
|
|
19
|
+
const roles = (viewer.roles ?? []).join("\u0000");
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!host || !linksAnotherApp(store.schema)) {
|
|
22
|
+
setReads(undefined);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
let live = true;
|
|
26
|
+
let soon = false;
|
|
27
|
+
const graph = store.graph;
|
|
28
|
+
// Many answers in one turn are one reading again.
|
|
29
|
+
const answered = () => {
|
|
30
|
+
if (soon)
|
|
31
|
+
return;
|
|
32
|
+
soon = true;
|
|
33
|
+
queueMicrotask(() => {
|
|
34
|
+
soon = false;
|
|
35
|
+
if (live)
|
|
36
|
+
store.reread();
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
const made = linkedReads(host, { kind: viewer.kind, ...(viewer.id === undefined ? {} : { id: viewer.id }), ...(viewer.roles ? { roles: viewer.roles } : {}) }, answered);
|
|
40
|
+
readLinkedThrough(graph, made.read);
|
|
41
|
+
setReads(made);
|
|
42
|
+
store.reread();
|
|
43
|
+
return () => {
|
|
44
|
+
live = false;
|
|
45
|
+
readLinkedThrough(graph, undefined);
|
|
46
|
+
};
|
|
47
|
+
}, [store, host, viewer.kind, viewer.id, roles]);
|
|
48
|
+
return reads;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=linked-reads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linked-reads.js","sourceRoot":"","sources":["../src/linked-reads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAoF,MAAM,eAAe,CAAC;AAClK,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;;;;;;;;GAWG;AAEH,kEAAkE;AAClE,MAAM,eAAe,GAAG,CAAC,MAAiB,EAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAEtI,MAAM,UAAU,cAAc,CAAsB,KAAe,EAAE,IAA+B,EAAE,MAAiB;IACrH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA0B,SAAS,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,kDAAkD;QAClD,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YACZ,cAAc,CAAC,GAAG,EAAE;gBAClB,IAAI,GAAG,KAAK,CAAC;gBACb,IAAI,IAAI;oBAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzK,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,KAAK,CAAC;YACb,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* WHAT A CONTEXT MENU IS OPENED ON, as a section of it is told: the record,
|
|
4
|
+
* the kind or the relation under the gesture (`on`), what the acts are
|
|
5
|
+
* derived for (`about`), the field and the place it landed in, which face
|
|
6
|
+
* opened it, and the element it was opened from.
|
|
7
|
+
*/
|
|
8
|
+
export interface MenuTarget {
|
|
9
|
+
/** The face the menu was opened on. */
|
|
10
|
+
readonly face: "scene" | "pages";
|
|
11
|
+
/** The node, kind card or edge the gesture landed on, when it landed on one. */
|
|
12
|
+
readonly on?: string | undefined;
|
|
13
|
+
/** What the acts in the menu are derived for. */
|
|
14
|
+
readonly about: readonly string[];
|
|
15
|
+
/** The field of `on` it landed on, on a record's page. */
|
|
16
|
+
readonly field?: string | undefined;
|
|
17
|
+
/** The place (a lens, by the name it is registered under) it landed in. */
|
|
18
|
+
readonly place?: string | undefined;
|
|
19
|
+
/** The address it landed on, when that was a link. */
|
|
20
|
+
readonly href?: string | undefined;
|
|
21
|
+
/** The act it landed on — a record's "What can be done", a list's way to begin one — by its declared name. */
|
|
22
|
+
readonly act?: string | undefined;
|
|
23
|
+
/** The element it was opened from, which the keyboard goes back to. */
|
|
24
|
+
readonly element?: HTMLElement | null | undefined;
|
|
25
|
+
}
|
|
26
|
+
/** One row of a section: pressed, it runs and the menu closes. */
|
|
27
|
+
export interface MenuItem {
|
|
28
|
+
/** Unique in its section; carried as `data-menu-item`. */
|
|
29
|
+
readonly id: string;
|
|
30
|
+
/** What pressing it does, in the reader's words. */
|
|
31
|
+
readonly label: string;
|
|
32
|
+
readonly run: () => void;
|
|
33
|
+
/** Said under the label, quietly: where it goes, or why. */
|
|
34
|
+
readonly hint?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A SECTION OF THE CONTEXT MENU, beside the acts the derivation offers. The
|
|
38
|
+
* face's own ("Open", "Change the date") and a host's — the inline AI is
|
|
39
|
+
* one — are both sections, drawn by the one menu: rows from `items`, or what
|
|
40
|
+
* `render` draws, handed the way to close the menu.
|
|
41
|
+
*/
|
|
42
|
+
export interface MenuSection {
|
|
43
|
+
/** Unique in the menu; carried as `data-menu-section`. */
|
|
44
|
+
readonly id: string;
|
|
45
|
+
/** A heading over the section; none for a plain run of rows. */
|
|
46
|
+
readonly heading?: string;
|
|
47
|
+
/** Before the acts (`"start"`) or after them (the default). */
|
|
48
|
+
readonly at?: "start" | "end";
|
|
49
|
+
readonly items?: readonly MenuItem[];
|
|
50
|
+
/** Drawn in place of rows, for a section that needs more than rows. */
|
|
51
|
+
readonly render?: (close: () => void) => ReactNode;
|
|
52
|
+
}
|
|
53
|
+
/** A host's or a face's contribution: told what the menu is opened on, it answers a section or nothing. */
|
|
54
|
+
export type MenuSectionSource = (target: MenuTarget) => MenuSection | null | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* A FACE'S OWN SECTIONS (the routed face's "Open", "Change …"), added to
|
|
57
|
+
* every context menu drawn inside it, after those of any around it. A
|
|
58
|
+
* host's are the provider's `menuSections`, and are drawn after these.
|
|
59
|
+
*/
|
|
60
|
+
export declare function MenuSections({ sections, children }: {
|
|
61
|
+
readonly sections: readonly MenuSectionSource[];
|
|
62
|
+
readonly children: ReactNode;
|
|
63
|
+
}): import("react").JSX.Element;
|
|
64
|
+
/** The sections every source here gives for a target, the ones before the acts first. */
|
|
65
|
+
export declare function useMenuSections(target: MenuTarget | null): {
|
|
66
|
+
readonly start: readonly MenuSection[];
|
|
67
|
+
readonly end: readonly MenuSection[];
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=menu-sections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-sections.d.ts","sourceRoot":"","sources":["../src/menu-sections.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG3E;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,8GAA8G;IAC9G,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;CACnD;AAED,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACrC,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC;CACpD;AAED,2GAA2G;AAC3G,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;AAIvF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAIrI;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,CAAA;CAAE,CAgB3I"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useMemo } from "react";
|
|
3
|
+
import { useGraviewIfAny } from "./context.js";
|
|
4
|
+
const MenuSectionsContext = createContext([]);
|
|
5
|
+
/**
|
|
6
|
+
* A FACE'S OWN SECTIONS (the routed face's "Open", "Change …"), added to
|
|
7
|
+
* every context menu drawn inside it, after those of any around it. A
|
|
8
|
+
* host's are the provider's `menuSections`, and are drawn after these.
|
|
9
|
+
*/
|
|
10
|
+
export function MenuSections({ sections, children }) {
|
|
11
|
+
const outer = useContext(MenuSectionsContext);
|
|
12
|
+
const all = useMemo(() => [...outer, ...sections.filter((source) => !outer.includes(source))], [outer, sections]);
|
|
13
|
+
return _jsx(MenuSectionsContext.Provider, { value: all, children: children });
|
|
14
|
+
}
|
|
15
|
+
/** The sections every source here gives for a target, the ones before the acts first. */
|
|
16
|
+
export function useMenuSections(target) {
|
|
17
|
+
const faces = useContext(MenuSectionsContext);
|
|
18
|
+
const host = useGraviewIfAny()?.menuSections;
|
|
19
|
+
// The same source given twice — a face's and a host's — is drawn once.
|
|
20
|
+
const sources = host ? [...faces, ...host.filter((source) => !faces.includes(source))] : faces;
|
|
21
|
+
if (target === null || sources.length === 0)
|
|
22
|
+
return { start: [], end: [] };
|
|
23
|
+
const sections = sources.flatMap((source) => {
|
|
24
|
+
try {
|
|
25
|
+
const section = source(target);
|
|
26
|
+
return section && ((section.items?.length ?? 0) > 0 || section.render) ? [section] : [];
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// A host's section that throws is left out, never the menu.
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return { start: sections.filter((section) => section.at === "start"), end: sections.filter((section) => section.at !== "start") };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=menu-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-sections.js","sourceRoot":"","sources":["../src/menu-sections.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA2D/C,MAAM,mBAAmB,GAAG,aAAa,CAA+B,EAAE,CAAC,CAAC;AAE5E;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAqF;IACpI,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClH,OAAO,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,YAAG,QAAQ,GAAgC,CAAC;AAC7F,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,MAAyB;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,eAAe,EAAE,EAAE,YAAY,CAAC;IAC7C,uEAAuE;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/F,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;AACpI,CAAC"}
|
package/dist/occupants.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type { RobotState } from "./robot.js";
|
|
|
11
11
|
* This tab's own seat is not here. It used to stand on a pad, walk to what
|
|
12
12
|
* it wrote and follow the pointer — a thing in the middle of the picture
|
|
13
13
|
* that moved on its own, and nothing at all inside a full-screen lens. The
|
|
14
|
-
*
|
|
14
|
+
* quick ask's card says what it is about, beside it, at every height;
|
|
15
15
|
* what it wrote is marked on the things themselves. Somebody
|
|
16
16
|
* else's agent keeps its body: that is how you see them at work.
|
|
17
17
|
*/
|
package/dist/occupants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"occupants.d.ts","sourceRoot":"","sources":["../src/occupants.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;CACnD;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,YAAY,CAgD/G;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAU5E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"occupants.d.ts","sourceRoot":"","sources":["../src/occupants.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;CACnD;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,YAAY,CAgD/G;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAU5E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,YAAY,GAAG,IAAI,CAuGjF"}
|
package/dist/occupants.js
CHANGED
|
@@ -44,7 +44,9 @@ export function Occupants({ width, whereIs }) {
|
|
|
44
44
|
// "Claude, for Ada": an agent is said as itself and for whom it acts (FR-47).
|
|
45
45
|
const name = presenceName(one.presence) || "somebody";
|
|
46
46
|
if (one.kind === "edge") {
|
|
47
|
-
return (_jsxs("button", { type: "button", className: "graview-figure-edge", "data-testid": "presence-edge", "data-graview-person": one.presence.participant,
|
|
47
|
+
return (_jsxs("button", { type: "button", className: "graview-figure-edge", "data-testid": "presence-edge", "data-graview-person": one.presence.participant,
|
|
48
|
+
/* Its end at the edge, clear of a panel docked over the map's right side, however long the name. */
|
|
49
|
+
style: { right: `calc(${Math.max(8, width - one.point.x)}px + var(--graview-dock, 0px))`, top: one.point.y }, onClick: () => follow(one.presence.participant), "aria-label": `${name} is somewhere else — press to go where they are`, children: ["\u2192 ", name] }, `edge:${one.presence.participant}`));
|
|
48
50
|
}
|
|
49
51
|
if (one.kind === "robot") {
|
|
50
52
|
return (_jsxs("div", { className: "graview-figure", "data-graview-figure": `theirs:${one.presence.participant}`, "data-graview-theirs": "", "data-graview-mode": one.mode, "data-graview-at": one.presence.robot?.at ?? "", style: { transform: `translate(${one.point.x.toFixed(1)}px, ${one.point.y.toFixed(1)}px)`, ["--graview-hue"]: hue }, children: [_jsx("span", { className: "graview-figure-body", role: "img", "aria-label": `${name}'s agent — ${one.mode}`, style: { cursor: "default" }, children: _jsx(Figure, { hue: hue, mode: one.mode }) }), _jsxs("span", { className: "graview-figure-name", children: [name, "'s agent"] })] }, `robot:${one.presence.participant}`));
|
package/dist/occupants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"occupants.js","sourceRoot":"","sources":["../src/occupants.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"occupants.js","sourceRoot":"","sources":["../src/occupants.tsx"],"names":[],"mappings":"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"}
|
package/dist/past.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { AnySchema, Principal, Store } from "@graview/core";
|
|
2
|
+
import type { HistoryHost } from "@graview/core/history";
|
|
3
|
+
/**
|
|
4
|
+
* THE APP AS IT WAS, SHOWN (Roadmap f-playback): which moment a face is
|
|
5
|
+
* drawing instead of now, and the store of it (`pastOf`) every surface
|
|
6
|
+
* under it reads — the scene, the pages, the problems, the lenses — so the
|
|
7
|
+
* past is drawn by the one renderer the present is.
|
|
8
|
+
*/
|
|
9
|
+
export interface PastShown<S extends AnySchema = AnySchema> {
|
|
10
|
+
/** The ops before this seq are in it, none after. */
|
|
11
|
+
readonly seq: number;
|
|
12
|
+
/** When the last op in it was made. */
|
|
13
|
+
readonly at: string | undefined;
|
|
14
|
+
/** The whole store as it stood: read, never changed, offering no act. */
|
|
15
|
+
readonly store: Store<S>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* PLAYBACK, AS A FACE HOLDS IT: the moment shown (or `null`, now), the way
|
|
19
|
+
* to show another, and the live store — what the timeline reads its ticks
|
|
20
|
+
* from and a "Restore to here" changes. Held by the outermost provider of
|
|
21
|
+
* a face (`GraviewProvider`, or the routed face's `PagesApp`), so a face
|
|
22
|
+
* drawn inside another shares the one moment.
|
|
23
|
+
*/
|
|
24
|
+
export interface Playback<S extends AnySchema = AnySchema> {
|
|
25
|
+
/** The moment drawn instead of now; `null` while now is drawn. */
|
|
26
|
+
readonly past: PastShown<S> | null;
|
|
27
|
+
/** Whether the timeline is open: at a moment, or at now with the way back still in reach. */
|
|
28
|
+
readonly open: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Show the app as it stood at `seq` — the timeline opens on it; a seq at
|
|
31
|
+
* or past the log's end is now, with the timeline still open. `null`
|
|
32
|
+
* closes the timeline and comes back to now.
|
|
33
|
+
*/
|
|
34
|
+
show(seq: number | null): void;
|
|
35
|
+
/** The store as it is now, whole: read through the seat's sight (`seenBy`). */
|
|
36
|
+
readonly live: Store<S>;
|
|
37
|
+
/** What the host keeps outside the log: declaration changes, a script view's code at a moment. */
|
|
38
|
+
readonly host: HistoryHost | undefined;
|
|
39
|
+
/** Whether `store` is this playback's — now's or the moment's, whole or as one seat sees it. */
|
|
40
|
+
owns(store: Store<AnySchema>, principal: Principal): boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare const PlaybackContext: import("react").Context<Playback<AnySchema> | null>;
|
|
43
|
+
/** The playback the face under this is drawn with, if any. */
|
|
44
|
+
export declare function usePlayback<S extends AnySchema = AnySchema>(): Playback<S> | null;
|
|
45
|
+
/**
|
|
46
|
+
* THE STORE AS IT IS NOW, as this seat sees it, whatever moment the face
|
|
47
|
+
* draws — what Activity lists and a timeline counts its ticks from — drawn
|
|
48
|
+
* again as it changes. The provider's own store where there is no playback.
|
|
49
|
+
*/
|
|
50
|
+
export declare function useLiveStore<S extends AnySchema>(shown: Store<S>, principal: Principal): Store<S>;
|
|
51
|
+
/**
|
|
52
|
+
* A FACE'S OWN PLAYBACK over `live`, or the one it is drawn inside when
|
|
53
|
+
* that one holds this store. Nothing past is folded — or fetched — until
|
|
54
|
+
* somebody asks to see it; a moment the log no longer reaches (cut back
|
|
55
|
+
* under it) is now.
|
|
56
|
+
*/
|
|
57
|
+
export declare function useOwnPlayback<S extends AnySchema>(live: Store<S>, principal: Principal, host: HistoryHost | undefined): Playback<S>;
|
|
58
|
+
//# sourceMappingURL=past.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"past.d.ts","sourceRoot":"","sources":["../src/past.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD;;;;;GAKG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACxD,qDAAqD;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACvD,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnC,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,kGAAkG;IAClG,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IACvC,gGAAgG;IAChG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC;CAC9D;AAED,eAAO,MAAM,eAAe,qDAAuC,CAAC;AAEpE,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAEjF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAcjG;AAQD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAqCpI"}
|
package/dist/past.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { retryingImport } from "@graview/core/retry";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
3
|
+
export const PlaybackContext = createContext(null);
|
|
4
|
+
/** The playback the face under this is drawn with, if any. */
|
|
5
|
+
export function usePlayback() {
|
|
6
|
+
return useContext(PlaybackContext);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* THE STORE AS IT IS NOW, as this seat sees it, whatever moment the face
|
|
10
|
+
* draws — what Activity lists and a timeline counts its ticks from — drawn
|
|
11
|
+
* again as it changes. The provider's own store where there is no playback.
|
|
12
|
+
*/
|
|
13
|
+
export function useLiveStore(shown, principal) {
|
|
14
|
+
const playback = usePlayback();
|
|
15
|
+
const live = useMemo(() => (playback ? playback.live.seenBy(principal) : shown), [playback, shown, principal]);
|
|
16
|
+
const version = useRef(0);
|
|
17
|
+
const subscribe = useCallback((listener) => live.subscribe(() => {
|
|
18
|
+
version.current += 1;
|
|
19
|
+
listener();
|
|
20
|
+
}), [live]);
|
|
21
|
+
useSyncExternalStore(subscribe, () => version.current, () => 0);
|
|
22
|
+
return live;
|
|
23
|
+
}
|
|
24
|
+
/** `@graview/core/past`, fetched when somebody first asks to see the past: the fold is none of a page's weight until then. */
|
|
25
|
+
const history = /* @__PURE__ */ retryingImport(() => import("@graview/core/past"));
|
|
26
|
+
/** The module once it is here, so a face drawn after it arrived shows the past at once. */
|
|
27
|
+
let arrived;
|
|
28
|
+
/**
|
|
29
|
+
* A FACE'S OWN PLAYBACK over `live`, or the one it is drawn inside when
|
|
30
|
+
* that one holds this store. Nothing past is folded — or fetched — until
|
|
31
|
+
* somebody asks to see it; a moment the log no longer reaches (cut back
|
|
32
|
+
* under it) is now.
|
|
33
|
+
*/
|
|
34
|
+
export function useOwnPlayback(live, principal, host) {
|
|
35
|
+
const outer = useContext(PlaybackContext);
|
|
36
|
+
const inherited = outer !== null && outer.owns(live, principal);
|
|
37
|
+
const [seq, setSeq] = useState(null);
|
|
38
|
+
const [folds, setFolds] = useState(arrived);
|
|
39
|
+
// The past is fetched the first time it is asked for; until it is here, now is drawn.
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (folds || inherited || seq === null)
|
|
42
|
+
return;
|
|
43
|
+
let live = true;
|
|
44
|
+
void history().then((module) => {
|
|
45
|
+
arrived = module;
|
|
46
|
+
if (live)
|
|
47
|
+
setFolds(module);
|
|
48
|
+
}, () => { });
|
|
49
|
+
return () => {
|
|
50
|
+
live = false;
|
|
51
|
+
};
|
|
52
|
+
}, [folds, inherited, seq]);
|
|
53
|
+
const past = useMemo(() => {
|
|
54
|
+
if (inherited || seq === null || seq >= live.log.length || !folds)
|
|
55
|
+
return null;
|
|
56
|
+
try {
|
|
57
|
+
const store = folds.pastAt(live, seq, host);
|
|
58
|
+
return { seq, at: store.past?.at, store };
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}, [inherited, live, seq, host, folds]);
|
|
64
|
+
const show = useCallback((next) => setSeq(next === null ? null : next >= live.log.length ? Number.POSITIVE_INFINITY : next), [live]);
|
|
65
|
+
const owns = useCallback((store, seat) => [live, past?.store].some((one) => one !== undefined && (one === store || one.seenBy(seat) === store)), [live, past]);
|
|
66
|
+
const open = seq !== null;
|
|
67
|
+
const own = useMemo(() => ({ past, open, show, live, host, owns }), [past, open, show, live, host, owns]);
|
|
68
|
+
return inherited ? outer : own;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=past.js.map
|
package/dist/past.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"past.js","sourceRoot":"","sources":["../src/past.ts"],"names":[],"mappings":"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"}
|
package/dist/placement.d.ts
CHANGED
|
@@ -47,6 +47,10 @@ export declare function anchorOf(stop: string): {
|
|
|
47
47
|
readonly at: string;
|
|
48
48
|
readonly audience: boolean;
|
|
49
49
|
} | null;
|
|
50
|
+
/** Where the signs to people elsewhere begin down the right edge: under Up (14 to 52) and the key (60 to 90). */
|
|
51
|
+
export declare const EDGE_TOP = 102;
|
|
52
|
+
/** A sign's height and the gap after it. */
|
|
53
|
+
export declare const EDGE_STEP = 32;
|
|
50
54
|
/**
|
|
51
55
|
* THE OTHERS, PLACED. Pure — a test can ask what a viewer would draw from
|
|
52
56
|
* a list of presences and a `whereIs`. People at one anchor stand in a
|
package/dist/placement.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../src/placement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQ7C,MAAM,MAAM,MAAM,GACd;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7G;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxH;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEnF,4DAA4D;AAC5D,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,sHAAsH;AACtH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAUjG;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,QAAQ,EAAE,EACxB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,EACxC,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../src/placement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQ7C,MAAM,MAAM,MAAM,GACd;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7G;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxH;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEnF,4DAA4D;AAC5D,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,sHAAsH;AACtH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAUjG;AAED,iHAAiH;AACjH,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,4CAA4C;AAC5C,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,QAAQ,EAAE,EACxB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,EACxC,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAqDV"}
|
package/dist/placement.js
CHANGED
|
@@ -15,6 +15,10 @@ export function anchorOf(stop) {
|
|
|
15
15
|
}
|
|
16
16
|
return { at: focus, audience: false };
|
|
17
17
|
}
|
|
18
|
+
/** Where the signs to people elsewhere begin down the right edge: under Up (14 to 52) and the key (60 to 90). */
|
|
19
|
+
export const EDGE_TOP = 102;
|
|
20
|
+
/** A sign's height and the gap after it. */
|
|
21
|
+
export const EDGE_STEP = 32;
|
|
18
22
|
/**
|
|
19
23
|
* THE OTHERS, PLACED. Pure — a test can ask what a viewer would draw from
|
|
20
24
|
* a list of presences and a `whereIs`. People at one anchor stand in a
|
|
@@ -33,7 +37,8 @@ export function placeOthers(who, whereIs, width) {
|
|
|
33
37
|
const box = anchor ? whereIs(anchor.at) : null;
|
|
34
38
|
if (!anchor || !box) {
|
|
35
39
|
if (presence.name) {
|
|
36
|
-
|
|
40
|
+
// Down the right edge, below the corner's own controls (Up, then the key): at 40 the first stood under "Close the map" (W-224).
|
|
41
|
+
placed.push({ kind: "edge", presence, point: { x: width - 8, y: EDGE_TOP + edges++ * EDGE_STEP } });
|
|
37
42
|
}
|
|
38
43
|
continue;
|
|
39
44
|
}
|
|
@@ -52,7 +57,7 @@ export function placeOthers(who, whereIs, width) {
|
|
|
52
57
|
// A row in front of the screen; a huddle at a plot's foot, a little left of its robot.
|
|
53
58
|
const point = anchor.audience
|
|
54
59
|
? { x: anchorBox.x + anchorBox.width * 0.5 + (index - 1) * 26, y: anchorBox.y + Math.min(anchorBox.height, 24) }
|
|
55
|
-
: { x: anchorBox.x + anchorBox.width * 0.5 - 26 - index *
|
|
60
|
+
: { x: anchorBox.x + anchorBox.width * 0.5 - 26 - index * 26, y: anchorBox.y + anchorBox.height - 4 };
|
|
56
61
|
placed.push({ kind: "person", presence, point, at: anchor.at, index, of: row.length, audience: anchor.audience });
|
|
57
62
|
}
|
|
58
63
|
for (const [at, row] of rows) {
|