@graview/core 0.1.15 → 0.1.16
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 +16 -5
- package/dist/app.d.ts +8 -8
- package/dist/app.d.ts.map +1 -1
- package/dist/arrangement.d.ts +2 -2
- package/dist/arrangement.d.ts.map +1 -1
- package/dist/arrangement.js +5 -5
- package/dist/arranging.js +3 -3
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/city.d.ts +5 -5
- package/dist/city.js +3 -3
- package/dist/cli/check/beginnings.js +2 -2
- package/dist/cli/check/brand.d.ts.map +1 -1
- package/dist/cli/check/brand.js +15 -9
- package/dist/cli/check/brand.js.map +1 -1
- package/dist/cli/check/city.js +1 -1
- package/dist/cli/check/context.js +1 -1
- package/dist/cli/check/relations.js +2 -2
- package/dist/cli/check/relations.js.map +1 -1
- package/dist/cli/check/settings.js +8 -8
- package/dist/cli/check/settings.js.map +1 -1
- package/dist/cli/check/views.d.ts +1 -1
- package/dist/cli/check/views.js +1 -1
- package/dist/cli/create.d.ts +1 -1
- package/dist/cli/create.js +5 -5
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +2 -2
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/columns.d.ts +1 -1
- package/dist/columns.js +1 -1
- package/dist/describe.d.ts +1 -1
- package/dist/describe.d.ts.map +1 -1
- package/dist/document/brand-check.d.ts +10 -0
- package/dist/document/brand-check.d.ts.map +1 -0
- package/dist/document/brand-check.js +33 -0
- package/dist/document/brand-check.js.map +1 -0
- package/dist/document/brand.d.ts +10 -0
- package/dist/document/brand.d.ts.map +1 -0
- package/dist/document/brand.js +49 -0
- package/dist/document/brand.js.map +1 -0
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +6 -2
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compile.d.ts +6 -0
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +4 -13
- package/dist/document/compile.js.map +1 -1
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +3 -2
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/describe-place.d.ts +16 -0
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +14 -1
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/diff.d.ts.map +1 -1
- package/dist/document/diff.js +45 -6
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts +7 -2
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +173 -45
- package/dist/document/edit.js.map +1 -1
- package/dist/document/expr/analyze.d.ts +2 -2
- package/dist/document/expr/analyze.js +2 -2
- package/dist/document/expr/print.js +1 -1
- package/dist/document/index.d.ts +1 -1
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/quote.d.ts +5 -0
- package/dist/document/quote.d.ts.map +1 -0
- package/dist/document/quote.js +17 -0
- package/dist/document/quote.js.map +1 -0
- package/dist/document/rules.d.ts +2 -2
- package/dist/document/rules.d.ts.map +1 -1
- package/dist/document/rules.js +2 -2
- package/dist/document/rules.js.map +1 -1
- package/dist/document/schema.d.ts +45 -2
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +22 -3
- package/dist/document/schema.js.map +1 -1
- package/dist/document/thumbnail.d.ts +9 -0
- package/dist/document/thumbnail.d.ts.map +1 -1
- package/dist/document/thumbnail.js +74 -12
- package/dist/document/thumbnail.js.map +1 -1
- package/dist/document/to-document.js +5 -5
- package/dist/document/to-document.js.map +1 -1
- package/dist/graph/graph.js +3 -3
- package/dist/graph/primitives.d.ts +2 -2
- package/dist/graph/primitives.js +2 -2
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/invariants/engine.js +1 -1
- package/dist/invariants/types.d.ts +3 -3
- package/dist/invariants/types.d.ts.map +1 -1
- package/dist/labels.d.ts +1 -1
- package/dist/modules.d.ts +1 -1
- package/dist/modules.js +1 -1
- package/dist/mutations/define-mutation.js +4 -4
- package/dist/mutations/define-mutation.js.map +1 -1
- package/dist/mutations/derive-edits.js +3 -3
- package/dist/mutations/node-ref.js +1 -1
- package/dist/mutations/types.d.ts +1 -1
- package/dist/mutations/words.js +3 -3
- package/dist/ops/types.d.ts +1 -1
- package/dist/ops/withheld.d.ts +3 -3
- package/dist/permissions/policy.d.ts +1 -1
- package/dist/permissions/policy.js +3 -3
- package/dist/permissions/types.d.ts +2 -2
- package/dist/places.d.ts +14 -1
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +27 -4
- package/dist/places.js.map +1 -1
- package/dist/scaffold/domain.js +3 -3
- package/dist/scaffold/index.d.ts +1 -1
- package/dist/scaffold/index.d.ts.map +1 -1
- package/dist/scaffold/names.d.ts +1 -1
- package/dist/scaffold/names.js +1 -1
- package/dist/scaffold/names.js.map +1 -1
- package/dist/scaffold/project.js +1 -1
- package/dist/scene-districts.d.ts +1 -1
- package/dist/schema/define-node.d.ts +4 -4
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +8 -8
- package/dist/schema/define-node.js.map +1 -1
- package/dist/schema/figures.d.ts +1 -1
- package/dist/schema/figures.js +7 -7
- package/dist/schema/figures.js.map +1 -1
- package/dist/schema/types.d.ts +1 -1
- package/dist/search.d.ts +13 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +33 -14
- package/dist/search.js.map +1 -1
- package/dist/seen.d.ts +2 -2
- package/dist/seen.js +12 -12
- package/dist/seen.js.map +1 -1
- package/dist/settings.d.ts +1 -1
- package/dist/settings.js +3 -3
- package/dist/settings.js.map +1 -1
- package/dist/store.d.ts +2 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +8 -8
- package/dist/store.js.map +1 -1
- package/dist/sync/google-calendar.js +1 -1
- package/dist/sync/types.d.ts +2 -2
- package/dist/testing.d.ts +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +2 -2
- package/dist/testing.js.map +1 -1
- package/dist/theme/accent.d.ts +37 -0
- package/dist/theme/accent.d.ts.map +1 -0
- package/dist/theme/accent.js +138 -0
- package/dist/theme/accent.js.map +1 -0
- package/dist/theme/contrast.d.ts +7 -7
- package/dist/theme/contrast.d.ts.map +1 -1
- package/dist/theme/contrast.js +14 -14
- package/dist/theme/contrast.js.map +1 -1
- package/dist/theme/derive.d.ts +4 -4
- package/dist/theme/derive.d.ts.map +1 -1
- package/dist/theme/derive.js +19 -19
- package/dist/theme/derive.js.map +1 -1
- package/dist/theme/fonts.d.ts +19 -0
- package/dist/theme/fonts.d.ts.map +1 -0
- package/dist/theme/fonts.js +73 -0
- package/dist/theme/fonts.js.map +1 -0
- package/dist/theme/kit.d.ts +9 -9
- package/dist/theme/kit.d.ts.map +1 -1
- package/dist/theme/kit.js +15 -15
- package/dist/theme/kit.js.map +1 -1
- package/dist/theme/layers.d.ts +2 -2
- package/dist/theme/layers.d.ts.map +1 -1
- package/dist/theme/layers.js +2 -2
- package/dist/theme/layers.js.map +1 -1
- package/dist/theme/look.d.ts +3 -3
- package/dist/theme/look.d.ts.map +1 -1
- package/dist/theme/look.js +1 -1
- package/dist/theme/marks.d.ts +28 -0
- package/dist/theme/marks.d.ts.map +1 -0
- package/dist/theme/marks.js +237 -0
- package/dist/theme/marks.js.map +1 -0
- package/dist/theme/palettes.d.ts +2 -2
- package/dist/theme/palettes.js +2 -2
- package/dist/theme/types.d.ts +28 -6
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/validate-graph.js +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/watched.js +8 -8
- package/package.json +1 -1
package/dist/document/diff.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { withArticle } from "../schema/define-node.js";
|
|
2
2
|
import { canonicalize } from "./canonical.js";
|
|
3
|
+
import { quoted, quotedAtTheEnd } from "./quote.js";
|
|
3
4
|
import { narrows, rangeWords } from "./range.js";
|
|
4
5
|
import { homeOf, VIEW_SLOTS, viewsOf } from "./views.js";
|
|
5
6
|
const keys = (o) => Object.keys(o ?? {});
|
|
@@ -15,7 +16,9 @@ export function diffDocuments(before, after) {
|
|
|
15
16
|
const newlyRequired = [];
|
|
16
17
|
const narrowedRanges = [];
|
|
17
18
|
if (before.name !== after.name)
|
|
18
|
-
sentences.push(`The app is
|
|
19
|
+
sentences.push(`The app is now called ${quoted(after.name)}, where it was ${quotedAtTheEnd(before.name)}`);
|
|
20
|
+
if (!same(before.description, after.description))
|
|
21
|
+
sentences.push(after.description === undefined ? "The app has no line under its name." : `The line under the app's name reads ${quotedAtTheEnd(after.description)}`);
|
|
19
22
|
// A kind declared `renamedFrom` an old one continues it: compared as the same kind, said as a rename.
|
|
20
23
|
const continues = new Map();
|
|
21
24
|
for (const [kind, spec] of Object.entries(after.kinds)) {
|
|
@@ -101,7 +104,7 @@ export function diffDocuments(before, after) {
|
|
|
101
104
|
if (!was.edges?.[edge] && !now.edges?.[edge]?.renamedFrom)
|
|
102
105
|
sentences.push(`${kind} gains a relation, "${edge}".`);
|
|
103
106
|
if (!same(was.label, now.label) || !same(was.describe, now.describe))
|
|
104
|
-
sentences.push(`How ${withArticle(kind)} is
|
|
107
|
+
sentences.push(`How ${withArticle(kind)} is labeled changes.`);
|
|
105
108
|
// A glance follows its fields: a rename or a removal is already said, so only a different choice is.
|
|
106
109
|
const movedTo = new Map(Object.entries(now.fields).flatMap(([field, f]) => (f.renamedFrom ? [[f.renamedFrom, field]] : [])));
|
|
107
110
|
const wasGlance = (was.glance ?? []).map((field) => movedTo.get(field) ?? field).filter((field) => now.fields[field] || now.computed?.[field] !== undefined);
|
|
@@ -124,9 +127,10 @@ export function diffDocuments(before, after) {
|
|
|
124
127
|
}
|
|
125
128
|
if (!same(before.policy, after.policy) || !same(before.roles, after.roles))
|
|
126
129
|
sentences.push("Who may do what changes.");
|
|
127
|
-
if (!same(before.brand?.accent, after.brand?.accent)
|
|
128
|
-
sentences.push("The app's
|
|
129
|
-
|
|
130
|
+
if (!same(before.brand?.accent, after.brand?.accent))
|
|
131
|
+
sentences.push("The app's colors change.");
|
|
132
|
+
sentences.push(...brandSentences(before.brand ?? {}, after.brand ?? {}, after.name));
|
|
133
|
+
// The app's money (FR-100), said apart from its colors.
|
|
130
134
|
if (!same(before.brand?.currency, after.brand?.currency) || !same(before.brand?.locale, after.brand?.locale)) {
|
|
131
135
|
const currency = after.brand?.currency;
|
|
132
136
|
sentences.push(currency ? `Money is said in ${currency}${after.brand?.locale ? `, written for ${after.brand.locale}` : ""}.` : "Money is said with no currency.");
|
|
@@ -134,12 +138,45 @@ export function diffDocuments(before, after) {
|
|
|
134
138
|
sentences.push(...viewSentences(before, after));
|
|
135
139
|
sentences.push(...lensSentences(before.lenses ?? [], after.lenses ?? []));
|
|
136
140
|
sentences.push(...pagesSentences(before.pages, after.pages));
|
|
137
|
-
for (const k of ["modules", "settings"
|
|
141
|
+
for (const k of ["modules", "settings"])
|
|
138
142
|
if (!same(before[k], after[k]))
|
|
139
143
|
sentences.push(`The app's ${k} change.`);
|
|
140
144
|
const breaking = removedKinds.length + removedFields.length + retypedFields.length + droppedOptions.length + removedEdges.length + newlyRequired.length + narrowedRanges.length > 0;
|
|
141
145
|
return { sentences, breaking, removedKinds, removedFields, retypedFields, droppedOptions, removedEdges, newlyRequired, narrowedRanges, unchanged: sentences.length === 0 };
|
|
142
146
|
}
|
|
147
|
+
const ROLES = { display: "Headings", body: "Body text", mono: "Code" };
|
|
148
|
+
/** The rest of the brand (FR-124, FR-125), key by key: "The logo changes.", "Headings are now set in system-serif." */
|
|
149
|
+
function brandSentences(was, now, appName) {
|
|
150
|
+
const out = [];
|
|
151
|
+
if (!same(was.name, now.name))
|
|
152
|
+
out.push(now.name === undefined ? "The wordmark says the app's name." : `The wordmark says ${now.name}.`);
|
|
153
|
+
const src = (logo) => (typeof logo === "string" ? logo : logo?.src);
|
|
154
|
+
for (const [what, a, b] of [["logo", src(was.logo), src(now.logo)], ["page icon", was.favicon, now.favicon]]) {
|
|
155
|
+
if (same(a, b))
|
|
156
|
+
continue;
|
|
157
|
+
out.push(b === undefined ? `The app has no ${what}.` : a === undefined ? `The app gets a ${what}.` : `The ${what} changes.`);
|
|
158
|
+
}
|
|
159
|
+
const alt = (logo) => (typeof logo === "object" ? logo.alt : undefined);
|
|
160
|
+
if (same(src(was.logo), src(now.logo)) && now.logo !== undefined && !same(alt(was.logo), alt(now.logo)))
|
|
161
|
+
out.push(`The logo is said as ${quotedAtTheEnd(alt(now.logo) ?? now.name ?? appName)}`);
|
|
162
|
+
for (const role of ["display", "body", "mono"]) {
|
|
163
|
+
const [a, b] = [was.typography?.[role], now.typography?.[role]];
|
|
164
|
+
if (!same(a, b))
|
|
165
|
+
out.push(b === undefined ? `${ROLES[role]} go${role === "display" ? "" : "es"} back to Graview's face.` : `${ROLES[role]} ${role === "display" ? "are" : "is"} now set in ${b}.`);
|
|
166
|
+
}
|
|
167
|
+
if (!same(was.shape?.radius, now.shape?.radius))
|
|
168
|
+
out.push(now.shape?.radius === undefined ? "Corners go back to Graview's own." : `Corners are now ${now.shape.radius}px.`);
|
|
169
|
+
if (!same(was.shape?.density, now.shape?.density))
|
|
170
|
+
out.push(now.shape?.density === undefined ? "Spacing goes back to Graview's own." : `Spacing is now ${now.shape.density} times Graview's own.`);
|
|
171
|
+
for (const kind of [...new Set([...keys(was.accents), ...keys(now.accents)])]) {
|
|
172
|
+
const hue = now.accents?.[kind];
|
|
173
|
+
if (!same(was.accents?.[kind], hue))
|
|
174
|
+
out.push(hue === undefined ? `${cap(kind)} goes back to its own hue.` : `${cap(kind)} is drawn at hue ${hue}°.`);
|
|
175
|
+
}
|
|
176
|
+
if (!same(was.scheme ?? "auto", now.scheme ?? "auto"))
|
|
177
|
+
out.push(now.scheme === "light" || now.scheme === "dark" ? `The app opens ${now.scheme} when the reader has not chosen.` : "The app follows the reader's system for light and dark.");
|
|
178
|
+
return out;
|
|
179
|
+
}
|
|
143
180
|
/** How the look of each kind changes, slot by slot: "How a vendor card looks changes." */
|
|
144
181
|
function viewSentences(before, after) {
|
|
145
182
|
const sentences = [];
|
|
@@ -226,6 +263,8 @@ function pagesSentences(before, after) {
|
|
|
226
263
|
}
|
|
227
264
|
if (!same(before?.first, after?.first))
|
|
228
265
|
out.push(after?.first === undefined || after.first.trim().toLowerCase() === "home" ? "The app opens at its home." : `The app opens on "${after.first}".`);
|
|
266
|
+
if (!same(before?.overview, after?.overview))
|
|
267
|
+
out.push(after?.overview === undefined ? "The overview is called Overview again." : `The overview is called "${after.overview}".`);
|
|
229
268
|
if (out.length === 0)
|
|
230
269
|
out.push("The app's pages change.");
|
|
231
270
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/document/diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/document/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/document/edit.d.ts
CHANGED
|
@@ -17,8 +17,13 @@ export type EditOutcome = {
|
|
|
17
17
|
readonly ok: false;
|
|
18
18
|
readonly findings: readonly Finding[];
|
|
19
19
|
};
|
|
20
|
+
/** What an edit is judged against beyond the document itself. */
|
|
21
|
+
export interface EditOptions {
|
|
22
|
+
/** Web fonts the host serves itself, beyond `DOCUMENT_FONTS`: what `compileDocument(…, { fonts })` is told, so an edit takes what a compile would. */
|
|
23
|
+
readonly fonts?: readonly string[];
|
|
24
|
+
}
|
|
20
25
|
/** The ops, for tool schemas and the guide. */
|
|
21
|
-
export declare const EDIT_OPS: readonly ["add-kind", "rename-kind", "remove-kind", "add-field", "rename-field", "retype-field", "set-options", "set-range", "set-required", "set-default", "remove-field", "add-relation", "rename-relation", "remove-relation", "add-act", "remove-act", "add-rule", "remove-rule", "set-brand", "set-label", "set-describe", "set-view", "set-glance", "add-lens", "remove-lens", "set-home", "arrange-pages", "set-computed"];
|
|
26
|
+
export declare const EDIT_OPS: readonly ["add-kind", "rename-kind", "remove-kind", "add-field", "rename-field", "retype-field", "set-options", "set-range", "set-required", "set-default", "remove-field", "add-relation", "rename-relation", "remove-relation", "add-act", "remove-act", "add-rule", "remove-rule", "set-brand", "set-name", "set-description", "set-label", "set-describe", "set-view", "set-glance", "add-lens", "remove-lens", "set-home", "arrange-pages", "set-computed"];
|
|
22
27
|
export type EditOp = (typeof EDIT_OPS)[number];
|
|
23
28
|
/** One edit as `editDocument` takes it: an op from EDIT_OPS and that op's own keys. */
|
|
24
29
|
export type DocumentEdit = {
|
|
@@ -32,7 +37,7 @@ export type DocumentEdit = {
|
|
|
32
37
|
* `edits.<i>.…`) and no document. The result is NOT compiled here: the caller
|
|
33
38
|
* previews it like any other proposed document.
|
|
34
39
|
*/
|
|
35
|
-
export declare function editDocument(document: GraviewDocument, edits: readonly unknown[]): EditOutcome;
|
|
40
|
+
export declare function editDocument(document: GraviewDocument, edits: readonly unknown[], options?: EditOptions): EditOutcome;
|
|
36
41
|
/** What a declaration holds, enough for the rule language's name walk: each kind's fields, and where its relations go. */
|
|
37
42
|
export interface DeclaredKinds {
|
|
38
43
|
readonly [kind: string]: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/document/edit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAWL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/document/edit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAWL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAgCrB,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,GAC5H;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,CAAC;AAElE,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,sJAAsJ;IACtJ,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,+CAA+C;AAC/C,eAAO,MAAM,QAAQ,kcA+BX,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,uFAAuF;AACvF,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AA0+DzF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,GAAE,WAAgB,GAAG,WAAW,CAsBzH;AAED,0HAA0H;AAC1H,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;KAAE,CAAC;CACrI;AAED,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7F;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAiBjL"}
|
package/dist/document/edit.js
CHANGED
|
@@ -11,6 +11,10 @@ import { placeSlug } from "../views/types.js";
|
|
|
11
11
|
import { computedOf, validateComputed } from "./computed.js";
|
|
12
12
|
import { parseTemplate, templateBraces, TemplateError } from "./template-parse.js";
|
|
13
13
|
import { validateViews, VIEW_SLOTS } from "./views.js";
|
|
14
|
+
import { brandFindings } from "./brand-check.js";
|
|
15
|
+
import { canonicalize } from "./canonical.js";
|
|
16
|
+
import { quotedAtTheEnd } from "./quote.js";
|
|
17
|
+
import { accentProblem } from "../theme/accent.js";
|
|
14
18
|
/** The ops, for tool schemas and the guide. */
|
|
15
19
|
export const EDIT_OPS = [
|
|
16
20
|
"add-kind",
|
|
@@ -32,6 +36,8 @@ export const EDIT_OPS = [
|
|
|
32
36
|
"add-rule",
|
|
33
37
|
"remove-rule",
|
|
34
38
|
"set-brand",
|
|
39
|
+
"set-name",
|
|
40
|
+
"set-description",
|
|
35
41
|
"set-label",
|
|
36
42
|
"set-describe",
|
|
37
43
|
"set-view",
|
|
@@ -74,11 +80,20 @@ const SHAPES = {
|
|
|
74
80
|
.object({
|
|
75
81
|
op: z.literal("set-brand"),
|
|
76
82
|
accent: z.union([z.string(), z.null()]).optional(),
|
|
77
|
-
name: z.string().min(1).max(60).optional(),
|
|
83
|
+
name: z.union([z.string().min(1).max(60), z.null()]).optional(),
|
|
78
84
|
currency: z.union([z.string(), z.null()]).optional(),
|
|
79
85
|
locale: z.union([z.string(), z.null()]).optional(),
|
|
86
|
+
// The rest of the brand (FR-124, FR-125): each as the document holds it, null to clear it.
|
|
87
|
+
logo: z.union([z.string().min(1), z.object({ src: z.string().min(1), alt: z.string().min(1).max(120).optional() }).strict(), z.null()]).optional(),
|
|
88
|
+
favicon: z.union([z.string().min(1), z.null()]).optional(),
|
|
89
|
+
typography: z.union([z.object({ display: z.union([z.string().min(1).max(200), z.null()]).optional(), body: z.union([z.string().min(1).max(200), z.null()]).optional(), mono: z.union([z.string().min(1).max(200), z.null()]).optional() }).strict(), z.null()]).optional(),
|
|
90
|
+
shape: z.union([z.object({ radius: z.union([z.number().min(0).max(32), z.null()]).optional(), density: z.union([z.number().min(0.75).max(1.5), z.null()]).optional() }).strict(), z.null()]).optional(),
|
|
91
|
+
accents: z.union([z.record(z.string(), z.union([z.number().min(0).max(360), z.null()])), z.null()]).optional(),
|
|
92
|
+
scheme: z.union([z.enum(["light", "dark", "auto"]), z.null()]).optional(),
|
|
80
93
|
})
|
|
81
94
|
.strict(),
|
|
95
|
+
"set-name": z.object({ op: z.literal("set-name"), name: z.string().min(1).max(80) }).strict(),
|
|
96
|
+
"set-description": z.object({ op: z.literal("set-description"), description: z.union([z.string().min(1).max(500), z.null()]) }).strict(),
|
|
82
97
|
"set-label": z.object({ op: z.literal("set-label"), kind: kindName, field: fieldName.optional(), label: z.union([z.string().min(1).max(300), z.null()]) }).strict(),
|
|
83
98
|
"set-describe": z.object({ op: z.literal("set-describe"), kind: kindName, describe: z.union([z.string().min(1).max(300), z.null()]) }).strict(),
|
|
84
99
|
// A kind's slot; the front page (`slot: "home"`, no kind); or a blocks lens's blocks, by its title (FR-84).
|
|
@@ -104,6 +119,7 @@ const SHAPES = {
|
|
|
104
119
|
order: z.union([z.array(kindName).max(40), z.null()]).optional(),
|
|
105
120
|
hide: z.union([z.array(kindName).max(40), z.null()]).optional(),
|
|
106
121
|
first: z.union([z.string().min(1).max(80), z.null()]).optional(),
|
|
122
|
+
overview: z.union([z.string().min(1).max(40), z.null()]).optional(),
|
|
107
123
|
})
|
|
108
124
|
.strict(),
|
|
109
125
|
"set-computed": z
|
|
@@ -395,6 +411,7 @@ function setTargets(act, doc) {
|
|
|
395
411
|
// ── the edits ────────────────────────────────────────────────────────────────
|
|
396
412
|
class Editor {
|
|
397
413
|
doc;
|
|
414
|
+
options;
|
|
398
415
|
said = [];
|
|
399
416
|
/** The agent tools this change renames or reshapes: a model that listed them before calls what is gone. */
|
|
400
417
|
toolsMoved = new Set();
|
|
@@ -404,8 +421,9 @@ class Editor {
|
|
|
404
421
|
kindOrigin = new Map();
|
|
405
422
|
fieldOrigin = new Map();
|
|
406
423
|
edgeOrigin = new Map();
|
|
407
|
-
constructor(doc, base) {
|
|
424
|
+
constructor(doc, base, options = {}) {
|
|
408
425
|
this.doc = doc;
|
|
426
|
+
this.options = options;
|
|
409
427
|
for (const [kind, spec] of Object.entries(base.kinds)) {
|
|
410
428
|
this.kindOrigin.set(kind, kind);
|
|
411
429
|
for (const f of Object.keys(spec.fields))
|
|
@@ -417,6 +435,128 @@ class Editor {
|
|
|
417
435
|
fail(i, path, message, fix) {
|
|
418
436
|
this.findings.push(error("edit", `edits.${i}${path ? `.${path}` : ""}`, message, fix));
|
|
419
437
|
}
|
|
438
|
+
/**
|
|
439
|
+
* THE BRAND, KEY BY KEY (FR-100, FR-124, FR-125): what an edit names is
|
|
440
|
+
* set, null clears it, and what it does not name stays as it was. Each
|
|
441
|
+
* is judged as `graview check` judges it — a mark that could act or load,
|
|
442
|
+
* a face off the list — and an accent that does not read as given is
|
|
443
|
+
* refused with the pair, the ratio and a shade that would (FR-126).
|
|
444
|
+
*/
|
|
445
|
+
setBrand(i, e) {
|
|
446
|
+
const brand = clone(this.doc.brand ?? {});
|
|
447
|
+
const at = `edits.${i}`;
|
|
448
|
+
// An edit that names nothing to change is refused, never applied with nothing said.
|
|
449
|
+
const named = Object.keys(e).filter((key) => key !== "op" && e[key] !== undefined);
|
|
450
|
+
if (named.length === 0)
|
|
451
|
+
return this.fail(i, "", "a set-brand edit names at least one key of the brand to set, or null to clear one", '{"op": "set-brand", "accent": "#0f6e5c"}');
|
|
452
|
+
const emptyPart = ["typography", "shape", "accents"].find((key) => isObject(e[key]) && Object.keys(e[key]).length === 0);
|
|
453
|
+
if (emptyPart)
|
|
454
|
+
return this.fail(i, emptyPart, `${emptyPart} names no part to set; name one, or give null to clear all of it`);
|
|
455
|
+
const judged = brandFindings({ ...(typeof e.logo === "string" || isObject(e.logo) ? { logo: e.logo } : {}), ...(typeof e.favicon === "string" ? { favicon: e.favicon } : {}), ...(isObject(e.typography) ? { typography: Object.fromEntries(Object.entries(e.typography).filter(([, v]) => typeof v === "string")) } : {}) }, { at, ...(this.options.fonts ? { fonts: this.options.fonts } : {}) });
|
|
456
|
+
if (judged.length > 0)
|
|
457
|
+
return void this.findings.push(...judged);
|
|
458
|
+
if (e.accent === null) {
|
|
459
|
+
delete brand["accent"];
|
|
460
|
+
this.said.push("The app goes back to Graview's colors.");
|
|
461
|
+
}
|
|
462
|
+
else if (e.accent !== undefined) {
|
|
463
|
+
if (!/^#[0-9a-fA-F]{6}$/.test(e.accent))
|
|
464
|
+
return this.fail(i, "accent", 'an accent is a color like "#c2577a"');
|
|
465
|
+
const refused = accentProblem(e.accent);
|
|
466
|
+
if (refused)
|
|
467
|
+
return this.fail(i, "accent", refused.sentence, refused.suggestion ? `{"op": "set-brand", "accent": "${refused.suggestion}"}` : "pick a color of another hue");
|
|
468
|
+
brand["accent"] = e.accent;
|
|
469
|
+
this.said.push(`The app's accent color becomes ${e.accent}.`);
|
|
470
|
+
}
|
|
471
|
+
if (e.currency === null) {
|
|
472
|
+
delete brand["currency"];
|
|
473
|
+
this.said.push("Money is said with no currency.");
|
|
474
|
+
}
|
|
475
|
+
else if (e.currency !== undefined) {
|
|
476
|
+
if (!/^[A-Z]{3}$/.test(e.currency))
|
|
477
|
+
return this.fail(i, "currency", 'a currency is its three-letter code, like "USD" or "EUR"');
|
|
478
|
+
brand["currency"] = e.currency;
|
|
479
|
+
this.said.push(`Money is said in ${e.currency}.`);
|
|
480
|
+
}
|
|
481
|
+
if (e.locale === null)
|
|
482
|
+
delete brand["locale"];
|
|
483
|
+
else if (e.locale !== undefined) {
|
|
484
|
+
if (!/^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/.test(e.locale))
|
|
485
|
+
return this.fail(i, "locale", 'a locale is a language tag, like "en-US" or "de-DE"');
|
|
486
|
+
brand["locale"] = e.locale;
|
|
487
|
+
this.said.push(`Money is written for ${e.locale}.`);
|
|
488
|
+
}
|
|
489
|
+
if (e.name === null) {
|
|
490
|
+
delete brand["name"];
|
|
491
|
+
this.said.push("The wordmark says the app's name.");
|
|
492
|
+
}
|
|
493
|
+
else if (e.name !== undefined) {
|
|
494
|
+
brand["name"] = e.name;
|
|
495
|
+
this.said.push(`The app's wordmark says ${e.name}.`);
|
|
496
|
+
}
|
|
497
|
+
for (const [key, what] of [["logo", "logo"], ["favicon", "page icon"]]) {
|
|
498
|
+
if (e[key] === undefined)
|
|
499
|
+
continue;
|
|
500
|
+
const was = brand[key];
|
|
501
|
+
if (e[key] === null)
|
|
502
|
+
delete brand[key];
|
|
503
|
+
else
|
|
504
|
+
brand[key] = e[key];
|
|
505
|
+
const src = (mark) => (typeof mark === "string" ? mark : isObject(mark) ? mark["src"] : undefined);
|
|
506
|
+
const alt = (mark) => (isObject(mark) && typeof mark["alt"] === "string" ? mark["alt"] : undefined);
|
|
507
|
+
if (e[key] === null)
|
|
508
|
+
this.said.push(`The app has no ${what}.`);
|
|
509
|
+
else if (was === undefined)
|
|
510
|
+
this.said.push(`The app gets a ${what}.`);
|
|
511
|
+
else if (canonicalize(was) === canonicalize(e[key]))
|
|
512
|
+
this.said.push(`The ${what} stays as it was.`);
|
|
513
|
+
else if (src(was) === src(e[key]))
|
|
514
|
+
this.said.push(`The ${what} is said as ${quotedAtTheEnd(alt(e[key]) ?? brand["name"] ?? this.doc.name)}`);
|
|
515
|
+
else
|
|
516
|
+
this.said.push(`The ${what} changes.`);
|
|
517
|
+
}
|
|
518
|
+
const merge = (key, say, cleared) => {
|
|
519
|
+
if (e[key] === undefined)
|
|
520
|
+
return;
|
|
521
|
+
if (e[key] === null) {
|
|
522
|
+
delete brand[key];
|
|
523
|
+
this.said.push(cleared);
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
const into = { ...(brand[key] ?? {}) };
|
|
527
|
+
for (const [part, value] of Object.entries(e[key])) {
|
|
528
|
+
if (value === null)
|
|
529
|
+
delete into[part];
|
|
530
|
+
else
|
|
531
|
+
into[part] = value;
|
|
532
|
+
this.said.push(say(part, value));
|
|
533
|
+
}
|
|
534
|
+
if (Object.keys(into).length === 0)
|
|
535
|
+
delete brand[key];
|
|
536
|
+
else
|
|
537
|
+
brand[key] = into;
|
|
538
|
+
};
|
|
539
|
+
const ROLE = { display: "Headings", body: "Body text", mono: "Code" };
|
|
540
|
+
merge("typography", (role, value) => (value === null ? `${ROLE[role]} go${role === "display" ? "" : "es"} back to Graview's face.` : `${ROLE[role]} ${role === "display" ? "are" : "is"} now set in ${value}.`), "Words go back to Graview's faces.");
|
|
541
|
+
merge("shape", (part, value) => (part === "radius" ? (value === null ? "Corners go back to Graview's own." : `Corners are now ${value}px.`) : value === null ? "Spacing goes back to Graview's own." : `Spacing is now ${value} times Graview's own.`), "Corners and spacing go back to Graview's own.");
|
|
542
|
+
if (isObject(e.accents)) {
|
|
543
|
+
const unknown = Object.keys(e.accents).find((kind) => !this.doc.kinds[kind]);
|
|
544
|
+
if (unknown)
|
|
545
|
+
return this.fail(i, "accents", `"${unknown}" is not a kind this app has; it has ${Object.keys(this.doc.kinds).join(", ")}`);
|
|
546
|
+
}
|
|
547
|
+
merge("accents", (kind, hue) => (hue === null ? `${cap(kind)} goes back to its own hue.` : `${cap(kind)} is drawn at hue ${hue}°.`), "Every kind goes back to its own hue.");
|
|
548
|
+
if (e.scheme !== undefined) {
|
|
549
|
+
if (e.scheme === null || e.scheme === "auto")
|
|
550
|
+
delete brand["scheme"];
|
|
551
|
+
else
|
|
552
|
+
brand["scheme"] = e.scheme;
|
|
553
|
+
this.said.push(e.scheme === "light" || e.scheme === "dark" ? `The app opens ${e.scheme} when the reader has not chosen.` : "The app follows the reader's system for light and dark.");
|
|
554
|
+
}
|
|
555
|
+
if (Object.keys(brand).length === 0)
|
|
556
|
+
delete this.doc.brand;
|
|
557
|
+
else
|
|
558
|
+
this.doc.brand = brand;
|
|
559
|
+
}
|
|
420
560
|
kind(i, kind) {
|
|
421
561
|
const spec = this.doc.kinds[kind];
|
|
422
562
|
if (!spec)
|
|
@@ -532,46 +672,23 @@ class Editor {
|
|
|
532
672
|
this.said.push(`The rule "${title}" is removed.`);
|
|
533
673
|
return;
|
|
534
674
|
}
|
|
535
|
-
case "set-brand":
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
this.
|
|
547
|
-
}
|
|
548
|
-
if (e.currency === null) {
|
|
549
|
-
delete brand["currency"];
|
|
550
|
-
this.said.push("Money is said with no currency.");
|
|
551
|
-
}
|
|
552
|
-
else if (e.currency !== undefined) {
|
|
553
|
-
if (!/^[A-Z]{3}$/.test(e.currency))
|
|
554
|
-
return this.fail(i, "currency", 'a currency is its three-letter code, like "USD" or "EUR"');
|
|
555
|
-
brand["currency"] = e.currency;
|
|
556
|
-
this.said.push(`Money is said in ${e.currency}.`);
|
|
557
|
-
}
|
|
558
|
-
if (e.locale === null)
|
|
559
|
-
delete brand["locale"];
|
|
560
|
-
else if (e.locale !== undefined) {
|
|
561
|
-
if (!/^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/.test(e.locale))
|
|
562
|
-
return this.fail(i, "locale", 'a locale is a language tag, like "en-US" or "de-DE"');
|
|
563
|
-
brand["locale"] = e.locale;
|
|
564
|
-
this.said.push(`Money is written for ${e.locale}.`);
|
|
565
|
-
}
|
|
566
|
-
if (e.name) {
|
|
567
|
-
brand["name"] = e.name;
|
|
568
|
-
this.said.push(`The app's wordmark says ${e.name}.`);
|
|
569
|
-
}
|
|
570
|
-
// A brand that holds only a name holds nothing to apply.
|
|
571
|
-
if (Object.keys(brand).every((key) => key === "name"))
|
|
572
|
-
delete this.doc.brand;
|
|
675
|
+
case "set-brand":
|
|
676
|
+
return this.setBrand(i, e);
|
|
677
|
+
case "set-name": {
|
|
678
|
+
const already = this.doc.name === e.name;
|
|
679
|
+
this.doc.name = e.name;
|
|
680
|
+
this.said.push(already ? `The app is already called ${quotedAtTheEnd(e.name)}` : `The app is now called ${quotedAtTheEnd(e.name)}`);
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
case "set-description": {
|
|
684
|
+
const already = (this.doc.description ?? null) === e.description;
|
|
685
|
+
if (e.description === null)
|
|
686
|
+
delete this.doc.description;
|
|
573
687
|
else
|
|
574
|
-
this.doc.
|
|
688
|
+
this.doc.description = e.description;
|
|
689
|
+
this.said.push(e.description === null
|
|
690
|
+
? already ? "The app already has no line under its name." : "The app has no line under its name."
|
|
691
|
+
: already ? `The line under the app's name already reads ${quotedAtTheEnd(e.description)}` : `The line under the app's name reads ${quotedAtTheEnd(e.description)}`);
|
|
575
692
|
return;
|
|
576
693
|
}
|
|
577
694
|
case "set-label": {
|
|
@@ -823,8 +940,8 @@ class Editor {
|
|
|
823
940
|
this.said.push(`${cap(said.replace(/ \(the app opens at its home again\)$/, ""))} is removed${said.endsWith("again)") ? "; the app opens at its home again" : ""}.`);
|
|
824
941
|
}
|
|
825
942
|
arrangePages(i, e) {
|
|
826
|
-
if (e.order === undefined && e.hide === undefined && e.first === undefined)
|
|
827
|
-
return this.fail(i, "", 'arrange-pages says at least one of "order", "hide" or "
|
|
943
|
+
if (e.order === undefined && e.hide === undefined && e.first === undefined && e.overview === undefined)
|
|
944
|
+
return this.fail(i, "", 'arrange-pages says at least one of "order", "hide", "first" or "overview"');
|
|
828
945
|
const kinds = Object.keys(this.doc.kinds);
|
|
829
946
|
for (const part of ["order", "hide"]) {
|
|
830
947
|
for (const [n, kind] of (e[part] ?? []).entries()) {
|
|
@@ -873,6 +990,17 @@ class Editor {
|
|
|
873
990
|
said.push(`the app opens on "${e.first}"`);
|
|
874
991
|
}
|
|
875
992
|
}
|
|
993
|
+
if (e.overview !== undefined) {
|
|
994
|
+
// What the scene is called on the bar (FR-132); its address stays /places/overview.
|
|
995
|
+
if (e.overview === null || e.overview.trim() === "" || e.overview.trim() === "Overview") {
|
|
996
|
+
delete pages.overview;
|
|
997
|
+
said.push("the overview is called Overview");
|
|
998
|
+
}
|
|
999
|
+
else {
|
|
1000
|
+
pages.overview = e.overview.trim();
|
|
1001
|
+
said.push(`the overview is called "${pages.overview}"`);
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
876
1004
|
if (Object.keys(pages).length === 0)
|
|
877
1005
|
delete this.doc.pages;
|
|
878
1006
|
this.said.push(`${cap(listOf(said))}.`);
|
|
@@ -2277,7 +2405,7 @@ function pruneBlock(doc, b, ctx, r, kind) {
|
|
|
2277
2405
|
* `edits.<i>.…`) and no document. The result is NOT compiled here: the caller
|
|
2278
2406
|
* previews it like any other proposed document.
|
|
2279
2407
|
*/
|
|
2280
|
-
export function editDocument(document, edits) {
|
|
2408
|
+
export function editDocument(document, edits, options = {}) {
|
|
2281
2409
|
if (!Array.isArray(edits))
|
|
2282
2410
|
return { ok: false, findings: [error("edit", "edits", "edits are a list, like [{\"op\": \"add-field\", …}]")] };
|
|
2283
2411
|
// No edits is no change: the document as it was, and nothing said.
|
|
@@ -2285,7 +2413,7 @@ export function editDocument(document, edits) {
|
|
|
2285
2413
|
return { ok: true, document: clone(document), said: [], fills: [] };
|
|
2286
2414
|
if (edits.length > MAX_EDITS)
|
|
2287
2415
|
return { ok: false, findings: [error("edit", "edits", `at most ${MAX_EDITS} edits at once`)] };
|
|
2288
|
-
const editor = new Editor(clone(document), document);
|
|
2416
|
+
const editor = new Editor(clone(document), document, options);
|
|
2289
2417
|
edits.forEach((raw, i) => {
|
|
2290
2418
|
if (editor.findings.length > 0)
|
|
2291
2419
|
return;
|