@graview/core 0.1.53 → 0.1.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/archived-seen.d.ts +51 -15
  2. package/dist/archived-seen.d.ts.map +1 -1
  3. package/dist/archived-seen.js +123 -28
  4. package/dist/archived-seen.js.map +1 -1
  5. package/dist/capabilities.js +1 -1
  6. package/dist/capabilities.js.map +1 -1
  7. package/dist/document/brand-check.d.ts +3 -0
  8. package/dist/document/brand-check.d.ts.map +1 -1
  9. package/dist/document/brand-check.js +21 -2
  10. package/dist/document/brand-check.js.map +1 -1
  11. package/dist/document/brand.d.ts.map +1 -1
  12. package/dist/document/brand.js +10 -2
  13. package/dist/document/brand.js.map +1 -1
  14. package/dist/document/compile-checked.js +2 -2
  15. package/dist/document/compile-checked.js.map +1 -1
  16. package/dist/document/diff.js +1 -1
  17. package/dist/document/diff.js.map +1 -1
  18. package/dist/document/edit.d.ts.map +1 -1
  19. package/dist/document/edit.js +24 -2
  20. package/dist/document/edit.js.map +1 -1
  21. package/dist/document/schema.d.ts +8 -0
  22. package/dist/document/schema.d.ts.map +1 -1
  23. package/dist/document/schema.js +14 -0
  24. package/dist/document/schema.js.map +1 -1
  25. package/dist/document.schema.json +24 -2
  26. package/dist/graph/graph.d.ts.map +1 -1
  27. package/dist/graph/graph.js +20 -0
  28. package/dist/graph/graph.js.map +1 -1
  29. package/dist/history.d.ts +32 -0
  30. package/dist/history.d.ts.map +1 -1
  31. package/dist/history.js.map +1 -1
  32. package/dist/index.d.ts +5 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +3 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/past.d.ts +37 -2
  37. package/dist/past.d.ts.map +1 -1
  38. package/dist/past.js +73 -13
  39. package/dist/past.js.map +1 -1
  40. package/dist/seat.d.ts +3 -2
  41. package/dist/seat.d.ts.map +1 -1
  42. package/dist/seat.js +3 -2
  43. package/dist/seat.js.map +1 -1
  44. package/dist/subscriptions.d.ts +5 -0
  45. package/dist/subscriptions.d.ts.map +1 -1
  46. package/dist/subscriptions.js +46 -1
  47. package/dist/subscriptions.js.map +1 -1
  48. package/dist/theme/accent.d.ts +8 -6
  49. package/dist/theme/accent.d.ts.map +1 -1
  50. package/dist/theme/accent.js +29 -23
  51. package/dist/theme/accent.js.map +1 -1
  52. package/dist/theme/ground-check.d.ts +27 -0
  53. package/dist/theme/ground-check.d.ts.map +1 -0
  54. package/dist/theme/ground-check.js +81 -0
  55. package/dist/theme/ground-check.js.map +1 -0
  56. package/dist/theme/ground.d.ts +42 -0
  57. package/dist/theme/ground.d.ts.map +1 -0
  58. package/dist/theme/ground.js +101 -0
  59. package/dist/theme/ground.js.map +1 -0
  60. package/dist/version.d.ts +1 -1
  61. package/dist/version.js +1 -1
  62. package/package.json +4 -2
@@ -1,4 +1,5 @@
1
1
  import { type DerivedBrand, type RefusedBrand } from "./derive.js";
