@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.
- package/README.md +5 -2
- package/dist/app-bar.d.ts +47 -1
- package/dist/app-bar.d.ts.map +1 -1
- package/dist/app-bar.js +270 -60
- package/dist/app-bar.js.map +1 -1
- package/dist/bar-panes-door.d.ts +8 -0
- package/dist/bar-panes-door.d.ts.map +1 -0
- package/dist/bar-panes-door.js +10 -0
- package/dist/bar-panes-door.js.map +1 -0
- package/dist/chat.js +1 -1
- package/dist/chat.js.map +1 -1
- package/dist/companion.d.ts +0 -15
- package/dist/companion.d.ts.map +1 -1
- package/dist/companion.js +19 -150
- package/dist/companion.js.map +1 -1
- package/dist/connections.d.ts +7 -1
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +13 -13
- package/dist/connections.js.map +1 -1
- package/dist/declared-lens-doors.d.ts +3 -3
- package/dist/declared-lens-doors.d.ts.map +1 -1
- package/dist/declared-lens-doors.js +37 -24
- package/dist/declared-lens-doors.js.map +1 -1
- package/dist/default-view.d.ts +2 -0
- package/dist/default-view.d.ts.map +1 -1
- package/dist/default-view.js +10 -4
- package/dist/default-view.js.map +1 -1
- package/dist/default-views.d.ts.map +1 -1
- package/dist/default-views.js +195 -42
- package/dist/default-views.js.map +1 -1
- package/dist/editable.d.ts +31 -0
- package/dist/editable.d.ts.map +1 -1
- package/dist/editable.js +86 -17
- package/dist/editable.js.map +1 -1
- package/dist/figure.js +1 -1
- package/dist/figure.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +23 -6
- package/dist/find.js.map +1 -1
- package/dist/frame.d.ts +3 -2
- package/dist/frame.d.ts.map +1 -1
- package/dist/frame.js +2 -1
- package/dist/frame.js.map +1 -1
- package/dist/index.d.ts +13 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/lens/calendar-dates.d.ts +2 -0
- package/dist/lens/calendar-dates.d.ts.map +1 -1
- package/dist/lens/calendar-dates.js +2 -0
- package/dist/lens/calendar-dates.js.map +1 -1
- package/dist/lens/calendar-drawing.d.ts +2 -2
- package/dist/lens/calendar-drawing.d.ts.map +1 -1
- package/dist/lens/calendar-drawing.js +1 -2
- package/dist/lens/calendar-drawing.js.map +1 -1
- package/dist/lens/calendar-spans.d.ts.map +1 -1
- package/dist/lens/calendar-spans.js +1 -2
- package/dist/lens/calendar-spans.js.map +1 -1
- package/dist/lens/calendar-view.d.ts +2 -1
- package/dist/lens/calendar-view.d.ts.map +1 -1
- package/dist/lens/calendar-view.js +2 -1
- package/dist/lens/calendar-view.js.map +1 -1
- package/dist/notice-place.d.ts.map +1 -1
- package/dist/notice-place.js +2 -0
- package/dist/notice-place.js.map +1 -1
- package/dist/pages.d.ts +5 -3
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +5 -2
- package/dist/pages.js.map +1 -1
- package/dist/places.js +2 -2
- package/dist/places.js.map +1 -1
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +34 -9
- package/dist/profile.js.map +1 -1
- package/dist/prose-editor.d.ts +9 -0
- package/dist/prose-editor.d.ts.map +1 -0
- package/dist/prose-editor.js +64 -0
- package/dist/prose-editor.js.map +1 -0
- package/dist/record-head.d.ts +28 -0
- package/dist/record-head.d.ts.map +1 -0
- package/dist/record-head.js +3 -0
- package/dist/record-head.js.map +1 -0
- package/dist/relation-key.d.ts.map +1 -1
- package/dist/relation-key.js +2 -2
- package/dist/relation-key.js.map +1 -1
- package/dist/scene-css.d.ts.map +1 -1
- package/dist/scene-css.js +13 -0
- package/dist/scene-css.js.map +1 -1
- package/dist/scene-places.d.ts +37 -0
- package/dist/scene-places.d.ts.map +1 -0
- package/dist/scene-places.js +77 -0
- package/dist/scene-places.js.map +1 -0
- package/dist/spec-views.d.ts +9 -2
- package/dist/spec-views.d.ts.map +1 -1
- package/dist/spec-views.js +52 -4
- package/dist/spec-views.js.map +1 -1
- package/dist/subject.d.ts +17 -0
- package/dist/subject.d.ts.map +1 -0
- package/dist/subject.js +155 -0
- package/dist/subject.js.map +1 -0
- package/dist/text-body.d.ts +28 -0
- package/dist/text-body.d.ts.map +1 -0
- package/dist/text-body.js +64 -0
- package/dist/text-body.js.map +1 -0
- package/dist/view-doors.d.ts +5 -1
- package/dist/view-doors.d.ts.map +1 -1
- package/dist/view-doors.js +28 -14
- package/dist/view-doors.js.map +1 -1
- package/dist/workbench/answer-args.d.ts.map +1 -1
- package/dist/workbench/answer-args.js +26 -2
- package/dist/workbench/answer-args.js.map +1 -1
- package/dist/workbench/inspector.js +1 -1
- package/dist/workbench/inspector.js.map +1 -1
- package/dist/workbench/standing.d.ts.map +1 -1
- package/dist/workbench/standing.js +4 -3
- package/dist/workbench/standing.js.map +1 -1
- 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 {
|
|
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(
|
|
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
|
-
|
|
134
|
-
|
|
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();
|
package/dist/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAkB,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAkB,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,OAAO,CAAsB,EAC3C,MAAM,EACN,QAAQ;AACR,6EAA6E;AAC7E,WAAW;AACX;;;;;;;;GAQG;AACH,OAAO,EACP,WAAW,GAAG,eAAe,GAc9B;IACC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAK,CAAC;IAC5D;;;;;;;OAOG;IACH,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,kHAAkH;IAClH,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,IAAI,IAAI,CAAC,UAAU;QAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,gEAAgE;IAChE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI;YAAE,SAAS,EAAE,CAAC;IACxB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX;;;;;;;;OAQG;IACH,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtF,MAAM,IAAI,GACR,EAAE,KAAK,SAAS;QACd,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS;YAC1B,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAc,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACjG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,IAAc,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,aAQlC,iBACE,IAAI,EAAC,QAAQ,iBACD,gBAAgB,KACxB,OAAO,CAAC,OAAO,EACnB,OAAO,EAAE,OAAO,CAAC,MAAM,EACvB,cAAc,EAAE,SAAS,EACzB,OAAO,EAAE,SAAS,gBACN,GAAG,IAAI,qCAAqC,EACxD,KAAK,EAAE,GAAG,IAAI,qCAAqC,EACnD,KAAK,EAAE,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,YAE1C,8BACc,MAAM,iBACN,cAAc,EAC1B,KAAK,EAAE;wBACL,OAAO,EAAE,aAAa;wBACtB,UAAU,EAAE,QAAQ;wBACpB,cAAc,EAAE,QAAQ;wBACxB,KAAK,EAAE,IAAI,GAAG,CAAC;wBACf,MAAM,EAAE,IAAI,GAAG,CAAC;wBAChB,YAAY,EAAE,GAAG;wBACjB,QAAQ,EAAE,WAAW;wBACrB,UAAU,EAAE,GAAG;wBACf,UAAU,EAAE,4BAA4B;wBACxC,KAAK,EAAE,oBAAoB;wBAC3B,MAAM,EAAE,+BAA+B;qBACxC,YAEA,OAAO,CAAC,IAAI,CAAC,GACT,GACA,EAgBT,sBACQ,OAAO,CAAC,IAAI,gBACL,SAAS,iBACR,SAAS,2BACC,EAAE,EACxB,MAAM,EAAE,CAAC,IAAI,EACb,KAAK,EAAE;oBACL,GAAG,aAAa;oBAChB,KAAK,EAAE,GAAG;oBACV,QAAQ,EAAE,oBAAoB;oBAC9B,SAAS,EAAE,mBAAmB;oBAC9B,SAAS,EAAE,MAAM;oBACjB,8DAA8D;oBAC9D,4DAA4D;oBAC5D,+DAA+D;oBAC/D,UAAU;oBACV,SAAS,EAAE,QAAQ;oBACnB;;;;;uBAKG;oBACH,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;oBAC/B,GAAG,EAAE,EAAE;oBACP,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,+BAA+B;oBACvC,UAAU,EAAE,sBAAsB;oBAClC,SAAS,EAAE,0BAA0B;iBACtC,aAEA,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,QAAQ,IAAC,QAAQ,EAAE,IAAI,YACtB,KAAC,UAAU,IAAC,IAAI,EAAC,KAAK,EAAA,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,GAC5H,CACZ,CAAC,CAAC,CAAC,IAAI,EAeR,eAAK,SAAS,EAAC,yBAAyB,iBAAa,iBAAiB,EAAC,KAAK,EAAE,KAAK,aACjF,eAAM,KAAK,EAAE,OAAO,iCAAyB,EAC5C,OAAO,IACJ,EAEL,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,QAAQ,IAAC,QAAQ,EAAE,IAAI,YACtB,KAAC,WAAW,IAAC,IAAI,EAAC,MAAM,EAAA,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,GACxI,CACZ,CAAC,CAAC,CAAC,IAAI,IACA,IACR,CACP,CAAC;AACJ,CAAC;AAcD,MAAM,eAAe,GAA0B,EAAE,CAAC;AAKlD;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEzC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAgB,EAAE,EAAE,CAAC,KAAC,IAAI,CAAC,WAAW,OAAK,KAAK,GAAI,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAC9H,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAgB,EAAE,EAAE,CAAC,KAAC,IAAI,CAAC,WAAW,OAAK,KAAK,GAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7G,wHAAwH;AACxH,SAAS,QAAQ,CAAC,IAAgB;IAChC,MAAM,EAAE,GAAG,GAAG,EAAE;QACd,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK;YAAE,IAAI,EAAE,CAAC;IAC7E,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,UAA6I,CAAC;IAC3J,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACnC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,mEAAmE;AACnE,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,OAAO,GAAG;IACd,QAAQ,EAAE,SAAS;IACnB,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,WAAoB;IACnC,KAAK,EAAE,0BAA0B;CAClC,CAAC;AAEF,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,+BAA+B;CAC3C,CAAC"}
|
|
@@ -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 @@
|
|
|
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,
|
|
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"}
|
package/dist/relation-key.js
CHANGED
|
@@ -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.
|
|
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(", ");
|
package/dist/relation-key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-key.js","sourceRoot":"","sources":["../src/relation-key.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAkB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"relation-key.js","sourceRoot":"","sources":["../src/relation-key.tsx"],"names":[],"mappings":"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"}
|
package/dist/scene-css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-css.d.ts","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAA0C,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scene-css.d.ts","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,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
|
}
|
package/dist/scene-css.js.map
CHANGED
|
@@ -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":"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"}
|
package/dist/spec-views.d.ts
CHANGED
|
@@ -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,
|
package/dist/spec-views.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-views.d.ts","sourceRoot":"","sources":["../src/spec-views.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"spec-views.d.ts","sourceRoot":"","sources":["../src/spec-views.tsx"],"names":[],"mappings":"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"}
|
package/dist/spec-views.js
CHANGED
|
@@ -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 ?
|
|
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
|
}
|