@graview/core 0.1.64 → 0.1.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/archived-seen.js +2 -2
- package/dist/archived-seen.js.map +1 -1
- package/dist/capital.d.ts +8 -0
- package/dist/capital.d.ts.map +1 -1
- package/dist/capital.js +8 -0
- package/dist/capital.js.map +1 -1
- package/dist/catalog.d.ts +32 -2
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +1 -0
- package/dist/catalog.js.map +1 -1
- package/dist/columns.js +2 -2
- package/dist/columns.js.map +1 -1
- package/dist/compose.d.ts +25 -1
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +56 -0
- package/dist/compose.js.map +1 -1
- package/dist/conformance/index.d.ts +8 -0
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +4 -0
- package/dist/conformance/index.js.map +1 -1
- package/dist/conformance/plan-host.d.ts +73 -0
- package/dist/conformance/plan-host.d.ts.map +1 -0
- package/dist/conformance/plan-host.js +64 -0
- package/dist/conformance/plan-host.js.map +1 -0
- package/dist/conformance/told-host.d.ts +40 -0
- package/dist/conformance/told-host.d.ts.map +1 -0
- package/dist/conformance/told-host.js +57 -0
- package/dist/conformance/told-host.js.map +1 -0
- package/dist/conformance/view-fork-host.d.ts +26 -0
- package/dist/conformance/view-fork-host.d.ts.map +1 -0
- package/dist/conformance/view-fork-host.js +47 -0
- package/dist/conformance/view-fork-host.js.map +1 -0
- package/dist/conformance/view-revision-host.d.ts +36 -0
- package/dist/conformance/view-revision-host.d.ts.map +1 -0
- package/dist/conformance/view-revision-host.js +42 -0
- package/dist/conformance/view-revision-host.js.map +1 -0
- package/dist/css/tables.d.ts.map +1 -1
- package/dist/css/tables.js +5 -1
- package/dist/css/tables.js.map +1 -1
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +6 -2
- package/dist/document/compile.js.map +1 -1
- package/dist/document.schema.json +2 -2
- package/dist/friction-record.d.ts +2 -1
- package/dist/friction-record.d.ts.map +1 -1
- package/dist/friction.d.ts +4 -0
- package/dist/friction.d.ts.map +1 -1
- package/dist/friction.js +5 -4
- package/dist/friction.js.map +1 -1
- package/dist/graph/graph.d.ts.map +1 -1
- package/dist/graph/graph.js +3 -3
- package/dist/graph/graph.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/intelligence-bridge.d.ts +9 -0
- package/dist/intelligence-bridge.d.ts.map +1 -1
- package/dist/mutations/derive-edits.d.ts.map +1 -1
- package/dist/mutations/derive-edits.js +3 -5
- package/dist/mutations/derive-edits.js.map +1 -1
- package/dist/ops/declines.d.ts +41 -0
- package/dist/ops/declines.d.ts.map +1 -0
- package/dist/ops/declines.js +118 -0
- package/dist/ops/declines.js.map +1 -0
- package/dist/ops/log.d.ts +12 -0
- package/dist/ops/log.d.ts.map +1 -1
- package/dist/ops/log.js.map +1 -1
- package/dist/ops/provenance.js +2 -2
- package/dist/ops/provenance.js.map +1 -1
- package/dist/ops/tidying.d.ts +23 -17
- package/dist/ops/tidying.d.ts.map +1 -1
- package/dist/ops/tidying.js +1 -76
- package/dist/ops/tidying.js.map +1 -1
- package/dist/plan-edits.d.ts +55 -0
- package/dist/plan-edits.d.ts.map +1 -0
- package/dist/plan-edits.js +84 -0
- package/dist/plan-edits.js.map +1 -0
- package/dist/presence.d.ts +10 -0
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js.map +1 -1
- package/dist/revisions/beyond.d.ts +56 -0
- package/dist/revisions/beyond.d.ts.map +1 -0
- package/dist/revisions/beyond.js +112 -0
- package/dist/revisions/beyond.js.map +1 -0
- package/dist/revisions/pictured.d.ts +52 -0
- package/dist/revisions/pictured.d.ts.map +1 -0
- package/dist/revisions/pictured.js +85 -0
- package/dist/revisions/pictured.js.map +1 -0
- package/dist/revisions/pinned-dates.d.ts +30 -0
- package/dist/revisions/pinned-dates.d.ts.map +1 -0
- package/dist/revisions/pinned-dates.js +120 -0
- package/dist/revisions/pinned-dates.js.map +1 -0
- package/dist/revisions/problems.d.ts +57 -0
- package/dist/revisions/problems.d.ts.map +1 -0
- package/dist/revisions/problems.js +51 -0
- package/dist/revisions/problems.js.map +1 -0
- package/dist/revisions/sections.d.ts +18 -0
- package/dist/revisions/sections.d.ts.map +1 -0
- package/dist/revisions/sections.js +91 -0
- package/dist/revisions/sections.js.map +1 -0
- package/dist/revisions/touched.d.ts +59 -0
- package/dist/revisions/touched.d.ts.map +1 -0
- package/dist/revisions/touched.js +72 -0
- package/dist/revisions/touched.js.map +1 -0
- package/dist/revisions/view.d.ts +71 -0
- package/dist/revisions/view.d.ts.map +1 -0
- package/dist/revisions/view.js +338 -0
- package/dist/revisions/view.js.map +1 -0
- package/dist/revisions.d.ts +15 -0
- package/dist/revisions.d.ts.map +1 -0
- package/dist/revisions.js +24 -0
- package/dist/revisions.js.map +1 -0
- package/dist/scaffold/ui.d.ts.map +1 -1
- package/dist/scaffold/ui.js +30 -44
- package/dist/scaffold/ui.js.map +1 -1
- package/dist/schema/define-node.d.ts +7 -0
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +8 -1
- package/dist/schema/define-node.js.map +1 -1
- package/dist/seen.js +1 -1
- package/dist/seen.js.map +1 -1
- package/dist/store.d.ts +5 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +12 -4
- package/dist/store.js.map +1 -1
- package/dist/tidying.d.ts +5 -2
- package/dist/tidying.d.ts.map +1 -1
- package/dist/tidying.js +12 -3
- package/dist/tidying.js.map +1 -1
- package/dist/told.d.ts +306 -0
- package/dist/told.d.ts.map +1 -0
- package/dist/told.js +409 -0
- package/dist/told.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/views/kept.d.ts +96 -0
- package/dist/views/kept.d.ts.map +1 -1
- package/dist/views/kept.js +75 -0
- package/dist/views/kept.js.map +1 -1
- package/dist/workflows/step-classify.js +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A VIEW'S REVISION, COMPARED WITH WHAT IT REPLACES (Roadmap
|
|
3
|
+
* f-revisions-say-what-broke).
|
|
4
|
+
*
|
|
5
|
+
* Homeflow's home view was rewritten whole by a chat: the "This week"
|
|
6
|
+
* section's markup stayed and the stylesheet that laid it out (`.hf-week`,
|
|
7
|
+
* `.hf-wk-*`) did not, and the first screen it was pictured by looked as it
|
|
8
|
+
* had. Nothing said so. This says it: the classes the new drawing still uses
|
|
9
|
+
* that some rule styled before and none styles now, the selectors taken out
|
|
10
|
+
* whose markup is still drawn, the sections drawn before and not now, and
|
|
11
|
+
* how the page's height moved — each in a sentence and as an entry.
|
|
12
|
+
*
|
|
13
|
+
* A class that was never styled — a hook for `graview.on`, a utility a
|
|
14
|
+
* view draws for its own reading — is never said: only "styled before,
|
|
15
|
+
* unstyled now". What a side is read from is the best it was handed: the
|
|
16
|
+
* stylesheet a run drew with and the tree it drew (a headless run's `css`
|
|
17
|
+
* and `drawing`, or a page's), else what its source's strings say.
|
|
18
|
+
*/
|
|
19
|
+
import { elementsOf, sectionsOfDrawing } from "./sections.js";
|
|
20
|
+
/** Where an interpolation stood in a template's text: never part of a class or a selector. */
|
|
21
|
+
const HOLE = "\u0000";
|
|
22
|
+
/**
|
|
23
|
+
* THE STRINGS A SCRIPT SAYS: each quoted string and template's text, an
|
|
24
|
+
* interpolation left as a hole. Comments and regular expressions are passed
|
|
25
|
+
* over; nothing is run.
|
|
26
|
+
*/
|
|
27
|
+
export function stringsOfSource(source) {
|
|
28
|
+
const out = [];
|
|
29
|
+
const n = source.length;
|
|
30
|
+
let i = 0;
|
|
31
|
+
let last = "";
|
|
32
|
+
const unescape = (text) => text.replace(/\\(u\{[0-9a-fA-F]+\}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|.)/gs, (_, e) => (e === "n" ? "\n" : e === "t" ? "\t" : e[0] === "u" || e[0] === "x" ? String.fromCodePoint(parseInt(e.replace(/[ux{}]/g, ""), 16)) : e));
|
|
33
|
+
const quoted = (quote) => {
|
|
34
|
+
const start = ++i;
|
|
35
|
+
while (i < n && source[i] !== quote && source[i] !== "\n")
|
|
36
|
+
i += source[i] === "\\" ? 2 : 1;
|
|
37
|
+
const text = source.slice(start, i);
|
|
38
|
+
i++;
|
|
39
|
+
return unescape(text);
|
|
40
|
+
};
|
|
41
|
+
const regex = () => {
|
|
42
|
+
i++;
|
|
43
|
+
let inClass = false;
|
|
44
|
+
while (i < n && source[i] !== "\n") {
|
|
45
|
+
const c = source[i];
|
|
46
|
+
if (c === "\\")
|
|
47
|
+
i += 2;
|
|
48
|
+
else if (c === "[")
|
|
49
|
+
(inClass = true), i++;
|
|
50
|
+
else if (c === "]")
|
|
51
|
+
(inClass = false), i++;
|
|
52
|
+
else if (c === "/" && !inClass)
|
|
53
|
+
break;
|
|
54
|
+
else
|
|
55
|
+
i++;
|
|
56
|
+
}
|
|
57
|
+
i++;
|
|
58
|
+
while (i < n && /[a-z]/i.test(source[i]))
|
|
59
|
+
i++;
|
|
60
|
+
};
|
|
61
|
+
const template = () => {
|
|
62
|
+
i++;
|
|
63
|
+
let text = "";
|
|
64
|
+
while (i < n) {
|
|
65
|
+
const c = source[i];
|
|
66
|
+
if (c === "\\") {
|
|
67
|
+
text += unescape(source.slice(i, i + 2));
|
|
68
|
+
i += 2;
|
|
69
|
+
}
|
|
70
|
+
else if (c === "`") {
|
|
71
|
+
i++;
|
|
72
|
+
return text;
|
|
73
|
+
}
|
|
74
|
+
else if (c === "$" && source[i + 1] === "{") {
|
|
75
|
+
i += 2;
|
|
76
|
+
code(true);
|
|
77
|
+
text += HOLE;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
text += c;
|
|
81
|
+
i++;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return text;
|
|
85
|
+
};
|
|
86
|
+
function code(inHole) {
|
|
87
|
+
let depth = 0;
|
|
88
|
+
while (i < n) {
|
|
89
|
+
const c = source[i];
|
|
90
|
+
if (c === "/" && source[i + 1] === "/") {
|
|
91
|
+
const end = source.indexOf("\n", i);
|
|
92
|
+
i = end < 0 ? n : end;
|
|
93
|
+
}
|
|
94
|
+
else if (c === "/" && source[i + 1] === "*") {
|
|
95
|
+
const end = source.indexOf("*/", i + 2);
|
|
96
|
+
i = end < 0 ? n : end + 2;
|
|
97
|
+
}
|
|
98
|
+
else if (c === '"' || c === "'") {
|
|
99
|
+
out.push(quoted(c));
|
|
100
|
+
last = "a";
|
|
101
|
+
}
|
|
102
|
+
else if (c === "`") {
|
|
103
|
+
out.push(template());
|
|
104
|
+
last = "a";
|
|
105
|
+
}
|
|
106
|
+
else if (c === "/" && (last === "" || "(,=:[!&|?{};+-*%<>~^".includes(last))) {
|
|
107
|
+
regex();
|
|
108
|
+
last = "a";
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
if (c === "{")
|
|
112
|
+
depth++;
|
|
113
|
+
if (c === "}") {
|
|
114
|
+
if (inHole && depth === 0) {
|
|
115
|
+
i++;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
depth--;
|
|
119
|
+
}
|
|
120
|
+
if (!/\s/.test(c))
|
|
121
|
+
last = c;
|
|
122
|
+
i++;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
code(false);
|
|
127
|
+
return out;
|
|
128
|
+
}
|
|
129
|
+
/** A selector as it is compared: its whitespace and its combinators' spacing made one. */
|
|
130
|
+
const normalSelector = (selector) => selector
|
|
131
|
+
.replace(/\s+/g, " ")
|
|
132
|
+
.replace(/\s*([>+~,])\s*/g, "$1")
|
|
133
|
+
.trim();
|
|
134
|
+
/** Splits a selector list on its top-level commas. */
|
|
135
|
+
function splitList(list) {
|
|
136
|
+
const out = [];
|
|
137
|
+
let depth = 0;
|
|
138
|
+
let from = 0;
|
|
139
|
+
for (let at = 0; at < list.length; at++) {
|
|
140
|
+
const c = list[at];
|
|
141
|
+
if (c === "(" || c === "[")
|
|
142
|
+
depth++;
|
|
143
|
+
else if (c === ")" || c === "]")
|
|
144
|
+
depth--;
|
|
145
|
+
else if (c === "," && depth === 0) {
|
|
146
|
+
out.push(list.slice(from, at));
|
|
147
|
+
from = at + 1;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
out.push(list.slice(from));
|
|
151
|
+
return out.map(normalSelector).filter(Boolean);
|
|
152
|
+
}
|
|
153
|
+
/** The at-rules whose blocks hold style rules of their own. */
|
|
154
|
+
const GROUPING = new Set(["media", "supports", "container", "layer", "scope", "document"]);
|
|
155
|
+
/** Every style rule's selector in a stylesheet, each once, in order. A keyframe's steps and a font's face are not selectors. */
|
|
156
|
+
export function selectorsOfStylesheet(css) {
|
|
157
|
+
const text = css.replace(/\/\*[\s\S]*?\*\//g, "");
|
|
158
|
+
const out = [];
|
|
159
|
+
const skipString = (at) => {
|
|
160
|
+
const quote = text[at];
|
|
161
|
+
let i = at + 1;
|
|
162
|
+
while (i < text.length && text[i] !== quote)
|
|
163
|
+
i += text[i] === "\\" ? 2 : 1;
|
|
164
|
+
return i + 1;
|
|
165
|
+
};
|
|
166
|
+
const skipBlock = (at) => {
|
|
167
|
+
let depth = 1;
|
|
168
|
+
let i = at;
|
|
169
|
+
while (i < text.length && depth > 0) {
|
|
170
|
+
const c = text[i];
|
|
171
|
+
if (c === '"' || c === "'") {
|
|
172
|
+
i = skipString(i);
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (c === "{")
|
|
176
|
+
depth++;
|
|
177
|
+
else if (c === "}")
|
|
178
|
+
depth--;
|
|
179
|
+
i++;
|
|
180
|
+
}
|
|
181
|
+
return i;
|
|
182
|
+
};
|
|
183
|
+
const rules = (from) => {
|
|
184
|
+
let prelude = "";
|
|
185
|
+
let at = from;
|
|
186
|
+
while (at < text.length) {
|
|
187
|
+
const c = text[at];
|
|
188
|
+
if (c === '"' || c === "'") {
|
|
189
|
+
const end = skipString(at);
|
|
190
|
+
prelude += text.slice(at, end);
|
|
191
|
+
at = end;
|
|
192
|
+
}
|
|
193
|
+
else if (c === "}")
|
|
194
|
+
return at + 1;
|
|
195
|
+
else if (c === ";") {
|
|
196
|
+
prelude = "";
|
|
197
|
+
at++;
|
|
198
|
+
}
|
|
199
|
+
else if (c === "{") {
|
|
200
|
+
const head = prelude.trim();
|
|
201
|
+
prelude = "";
|
|
202
|
+
if (head.startsWith("@")) {
|
|
203
|
+
const name = (/^@([\w-]+)/.exec(head)?.[1] ?? "").toLowerCase();
|
|
204
|
+
at = GROUPING.has(name) ? rules(at + 1) : skipBlock(at + 1);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
out.push(...splitList(head));
|
|
208
|
+
at = skipBlock(at + 1);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
prelude += c;
|
|
213
|
+
at++;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return at;
|
|
217
|
+
};
|
|
218
|
+
rules(0);
|
|
219
|
+
return [...new Set(out)];
|
|
220
|
+
}
|
|
221
|
+
/** The classes and ids a selector names, as `.name` and `#name`; what is inside `[…]` and strings is not read. */
|
|
222
|
+
export function namesInSelector(selector) {
|
|
223
|
+
const plain = selector.replace(/\[[^\]]*\]/g, "").replace(/"[^"]*"|'[^']*'/g, "");
|
|
224
|
+
return [...new Set([...plain.matchAll(/([.#])(-?[_a-zA-Z -][\w --]*)/g)].map((m) => `${m[1]}${m[2]}`))];
|
|
225
|
+
}
|
|
226
|
+
/** A selector a string of a script could hold, and not the words or the markup a string also holds. */
|
|
227
|
+
const looksLikeSelector = (selector) => !selector.includes(HOLE) && selector.length < 300 && !/[<;!@]|=>|^\d/.test(selector) && /^[\w\s.#:>+~*()[\]="'^$|,\\%-]+$/u.test(selector);
|
|
228
|
+
const CLASS_ATTRIBUTE = /\b(?:class|className)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;
|
|
229
|
+
const ID_ATTRIBUTE = /\bid\s*=\s*(?:"([^"]*)"|'([^']*)')/g;
|
|
230
|
+
const HEADING_MARKUP = /<h([1-6])\b[^>]*>([\s\S]*?)<\/h\1\s*>/gi;
|
|
231
|
+
const NAMED_LANDMARK = /<(section|nav|main|aside|header|footer|article|form)\b[^>]*?\baria-label\s*=\s*(?:"([^"]*)"|'([^']*)')/gi;
|
|
232
|
+
function readSide(side) {
|
|
233
|
+
const strings = side.css === undefined || (side.drawing === undefined && side.classes === undefined) ? stringsOfSource(side.source) : [];
|
|
234
|
+
const selectors = side.css !== undefined
|
|
235
|
+
? selectorsOfStylesheet(side.css)
|
|
236
|
+
: [...new Set(strings.filter((one) => one.includes("{") && one.includes("}")).flatMap((one) => selectorsOfStylesheet(one)).filter(looksLikeSelector))];
|
|
237
|
+
const drawn = new Set();
|
|
238
|
+
let sections;
|
|
239
|
+
if (side.drawing) {
|
|
240
|
+
for (const element of elementsOf(side.drawing)) {
|
|
241
|
+
for (const one of (element.getAttribute("class") ?? "").split(/\s+/))
|
|
242
|
+
if (one)
|
|
243
|
+
drawn.add(`.${one}`);
|
|
244
|
+
const id = element.getAttribute("id");
|
|
245
|
+
if (id)
|
|
246
|
+
drawn.add(`#${id}`);
|
|
247
|
+
}
|
|
248
|
+
sections = sectionsOfDrawing(side.drawing);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
const tokens = (match) => (match[1] ?? match[2] ?? "").split(/\s+/).filter((one) => one && !one.includes(HOLE));
|
|
252
|
+
for (const text of strings) {
|
|
253
|
+
for (const match of text.matchAll(CLASS_ATTRIBUTE))
|
|
254
|
+
for (const one of tokens(match))
|
|
255
|
+
drawn.add(`.${one}`);
|
|
256
|
+
for (const match of text.matchAll(ID_ATTRIBUTE))
|
|
257
|
+
for (const one of tokens(match))
|
|
258
|
+
drawn.add(`#${one}`);
|
|
259
|
+
}
|
|
260
|
+
const seen = new Set();
|
|
261
|
+
sections = [];
|
|
262
|
+
const add = (name, as) => {
|
|
263
|
+
const clean = name.replace(/\s+/g, " ").trim();
|
|
264
|
+
if (!clean || clean.includes(HOLE) || seen.has(clean.toLowerCase()))
|
|
265
|
+
return;
|
|
266
|
+
seen.add(clean.toLowerCase());
|
|
267
|
+
sections.push({ name: clean, as });
|
|
268
|
+
};
|
|
269
|
+
for (const text of strings) {
|
|
270
|
+
for (const match of text.matchAll(NAMED_LANDMARK))
|
|
271
|
+
add(match[2] ?? match[3] ?? "", match[1].toLowerCase());
|
|
272
|
+
for (const match of text.matchAll(HEADING_MARKUP))
|
|
273
|
+
add(match[2].replace(/<[^>]*>/g, ""), "heading");
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
for (const one of side.classes ?? [])
|
|
277
|
+
drawn.add(`.${one}`);
|
|
278
|
+
return { from: side.drawing || side.classes ? "drawing" : "source", selectors, drawn, sections };
|
|
279
|
+
}
|
|
280
|
+
const MOST_NAMED = 8;
|
|
281
|
+
const listed = (names) => (names.length <= MOST_NAMED ? names.join(", ") : `${names.slice(0, MOST_NAMED).join(", ")} and ${names.length - MOST_NAMED} more`);
|
|
282
|
+
const px = (n) => `${Math.round(n).toLocaleString("en-US")}px`;
|
|
283
|
+
/**
|
|
284
|
+
* WHAT A REVISION OF A VIEW BROKE, against the version it replaces: the
|
|
285
|
+
* classes it still draws that lost every rule styling them, the selectors
|
|
286
|
+
* taken out while the markup they matched is still drawn, the sections
|
|
287
|
+
* drawn before and not now, and how the page's height moved.
|
|
288
|
+
*/
|
|
289
|
+
export function compareViewRevision(before, after) {
|
|
290
|
+
const was = readSide(before);
|
|
291
|
+
const now = readSide(after);
|
|
292
|
+
const styledNow = new Set(now.selectors.flatMap(namesInSelector));
|
|
293
|
+
const styledBefore = new Map();
|
|
294
|
+
for (const selector of was.selectors)
|
|
295
|
+
for (const name of namesInSelector(selector))
|
|
296
|
+
if (name.startsWith("."))
|
|
297
|
+
styledBefore.set(name, [...(styledBefore.get(name) ?? []), selector]);
|
|
298
|
+
const unstyled = [...styledBefore]
|
|
299
|
+
.filter(([name]) => now.drawn.has(name) && !styledNow.has(name))
|
|
300
|
+
.map(([name, styledBy]) => ({ class: name.slice(1), styledBy }));
|
|
301
|
+
const unstyledNames = new Set(unstyled.map((one) => `.${one.class}`));
|
|
302
|
+
const kept = new Set(now.selectors);
|
|
303
|
+
const selectorsRemoved = was.selectors
|
|
304
|
+
.filter((selector) => !kept.has(selector))
|
|
305
|
+
.map((selector) => ({ selector, names: namesInSelector(selector) }))
|
|
306
|
+
.filter((one) => one.names.length > 0 && one.names.every((name) => now.drawn.has(name) && (was.from === "source" || was.drawn.has(name))));
|
|
307
|
+
const present = new Set(now.sections.map((one) => one.name.toLowerCase()));
|
|
308
|
+
const sectionsMissing = was.sections.filter((one) => !present.has(one.name.toLowerCase()));
|
|
309
|
+
const height = before.height !== undefined && after.height !== undefined && before.height > 0
|
|
310
|
+
? { before: before.height, after: after.height, change: after.height - before.height, ratio: Math.round(((after.height - before.height) / before.height) * 1000) / 1000 }
|
|
311
|
+
: undefined;
|
|
312
|
+
const heightMoved = height !== undefined && Math.abs(height.ratio) >= 0.1 && Math.abs(height.change) >= 50;
|
|
313
|
+
const said = [];
|
|
314
|
+
if (unstyled.length > 0) {
|
|
315
|
+
const names = unstyled.map((one) => `.${one.class}`);
|
|
316
|
+
said.push(`${unstyled.length === 1 ? "A class" : `${unstyled.length} classes`} it still draws lost every rule that styled ${unstyled.length === 1 ? "it" : "them"} before: ${listed(names)}. Put back the rules for ${unstyled.length === 1 ? "it" : "them"}, or stop drawing ${unstyled.length === 1 ? "it" : "them"}.`);
|
|
317
|
+
}
|
|
318
|
+
/* A rule whose loss a class already said explains is not said again. */
|
|
319
|
+
const notSaid = selectorsRemoved.filter((one) => !one.names.some((name) => unstyledNames.has(name)));
|
|
320
|
+
if (notSaid.length > 0)
|
|
321
|
+
said.push(`${notSaid.length === 1 ? "A rule was" : `${notSaid.length} rules were`} taken out while the markup ${notSaid.length === 1 ? "it" : "they"} styled is still drawn: ${listed(notSaid.map((one) => `"${one.selector}"`))}.`);
|
|
322
|
+
if (sectionsMissing.length > 0)
|
|
323
|
+
said.push(`${sectionsMissing.length === 1 ? "A section" : `${sectionsMissing.length} sections`} drawn before ${sectionsMissing.length === 1 ? "is" : "are"} not drawn now: ${listed(sectionsMissing.map((one) => `"${one.name}"`))}.`);
|
|
324
|
+
if (height && heightMoved)
|
|
325
|
+
said.push(`The page is ${px(height.after)} tall, ${height.change < 0 ? "down" : "up"} from ${px(height.before)} (${height.change < 0 ? "−" : "+"}${Math.round(Math.abs(height.ratio) * 100)}%).`);
|
|
326
|
+
const regressed = said.length > 0;
|
|
327
|
+
return {
|
|
328
|
+
regressed,
|
|
329
|
+
unstyled,
|
|
330
|
+
selectorsRemoved,
|
|
331
|
+
sectionsMissing,
|
|
332
|
+
...(height ? { height } : {}),
|
|
333
|
+
read: { before: was.from, after: now.from },
|
|
334
|
+
said,
|
|
335
|
+
text: regressed ? said.join(" ") : `Nothing it drew before lost its style, and no section it drew is gone${height ? "; the page is about as tall" : ""}.`,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/revisions/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { compareViewRevision, namesInSelector, selectorsOfStylesheet, stringsOfSource } from "./revisions/view.js";
|
|
2
|
+
export type { HeightChange, RemovedSelector, UnstyledClass, ViewRevision, ViewRevisionSide } from "./revisions/view.js";
|
|
3
|
+
export { sectionsOfDrawing } from "./revisions/sections.js";
|
|
4
|
+
export type { DrawnSection, ElementLike } from "./revisions/sections.js";
|
|
5
|
+
export { MEASURE_PICTURED_PAGE, picturedCoverage } from "./revisions/pictured.js";
|
|
6
|
+
export type { PageMeasure, PictureCoverage, PlacedSection } from "./revisions/pictured.js";
|
|
7
|
+
export { problemsMade, viewProblemKey } from "./revisions/problems.js";
|
|
8
|
+
export type { ChangedProblem, ProblemSet, ProblemsMade, ViewProblem } from "./revisions/problems.js";
|
|
9
|
+
export { datesPinned } from "./revisions/pinned-dates.js";
|
|
10
|
+
export type { DatesPinnedOptions, PinnedDate } from "./revisions/pinned-dates.js";
|
|
11
|
+
export { placesTouched } from "./revisions/touched.js";
|
|
12
|
+
export type { PlacesTouched, PlacesTouchedOptions, TouchedPlace, TouchedView } from "./revisions/touched.js";
|
|
13
|
+
export { beyondAsked } from "./revisions/beyond.js";
|
|
14
|
+
export type { ActReach, BeyondAskedOptions, BeyondChange } from "./revisions/beyond.js";
|
|
15
|
+
//# sourceMappingURL=revisions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revisions.d.ts","sourceRoot":"","sources":["../src/revisions.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnH,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* `@graview/core/revisions` — WHAT A CHANGE BROKE, SAID WITH THE CHANGE
|
|
3
|
+
* (Roadmap f-revisions-say-what-broke).
|
|
4
|
+
*
|
|
5
|
+
* A host that applies a revised view or runs an act tells whoever asked
|
|
6
|
+
* what it broke, in the same answer: a view's classes still drawn and no
|
|
7
|
+
* longer styled, its rules taken out from under markup still drawn, its
|
|
8
|
+
* sections gone, its height moved (`compareViewRevision`); how much of a
|
|
9
|
+
* page a picture held and the sections it left out (`MEASURE_PICTURED_PAGE`,
|
|
10
|
+
* `picturedCoverage`); the rules that held and fail, and the view problems
|
|
11
|
+
* new, with the act that repairs each (`problemsMade`); and the records and
|
|
12
|
+
* links an act changed beyond what it was asked (`beyondAsked`); what a
|
|
13
|
+
* view's source pins a day to (`datesPinned`), and the places that draw
|
|
14
|
+
* what a commit touched, with the views to look at (`placesTouched`). Each is
|
|
15
|
+
* pure, judges nothing on its own, and is a host's: no page imports it.
|
|
16
|
+
*/
|
|
17
|
+
export { compareViewRevision, namesInSelector, selectorsOfStylesheet, stringsOfSource } from "./revisions/view.js";
|
|
18
|
+
export { sectionsOfDrawing } from "./revisions/sections.js";
|
|
19
|
+
export { MEASURE_PICTURED_PAGE, picturedCoverage } from "./revisions/pictured.js";
|
|
20
|
+
export { problemsMade, viewProblemKey } from "./revisions/problems.js";
|
|
21
|
+
export { datesPinned } from "./revisions/pinned-dates.js";
|
|
22
|
+
export { placesTouched } from "./revisions/touched.js";
|
|
23
|
+
export { beyondAsked } from "./revisions/beyond.js";
|
|
24
|
+
//# sourceMappingURL=revisions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revisions.js","sourceRoot":"","sources":["../src/revisions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEnH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/scaffold/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAA0D,MAAM,YAAY,CAAC;AAO9F,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAgB1C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAyC1C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAyBzC;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAyBzC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAqHzC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/scaffold/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAA0D,MAAM,YAAY,CAAC;AAO9F,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAgB1C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAyC1C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAyBzC;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAyBzC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAqHzC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CA6NzC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAsGxC"}
|
package/dist/scaffold/ui.js
CHANGED
|
@@ -244,21 +244,24 @@ export function pagesTsx(ids) {
|
|
|
244
244
|
import { Begin, EditableValue } from "@graview/primitives";
|
|
245
245
|
import { useGraviewIfAny } from "@graview/react";
|
|
246
246
|
import {
|
|
247
|
+
actsBeyondFacts,
|
|
248
|
+
blankWritable,
|
|
247
249
|
createPageRegistry,
|
|
248
250
|
DefaultHomePage,
|
|
249
251
|
DerivedForm,
|
|
252
|
+
FactSheet,
|
|
250
253
|
PageMain,
|
|
251
254
|
pageStyles,
|
|
252
255
|
recordFacts,
|
|
253
|
-
|
|
254
|
-
RecordField,
|
|
256
|
+
relationFacts,
|
|
255
257
|
Repairs,
|
|
256
258
|
spatialHref,
|
|
259
|
+
titleFieldOf,
|
|
257
260
|
useStoreTick,
|
|
258
261
|
type PageComponent,
|
|
259
262
|
type PageContext,
|
|
260
263
|
} from "@graview/pages";
|
|
261
|
-
import {
|
|
264
|
+
import { useParams } from "react-router-dom";
|
|
262
265
|
import { ${ids.schemaVar}, type ${ids.SchemaType} } from "../domain/schema.js";
|
|
263
266
|
|
|
264
267
|
type S = ${ids.SchemaType};
|
|
@@ -282,6 +285,8 @@ function ${ids.KindPascal}Page({ context }: { context: PageContext<S> }) {
|
|
|
282
285
|
const facts = recordFacts(store, id, {
|
|
283
286
|
...(principal ? { principal } : {}),
|
|
284
287
|
...(invariantContext ? { context: invariantContext } : {}),
|
|
288
|
+
// A blank this seat may fill says how to fill it ("Pick a day"), where values are changed in place.
|
|
289
|
+
...(inPlace ? { blanks: blankWritable(store, id, principal) } : {}),
|
|
285
290
|
});
|
|
286
291
|
const node = store.graph.getNode(id);
|
|
287
292
|
if (!facts || !node) {
|
|
@@ -301,6 +306,11 @@ function ${ids.KindPascal}Page({ context }: { context: PageContext<S> }) {
|
|
|
301
306
|
* edge, which is the first thing every project does.
|
|
302
307
|
*/
|
|
303
308
|
const ties = facts.links;
|
|
309
|
+
// Each relation as a row of the facts, with the act that ties and unties it.
|
|
310
|
+
const relations = relationFacts(store, id, facts);
|
|
311
|
+
// The name is the heading's: the field that holds it, where this seat may change it, is changed there and not said again.
|
|
312
|
+
const titleField = inPlace ? titleFieldOf(store, id, facts.label, principal) : undefined;
|
|
313
|
+
const fields = facts.fields.filter((field) => field.key !== titleField);
|
|
304
314
|
/*
|
|
305
315
|
* THE ACTS AS THE DERIVATION OFFERS THEM, not as the declaration lists
|
|
306
316
|
* them. Reaching for a mutation by name gets an act that is always there;
|
|
@@ -316,7 +326,13 @@ function ${ids.KindPascal}Page({ context }: { context: PageContext<S> }) {
|
|
|
316
326
|
* what takes the record away comes last.
|
|
317
327
|
*/
|
|
318
328
|
const away = (affordance: { destructive?: boolean; setsAside?: boolean }) => (affordance.destructive || affordance.setsAside ? 1 : 0);
|
|
319
|
-
|
|
329
|
+
/*
|
|
330
|
+
* AND NOT ONE A FACT ALREADY DOES: an act whose whole effect is one field
|
|
331
|
+
* or one relation drawn above — a switch, a date, the heading, a chip —
|
|
332
|
+
* is done there (\`actsBeyondFacts\`), where values are changed in place.
|
|
333
|
+
*/
|
|
334
|
+
const beyond = inPlace ? actsBeyondFacts(store, id, facts.actions, { fields: [...fields.map((field) => field.key), ...(titleField ? [titleField] : [])], relations, ...(principal ? { principal } : {}) }) : facts.actions;
|
|
335
|
+
const offered = beyond.affordances.filter((affordance) => affordance.provider !== "invariant").sort((a, b) => away(a) - away(b));
|
|
320
336
|
|
|
321
337
|
return (
|
|
322
338
|
<PageMain context={context} data-testid="${ids.kind}-page">
|
|
@@ -328,7 +344,7 @@ function ${ids.KindPascal}Page({ context }: { context: PageContext<S> }) {
|
|
|
328
344
|
*/}
|
|
329
345
|
<p style={pageStyles.eyebrow}>{withArticle(nounOf(store.schema.tryDefinition(node.kind), node.kind)).replace(/^./, (first) => first.toUpperCase())} in ${escapeJsxText(ids.name)}</p>
|
|
330
346
|
{/* The name, pressed, is the field that changes it — as on the derived page. */}
|
|
331
|
-
<h1 style={pageStyles.h1}>{
|
|
347
|
+
<h1 style={pageStyles.h1}>{titleField ? <EditableValue<S> nodeId={id} field={titleField} value={facts.label} said={facts.label} /> : facts.label}</h1>
|
|
332
348
|
{/*
|
|
333
349
|
* WHERE IT IS ON THE HORIZON, asked of the declaration's own
|
|
334
350
|
* lifecycle rather than of a status word written here: rename the
|
|
@@ -360,46 +376,16 @@ function ${ids.KindPascal}Page({ context }: { context: PageContext<S> }) {
|
|
|
360
376
|
) : null}
|
|
361
377
|
{/*
|
|
362
378
|
* THE FACTS, as the derivation reads them — every field that is not
|
|
363
|
-
* the name, formatted as the declaration says
|
|
364
|
-
* them looked finished on the
|
|
365
|
-
* field is the name, and hid the
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
* changed by the date editor
|
|
369
|
-
*
|
|
379
|
+
* the name, formatted as the declaration says, and every relation as
|
|
380
|
+
* a row of chips. A page that dropped them looked finished on the
|
|
381
|
+
* one-kind scaffold, where the only field is the name, and hid the
|
|
382
|
+
* price of every vehicle a day later. Drawn as the derived record page
|
|
383
|
+
* draws them (\`FactSheet\`): a yes or no is a switch, a date is said
|
|
384
|
+
* with its weekday and changed by the date editor, a choice is its
|
|
385
|
+
* options, a relation's chip opens its record and its picker changes
|
|
386
|
+
* it — each through the act the declaration says does it.
|
|
370
387
|
*/}
|
|
371
|
-
{facts
|
|
372
|
-
<dl style={{ ...pageStyles.rule, margin: 0, display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(200px, 1fr))", gap: "14px 24px" }} data-testid="record-fields">
|
|
373
|
-
{facts.fields.map((field) => (
|
|
374
|
-
<RecordField<S> key={field.key} nodeId={id} node={node} field={field} inPlace={inPlace} />
|
|
375
|
-
))}
|
|
376
|
-
</dl>
|
|
377
|
-
) : null}
|
|
378
|
-
{ties.length > 0 ? (
|
|
379
|
-
<section style={{ ...pageStyles.rule, display: "grid", gap: 14 }} data-testid="record-ties">
|
|
380
|
-
{ties.map((group) => (
|
|
381
|
-
<div key={\`\${group.edgeKind}|\${group.direction}\`} style={{ display: "grid", gap: 6 }}>
|
|
382
|
-
{/* The edge's own words for THIS end — its description read
|
|
383
|
-
from the end that declared it, its inverse read from the
|
|
384
|
-
other. */}
|
|
385
|
-
<h2 style={pageStyles.h2}>
|
|
386
|
-
{(group.description ?? group.edgeKind).replace(/^./, (first) => first.toUpperCase())}
|
|
387
|
-
</h2>
|
|
388
|
-
{/* Each a link, and two of one name told apart (\`apart\`): a list of words cannot be followed. */}
|
|
389
|
-
<ul style={{ margin: 0, padding: 0, listStyle: "none", display: "grid", gap: 4 }}>
|
|
390
|
-
{group.targets.map((target) => (
|
|
391
|
-
<li key={target.id}>
|
|
392
|
-
<Link to={recordPath(${ids.schemaVar}, target.kind, target.id)} style={pageStyles.link}>
|
|
393
|
-
{target.label}
|
|
394
|
-
{target.apart ? <span style={pageStyles.quiet}> · {target.apart}</span> : null}
|
|
395
|
-
</Link>
|
|
396
|
-
</li>
|
|
397
|
-
))}
|
|
398
|
-
</ul>
|
|
399
|
-
</div>
|
|
400
|
-
))}
|
|
401
|
-
</section>
|
|
402
|
-
) : null}
|
|
388
|
+
<FactSheet<S> context={context} id={id} facts={facts} fields={fields} relations={relations} inPlace={inPlace} style={pageStyles.rule} />
|
|
403
389
|
{/*
|
|
404
390
|
* WITHHELD, NOT HIDDEN. The affordances above are what this seat may
|
|
405
391
|
* do; an act the policy refuses is in withheld, carrying the policy's
|
package/dist/scaffold/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/scaffold/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9F;;;GAGG;AAEH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,OAAO;;;;SAIA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;;;;;;CAU5B,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,OAAO;;;;SAIA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;;iDAGoB,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;eACrE,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;MAsB5C,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;;;;;CASzB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAC/B,OAAO;WACE,GAAG,CAAC,MAAM;;;;KAIhB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;;;;;;;;;;SAUjC,GAAG,CAAC,MAAM;;;;;;YAMP,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;;CAEjC,CAAC;AACF,CAAC;AAED,4EAA4E;AAE5E,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAC/B,OAAO;;WAEE,GAAG,CAAC,MAAM;WACV,GAAG,CAAC,SAAS;;;;;;;;;;oEAU4C,GAAG,CAAC,IAAI;;;;;;;uDAOrB,GAAG,CAAC,SAAS,iBAAiB,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,MAAM;uCAC9F,GAAG,CAAC,MAAM;;CAEhD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAC/B,OAAO;;;;;;;WAOE,GAAG,CAAC,MAAM,uBAAuB,GAAG,CAAC,SAAS;WAC9C,GAAG,CAAC,QAAQ;gBACP,GAAG,CAAC,UAAU;;;WAGnB,GAAG,CAAC,UAAU;;;;;;;;mBAQN,GAAG,CAAC,YAAY;qBACd,GAAG,CAAC,SAAS;;;;;;;;;;;;;2CAaS,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;;;;kBAIhD,GAAG,CAAC,YAAY;;;;;;;;KAQ7B,GAAG,CAAC,YAAY;;;;;;;;;;;eAWN,GAAG,CAAC,QAAQ;kBACT,GAAG,CAAC,MAAM;aACf,GAAG,CAAC,MAAM;;;;;;;;;;;;oCAYa,GAAG,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8BhC,GAAG,CAAC,IAAI;;;;;;;;;;;;;;CAcrB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAC/B,OAAO
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/scaffold/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -179,6 +179,13 @@ export declare function fieldWords(definition: {
|
|
|
179
179
|
readonly label?: string;
|
|
180
180
|
}>>;
|
|
181
181
|
} | undefined, key: string): string;
|
|
182
|
+
/**
|
|
183
|
+
* A FIELD AS A SENTENCE NAMES IT IN PASSING — "Changed the apple music of
|
|
184
|
+
* Blue", "the Apple Music of Blue" where the app labels it so: its words
|
|
185
|
+
* (`fieldWords`), lowered as a word is unless written as a name
|
|
186
|
+
* (`nameInPassing`), never half lowered ("apple Music").
|
|
187
|
+
*/
|
|
188
|
+
export declare const fieldInPassing: (definition: Parameters<typeof fieldWords>[0], key: string) => string;
|
|
182
189
|
/** "a" or "an", by how the word SOUNDS. */
|
|
183
190
|
export declare function article(word: string): "a" | "an";
|
|
184
191
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-node.d.ts","sourceRoot":"","sources":["../../src/schema/define-node.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"define-node.d.ts","sourceRoot":"","sources":["../../src/schema/define-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isoToday, numberAsRead } from "../days.js";
|
|
2
|
-
import { capitalize } from "../capital.js";
|
|
2
|
+
import { capitalize, nameInPassing } from "../capital.js";
|
|
3
3
|
import { humanizeField, humanizeValue } from "./humanize.js";
|
|
4
4
|
/**
|
|
5
5
|
* The single declaration everything else derives from. Views, agent tool
|
|
@@ -123,6 +123,13 @@ export function fieldWords(definition, key) {
|
|
|
123
123
|
// A kind's `label` is its name: the log said "Change Woodworking: label → …" of a shelf renamed (W-184).
|
|
124
124
|
return definition?.display?.labels?.[key] ?? (typeof computed === "object" ? computed.label : undefined) ?? (key === "label" ? "Name" : humanizeField(key));
|
|
125
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* A FIELD AS A SENTENCE NAMES IT IN PASSING — "Changed the apple music of
|
|
128
|
+
* Blue", "the Apple Music of Blue" where the app labels it so: its words
|
|
129
|
+
* (`fieldWords`), lowered as a word is unless written as a name
|
|
130
|
+
* (`nameInPassing`), never half lowered ("apple Music").
|
|
131
|
+
*/
|
|
132
|
+
export const fieldInPassing = (definition, key) => nameInPassing(fieldWords(definition, key));
|
|
126
133
|
/*
|
|
127
134
|
* "a item" is the sound of generated prose.
|
|
128
135
|
*
|