@graview/primitives 0.1.17 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +5 -2
  2. package/dist/app-bar.d.ts +47 -1
  3. package/dist/app-bar.d.ts.map +1 -1
  4. package/dist/app-bar.js +270 -60
  5. package/dist/app-bar.js.map +1 -1
  6. package/dist/bar-panes-door.d.ts +8 -0
  7. package/dist/bar-panes-door.d.ts.map +1 -0
  8. package/dist/bar-panes-door.js +10 -0
  9. package/dist/bar-panes-door.js.map +1 -0
  10. package/dist/chat.js +1 -1
  11. package/dist/chat.js.map +1 -1
  12. package/dist/companion.d.ts +0 -15
  13. package/dist/companion.d.ts.map +1 -1
  14. package/dist/companion.js +19 -150
  15. package/dist/companion.js.map +1 -1
  16. package/dist/connections.d.ts +7 -1
  17. package/dist/connections.d.ts.map +1 -1
  18. package/dist/connections.js +13 -13
  19. package/dist/connections.js.map +1 -1
  20. package/dist/declared-lens-doors.d.ts +3 -3
  21. package/dist/declared-lens-doors.d.ts.map +1 -1
  22. package/dist/declared-lens-doors.js +37 -24
  23. package/dist/declared-lens-doors.js.map +1 -1
  24. package/dist/default-view.d.ts +2 -0
  25. package/dist/default-view.d.ts.map +1 -1
  26. package/dist/default-view.js +10 -4
  27. package/dist/default-view.js.map +1 -1
  28. package/dist/default-views.d.ts.map +1 -1
  29. package/dist/default-views.js +195 -42
  30. package/dist/default-views.js.map +1 -1
  31. package/dist/editable.d.ts +31 -0
  32. package/dist/editable.d.ts.map +1 -1
  33. package/dist/editable.js +86 -17
  34. package/dist/editable.js.map +1 -1
  35. package/dist/figure.js +1 -1
  36. package/dist/figure.js.map +1 -1
  37. package/dist/find.d.ts.map +1 -1
  38. package/dist/find.js +23 -6
  39. package/dist/find.js.map +1 -1
  40. package/dist/frame.d.ts +3 -2
  41. package/dist/frame.d.ts.map +1 -1
  42. package/dist/frame.js +2 -1
  43. package/dist/frame.js.map +1 -1
  44. package/dist/index.d.ts +13 -7
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +9 -5
  47. package/dist/index.js.map +1 -1
  48. package/dist/lens/calendar-dates.d.ts +2 -0
  49. package/dist/lens/calendar-dates.d.ts.map +1 -1
  50. package/dist/lens/calendar-dates.js +2 -0
  51. package/dist/lens/calendar-dates.js.map +1 -1
  52. package/dist/lens/calendar-drawing.d.ts +2 -2
  53. package/dist/lens/calendar-drawing.d.ts.map +1 -1
  54. package/dist/lens/calendar-drawing.js +1 -2
  55. package/dist/lens/calendar-drawing.js.map +1 -1
  56. package/dist/lens/calendar-spans.d.ts.map +1 -1
  57. package/dist/lens/calendar-spans.js +1 -2
  58. package/dist/lens/calendar-spans.js.map +1 -1
  59. package/dist/lens/calendar-view.d.ts +2 -1
  60. package/dist/lens/calendar-view.d.ts.map +1 -1
  61. package/dist/lens/calendar-view.js +2 -1
  62. package/dist/lens/calendar-view.js.map +1 -1
  63. package/dist/notice-place.d.ts.map +1 -1
  64. package/dist/notice-place.js +2 -0
  65. package/dist/notice-place.js.map +1 -1
  66. package/dist/pages.d.ts +5 -3
  67. package/dist/pages.d.ts.map +1 -1
  68. package/dist/pages.js +5 -2
  69. package/dist/pages.js.map +1 -1
  70. package/dist/places.js +2 -2
  71. package/dist/places.js.map +1 -1
  72. package/dist/profile.d.ts.map +1 -1
  73. package/dist/profile.js +34 -9
  74. package/dist/profile.js.map +1 -1
  75. package/dist/prose-editor.d.ts +9 -0
  76. package/dist/prose-editor.d.ts.map +1 -0
  77. package/dist/prose-editor.js +64 -0
  78. package/dist/prose-editor.js.map +1 -0
  79. package/dist/record-head.d.ts +28 -0
  80. package/dist/record-head.d.ts.map +1 -0
  81. package/dist/record-head.js +3 -0
  82. package/dist/record-head.js.map +1 -0
  83. package/dist/relation-key.d.ts.map +1 -1
  84. package/dist/relation-key.js +2 -2
  85. package/dist/relation-key.js.map +1 -1
  86. package/dist/scene-css.d.ts.map +1 -1
  87. package/dist/scene-css.js +13 -0
  88. package/dist/scene-css.js.map +1 -1
  89. package/dist/scene-places.d.ts +37 -0
  90. package/dist/scene-places.d.ts.map +1 -0
  91. package/dist/scene-places.js +77 -0
  92. package/dist/scene-places.js.map +1 -0
  93. package/dist/spec-views.d.ts +9 -2
  94. package/dist/spec-views.d.ts.map +1 -1
  95. package/dist/spec-views.js +52 -4
  96. package/dist/spec-views.js.map +1 -1
  97. package/dist/subject.d.ts +17 -0
  98. package/dist/subject.d.ts.map +1 -0
  99. package/dist/subject.js +155 -0
  100. package/dist/subject.js.map +1 -0
  101. package/dist/text-body.d.ts +28 -0
  102. package/dist/text-body.d.ts.map +1 -0
  103. package/dist/text-body.js +64 -0
  104. package/dist/text-body.js.map +1 -0
  105. package/dist/view-doors.d.ts +5 -1
  106. package/dist/view-doors.d.ts.map +1 -1
  107. package/dist/view-doors.js +28 -14
  108. package/dist/view-doors.js.map +1 -1
  109. package/dist/workbench/answer-args.d.ts.map +1 -1
  110. package/dist/workbench/answer-args.js +26 -2
  111. package/dist/workbench/answer-args.js.map +1 -1
  112. package/dist/workbench/inspector.js +1 -1
  113. package/dist/workbench/inspector.js.map +1 -1
  114. package/dist/workbench/standing.d.ts.map +1 -1
  115. package/dist/workbench/standing.js +4 -3
  116. package/dist/workbench/standing.js.map +1 -1
  117. package/package.json +6 -6