2
+ import { type Ground } from "./ground.js";
2
3
  export interface AccentRefusal {
3
4
  /** One sentence: the pair, its ratio, what is needed, and a shade that would pass. */
4
5
  readonly sentence: string;
@@ -14,17 +15,18 @@ export interface AccentRefusal {
14
15
  }
15
16
  /**
16
17
  * The schemes a document's accent derives (FR-124): `brandFromAccent` over
17
- * Graview's own, and — where the only trouble is that the warning color
18
- * shares the accent's hue — with the warning drawn in the bad status's red,
19
- * since a document cannot name a warning color of its own.
18
+ * Graview's own — standing on the app's `ground` where it has one — and,
19
+ * where the only trouble is that the warning color shares the accent's
20
+ * hue, with the warning drawn in the bad status's red, since a document
21
+ * cannot name a warning color of its own.
20
22
  */
21
- export declare function documentSchemes(accent: string): DerivedBrand | RefusedBrand;
23
+ export declare function documentSchemes(accent: string, ground?: Ground): DerivedBrand | RefusedBrand;
22
24
  /**
23
25
  * Why a document may not take this accent, in one sentence with a fix, or
24
26
  * null when it may (FR-126): `"#e6c200 text on #ffffff is 1.7:1; 4.5:1 is
25
- * needed — #8a7400 would pass."`
27
+ * needed — #8a7400 would pass."` On the app's `ground`, where it has one.
26
28
  */
27
- export declare function accentProblem(accent: string): AccentRefusal | null;
29
+ export declare function accentProblem(accent: string, ground?: Ground): AccentRefusal | null;
28
30
  /**
29
31
  * The nearest shade of `ink`'s hue that clears `requires` on `on` (laid
30
32
  * over `over`, for a translucent ground), by lightness alone, as hex — the
@@ -1 +1 @@
1
- {"version":3,"file":"accent.d.ts","sourceRoot":"","sources":["../../src/theme/accent.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAoBpF,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAI3E;AAsBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAkClE;AAiBD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAezG;AAED,oGAAoG;AACpG,eAAO,MAAM,UAAU,UAlHF,MAAM,WAkHG,CAAC"}
1
+ {"version":3,"file":"accent.d.ts","sourceRoot":"","sources":["../../src/theme/accent.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAqBzD,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAK5F;AAuBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAmCnF;AAiBD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAezG;AAED,oGAAoG;AACpG,eAAO,MAAM,UAAU,UAtHF,MAAM,WAsHG,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { colorsIn, composite, contrast, hsl, rgbToHsl } from "./contrast.js";
2
2
  import { brandFromAccent } from "./derive.js";
3
+ import { groundSchemes } from "./ground.js";
3
4
  import { SCHEMES } from "./palettes.js";
4
5
  /*
5
6
  * A DOCUMENT'S ACCENT, AS GIVEN (FR-126).
@@ -11,7 +12,8 @@ import { SCHEMES } from "./palettes.js";
11
12
  * it could not tell. The dark scheme takes the shade of the same hue that
12
13
  * reads on its own grounds. When it does not read, the refusal names the
13
14
  * pair, the ratio and the ratio needed, and a shade that would pass: the
14
- * nearest of the same hue and saturation, by lightness alone.
15
+ * nearest of the same hue and saturation, by lightness alone. On an app
16
+ * with a ground of its own (`ground`), it is judged on that ground.
15
17
  */
16
18
  const BLACK = { r: 0, g: 0, b: 0, a: 1 };
17
19
  const WHITE = { r: 255, g: 255, b: 255, a: 1 };
@@ -21,24 +23,27 @@ const hex = (color) => `#${[color.r, color.g, color.b].map((v) => Math.round(Mat
21
23
  const said = (ratio) => `${Math.floor(ratio * 10) / 10}:1`;
22
24
  /**
23
25
  * The schemes a document's accent derives (FR-124): `brandFromAccent` over
24
- * Graview's own, and — where the only trouble is that the warning color
25
- * shares the accent's hue — with the warning drawn in the bad status's red,
26
- * since a document cannot name a warning color of its own.
26
+ * Graview's own — standing on the app's `ground` where it has one — and,
27
+ * where the only trouble is that the warning color shares the accent's
28
+ * hue, with the warning drawn in the bad status's red, since a document
29
+ * cannot name a warning color of its own.
27
30
  */
28
- export function documentSchemes(accent) {
29
- const derived = brandFromAccent({ accent, base: SCHEMES });
31
+ export function documentSchemes(accent, ground) {
32
+ const base = groundSchemes(ground);
33
+ const derived = brandFromAccent({ accent, base });
30
34
  if (derived.ok || !derived.missing.every((part) => part.startsWith("warn")))
31
35
  return derived;
32
- return brandFromAccent({ accent, base: SCHEMES, warn: { light: SCHEMES.light.bad, dark: SCHEMES.dark.bad } });
36
+ return brandFromAccent({ accent, base, warn: { light: SCHEMES.light.bad, dark: SCHEMES.dark.bad } });
33
37
  }
34
38
  /** The first pair this color fails as given in the light scheme, or null when it reads. */
35
- function lightFailure(color) {
36
- const ground = colorsIn(SCHEMES.light.ground)[0];
37
- const panel = composite(colorsIn(SCHEMES.light.panel)[0], ground);
39
+ function lightFailure(color, ground) {
40
+ const light = groundSchemes(ground).light;
41
+ const under = colorsIn(light.ground)[0];
42
+ const panel = composite(colorsIn(light.panel)[0], under);
38
43
  const onPanel = contrast(color, panel);
39
- const onGround = contrast(color, ground);
44
+ const onGround = contrast(color, under);
40
45
  if (Math.min(onPanel, onGround) < AA) {
41
- const [ratio, on] = onPanel <= onGround ? [onPanel, panel] : [onGround, ground];
46
+ const [ratio, on] = onPanel <= onGround ? [onPanel, panel] : [onGround, under];
42
47
  return { pair: { text: hex(color), on: hex(on) }, ratio, requires: AA };
43
48
  }
44
49
  const white = contrast(WHITE, color);
@@ -47,29 +52,29 @@ function lightFailure(color) {
47
52
  return { pair: { text: white >= black ? "#ffffff" : "#000000", on: hex(color) }, ratio: Math.max(white, black), requires: AA };
48
53
  return null;
49
54
  }
50
- function passes(color) {
51
- return lightFailure(color) === null && documentSchemes(hex(color)).ok;
55
+ function passes(color, ground) {
56
+ return lightFailure(color, ground) === null && documentSchemes(hex(color), ground).ok;
52
57
  }
53
58
  /**
54
59
  * Why a document may not take this accent, in one sentence with a fix, or
55
60
  * null when it may (FR-126): `"#e6c200 text on #ffffff is 1.7:1; 4.5:1 is
56
- * needed — #8a7400 would pass."`
61
+ * needed — #8a7400 would pass."` On the app's `ground`, where it has one.
57
62
  */
58
- export function accentProblem(accent) {
63
+ export function accentProblem(accent, ground) {
59
64
  const color = colorsIn(accent)[0];
60
65
  if (!color)
61
66
  return { sentence: `"${accent}" is not a color; an accent is one like "#c2577a".`, pair: { text: accent, on: "" }, ratio: 0, requires: AA };
62
- const failure = lightFailure(color);
63
- const derived = failure ? undefined : documentSchemes(accent);
67
+ const failure = lightFailure(color, ground);
68
+ const derived = failure ? undefined : documentSchemes(accent, ground);
64
69
  if (!failure && derived?.ok)
65
70
  return null;
66
- const suggestion = nearestPassing(color);
71
+ const suggestion = nearestPassing(color, ground);
67
72
  /*
68
73
  * A hue the warning color stands on cannot be an accent at any shade:
69
74
  * "something is broken" would look like "this is selected". Said as that,
70
75
  * not as a contrast, since no lightness answers it.
71
76
  */
72
- const asIs = derived ?? documentSchemes(accent);
77
+ const asIs = derived ?? documentSchemes(accent, ground);
73
78
  const clash = !asIs.ok && asIs.missing.some((part) => part.startsWith("warn"));
74
79
  const fix = suggestion
75
80
  ? ` — ${suggestion} would pass.`
@@ -83,7 +88,8 @@ export function accentProblem(accent) {
83
88
  return { ...failure, sentence: `${pair} is ${said(failure.ratio)}; ${failure.requires}:1 is needed${fix}`, ...(suggestion ? { suggestion } : {}) };
84
89
  }
85
90
  const refused = derived;
86
- const darkPanel = composite(colorsIn(SCHEMES.dark.panel)[0], colorsIn(SCHEMES.dark.ground)[0]);
91
+ const dark = groundSchemes(ground).dark;
92
+ const darkPanel = composite(colorsIn(dark.panel)[0], colorsIn(dark.ground)[0]);
87
93
  const pair = { text: hex(color), on: hex(darkPanel) };
88
94
  if (refused.missing.every((part) => part.startsWith("warn"))) {
89
95
  return { sentence: `${accent} reads as given, but the warning color is drawn in its hue, so "something is broken" would look like "this is selected"${suggestion ? fix : ", at any shade — pick another hue."}`, pair, ratio: contrast(color, darkPanel), requires: AA, ...(suggestion ? { suggestion } : {}) };
@@ -93,7 +99,7 @@ export function accentProblem(accent) {
93
99
  return { sentence: `${accent} reads in the light scheme, but not in the dark: ${why}${fix}`, pair, ratio: contrast(color, darkPanel), requires: AA, ...(suggestion ? { suggestion } : {}) };
94
100
  }
95
101
  /** The nearest shade of the same hue and saturation that passes, by lightness alone, as hex; undefined when none does. */
96
- function nearestPassing(color) {
102
+ function nearestPassing(color, ground) {
97
103
  const base = rgbToHsl(color);
98
104
  for (let step = 1; step <= 200; step++) {
99
105
  for (const l of [base.l - step / 200, base.l + step / 200]) {
@@ -102,7 +108,7 @@ function nearestPassing(color) {
102
108
  const shade = hsl(base.h, base.s, l);
103
109
  // Said as hex, so judged as hex: the color a chat sends back is this one, rounded.
104
110
  const rounded = colorsIn(hex(shade))[0];
105
- if (passes(rounded))
111
+ if (passes(rounded, ground))
106
112
  return hex(rounded);
107
113
  }
108
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"accent.js","sourceRoot":"","sources":["../../src/theme/accent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accent.js","sourceRoot":"","sources":["../../src/theme/accent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type Ground } from "./ground.js";
2
+ import type { Scheme } from "./types.js";
3
+ export interface GroundRefusal {
4
+ /** One sentence: what does not read on which ground, its ratio, what is needed, and a shade that would pass. */
5
+ readonly sentence: string;
6
+ /** The scheme the pair fails in. */
7
+ readonly scheme: Scheme;
8
+ /** The text and what it was on, as colors. */
9
+ readonly pair: {
10
+ readonly text: string;
11
+ readonly on: string;
12
+ };
13
+ readonly ratio: number;
14
+ readonly requires: number;
15
+ /** The nearest shade of that scheme's ground, same hue and saturation, that passes, as hex — when there is one. */
16
+ readonly suggestion?: string;
17
+ }
18
+ /** Whether every pair reads on this ground, with this accent: what a page compiles with, which says no more. */
19
+ export declare function groundReads(ground: Ground, accent?: string): boolean;
20
+ /**
21
+ * Why an app may not stand on this ground, in one sentence with a fix, or
22
+ * null when it may: `"Muted ink #586174 on the ground #9a9a94 is 2.5:1;
23
+ * 4.5:1 is needed — #d8d8d5 would pass."` Judged with the app's accent
24
+ * where it has one, as the page draws it.
25
+ */
26
+ export declare function groundProblem(ground: Ground, accent?: string): GroundRefusal | null;
27
+ //# sourceMappingURL=ground-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground-check.d.ts","sourceRoot":"","sources":["../../src/theme/ground-check.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+D,KAAK,MAAM,EAAsB,MAAM,aAAa,CAAC;AAC3H,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAezC,MAAM,WAAW,aAAa;IAC5B,gHAAgH;IAChH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mHAAmH;IACnH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AASD,gHAAgH;AAChH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpE;AAUD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAuBnF"}
@@ -0,0 +1,81 @@
1
+ import { documentSchemes } from "./accent.js";
2
+ import { colorsIn, hsl, rgbToHsl } from "./contrast.js";
3
+ import { givenGrounds, groundFailure, groundSchemes, groundWith, hex } from "./ground.js";
4
+ /*
5
+ * WHETHER AN APP CAN STAND ON ITS GROUND (Roadmap f-brand-ground), judged
6
+ * as an accent is (FR-126): ink, muted ink and the accent, as the page
7
+ * draws them, on the ground and on a card drawn from it, in both schemes.
8
+ * When one drops below 4.5:1 the refusal names the pair, its ratio, what
9
+ * is needed and the nearest shade of that ground that would pass.
10
+ */
11
+ const AA = 4.5;
12
+ /** A ratio as said: rounded down, so a near miss is never said as a pass. */
13
+ const said = (ratio) => `${Math.floor(ratio * 10) / 10}:1`;
14
+ /** The first pair that drops below AA on these grounds, with this accent, or null when every one reads. */
15
+ function failureOn(ground, accent) {
16
+ const derived = accent ? documentSchemes(accent, ground) : undefined;
17
+ // The dark scheme's accent as derived where it can be; where it cannot, the accent's own refusal says so.
18
+ return groundFailure(derived?.ok ? derived.schemes : groundSchemes(ground), accent);
19
+ }
20
+ /** Whether every pair reads on this ground, with this accent: what a page compiles with, which says no more. */
21
+ export function groundReads(ground, accent) {
22
+ return givenColors(ground) === null && failureOn(ground, accent) === null;
23
+ }
24
+ /** The first value of a ground that is not a color, or null when each is one. */
25
+ function givenColors(ground) {
26
+ const given = givenGrounds(ground);
27
+ if (given.light === undefined && given.dark === undefined)
28
+ return "";
29
+ for (const value of [given.light, given.dark])
30
+ if (value !== undefined && !/^#[0-9a-fA-F]{6}$/.test(value))
31
+ return value;
32
+ return null;
33
+ }
34
+ /**
35
+ * Why an app may not stand on this ground, in one sentence with a fix, or
36
+ * null when it may: `"Muted ink #586174 on the ground #9a9a94 is 2.5:1;
37
+ * 4.5:1 is needed — #d8d8d5 would pass."` Judged with the app's accent
38
+ * where it has one, as the page draws it.
39
+ */
40
+ export function groundProblem(ground, accent) {
41
+ const notAColor = givenColors(ground);
42
+ if (notAColor !== null) {
43
+ return { sentence: `${notAColor === "" ? "That" : `"${notAColor}"`} is not a page background; a ground is a color like "#eef3f8", or { "light": "#eef3f8", "dark": "#101826" }.`, scheme: "light", pair: { text: "", on: notAColor }, ratio: 0, requires: AA };
44
+ }
45
+ const failure = failureOn(ground, accent);
46
+ if (!failure)
47
+ return null;
48
+ const given = givenGrounds(ground);
49
+ const own = given[failure.scheme];
50
+ // A dark ground drawn from the light one moves with neither: the light one's hue is what to change.
51
+ const suggestion = own ? nearestPassing(ground, failure.scheme, accent) : undefined;
52
+ const groundSaid = own ?? `${hex(failure.ground)}, drawn from ${given.light}`;
53
+ const on = failure.card ? `a card (${hex(failure.card)}) on the ground ${groundSaid}` : `the ground ${groundSaid}`;
54
+ const fix = suggestion ? ` — ${suggestion} would pass.` : own ? "; no shade of this color does, so pick another." : `; give the dark scheme a ground of its own.`;
55
+ const sentence = `${failure.scheme === "dark" ? "In the dark scheme, " : ""}${failure.what} ${hex(failure.text)} on ${on} is ${said(failure.ratio)}; ${AA}:1 is needed${fix}`;
56
+ return {
57
+ sentence: sentence.replace(/^./, (first) => first.toUpperCase()),
58
+ scheme: failure.scheme,
59
+ pair: { text: hex(failure.text), on: hex(failure.card ?? failure.ground) },
60
+ ratio: failure.ratio,
61
+ requires: AA,
62
+ ...(suggestion ? { suggestion } : {}),
63
+ };
64
+ }
65
+ /** The nearest shade of one scheme's ground, same hue and saturation, by lightness alone, for which every pair reads; undefined when none does. */
66
+ function nearestPassing(ground, scheme, accent) {
67
+ const color = colorsIn(givenGrounds(ground)[scheme])[0];
68
+ const base = rgbToHsl(color);
69
+ for (let step = 1; step <= 200; step++) {
70
+ for (const l of [base.l - step / 200, base.l + step / 200]) {
71
+ if (l < 0 || l > 1)
72
+ continue;
73
+ // Said as hex, so judged as hex: the color a chat sends back is this one, rounded.
74
+ const shade = hex(hsl(base.h, base.s, l));
75
+ if (failureOn(groundWith(ground, scheme, shade), accent) === null)
76
+ return shade;
77
+ }
78
+ }
79
+ return undefined;
80
+ }
81
+ //# sourceMappingURL=ground-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground-check.js","sourceRoot":"","sources":["../../src/theme/ground-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type Rgba } from "./contrast.js";
2
+ import type { Scheme, ThemeTokens } from "./types.js";
3
+ /** A page background: the light scheme's color, or one for each scheme. */
4
+ export type Ground = string | {
5
+ readonly light?: string;
6
+ readonly dark?: string;
7
+ };
8
+ export declare const hex: (color: Rgba) => string;
9
+ /** The two grounds a brand's `ground` says, as given; a scheme it leaves out is absent. */
10
+ export declare function givenGrounds(ground: Ground): {
11
+ light?: string;
12
+ dark?: string;
13
+ };
14
+ /** The dark ground a light one implies: its hue, held to a ground's quiet saturation, taken down to the lightness of Graview's own. */
15
+ export declare function darkGroundFor(light: string): string | undefined;
16
+ /**
17
+ * The neutral pair an app stands on: Graview's own, with each scheme's
18
+ * ground — and the panel, muted panel, edge, bar and floating sheet drawn
19
+ * from it — the brand's where it gives one. A dark ground left unsaid
20
+ * beside a light one is the light one's hue taken down to a ground.
21
+ */
22
+ export declare function groundSchemes(ground: Ground | undefined): Readonly<Record<Scheme, ThemeTokens>>;
23
+ /** The ground with one scheme's color replaced, in the form it was given. */
24
+ export declare function groundWith(ground: Ground, scheme: Scheme, color: string): Ground;
25
+ /** A pair that does not read on a ground: which, in which scheme, and how far short. */
26
+ export interface GroundFailure {
27
+ readonly scheme: Scheme;
28
+ readonly what: "ink" | "muted ink" | "the accent";
29
+ readonly text: Rgba;
30
+ readonly ground: Rgba;
31
+ /** The card's color, when the pair fails on a card rather than on the ground itself. */
32
+ readonly card?: Rgba;
33
+ readonly ratio: number;
34
+ }
35
+ /**
36
+ * The first of ink, muted ink and the accent that drops below 4.5:1 on a
37
+ * pair of schemes' grounds or on a card drawn from them, or null when each
38
+ * reads. In the light scheme an app's accent is drawn as given (FR-126),
39
+ * so it is judged as given.
40
+ */
41
+ export declare function groundFailure(schemes: Readonly<Record<Scheme, ThemeTokens>>, accent?: string): GroundFailure | null;
42
+ //# sourceMappingURL=ground.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground.d.ts","sourceRoot":"","sources":["../../src/theme/ground.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAExF,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAkBtD,2EAA2E;AAC3E,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAMlF,eAAO,MAAM,GAAG,GAAI,OAAO,IAAI,WAAmI,CAAC;AAInK,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAE9E;AAED,uIAAuI;AACvI,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK/D;AAoCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAU/F;AAED,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhF;AAED,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,wFAAwF;IACxF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAenH"}
@@ -0,0 +1,101 @@
1
+ import { colorsIn, composite, contrast, hsl, rgbToHsl } from "./contrast.js";
2
+ import { SCHEMES } from "./palettes.js";
3
+ const AA = 4.5;
4
+ const WHITE = { r: 255, g: 255, b: 255, a: 1 };
5
+ const BLACK = { r: 0, g: 0, b: 0, a: 1 };
6
+ export const hex = (color) => `#${[color.r, color.g, color.b].map((v) => Math.round(Math.max(0, Math.min(255, v))).toString(16).padStart(2, "0")).join("")}`;
7
+ const rgba = (color, alpha) => `rgba(${Math.round(color.r)}, ${Math.round(color.g)}, ${Math.round(color.b)}, ${alpha})`;
8
+ const mix = (a, b, t) => ({ r: a.r + (b.r - a.r) * t, g: a.g + (b.g - a.g) * t, b: a.b + (b.b - a.b) * t, a: 1 });
9
+ /** The two grounds a brand's `ground` says, as given; a scheme it leaves out is absent. */
10
+ export function givenGrounds(ground) {
11
+ return typeof ground === "string" ? { light: ground } : { ...(ground.light ? { light: ground.light } : {}), ...(ground.dark ? { dark: ground.dark } : {}) };
12
+ }
13
+ /** The dark ground a light one implies: its hue, held to a ground's quiet saturation, taken down to the lightness of Graview's own. */
14
+ export function darkGroundFor(light) {
15
+ const color = colorsIn(light)[0];
16
+ if (!color)
17
+ return undefined;
18
+ const { h, s } = rgbToHsl(color);
19
+ return hex(hsl(h, Math.min(s, 0.45), 0.08));
20
+ }
21
+ /** Daylight: a card is the ground most of the way to white, with an edge in the ground's own hue. */
22
+ function lightOn(base, ground, color) {
23
+ const { h, s } = rgbToHsl(color);
24
+ const panel = mix(color, WHITE, 0.8);
25
+ return {
26
+ ...base,
27
+ ground,
28
+ groundDeep: hex(mix(color, BLACK, 0.04)),
29
+ panel: hex(panel),
30
+ panelMuted: hex(mix(color, WHITE, 0.55)),
31
+ edge: rgba(hsl(h, Math.min(s, 0.5), 0.14), 0.14),
32
+ bar: rgba(panel, 0.96),
33
+ float: hex(panel),
34
+ };
35
+ }
36
+ /** A lit control surface: a card is the ground lit a little, with a lit edge in the ground's own hue. */
37
+ function darkOn(base, ground, color) {
38
+ const { h, s, l } = rgbToHsl(color);
39
+ const lit = (by) => hsl(h, s, Math.min(1, l + by));
40
+ return {
41
+ ...base,
42
+ ground,
43
+ groundDeep: hex(hsl(h, s, l * 0.6)),
44
+ // Nearly opaque, as Graview's own: a captured subtree has nothing behind it.
45
+ panel: rgba(lit(0.07), 0.96),
46
+ panelMuted: rgba(lit(0.035), 0.94),
47
+ edge: rgba(hsl(h, Math.min(s, 0.45), 0.75), 0.18),
48
+ bar: rgba(color, 0.96),
49
+ // No lighter than the panel: an accent derived to read on the panel reads here too.
50
+ float: rgba(lit(0.05), 0.98),
51
+ };
52
+ }
53
+ /**
54
+ * The neutral pair an app stands on: Graview's own, with each scheme's
55
+ * ground — and the panel, muted panel, edge, bar and floating sheet drawn
56
+ * from it — the brand's where it gives one. A dark ground left unsaid
57
+ * beside a light one is the light one's hue taken down to a ground.
58
+ */
59
+ export function groundSchemes(ground) {
60
+ if (ground === undefined)
61
+ return SCHEMES;
62
+ const given = givenGrounds(ground);
63
+ const dark = given.dark ?? (given.light ? darkGroundFor(given.light) : undefined);
64
+ const light = given.light ? colorsIn(given.light)[0] : undefined;
65
+ const night = dark ? colorsIn(dark)[0] : undefined;
66
+ return {
67
+ light: light ? lightOn(SCHEMES.light, given.light, light) : SCHEMES.light,
68
+ dark: night ? darkOn(SCHEMES.dark, dark, night) : SCHEMES.dark,
69
+ };
70
+ }
71
+ /** The ground with one scheme's color replaced, in the form it was given. */
72
+ export function groundWith(ground, scheme, color) {
73
+ if (typeof ground === "string")
74
+ return scheme === "light" ? color : { light: ground, dark: color };
75
+ return { ...ground, [scheme]: color };
76
+ }
77
+ /**
78
+ * The first of ink, muted ink and the accent that drops below 4.5:1 on a
79
+ * pair of schemes' grounds or on a card drawn from them, or null when each
80
+ * reads. In the light scheme an app's accent is drawn as given (FR-126),
81
+ * so it is judged as given.
82
+ */
83
+ export function groundFailure(schemes, accent) {
84
+ for (const scheme of ["light", "dark"]) {
85
+ const tokens = schemes[scheme];
86
+ const solid = colorsIn(tokens.ground)[0];
87
+ const card = composite(colorsIn(tokens.panel)[0], solid);
88
+ const pairs = [["ink", tokens.ink], ["muted ink", tokens.inkMuted], ["the accent", scheme === "light" && accent ? accent : tokens.accent]];
89
+ for (const [what, value] of pairs) {
90
+ const text = colorsIn(value)[0];
91
+ const onGround = contrast(text, solid);
92
+ const onCard = contrast(text, card);
93
+ if (onGround < AA)
94
+ return { scheme, what, text, ground: solid, ratio: onGround };
95
+ if (onCard < AA)
96
+ return { scheme, what, text, ground: solid, card, ratio: onCard };
97
+ }
98
+ }
99
+ return null;
100
+ }
101
+ //# sourceMappingURL=ground.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground.js","sourceRoot":"","sources":["../../src/theme/ground.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** The version of @graview/* that this build is — every package shares it. Written by scripts/write-framework-version.mjs. */
2
- export declare const FRAMEWORK_VERSION = "0.1.53";
2
+ export declare const FRAMEWORK_VERSION = "0.1.54";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** The version of @graview/* that this build is — every package shares it. Written by scripts/write-framework-version.mjs. */
2
- export const FRAMEWORK_VERSION = "0.1.53";
2
+ export const FRAMEWORK_VERSION = "0.1.54";
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graview/core",
3
- "version": "0.1.53",
3
+ "version": "0.1.54",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -199,7 +199,9 @@
199
199
  "./dist/field-sight.js",
200
200
  "./src/field-sight.ts",
201
201
  "./dist/publishing.js",
202
- "./src/publishing.ts"
202
+ "./src/publishing.ts",
203
+ "./dist/typing.js",
204
+ "./src/typing.ts"
203
205
  ],
204
206
  "repository": {
205
207
  "type": "git",