package/dist/profile.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { labelOf, nameOfAuthor } from "@graview/core";
3
3
  import { POPOVER_STYLE, useGraview, usePopover } from "@graview/react/provider";
4
- import { lazy, Suspense, useEffect, useState } from "react";
4
+ import { Suspense, useEffect, useState } from "react";
5
5
  import { TOOL, toolStyle } from "./app-bar.js";
6
+ import { barPanes as panes } from "./bar-panes-door.js";
6
7
  /**
7
8
  * WHO YOU ARE AT THIS KEYBOARD, AND WHAT YOU SET FOR YOURSELF.
8
9
  *
@@ -69,13 +70,15 @@ keeping, hostActions = NO_HOST_ACTIONS, }) {
69
70
  * so a studio it opened outlives the menu (below).
70
71
  */
71
72
  const [everOpened, setEverOpened] = useState(false);
72
- // Fetched once the page has drawn, so the first press opens a full menu.
73
- useEffect(() => {
74
- const later = setTimeout(fetchPane, 2500);
75
- return () => clearTimeout(later);
76
- }, []);
73
+ // Fetched once the page has drawn and is idle, while it is online, so the first press opens a full menu (FR-139).
74
+ useEffect(() => whenIdle(fetchPane), []);
77
75
  if (open && !everOpened)
78
76
  setEverOpened(true);
77
+ // Each open asks again for a part that did not arrive (FR-139).
78
+ useEffect(() => {
79
+ if (open)
80
+ fetchPane();
81
+ }, [open]);
79
82
  /*
80
83
  * The person's own record, WHERE THERE IS ONE.
81
84
  *
@@ -127,11 +130,33 @@ keeping, hostActions = NO_HOST_ACTIONS, }) {
127
130
  border: "1px solid var(--graview-edge)",
128
131
  background: "var(--graview-float)",
129
132
  boxShadow: "var(--graview-lift-high)",
130
- }, children: [everOpened ? (_jsx(Suspense, { fallback: null, children: _jsx(ProfilePane, { part: "top", name: name, me: me, profileHref: profileHref, hostActions: hostActions, close: () => popover.setOpen(false) }) })) : null, _jsxs("div", { className: "graview-profile-keeping", "data-testid": "profile-keeping", style: ruled, children: [_jsx("span", { style: eyebrow, children: "Keeping this app" }), keeping] }), everOpened ? (_jsx(Suspense, { fallback: null, children: _jsx(ProfilePane, { part: "rest", name: name, me: me, scheme: scheme, onScheme: onScheme, hostActions: hostActions, close: () => popover.setOpen(false) }) })) : null] })] }));
133
+ }, children: [everOpened ? (_jsx(Suspense, { fallback: null, children: _jsx(ProfileTop, { part: "top", name: name, me: me, profileHref: profileHref, hostActions: hostActions, close: () => popover.setOpen(false) }) })) : null, _jsxs("div", { className: "graview-profile-keeping", "data-testid": "profile-keeping", style: ruled, children: [_jsx("span", { style: eyebrow, children: "Keeping this app" }), keeping] }), everOpened ? (_jsx(Suspense, { fallback: null, children: _jsx(ProfileRest, { part: "rest", name: name, me: me, scheme: scheme, onScheme: onScheme, hostActions: hostActions, close: () => popover.setOpen(false) }) })) : null] })] }));
131
134
  }
132
135
  const NO_HOST_ACTIONS = [];
133
- const fetchPane = () => void import("./bar-panes.js");
134
- const ProfilePane = lazy(() => import("./bar-panes.js").then((pane) => ({ default: pane.ProfilePane })));
136
+ /*
137
+ * WHAT IS BEHIND THE PERSON, ASKED FOR AGAIN WHEN IT DID NOT ARRIVE (FR-139).
138
+ * Reached for while the network was away, the menu says so in one line with
139
+ * "Try again", and its part arrives when the browser is back online, when
140
+ * the person is reached for again, or when the button is pressed. Said once,
141
+ * at the top: the rest of the menu is quiet while it waits.
142
+ */
143
+ const fetchPane = () => panes.prefetch();
144
+ const ProfileTop = panes.part((pane, props) => _jsx(pane.ProfilePane, { ...props }), { what: "The rest of your menu" });
145
+ const ProfileRest = panes.part((pane, props) => _jsx(pane.ProfilePane, { ...props }), { quiet: true });
146
+ /** When the page is idle and online — or, where the browser cannot say when it is idle, a little after it has drawn. */
147
+ function whenIdle(then) {
148
+ const go = () => {
149
+ if (typeof navigator === "undefined" || navigator.onLine !== false)
150
+ then();
151
+ };
152
+ const idle = globalThis;
153
+ if (idle.requestIdleCallback) {
154
+ const asked = idle.requestIdleCallback(go, { timeout: 5000 });
155
+ return () => idle.cancelIdleCallback?.(asked);
156
+ }
157
+ const later = setTimeout(go, 2500);
158
+ return () => clearTimeout(later);
159
+ }
135
160
  /** One letter for the mark, from a name rather than from an id. */
136
161
  function initial(name) {
137
162
  return (name.trim()[0] ?? "?").toUpperCase();
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export default function ProseEditor({ field, label, value, onSave, onCancel, }: {
2
+ readonly field: string;
3
+ readonly label: string;
4
+ readonly value: string;
5
+ /** `left`: the person moved the keyboard elsewhere, and it stays there. */
6
+ readonly onSave: (draft: string, left: boolean) => void;
7
+ readonly onCancel: () => void;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=prose-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prose-editor.d.ts","sourceRoot":"","sources":["../src/prose-editor.tsx"],"names":[],"mappings":"AAWA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC/B,+BA2DA"}
@@ -0,0 +1,64 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useLayoutEffect, useRef, useState } from "react";
3
+ /*
4
+ * THE TEXT AREA PROSE IS CHANGED IN (FR-147), fetched the first time a
5
+ * person opens one: every record draws prose, few are edited, and a page's
6
+ * first load carries the drawing, not the editor.
7
+ *
8
+ * As tall as what it holds (`field-sizing: content`, measured where an
9
+ * engine lacks it). Enter is a new line; Ctrl or ⌘ with Enter saves, as
10
+ * does leaving it; Escape puts it back. Named for the field.
11
+ */
12
+ export default function ProseEditor({ field, label, value, onSave, onCancel, }) {
13
+ const [draft, setDraft] = useState(value);
14
+ const area = useRef(null);
15
+ useEffect(() => area.current?.focus(), []);
16
+ useLayoutEffect(() => {
17
+ const element = area.current;
18
+ if (!element || (typeof CSS !== "undefined" && CSS.supports?.("field-sizing", "content")))
19
+ return;
20
+ const fit = () => {
21
+ element.style.height = "auto";
22
+ const style = getComputedStyle(element);
23
+ element.style.height = `${element.scrollHeight + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth)}px`;
24
+ };
25
+ fit();
26
+ // Again once the page has laid the area out: a text area just put in the page can measure before its width is settled.
27
+ const frame = requestAnimationFrame(fit);
28
+ return () => cancelAnimationFrame(frame);
29
+ }, [draft]);
30
+ return (_jsxs("form", { style: { display: "grid", gap: 8, minWidth: 0 }, onSubmit: (event) => {
31
+ event.preventDefault();
32
+ onSave(draft, false);
33
+ }, children: [_jsx("textarea", { ref: area, "aria-label": label, "data-graview-field": field, value: draft, rows: 3, onChange: (event) => setDraft(event.target.value), onKeyDown: (event) => {
34
+ if (event.key === "Escape") {
35
+ event.preventDefault();
36
+ onCancel();
37
+ }
38
+ else if (event.key === "Enter" && (event.metaKey || event.ctrlKey)) {
39
+ event.preventDefault();
40
+ onSave(draft, false);
41
+ }
42
+ }, onBlur: (event) => {
43
+ // Moving to the form's own buttons is not leaving it.
44
+ if (event.relatedTarget instanceof Node && event.currentTarget.form?.contains(event.relatedTarget))
45
+ return;
46
+ onSave(draft, true);
47
+ }, style: TEXT_AREA }), _jsxs("div", { style: { display: "flex", flexWrap: "wrap", alignItems: "center", gap: 8 }, children: [_jsx("button", { type: "submit", style: BUTTON, children: "Save" }), _jsx("button", { type: "button", onClick: onCancel, style: BUTTON, children: "Cancel" }), _jsx("span", { style: { fontSize: "0.75rem", color: "var(--graview-ink-faint)" }, children: "Ctrl or \u2318 Enter saves \u00B7 Esc puts it back" })] })] }));
48
+ }
49
+ const BUTTON = { font: "inherit", fontSize: "0.8125rem", minHeight: 28, padding: "2px 12px" };
50
+ const TEXT_AREA = {
51
+ font: "inherit",
52
+ lineHeight: 1.5,
53
+ width: "100%",
54
+ boxSizing: "border-box",
55
+ minHeight: "7.5em",
56
+ padding: "8px 10px",
57
+ resize: "vertical",
58
+ fieldSizing: "content",
59
+ color: "var(--graview-ink)",
60
+ background: "var(--graview-panel, transparent)",
61
+ border: "1px solid var(--graview-edge-bright)",
62
+ borderRadius: 6,
63
+ };
64
+ //# sourceMappingURL=prose-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prose-editor.js","sourceRoot":"","sources":["../src/prose-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type ReactNode } from "react";
2
+ /**
3
+ * A RECORD'S DECLARED HEAD, handed to the framework's own record (FR-141).
4
+ *
5
+ * A kind's `page` view heads its record. In the scene the two were drawn
6
+ * as two things: the page's blocks bare, centered on a box the record's
7
+ * card was sized for and spilling out of it under the bar and over the
8
+ * neighbors, and the record's card in front saying the same goal and the
9
+ * same four topics again. Now the page is drawn INSIDE the record's own
10
+ * frame, as its head: the page's title is the frame's title, its blocks
11
+ * come first, and the record adds only what the page did not say — the
12
+ * fields it left out (each editable where an act writes it) and the ties it
13
+ * did not list.
14
+ */
15
+ export interface RecordHead {
16
+ /** The record this head belongs to: a record drawn inside it is not headed by it. */
17
+ readonly nodeId: string;
18
+ /** The page's own title, when its first block is one. */
19
+ readonly title?: string;
20
+ /** The page's blocks, drawn: the head of the frame. */
21
+ readonly body: ReactNode;
22
+ /** The fields the page already says. */
23
+ readonly fields: ReadonlySet<string>;
24
+ /** The records the page already lists. */
25
+ readonly records: ReadonlySet<string>;
26
+ }
27
+ export declare const RecordHeadContext: import("react").Context<RecordHead | null>;
28
+ //# sourceMappingURL=record-head.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-head.d.ts","sourceRoot":"","sources":["../src/record-head.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU;IACzB,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,iBAAiB,4CAAyC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createContext } from "react";
2
+ export const RecordHeadContext = createContext(null);
3
+ //# sourceMappingURL=record-head.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-head.js","sourceRoot":"","sources":["../src/record-head.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,OAAO,CAAC;AA4BtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAoB,IAAI,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"relation-key.d.ts","sourceRoot":"","sources":["../src/relation-key.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAUlE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,MAAc,EAAE,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,sCA+MtG;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAOpH;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,+BASzK"}
1
+ {"version":3,"file":"relation-key.d.ts","sourceRoot":"","sources":["../src/relation-key.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAUjF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,MAAc,EAAE,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,sCA+MtG;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAOpH;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,+BASzK"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { layer, resolveKit } from "@graview/core";
2
+ import { humanizeField, layer, resolveKit } from "@graview/core";
3
3
  import { kitConnector, useKit } from "@graview/react/drawing";
4
4
  import { useGraph, useGraview, useGraviewIfAny, useNavigation, useSelection } from "@graview/react/provider";
5
5
  import { CONNECTOR_DASH, connectorStroke, connectorWidth, } from "@graview/render";
@@ -177,7 +177,7 @@ export function RelationKey({ inside = false } = {}) {
177
177
  */
178
178
  export function relationWords(schema, edgeKind) {
179
179
  const info = schema.edge(edgeKind);
180
- const said = info?.description ?? edgeKind.replace(/[-_]+/g, " ");
180
+ const said = info?.description ?? humanizeField(edgeKind).toLowerCase();
181
181
  const plural = (kind) => schema.tryDefinition(kind)?.plural ?? kind;
182
182
  const from = (info?.from ?? []).map(plural).join(", ");
183
183
  const to = info === undefined ? "" : info.to === "*" ? "anything" : info.to.map(plural).join(", ");
@@ -1 +1 @@
1
- {"version":3,"file":"relation-key.js","sourceRoot":"","sources":["../src/relation-key.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation-key.js","sourceRoot":"","sources":["../src/relation-key.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAkB,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC7G,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAsB,EAAE,MAAM,GAAG,KAAK,KAAoC,EAAE;IACrG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,UAAU,EAAK,CAAC;IAC/D,4GAA4G;IAC5G,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC;IACjC,4EAA4E;IAC5E,oCAAoC;IACpC,MAAM,KAAK,GAAG,QAAQ,EAAK,CAAC;IAE5B;;;;;;;OAOG;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgD,CAAC;QACtE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;YAC5E,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YACjB,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;aACxB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnB,wEAAwE;IACxE,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAExD,sEAAsE;IACtE,uEAAuE;IACvE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvE;;;;;;;;OAQG;IACH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CACL,iCACa,qBAAqB;QAChC,2EAA2E;QAC3E,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,iBACtB,cAAc,EAC1B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,QAAQ,EAAE,UAAU;YACpB;;;;;;eAMG;YACH,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,UAAU;YACnB,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,+BAA+B;YACvC,UAAU,EAAE,sBAAsB;YAClC,SAAS,EAAE,yBAAyB;YACpC;;;;;;;;;;;;;;;;eAgBG;YACH,QAAQ,EAAE,0CAA0C;YACpD,oEAAoE;YACpE,WAAW;YACX,SAAS,EAAE,2CAA2C;SACvD,aAED,eACE,KAAK,EAAE;oBACL,QAAQ,EAAE,SAAS;oBACnB,aAAa,EAAE,QAAQ;oBACvB,aAAa,EAAE,WAAW;oBAC1B,KAAK,EAAE,0BAA0B;oBACjC,aAAa,EAAE,CAAC;iBACjB,YAEA,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,YAAY,GACnE,EACN,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;gBACjD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACzD,MAAM,GAAG,GACP,QAAQ,KAAK,IAAI;oBACf,CAAC,CAAC,QAAQ,KAAK,QAAQ;oBACvB,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7D,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ;oBACb,mEAAmE;oBACnE,mEAAmE;oBACnE,gCAAgC;oBAChC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,IAAI,GAAG,KAAK,WAAW;oBACtE;;;;;uBAKG;oBACH,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EACzC,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EACrC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EACpC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAC/B,OAAO,EAAE,GAAG,EAAE;wBACZ,8DAA8D;wBAC9D,GAAG,CAAC,IAAI,CAAC,CAAC;wBACV,IAAI,CAAC,IAAI,CAAC,CAAC;oBACb,CAAC,EACD,KAAK,EAAE;wBACL,GAAG,EAAE,OAAO;wBACZ,+DAA+D;wBAC/D,8DAA8D;wBAC9D,wDAAwD;wBACxD,OAAO,EAAE,cAAc;wBACvB,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,MAAM;wBACf,mBAAmB,EAAE,eAAe;wBACpC,UAAU,EAAE,QAAQ;wBACpB,GAAG,EAAE,CAAC;wBACN,SAAS,EAAE,EAAE;wBACb,OAAO,EAAE,SAAS;wBAClB,YAAY,EAAE,CAAC;wBACf,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;qBACvB,aAID,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,iBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,YAC9G,eACE,CAAC,EAAC,cAAc,EAChB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,EAC9B,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,EACxC,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAC9C,aAAa,EAAC,OAAO,GACrB,GACE,EAON,gBAAM,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,iCAA+B,QAAQ,aAClF,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAQ,EACzH,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,0BAA0B,EAAE,YAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,GAAQ,IACzH,EAEN,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1B,qCAA0B,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,0BAA0B,EAAE,SAAS,EAAE,QAAQ,EAAE,0BAEnH,CACR,EACD,eACE,KAAK,EAAE;gCACL,QAAQ,EAAE,SAAS;gCACnB,KAAK,EAAE,0BAA0B;gCACjC,kBAAkB,EAAE,cAAc;6BACnC,YAEA,KAAK,GACD,KA1EF,QAAQ,CA2EN,CACV,CAAC;YACJ,CAAC,CAAC,IACM,CACX,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,QAAgB;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,EAAE,WAAW,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;IAC5E,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnG,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5G,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAA2G;IACxK,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,IAAI,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAClG,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzD,OAAO,CACL,cAAK,KAAK,EAAE,KAAK,EAAE,MAAM,EAAC,GAAG,iBAAa,MAAM,iBAAa,eAAe,2BAAwB,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,YAC9M,eAAM,CAAC,EAAE,WAAW,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,aAAa,EAAC,OAAO,GAAG,GAC7L,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scene-css.d.ts","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAA0C,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AA6uBtG,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGvF;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,KAAK,GAAE,KAAqB,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGrH"}
1
+ {"version":3,"file":"scene-css.d.ts","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAA0C,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AA0vBtG,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGvF;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,KAAK,GAAE,KAAqB,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGrH"}
package/dist/scene-css.js CHANGED
@@ -688,6 +688,19 @@ ${ /* AND NOT FROM ALTITUDE, where a district is a village on a plot and its
688
688
  [data-graview-stage="dom"] [data-graview-view] > [data-graview-natural] > * {
689
689
  pointer-events: auto;
690
690
  }
691
+ ${ /* THE RECORD IN FOCUS KEEPS TO ITS BOX (FR-141). Whatever draws it — the
692
+ framework's record, a declared page at its head, a worker view — is held
693
+ to the box the layout gave it: no taller than the box, scrolling inside
694
+ when it is taller, from its top. A view centered on a box it outgrew
695
+ spilled under the bar and over the cards it is tied to. A frame that
696
+ scrolls its own body (a Panel) keeps doing so; the kind tag astride the
697
+ frame's edge is not held. */""}
698
+ [data-graview-record-focus] > :not(.graview-kind-tag) {
699
+ min-height: 0;
700
+ max-height: 100%;
701
+ overflow-y: auto;
702
+ flex-shrink: 1;
703
+ }
691
704
  [data-graview-view][data-graview-selected] {
692
705
  filter: drop-shadow(0 0 14px var(--graview-accent-dim));
693
706
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scene-css.js","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene-css.js","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type Place } from "@graview/core";
2
+ import { type ViewState } from "@graview/layout/view";
3
+ import { WHOLE_KEY, type BarGo, type BarPlace } from "./app-bar.js";
4
+ export { WHOLE_KEY };
5
+ /** What the scene's first place is called. */
6
+ export declare const WHOLE_LABEL = "The whole thing";
7
+ /** The scene's places, the one in view, and the view each one goes to. */
8
+ export interface ScenePlaces {
9
+ readonly places: readonly BarPlace[];
10
+ readonly current: string;
11
+ /** The view a place goes to from here, or null for a key that is not the scene's. */
12
+ readonly to: (key: string, from: ViewState) => ViewState | null;
13
+ }
14
+ /**
15
+ * THE SCENE'S PLACES (FR-144): the whole thing, then each picture the seat
16
+ * may see, in the order they were registered; which is in view — the
17
+ * picture the view names on its kind's district, or the one that district
18
+ * draws when it names none on the ground, else the whole thing — the scene
19
+ * from above, where "Up" rises to; and the view each goes to.
20
+ * Each one's path is the scene's address for it (`/places/overview#…`), what
21
+ * a harness finds it by (`data-place-path`).
22
+ */
23
+ export declare function scenePlacesOf(input: {
24
+ readonly places: readonly Place[];
25
+ readonly hidden: ReadonlySet<string>;
26
+ readonly view: ViewState;
27
+ }): ScenePlaces;
28
+ /**
29
+ * The scene's places as the bar is handed them, from the view the provider
30
+ * holds: a press goes there, a step Back undoes it (the view is the address).
31
+ */
32
+ export declare function useScenePlaces(): {
33
+ readonly places: readonly BarPlace[];
34
+ readonly current: string;
35
+ readonly reach: BarGo;
36
+ };
37
+ //# sourceMappingURL=scene-places.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-places.d.ts","sourceRoot":"","sources":["../src/scene-places.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAyE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG7H,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAgBpE,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,8CAA8C;AAC9C,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,0EAA0E;AAC1E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC;CACjE;AAKD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,WAAW,CAuBvJ;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAe1H"}
@@ -0,0 +1,77 @@
1
+ import { OVERVIEW_PATH } from "@graview/core";
2
+ import { aggregateId, EMPTY_VIEW, toUrl, withOverview, withPicture, withWithin } from "@graview/layout/view";
3
+ import { useGraview, useNavigation } from "@graview/react/provider";
4
+ import { useMemo } from "react";
5
+ import { WHOLE_KEY } from "./app-bar.js";
6
+ /*
7
+ * THE SCENE'S PLACES IN THE BAR (FR-144).
8
+ *
9
+ * On Pages the bar names the place you are on and lists every other; on the
10
+ * scene it said nothing after the switch, and the scene's pictures — its
11
+ * lenses — were chosen on the district's own marquee or from a panel that
12
+ * folds to a rail. The scene has its places in the bar now, the same
13
+ * control: what is in view, "The whole thing" or the picture showing, and
14
+ * every picture the scene has, grouped as on Pages. Choosing one moves the
15
+ * scene's `in.view` exactly as every other way to a picture does (a place's
16
+ * tab, Find, a link): the kind's district in focus, on the ground, showing
17
+ * that picture — and the address follows the view, as it always has.
18
+ */
19
+ export { WHOLE_KEY };
20
+ /** What the scene's first place is called. */
21
+ export const WHOLE_LABEL = "The whole thing";
22
+ /** A picture's key on the scene: its kind and its name, as on Pages but the scene's. */
23
+ const keyOf = (place) => `scene:${place.kind}:${place.as}`;
24
+ /**
25
+ * THE SCENE'S PLACES (FR-144): the whole thing, then each picture the seat
26
+ * may see, in the order they were registered; which is in view — the
27
+ * picture the view names on its kind's district, or the one that district
28
+ * draws when it names none on the ground, else the whole thing — the scene
29
+ * from above, where "Up" rises to; and the view each goes to.
30
+ * Each one's path is the scene's address for it (`/places/overview#…`), what
31
+ * a harness finds it by (`data-place-path`).
32
+ */
33
+ export function scenePlacesOf(input) {
34
+ const { view } = input;
35
+ const seen = new Set();
36
+ const pictures = input.places.filter((place) => {
37
+ if (input.hidden.has(place.kind) || seen.has(keyOf(place)))
38
+ return false;
39
+ seen.add(keyOf(place));
40
+ return true;
41
+ });
42
+ const to = (key, from) => {
43
+ // The whole thing is the scene from above, as "Up" rises to it: no picture in view.
44
+ if (key === WHOLE_KEY)
45
+ return withWithin(withOverview(from, true), "view", null);
46
+ const place = pictures.find((one) => keyOf(one) === key);
47
+ return place ? withPicture(from, place.kind, place.as) : null;
48
+ };
49
+ const places = [
50
+ { key: WHOLE_KEY, label: WHOLE_LABEL, path: `${OVERVIEW_PATH}${toUrl(to(WHOLE_KEY, EMPTY_VIEW))}`, group: "home" },
51
+ ...pictures.map((place) => ({ key: keyOf(place), label: place.title, path: `${OVERVIEW_PATH}${toUrl(to(keyOf(place), EMPTY_VIEW))}`, group: "pictures", kind: place.kind })),
52
+ ];
53
+ // Which picture a district draws when the view names none: the last registered for its kind, as the registry resolves it.
54
+ const showing = view.within?.["view"];
55
+ const drawnBy = (place) => view.focusId === aggregateId(place.kind) && (showing === undefined ? pictures.filter((one) => one.kind === place.kind).at(-1) === place : showing === place.as);
56
+ const here = pictures.find((place) => drawnBy(place) && (showing !== undefined || !view.overview));
57
+ return { places, current: here ? keyOf(here) : WHOLE_KEY, to };
58
+ }
59
+ /**
60
+ * The scene's places as the bar is handed them, from the view the provider
61
+ * holds: a press goes there, a step Back undoes it (the view is the address).
62
+ */
63
+ export function useScenePlaces() {
64
+ const { views, hiddenKinds } = useGraview();
65
+ const { view, go } = useNavigation();
66
+ const registered = views.places();
67
+ const scene = useMemo(() => scenePlacesOf({ places: registered, hidden: hiddenKinds, view }), [registered, hiddenKinds, view]);
68
+ const reach = useMemo(() => ({
69
+ go: (place) => {
70
+ const next = scene.to(place.key, view);
71
+ if (next)
72
+ go(next);
73
+ },
74
+ }), [scene, view, go]);
75
+ return { places: scene.places, current: scene.current, reach };
76
+ }
77
+ //# sourceMappingURL=scene-places.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-places.js","sourceRoot":"","sources":["../src/scene-places.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAc,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAkB,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAA6B,MAAM,cAAc,CAAC;AAEpE;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,8CAA8C;AAC9C,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAU7C,wFAAwF;AACxF,MAAM,KAAK,GAAG,CAAC,KAAY,EAAU,EAAE,CAAC,SAAS,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;AAE1E;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,KAA4G;IACxI,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,CAAC,GAAW,EAAE,IAAe,EAAoB,EAAE;QAC5D,oFAAoF;QACpF,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,CAAC,CAAC;IACF,MAAM,MAAM,GAAe;QACzB,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACnH,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAE,CAAC,EAAE,EAAE,KAAK,EAAE,UAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KACvL,CAAC;IACF,0HAA0H;IAC1H,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3M,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAAC;IAC5C,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/H,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;YACZ,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;KACF,CAAC,EACF,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAClB,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;AACjE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { type AnyGraphNode, type AnySchema } from "@graview/core";
2
- import { type BlockContext, type SpecBlock } from "@graview/core/blocks";
1
+ import { type AnyGraphNode, type AnySchema, type GraphReader } from "@graview/core";
2
+ import { type BlockContext, type BlocksSaid, type SpecBlock } from "@graview/core/blocks";
3
3
  import { type ViewSlot, type ViewSpecsByKind } from "@graview/core/document";
4
4
  import { type ReactViewRegistry } from "@graview/react/provider";
5
5
  import { type ReactNode } from "react";
@@ -75,6 +75,13 @@ export declare function SpecView({ slot, blocks, node, selected }: {
75
75
  readonly node: AnyGraphNode;
76
76
  readonly selected?: boolean;
77
77
  }): import("react").JSX.Element;
78
+ /**
79
+ * WHAT A RECORD'S OWN PAGE VIEW ALREADY SAYS (FR-141), for a surface that
80
+ * draws the framework's record under it — the pages face's record page —
81
+ * to leave out the facts and the related records the page said. Nothing
82
+ * for a view that is no declared page.
83
+ */
84
+ export declare function pageSays(view: unknown, node: AnyGraphNode, graph: GraphReader): BlocksSaid | undefined;
78
85
  /**
79
86
  * A kind's specs, registered into the view matrix over whatever is there:
80
87
  * `card` at one × summary, `row` at one × glyph, and `page` at one × full,
@@ -1 +1 @@
1
- {"version":3,"file":"spec-views.d.ts","sourceRoot":"","sources":["../src/spec-views.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-views.d.ts","sourceRoot":"","sources":["../src/spec-views.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { labelOf } from "@graview/core";
3
- import { compileBlocks, fieldSpecsOf, isTallBlock, resolveBlocks } from "@graview/core/blocks";
3
+ import { compileBlocks, fieldSpecsOf, isTallBlock, resolveBlocks, whatBlocksSay } from "@graview/core/blocks";
4
4
  import { shapesOfSchema } from "@graview/core/document";
5
5
  import { useGraph, useGraview, ViewModeProvider } from "@graview/react/provider";
6
6
  import { createContext, useContext } from "react";
7
- import { DefaultView } from "./default-view.js";
7
+ import { DefaultView, useDefaultElsewhere } from "./default-view.js";
8
+ import { RecordHeadContext } from "./record-head.js";
8
9
  import { KindFigure } from "./figure.js";
9
10
  import { Panel } from "./primitives/index.js";
11
+ import { hasShape, TextBody } from "./text-body.js";
10
12
  /*
11
13
  * VIEWS AS DATA, DRAWN (FR-03).
12
14
  *
@@ -48,11 +50,15 @@ function Resolved({ block }) {
48
50
  case "title":
49
51
  return _jsx("strong", { className: "graview-spec-title", children: block.text });
50
52
  case "text":
53
+ // A value with lines in it keeps them — its paragraphs and lists (FR-146); one line of words stays a line.
54
+ if (hasShape(block.text)) {
55
+ return (_jsx("div", { className: "graview-spec-text", ...(block.tone ? { "data-graview-tone": block.tone } : {}), children: _jsx(TextBody, { text: block.text }) }));
56
+ }
51
57
  return (_jsx("p", { className: "graview-spec-text", ...(block.tone ? { "data-graview-tone": block.tone } : {}), children: block.text }));
52
58
  case "badge":
53
59
  return (_jsx("span", { className: "graview-spec-badge", "data-graview-tone": block.tone, children: block.text }));
54
60
  case "field":
55
- return (_jsxs("span", { className: "graview-spec-field", "data-graview-field": block.field, children: [_jsx("span", { className: "graview-spec-label", children: block.label }), _jsx("span", { className: "graview-spec-value", children: block.href ? (_jsx("a", { className: "graview-spec-link", href: block.href, rel: "noopener noreferrer", target: "_blank", children: block.text })) : (block.text) })] }));
61
+ return (_jsxs("span", { className: "graview-spec-field", "data-graview-field": block.field, children: [_jsx("span", { className: "graview-spec-label", children: block.label }), _jsx("span", { className: "graview-spec-value", ...(hasShape(block.text) ? { style: { whiteSpace: "pre-line" } } : {}), children: block.href ? (_jsx("a", { className: "graview-spec-link", href: block.href, rel: "noopener noreferrer", target: "_blank", children: block.text })) : (block.text) })] }));
56
62
  case "progress":
57
63
  if (block.value === undefined || block.max === undefined) {
58
64
  return (_jsxs("span", { className: "graview-spec-progress", children: [_jsx("span", { className: "graview-spec-label", children: block.label }), _jsx("span", { className: "graview-spec-value", children: block.text })] }));
@@ -236,6 +242,42 @@ function SpecCard({ blocks, node, selected, flagged }) {
236
242
  const titled = first?.t === "title";
237
243
  return (_jsx(Panel, { ...(titled ? { title: resolveBlocks([first], ctx)[0].text } : {}), selected: selected, tone: flagged ? "warning" : "muted", fit: true, children: _jsx("div", { className: "graview-spec graview-spec-card", "data-graview-spec": "card", "data-graview-kind": node.kind, children: _jsx(SpecBlocks, { blocks: titled ? rest : blocks, ctx: ctx }) }) }));
238
244
  }
245
+ /**
246
+ * A KIND'S PAGE, AT THE HEAD OF ITS RECORD — DRAWN ONCE (FR-141).
247
+ *
248
+ * The page's blocks were drawn bare above the framework's record, the two
249
+ * in one column the scene centered on a box sized for the record alone: the
250
+ * page spilled out of it, under the app bar where nothing scrolls to it and
251
+ * over the cards beside it, while the record in front said the page's goal
252
+ * and its four topics again. A selected record is one thing now. Where the
253
+ * surface is the framework's own record (the pages face) the page heads it
254
+ * as before; everywhere else the page is handed to the record as its head
255
+ * — its title the frame's, its blocks first — and the record draws only
256
+ * what the page did not say.
257
+ */
258
+ function SpecPage({ blocks, props }) {
259
+ const node = props.node;
260
+ const ctx = useSpecContext(node);
261
+ const elsewhere = useDefaultElsewhere();
262
+ const resolved = resolveBlocks(blocks, { ...ctx, heading: 2 });
263
+ const said = whatBlocksSay(blocks, resolved);
264
+ if (elsewhere) {
265
+ // The record page's own heading is the record's name: a page title saying it again is not drawn under it.
266
+ const named = said.title !== undefined && said.title === labelOf(ctx.schema?.tryDefinition(node.kind), node);
267
+ return (_jsx("div", { className: "graview-spec graview-spec-page", "data-graview-spec": "page", "data-graview-kind": node.kind, children: _jsx(Figure.Provider, { value: ctx.figure, children: _jsx(ResolvedBlocks, { blocks: named ? resolved.slice(1) : resolved }) }) }));
268
+ }
269
+ const body = (_jsx("div", { className: "graview-spec graview-spec-page", "data-graview-spec": "page", "data-graview-kind": node.kind, children: _jsx(Figure.Provider, { value: ctx.figure, children: _jsx(ResolvedBlocks, { blocks: said.title !== undefined ? resolved.slice(1) : resolved }) }) }));
270
+ return (_jsx(RecordHeadContext.Provider, { value: { nodeId: node.id, ...(said.title !== undefined ? { title: said.title } : {}), body, fields: said.fields, records: said.records }, children: _jsx(DefaultView, { ...props }) }));
271
+ }
272
+ /**
273
+ * WHAT A RECORD'S OWN PAGE VIEW ALREADY SAYS (FR-141), for a surface that
274
+ * draws the framework's record under it — the pages face's record page —
275
+ * to leave out the facts and the related records the page said. Nothing
276
+ * for a view that is no declared page.
277
+ */
278
+ export function pageSays(view, node, graph) {
279
+ return typeof view === "function" ? view.says?.(node, graph) : undefined;
280
+ }
239
281
  /** A row: one line, named for assistive technology by the record's own label. */
240
282
  function SpecRow({ blocks, node, selected }) {
241
283
  const { store } = useGraview();
@@ -268,7 +310,13 @@ export function registerViewSpecs(registry, schema, specs) {
268
310
  }
269
311
  if (slots.page) {
270
312
  const blocks = compileBlocks(slots.page);
271
- const Page = (props) => props.node ? (_jsxs("div", { className: "graview-spec-host", children: [_jsx(SpecView, { slot: "page", blocks: blocks, node: props.node }), _jsx(DefaultView, { ...props })] })) : null;
313
+ const Page = (props) => (props.node ? _jsx(SpecPage, { blocks: blocks, props: props }) : null);
314
+ Page.says = (node, graph) => {
315
+ const at = schema;
316
+ const definition = at.tryDefinition(node.kind);
317
+ const ctx = { node, graph, schema: at, kinds: shapesFor(at), fields: fieldsFor(at, node.kind), ...(definition ? { definition } : {}), today: today(), heading: 2 };
318
+ return whatBlocksSay(blocks, resolveBlocks(blocks, ctx));
319
+ };
272
320
  registry.register(at, { cardinality: "one", fidelity: "full" }, Page);
273
321
  }
274
322
  }