@ethlete/cli 3.0.0-next.24 → 3.0.0-next.26

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 (194) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/design/define-call.ts +69 -0
  3. package/design/define-part.ts +43 -9
  4. package/design/embed-page.ts +37 -4
  5. package/design/icon-sheet.ts +151 -0
  6. package/design/logo-sheet.ts +52 -0
  7. package/design/mark-part.ts +79 -2
  8. package/design/motion-drive.ts +215 -0
  9. package/design/motion-runtime.ts +224 -5
  10. package/design/motion-tokens.ts +177 -0
  11. package/design/spring.ts +53 -0
  12. package/design/token-sheet.ts +87 -0
  13. package/design/web/frame-fill.ts +4 -0
  14. package/design/web/frame-scheme.ts +44 -0
  15. package/design/web/frame.ts +239 -31
  16. package/package.json +1 -1
  17. package/src/lib/design/calls-tsconfig.d.ts +2 -0
  18. package/src/lib/design/calls-tsconfig.js +11 -5
  19. package/src/lib/design/calls-tsconfig.js.map +1 -1
  20. package/src/lib/design/check.d.ts +1 -0
  21. package/src/lib/design/check.js +62 -6
  22. package/src/lib/design/check.js.map +1 -1
  23. package/src/lib/design/contact-sheet.d.ts +9 -0
  24. package/src/lib/design/contact-sheet.js +38 -4
  25. package/src/lib/design/contact-sheet.js.map +1 -1
  26. package/src/lib/design/design-command.js +56 -7
  27. package/src/lib/design/design-command.js.map +1 -1
  28. package/src/lib/design/draw-ledger.d.ts +36 -0
  29. package/src/lib/design/draw-ledger.js +52 -0
  30. package/src/lib/design/draw-ledger.js.map +1 -0
  31. package/src/lib/design/force-interactions.d.ts +2 -1
  32. package/src/lib/design/force-interactions.js +7 -4
  33. package/src/lib/design/force-interactions.js.map +1 -1
  34. package/src/lib/design/mcp-command.d.ts +81 -0
  35. package/src/lib/design/mcp-command.js +422 -0
  36. package/src/lib/design/mcp-command.js.map +1 -0
  37. package/src/lib/design/motion-command.d.ts +71 -0
  38. package/src/lib/design/motion-command.js +308 -0
  39. package/src/lib/design/motion-command.js.map +1 -0
  40. package/src/lib/design/motion-endpoint.d.ts +61 -0
  41. package/src/lib/design/motion-endpoint.js +133 -0
  42. package/src/lib/design/motion-endpoint.js.map +1 -0
  43. package/src/lib/design/motion-flow.d.ts +5 -0
  44. package/src/lib/design/motion-flow.js +29 -0
  45. package/src/lib/design/motion-flow.js.map +1 -0
  46. package/src/lib/design/motion-shot.d.ts +43 -0
  47. package/src/lib/design/motion-shot.js +97 -0
  48. package/src/lib/design/motion-shot.js.map +1 -0
  49. package/src/lib/design/paths.d.ts +14 -0
  50. package/src/lib/design/paths.js +50 -1
  51. package/src/lib/design/paths.js.map +1 -1
  52. package/src/lib/design/ready-shots.d.ts +7 -0
  53. package/src/lib/design/ready-shots.js +22 -1
  54. package/src/lib/design/ready-shots.js.map +1 -1
  55. package/src/lib/design/render-packages.d.ts +14 -0
  56. package/src/lib/design/render-packages.js +18 -3
  57. package/src/lib/design/render-packages.js.map +1 -1
  58. package/src/lib/design/render-worker.js +1 -0
  59. package/src/lib/design/render-worker.js.map +1 -1
  60. package/src/lib/design/render.js +3 -3
  61. package/src/lib/design/render.js.map +1 -1
  62. package/src/lib/design/serve.d.ts +2 -2
  63. package/src/lib/design/serve.js +191 -21
  64. package/src/lib/design/serve.js.map +1 -1
  65. package/src/lib/design/shot-command.d.ts +13 -4
  66. package/src/lib/design/shot-command.js +30 -24
  67. package/src/lib/design/shot-command.js.map +1 -1
  68. package/src/lib/design/shot-store.d.ts +24 -0
  69. package/src/lib/design/shot-store.js +120 -0
  70. package/src/lib/design/shot-store.js.map +1 -0
  71. package/src/lib/design/shot.d.ts +37 -1
  72. package/src/lib/design/shot.js +185 -34
  73. package/src/lib/design/shot.js.map +1 -1
  74. package/src/lib/design/sketch-command.js +197 -51
  75. package/src/lib/design/sketch-command.js.map +1 -1
  76. package/src/lib/design/ssr-shims.d.ts +2 -0
  77. package/src/lib/design/ssr-shims.js +12 -1
  78. package/src/lib/design/ssr-shims.js.map +1 -1
  79. package/src/lib/design/studio-api.d.ts +31 -0
  80. package/src/lib/design/studio-api.js +118 -1
  81. package/src/lib/design/studio-api.js.map +1 -1
  82. package/src/lib/design/system/check-system.d.ts +6 -2
  83. package/src/lib/design/system/check-system.js +102 -20
  84. package/src/lib/design/system/check-system.js.map +1 -1
  85. package/src/lib/design/system/colour.d.ts +4 -1
  86. package/src/lib/design/system/colour.js +54 -2
  87. package/src/lib/design/system/colour.js.map +1 -1
  88. package/src/lib/design/system/complete-command.d.ts +1 -1
  89. package/src/lib/design/system/complete-command.js +80 -6
  90. package/src/lib/design/system/complete-command.js.map +1 -1
  91. package/src/lib/design/system/complete.d.ts +172 -9
  92. package/src/lib/design/system/complete.js +792 -167
  93. package/src/lib/design/system/complete.js.map +1 -1
  94. package/src/lib/design/system/contrast-check.d.ts +6 -1
  95. package/src/lib/design/system/contrast-check.js +167 -12
  96. package/src/lib/design/system/contrast-check.js.map +1 -1
  97. package/src/lib/design/system/drawn-open-points.d.ts +16 -0
  98. package/src/lib/design/system/drawn-open-points.js +43 -0
  99. package/src/lib/design/system/drawn-open-points.js.map +1 -0
  100. package/src/lib/design/system/exceptions.d.ts +59 -0
  101. package/src/lib/design/system/exceptions.js +132 -0
  102. package/src/lib/design/system/exceptions.js.map +1 -0
  103. package/src/lib/design/system/flows/flow.d.ts +3 -0
  104. package/src/lib/design/system/flows/flow.js +5 -3
  105. package/src/lib/design/system/flows/flow.js.map +1 -1
  106. package/src/lib/design/system/handoff.d.ts +11 -0
  107. package/src/lib/design/system/handoff.js +30 -0
  108. package/src/lib/design/system/handoff.js.map +1 -0
  109. package/src/lib/design/system/inventory-approval.d.ts +41 -0
  110. package/src/lib/design/system/inventory-approval.js +71 -0
  111. package/src/lib/design/system/inventory-approval.js.map +1 -0
  112. package/src/lib/design/system/inventory.d.ts +65 -0
  113. package/src/lib/design/system/inventory.js +168 -0
  114. package/src/lib/design/system/inventory.js.map +1 -0
  115. package/src/lib/design/system/list-system.d.ts +4 -1
  116. package/src/lib/design/system/list-system.js +11 -3
  117. package/src/lib/design/system/list-system.js.map +1 -1
  118. package/src/lib/design/system/open-points.d.ts +101 -0
  119. package/src/lib/design/system/open-points.js +156 -0
  120. package/src/lib/design/system/open-points.js.map +1 -0
  121. package/src/lib/design/system/part-ready.d.ts +52 -0
  122. package/src/lib/design/system/part-ready.js +101 -0
  123. package/src/lib/design/system/part-ready.js.map +1 -0
  124. package/src/lib/design/system/read-open-points.d.ts +27 -0
  125. package/src/lib/design/system/read-open-points.js +81 -0
  126. package/src/lib/design/system/read-open-points.js.map +1 -0
  127. package/src/lib/design/system/ready-command.d.ts +7 -0
  128. package/src/lib/design/system/ready-command.js +65 -0
  129. package/src/lib/design/system/ready-command.js.map +1 -0
  130. package/src/lib/design/system/render-check.d.ts +2 -0
  131. package/src/lib/design/system/render-check.js +216 -32
  132. package/src/lib/design/system/render-check.js.map +1 -1
  133. package/src/lib/design/system/resolve-product.d.ts +4 -4
  134. package/src/lib/design/system/resolve-product.js +22 -7
  135. package/src/lib/design/system/resolve-product.js.map +1 -1
  136. package/src/lib/design/system/rules/implements.d.ts +7 -0
  137. package/src/lib/design/system/rules/implements.js +43 -0
  138. package/src/lib/design/system/rules/implements.js.map +1 -0
  139. package/src/lib/design/system/rules/motion.d.ts +2 -0
  140. package/src/lib/design/system/rules/motion.js +26 -1
  141. package/src/lib/design/system/rules/motion.js.map +1 -1
  142. package/src/lib/design/system/rules/option-values.d.ts +15 -0
  143. package/src/lib/design/system/rules/option-values.js +145 -0
  144. package/src/lib/design/system/rules/option-values.js.map +1 -0
  145. package/src/lib/design/system/rules/stale-replace.js +80 -3
  146. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  147. package/src/lib/design/system/rules/token-selectors.js +1 -1
  148. package/src/lib/design/system/rules/token-selectors.js.map +1 -1
  149. package/src/lib/design/system/sketch/baseline.d.ts +11 -2
  150. package/src/lib/design/system/sketch/baseline.js +4 -2
  151. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  152. package/src/lib/design/system/sketch/check-sketches.d.ts +1 -0
  153. package/src/lib/design/system/sketch/check-sketches.js +4 -2
  154. package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
  155. package/src/lib/design/system/sketch/host-edit.d.ts +4 -0
  156. package/src/lib/design/system/sketch/host-edit.js +68 -0
  157. package/src/lib/design/system/sketch/host-edit.js.map +1 -0
  158. package/src/lib/design/system/sketch/merge.d.ts +3 -2
  159. package/src/lib/design/system/sketch/merge.js +79 -12
  160. package/src/lib/design/system/sketch/merge.js.map +1 -1
  161. package/src/lib/design/system/sketch/merged-parts.d.ts +11 -1
  162. package/src/lib/design/system/sketch/merged-parts.js +24 -3
  163. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  164. package/src/lib/design/system/sketch/no-visible-change.d.ts +6 -0
  165. package/src/lib/design/system/sketch/no-visible-change.js +25 -1
  166. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
  167. package/src/lib/design/system/sketch/overlay.js +11 -3
  168. package/src/lib/design/system/sketch/overlay.js.map +1 -1
  169. package/src/lib/design/system/sketch/part-definition.d.ts +36 -0
  170. package/src/lib/design/system/sketch/part-definition.js +56 -2
  171. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  172. package/src/lib/design/system/sketch/sketch.d.ts +47 -0
  173. package/src/lib/design/system/sketch/sketch.js +137 -44
  174. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  175. package/src/lib/design/system/sketch/unchanged-states.d.ts +4 -1
  176. package/src/lib/design/system/sketch/unchanged-states.js +9 -5
  177. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  178. package/src/lib/design/system/sketch/unused-closure.d.ts +12 -0
  179. package/src/lib/design/system/sketch/unused-closure.js +195 -0
  180. package/src/lib/design/system/sketch/unused-closure.js.map +1 -0
  181. package/src/lib/design/system/sketch/unused-files.d.ts +1 -1
  182. package/src/lib/design/system/sketch/unused-files.js +6 -3
  183. package/src/lib/design/system/sketch/unused-files.js.map +1 -1
  184. package/src/lib/design/system/system-modules.js +6 -9
  185. package/src/lib/design/system/system-modules.js.map +1 -1
  186. package/src/lib/design/system/system-tsconfig.d.ts +2 -1
  187. package/src/lib/design/system/system-tsconfig.js +10 -6
  188. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  189. package/src/lib/design/system/ts-source.d.ts +3 -0
  190. package/src/lib/design/system/ts-source.js +21 -4
  191. package/src/lib/design/system/ts-source.js.map +1 -1
  192. package/src/lib/design/thumb.d.ts +31 -4
  193. package/src/lib/design/thumb.js +105 -40
  194. package/src/lib/design/thumb.js.map +1 -1
@@ -1,7 +1,11 @@
1
- import { CallVariant, Drawing, mountDrawing, placeOverlays } from '../define-call';
2
- import { Part } from '../define-part';
3
- import { fitEmbed } from '../embed-page';
4
- import { runRules } from '../motion-runtime';
1
+ import { CallVariant, Drawing, fitOutOfFlow, mountDrawing, placeOverlays } from '../define-call';
2
+ import { Motion, Part } from '../define-part';
3
+ import { applyEmbed, fitEmbed } from '../embed-page';
4
+ import { paintFill } from './frame-fill';
5
+ import { pinScheme } from './frame-scheme';
6
+ import { createMotionDriver, emulateReducedMotion, motionDriveMessageOf } from '../motion-drive';
7
+ import { runRules, stepMotion, SteppedMotion } from '../motion-runtime';
8
+ import { rootTokensOf, withTokenNames } from '../motion-tokens';
5
9
  import { calls } from 'virtual:design-explore';
6
10
  import { loadEnv, loadProductEnv } from 'virtual:design-explore/env';
7
11
  import { parts, sketchParts, sketchTokens, tokens } from 'virtual:design-explore/system';
@@ -17,6 +21,8 @@ const fit = product !== null && params.has('fit');
17
21
  const interaction = product ? params.get('interaction') : null;
18
22
  const propsSketch = product ? params.get('props') : null;
19
23
  const propsVariant = params.get('props-variant') ?? '';
24
+ const motionName = product ? params.get('motion') : null;
25
+ const flowTo = product ? params.get('flow-to') : null;
20
26
 
21
27
  // Listens before the drawing loads, so an error it throws while loading counts; `report` exists only once `reporting` is set.
22
28
  let errored = false;
@@ -38,7 +44,11 @@ const fill = params.get('fill');
38
44
  // On <html> a theme class ties with the `:root` defaults of the theme CSS, which come later and win.
39
45
  if (surface) root.classList.add(`et-surface--${surface}`);
40
46
  if (color) root.classList.add(`et-color--${color}`);
41
- if (fill) document.body.style.background = `var(--${fill})`;
47
+ if (fill) paintFill(document.body, fill);
48
+
49
+ const scheme = params.get('scheme');
50
+
51
+ if (scheme === 'light' || scheme === 'dark') pinScheme(document, scheme);
42
52
  if (fit) {
43
53
  document.documentElement.style.overflow = 'hidden';
44
54
  root.style.width = 'max-content';
@@ -64,6 +74,12 @@ const fail = (message: string) => {
64
74
  return null;
65
75
  };
66
76
 
77
+ const failMissing = (message: string) => {
78
+ document.documentElement.setAttribute('data-et-missing', '');
79
+
80
+ return fail(message);
81
+ };
82
+
67
83
  const showSetupError = (message: string) => {
68
84
  markFailed(message);
69
85
 
@@ -79,14 +95,25 @@ const showSetupError = (message: string) => {
79
95
 
80
96
  const messageOf = (error: unknown) => (error instanceof Error ? error.message : String(error));
81
97
 
98
+ const RETRY_DELAYS = [300, 1500];
99
+
100
+ // A part file that changes while frames load can fail its import once; Chromium fetches a failed module again.
101
+ const retried = <T>(load: () => Promise<T>, attempt = 0): Promise<T> =>
102
+ load().catch((error: unknown) => {
103
+ const delay = RETRY_DELAYS[attempt];
104
+ if (delay === undefined) throw error;
105
+
106
+ return new Promise<void>((resolve) => setTimeout(resolve, delay)).then(() => retried(load, attempt + 1));
107
+ });
108
+
82
109
  let drawnPart: { part: Part<unknown>; states: Record<string, unknown> } | null = null;
83
110
 
84
111
  const drawCall = async (): Promise<Drawing | null> => {
85
112
  const call = calls[slug];
86
- if (!call) return fail(`design-explore: no call "${slug}"`);
113
+ if (!call) return failMissing(`design-explore: no call "${slug}"`);
87
114
 
88
115
  const variant: CallVariant | undefined = (await call()).default.variants.find((o) => o.key === key);
89
- if (!variant) return fail(`design-explore: call "${slug}" has no variant "${key}"`);
116
+ if (!variant) return failMissing(`design-explore: call "${slug}" has no variant "${key}"`);
90
117
 
91
118
  return variant.load().then(
92
119
  (module) => module.default,
@@ -97,7 +124,7 @@ const drawCall = async (): Promise<Drawing | null> => {
97
124
  const drawPart = async (name: string): Promise<Drawing | null> => {
98
125
  const load = sketch ? sketchParts[name]?.[sketch]?.[sketchVariant]?.[partKey] : parts[name]?.[partKey];
99
126
  if (!load)
100
- return fail(
127
+ return failMissing(
101
128
  sketch
102
129
  ? `design-explore: variant "${sketchVariant}" of the sketch on ${sketch} in product "${name}" has no part "${partKey}"`
103
130
  : `design-explore: product "${name}" has no part "${partKey}"`,
@@ -105,14 +132,14 @@ const drawPart = async (name: string): Promise<Drawing | null> => {
105
132
 
106
133
  const loadProps = propsSketch ? sketchParts[name]?.[propsSketch]?.[propsVariant]?.[partKey] : load;
107
134
  if (!loadProps)
108
- return fail(
135
+ return failMissing(
109
136
  `design-explore: variant "${propsVariant}" of the sketch on ${propsSketch} in product "${name}" has no part "${partKey}"`,
110
137
  );
111
138
 
112
139
  try {
113
- const [{ default: part }, { default: holder }] = await Promise.all([load(), loadProps()]);
140
+ const [{ default: part }, { default: holder }] = await Promise.all([retried(load), retried(loadProps)]);
114
141
 
115
- if (!(key in holder.states)) return fail(`design-explore: part "${partKey}" has no state "${key}"`);
142
+ if (!(key in holder.states)) return failMissing(`design-explore: part "${partKey}" has no state "${key}"`);
116
143
 
117
144
  drawnPart = { part: part as Part<unknown>, states: holder.states };
118
145
 
@@ -141,7 +168,7 @@ const force = (element: Element, name: string) => {
141
168
  };
142
169
 
143
170
  const forced = async (css: string) => {
144
- if (!/:(?:hover|focus-visible|active)/iu.test(css)) return css;
171
+ if (!/:(?:hover|focus-visible|active|focus-within)/iu.test(css)) return css;
145
172
 
146
173
  const response = await fetch('/__design/force', { method: 'POST', body: css }).catch(() => null);
147
174
 
@@ -168,27 +195,198 @@ const report = () => {
168
195
  );
169
196
  };
170
197
 
171
- const runPartRules = ({ part, states }: NonNullable<typeof drawnPart>, styles: string) => {
198
+ const reportPainted = () =>
199
+ requestAnimationFrame(() =>
200
+ requestAnimationFrame(() => parent.postMessage({ type: 'design-explore:painted', variant: key }, '*')),
201
+ );
202
+
203
+ const stateMarkupOf = ({ part, states }: NonNullable<typeof drawnPart>, styles: string) => {
172
204
  const sheets = new Set([styles]);
173
205
 
206
+ return (state: string) =>
207
+ Promise.resolve(part.render(states[state])).then((drawn) =>
208
+ sheets.has(drawn.styles)
209
+ ? drawn.body
210
+ : forced(drawn.styles).then((css) => {
211
+ const style = document.createElement('style');
212
+
213
+ sheets.add(drawn.styles);
214
+ style.textContent = css;
215
+ document.head.append(style);
216
+
217
+ return drawn.body;
218
+ }),
219
+ );
220
+ };
221
+
222
+ const exposeStepped = (options: { start: () => Promise<SteppedMotion>; interrupt: number | null }) => {
223
+ let stepped: SteppedMotion | null = null;
224
+ const steppedOf = () => {
225
+ if (!stepped) throw new Error('design-explore: start the motion first');
226
+
227
+ return stepped;
228
+ };
229
+
230
+ Object.assign(window, {
231
+ etMotion: {
232
+ start: () =>
233
+ options.start().then((started) => {
234
+ stepped = started;
235
+
236
+ return true;
237
+ }),
238
+ seek: (ms: number) => steppedOf().seek(ms),
239
+ bounds: () => steppedOf().bounds(),
240
+ timeline: () => {
241
+ const tokens = rootTokensOf(document);
242
+
243
+ return {
244
+ end: steppedOf().end(),
245
+ tracks: steppedOf()
246
+ .tracks()
247
+ .map((track) => withTokenNames(track, tokens)),
248
+ interrupt: options.interrupt,
249
+ };
250
+ },
251
+ },
252
+ });
253
+ };
254
+
255
+ const motionStartOf = (options: {
256
+ drawn: NonNullable<typeof drawnPart>;
257
+ motion: Motion;
258
+ markupOf: (state: string) => Promise<string>;
259
+ switching?: () => void;
260
+ }) => {
261
+ const { drawn, motion, markupOf } = options;
262
+
263
+ return () =>
264
+ Promise.all([markupOf(motion.to), motion.interrupt === undefined ? null : markupOf(motion.from)]).then(
265
+ ([markup, back]) => {
266
+ options.switching?.();
267
+
268
+ return stepMotion({
269
+ root,
270
+ markup,
271
+ motion,
272
+ ...(back === null
273
+ ? {}
274
+ : {
275
+ reverse: {
276
+ markup: back,
277
+ motion: Object.values(drawn.part.motions ?? {}).find(
278
+ (other) => other.from === motion.to && other.to === motion.from,
279
+ ),
280
+ },
281
+ }),
282
+ });
283
+ },
284
+ );
285
+ };
286
+
287
+ const exposeMotion = (options: { drawn: NonNullable<typeof drawnPart>; name: string; styles: string }) => {
288
+ const { drawn, name, styles } = options;
289
+ const motion = drawn.part.motions?.[name];
290
+
291
+ if (!motion) {
292
+ const known = Object.keys(drawn.part.motions ?? {});
293
+
294
+ showSetupError(`design-explore: part "${partKey}" has no motion "${name}" - it has: ${known.join(', ') || 'none'}`);
295
+
296
+ return;
297
+ }
298
+
299
+ exposeStepped({
300
+ interrupt: motion.interrupt ?? null,
301
+ start: motionStartOf({ drawn, motion, markupOf: stateMarkupOf(drawn, styles) }),
302
+ });
303
+ };
304
+
305
+ const settleAnimations = () => {
306
+ for (const animation of document.getAnimations()) {
307
+ if (Number.isFinite(animation.effect?.getComputedTiming().endTime)) animation.finish();
308
+ else animation.cancel();
309
+ }
310
+ };
311
+
312
+ const listenForDrive = (drawn: NonNullable<typeof drawnPart>, styles: string) => {
313
+ const markupOf = stateMarkupOf(drawn, styles);
314
+ const drawnMarkup = root.innerHTML;
315
+ let restore: () => void = () => undefined;
316
+
317
+ const driver = createMotionDriver({
318
+ document,
319
+ reply: (answer) => parent.postMessage({ ...answer, variant: key }, '*'),
320
+ released: () => {
321
+ restore();
322
+ restore = () => undefined;
323
+ },
324
+ start: (name, reduced) => {
325
+ const motion = drawn.part.motions?.[name];
326
+
327
+ if (!motion) return Promise.reject(new Error(`design-explore: part "${partKey}" has no motion "${name}"`));
328
+ if (motion.from !== key)
329
+ return Promise.reject(new Error(`design-explore: motion "${name}" starts at "${motion.from}", not "${key}"`));
330
+
331
+ settleAnimations();
332
+ restore();
333
+ root.innerHTML = drawnMarkup;
334
+
335
+ return motionStartOf({
336
+ drawn,
337
+ motion,
338
+ markupOf,
339
+ switching: () => {
340
+ restore = emulateReducedMotion(document, reduced);
341
+ },
342
+ })();
343
+ },
344
+ });
345
+
346
+ addEventListener('message', (event) => {
347
+ const message = event.source === parent ? motionDriveMessageOf(event.data) : null;
348
+
349
+ if (message) void driver.handle(message);
350
+ });
351
+ };
352
+
353
+ const exposeFlowLine = (options: { product: string; to: string; styles: string }) => {
354
+ const [toPart = '', toState = ''] = options.to.split('#');
355
+ const load = parts[options.product]?.[toPart];
356
+
357
+ if (!load) {
358
+ showSetupError(`design-explore: product "${options.product}" has no part "${toPart}"`);
359
+
360
+ return;
361
+ }
362
+
363
+ exposeStepped({
364
+ interrupt: null,
365
+ start: () =>
366
+ retried(load).then(({ default: part }) => {
367
+ const states = (part as Part<unknown>).states;
368
+
369
+ if (!(toState in states)) throw new Error(`design-explore: part "${toPart}" has no state "${toState}"`);
370
+
371
+ // The styles of the to page ride in the markup: in <head> they would restyle the from page before the View Transition captures it.
372
+
373
+ return Promise.resolve((part as Part<unknown>).render(states[toState]))
374
+ .then((drawn) =>
375
+ drawn.styles === options.styles
376
+ ? drawn.body
377
+ : forced(drawn.styles).then((css) => `<style>${css}</style>${drawn.body}`),
378
+ )
379
+ .then((markup) => stepMotion({ root, markup, motion: { from: key, to: toState, viewTransition: true } }));
380
+ }),
381
+ });
382
+ };
383
+
384
+ const runPartRules = (drawn: NonNullable<typeof drawnPart>, styles: string) => {
174
385
  runRules(root, {
175
386
  state: key,
176
- rules: part.rules ?? [],
177
- motions: part.motions,
178
- render: (state) =>
179
- Promise.resolve(part.render(states[state])).then((drawn) =>
180
- sheets.has(drawn.styles)
181
- ? drawn.body
182
- : forced(drawn.styles).then((css) => {
183
- const style = document.createElement('style');
184
-
185
- sheets.add(drawn.styles);
186
- style.textContent = css;
187
- document.head.append(style);
188
-
189
- return drawn.body;
190
- }),
191
- ),
387
+ rules: drawn.part.rules ?? [],
388
+ motions: drawn.part.motions,
389
+ render: stateMarkupOf(drawn, styles),
192
390
  switched: () => {
193
391
  const partRoot = partRootOf(root);
194
392
 
@@ -225,10 +423,18 @@ const drawFrame = async () => {
225
423
  if (error)
226
424
  showSetupError(`design-explore: setup of ${product ? 'state' : 'variant'} "${key}" failed\n${messageOf(error)}`);
227
425
 
228
- if (drawnPart?.part.rules?.length) runPartRules(drawnPart, loaded.styles ?? '');
426
+ if (flowTo && product) exposeFlowLine({ product, to: flowTo, styles: loaded.styles ?? '' });
427
+ else if (motionName && drawnPart) exposeMotion({ drawn: drawnPart, name: motionName, styles: loaded.styles ?? '' });
428
+ else if (drawnPart?.part.rules?.length) runPartRules(drawnPart, loaded.styles ?? '');
429
+
430
+ if (!flowTo && !motionName && drawnPart) listenForDrive(drawnPart, loaded.styles ?? '');
229
431
  }
230
432
 
231
- const place = () => placeOverlays(root);
433
+ const place = () => {
434
+ applyEmbed(frameElement, root);
435
+ placeOverlays(root);
436
+ fitOutOfFlow(root, { sideways: fit });
437
+ };
232
438
 
233
439
  new MutationObserver(place).observe(root, { childList: true, subtree: true });
234
440
  new ResizeObserver(place).observe(root);
@@ -240,6 +446,7 @@ const drawFrame = async () => {
240
446
  if (fit) reported.observe(root);
241
447
  reporting = true;
242
448
  report();
449
+ reportPainted();
243
450
 
244
451
  addEventListener('keydown', (event) => {
245
452
  if (event.key === 'Escape') parent.postMessage({ type: 'design-explore:escape', variant: key }, '*');
@@ -256,4 +463,5 @@ void drawFrame().catch((error: unknown) => {
256
463
  fail(`design-explore: frame failed\n${messageOf(error)}`);
257
464
  reporting = true;
258
465
  report();
466
+ reportPainted();
259
467
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethlete/cli",
3
- "version": "3.0.0-next.24",
3
+ "version": "3.0.0-next.26",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ethlete-io/ethdk",
@@ -16,4 +16,6 @@ export declare const DRAWING_COMPILER_OPTIONS: {
16
16
  * this config for itself. The same config goes to `.ethlete/design/tsconfig.json`, the nearest
17
17
  * tsconfig an editor finds for a call file.
18
18
  */
19
+ /** Writes `text` unless the file already holds it: Vite reloads every frame on any write to a tsconfig it watches. */
20
+ export declare const writeTsconfigText: (path: string, text: string) => void;
19
21
  export declare const writeCallsTsconfig: (target: string) => string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.writeCallsTsconfig = exports.DRAWING_COMPILER_OPTIONS = void 0;
3
+ exports.writeCallsTsconfig = exports.writeTsconfigText = exports.DRAWING_COMPILER_OPTIONS = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  const paths_1 = require("./paths");
@@ -23,13 +23,19 @@ exports.DRAWING_COMPILER_OPTIONS = {
23
23
  * this config for itself. The same config goes to `.ethlete/design/tsconfig.json`, the nearest
24
24
  * tsconfig an editor finds for a call file.
25
25
  */
26
+ /** Writes `text` unless the file already holds it: Vite reloads every frame on any write to a tsconfig it watches. */
27
+ const writeTsconfigText = (path, text) => {
28
+ if ((0, fs_1.existsSync)(path) && (0, fs_1.readFileSync)(path, 'utf8') === text)
29
+ return;
30
+ (0, fs_1.writeFileSync)(path, text);
31
+ };
32
+ exports.writeTsconfigText = writeTsconfigText;
26
33
  const writeCallsTsconfig = (target) => {
27
- var _a, _b, _c;
28
34
  const work = (0, paths_1.workRootOf)(target);
29
35
  const path = (0, path_1.resolve)(work, 'tsconfig.json');
30
36
  const defineCall = (0, path_1.resolve)((0, paths_1.installedAssetRoot)(), 'define-call.ts');
31
37
  const inlineCss = (0, path_1.resolve)((0, paths_1.installedAssetRoot)(), 'css-inline.d.ts');
32
- const typePaths = (0, render_packages_1.typePathsOf)({ packages: (_c = (_b = (_a = (0, paths_1.readConfig)(target)) === null || _a === void 0 ? void 0 : _a.render) === null || _b === void 0 ? void 0 : _b.packages) !== null && _c !== void 0 ? _c : {}, target });
38
+ const typePaths = (0, render_packages_1.typePathsOf)({ packages: (0, render_packages_1.renderPackagesOf)({ target, config: (0, paths_1.readConfig)(target) }), target });
33
39
  const config = {
34
40
  compilerOptions: Object.assign(Object.assign({}, exports.DRAWING_COMPILER_OPTIONS), { paths: Object.assign(Object.assign({}, typePaths), { '@design-explore': [defineCall] }) }),
35
41
  include: [`${(0, paths_1.callsRootOf)(target)}/**/*.ts`, defineCall, inlineCss],
@@ -37,9 +43,9 @@ const writeCallsTsconfig = (target) => {
37
43
  const text = `${JSON.stringify(config, null, 2)}\n`;
38
44
  const editorPath = (0, path_1.resolve)(target, paths_1.DESIGN_DIR, 'tsconfig.json');
39
45
  (0, fs_1.mkdirSync)(work, { recursive: true });
40
- (0, fs_1.writeFileSync)(path, text);
46
+ (0, exports.writeTsconfigText)(path, text);
41
47
  (0, fs_1.mkdirSync)((0, path_1.dirname)(editorPath), { recursive: true });
42
- (0, fs_1.writeFileSync)(editorPath, text);
48
+ (0, exports.writeTsconfigText)(editorPath, text);
43
49
  return path;
44
50
  };
45
51
  exports.writeCallsTsconfig = writeCallsTsconfig;
@@ -1 +1 @@
1
- {"version":3,"file":"calls-tsconfig.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/calls-tsconfig.ts"],"names":[],"mappings":";;;AAAA,2BAA8C;AAC9C,+BAAwC;AACxC,mCAA8F;AAC9F,uDAAgD;AAEnC,QAAA,wBAAwB,GAAG;IACtC,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,UAAU;IAClB,gBAAgB,EAAE,SAAS;IAC3B,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IACtB,MAAM,EAAE,IAAI;IACZ,wBAAwB,EAAE,IAAI;IAC9B,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE;;IACnD,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,gBAAgB,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,iBAAiB,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAA,6BAAW,EAAC,EAAE,QAAQ,EAAE,MAAA,MAAA,MAAA,IAAA,kBAAU,EAAC,MAAM,CAAC,0CAAE,MAAM,0CAAE,QAAQ,mCAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEhG,MAAM,MAAM,GAAG;QACb,eAAe,kCACV,gCAAwB,KAC3B,KAAK,kCAAO,SAAS,KAAE,iBAAiB,EAAE,CAAC,UAAU,CAAC,MACvD;QACD,OAAO,EAAE,CAAC,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC;KACnE,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,MAAM,EAAE,kBAAU,EAAE,eAAe,CAAC,CAAC;IAEhE,IAAA,cAAS,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,IAAA,kBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1B,IAAA,cAAS,EAAC,IAAA,cAAO,EAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,IAAA,kBAAa,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEhC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAxBW,QAAA,kBAAkB,sBAwB7B"}
1
+ {"version":3,"file":"calls-tsconfig.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/calls-tsconfig.ts"],"names":[],"mappings":";;;AAAA,2BAAwE;AACxE,+BAAwC;AACxC,mCAA8F;AAC9F,uDAAkE;AAErD,QAAA,wBAAwB,GAAG;IACtC,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,UAAU;IAClB,gBAAgB,EAAE,SAAS;IAC3B,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IACtB,MAAM,EAAE,IAAI;IACZ,wBAAwB,EAAE,IAAI;IAC9B,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF;;;;;GAKG;AACH,sHAAsH;AAC/G,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE;IAC9D,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI;QAAE,OAAO;IAEpE,IAAA,kBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC;AAJW,QAAA,iBAAiB,qBAI5B;AAEK,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE;IACnD,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,gBAAgB,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,iBAAiB,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAA,6BAAW,EAAC,EAAE,QAAQ,EAAE,IAAA,kCAAgB,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAA,kBAAU,EAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9G,MAAM,MAAM,GAAG;QACb,eAAe,kCACV,gCAAwB,KAC3B,KAAK,kCAAO,SAAS,KAAE,iBAAiB,EAAE,CAAC,UAAU,CAAC,MACvD;QACD,OAAO,EAAE,CAAC,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC;KACnE,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,MAAM,EAAE,kBAAU,EAAE,eAAe,CAAC,CAAC;IAEhE,IAAA,cAAS,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,IAAA,yBAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,IAAA,cAAS,EAAC,IAAA,cAAO,EAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,IAAA,yBAAiB,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEpC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAxBW,QAAA,kBAAkB,sBAwB7B"}
@@ -4,6 +4,7 @@
4
4
  * error draws an overlay on top of the drawing, so a screenshot of one looks like a design -
5
5
  * never screenshot before this says `ok`. With `--call`, the call's status follows the check, but
6
6
  * a check that cannot run (no browser, no server, a stale server) leaves the status it found.
7
+ * `--receipt <path>` also writes what the check said and whether it passed to that file.
7
8
  */
8
9
  export declare const checkDesign: (options: {
9
10
  target: string;
@@ -11,6 +11,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.checkDesign = void 0;
13
13
  const child_process_1 = require("child_process");
14
+ const fs_1 = require("fs");
15
+ const path_1 = require("path");
14
16
  const browser_1 = require("./browser");
15
17
  const calls_tsconfig_1 = require("./calls-tsconfig");
16
18
  const paths_1 = require("./paths");
@@ -186,7 +188,7 @@ const runChecks = (options) => __awaiter(void 0, void 0, void 0, function* () {
186
188
  const wanted = (_c = flags['--variant']) === null || _c === void 0 ? void 0 : _c[0];
187
189
  const tsconfig = '--tsconfig' in flags ? ((_e = (_d = flags['--tsconfig']) === null || _d === void 0 ? void 0 : _d[0]) !== null && _e !== void 0 ? _e : (0, calls_tsconfig_1.writeCallsTsconfig)(target)) : null;
188
190
  if (lintFiles.length === 0 && !tsconfig && !slug) {
189
- console.error(`usage: ${invocation} check [--lint <file>…] [--tsconfig [path]] [--call <slug> [--variant <key>]]`);
191
+ console.error(`usage: ${invocation} check [--lint <file>…] [--tsconfig [path]] [--call <slug> [--variant <key>]] [--receipt <path>]`);
190
192
  return 2;
191
193
  }
192
194
  if (lintFiles.length > 0) {
@@ -218,28 +220,83 @@ const runChecks = (options) => __awaiter(void 0, void 0, void 0, function* () {
218
220
  const base = (_f = process.env['DE_URL']) !== null && _f !== void 0 ? _f : `http://localhost:${config ? (0, paths_1.portOf)(config) : paths_1.DEFAULT_PORT}`;
219
221
  return runBrowser({ target, base, slug, wanted, fails });
220
222
  });
223
+ const receiptArgvOf = (argv) => {
224
+ var _a;
225
+ const index = argv.indexOf('--receipt');
226
+ if (index === -1)
227
+ return { receipt: null, rest: argv };
228
+ return { receipt: (_a = argv[index + 1]) !== null && _a !== void 0 ? _a : null, rest: [...argv.slice(0, index), ...argv.slice(index + 2)] };
229
+ };
230
+ const writeReceipt = (options) => {
231
+ var _a, _b, _c, _d;
232
+ const flags = parse(options.argv, ['--lint', '--tsconfig', '--call', '--variant', '--product']);
233
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(options.path), { recursive: true });
234
+ (0, fs_1.writeFileSync)(options.path, JSON.stringify({
235
+ call: (_b = (_a = flags['--call']) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null,
236
+ variant: (_d = (_c = flags['--variant']) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : null,
237
+ ok: options.ok,
238
+ at: Math.floor(Date.now() / 1000),
239
+ said: options.said.trim(),
240
+ }));
241
+ };
221
242
  /**
222
243
  * Finds out why a call does not render, in the cheapest order: eslint on the named files, then
223
244
  * `tsc --noEmit` over the checkout's calls, then the live page in a headless browser. A compile
224
245
  * error draws an overlay on top of the drawing, so a screenshot of one looks like a design -
225
246
  * never screenshot before this says `ok`. With `--call`, the call's status follows the check, but
226
247
  * a check that cannot run (no browser, no server, a stale server) leaves the status it found.
248
+ * `--receipt <path>` also writes what the check said and whether it passed to that file.
227
249
  */
228
250
  const checkDesign = (options) => __awaiter(void 0, void 0, void 0, function* () {
251
+ const { receipt, rest } = receiptArgvOf(options.argv);
252
+ if (!receipt)
253
+ return checkWithStatus(options);
254
+ const said = [];
255
+ const log = console.log;
256
+ const error = console.error;
257
+ const tee = (write) => (...lines) => {
258
+ said.push(lines.map(String).join(' '));
259
+ write(...lines);
260
+ };
261
+ console.log = tee(log);
262
+ console.error = tee(error);
263
+ try {
264
+ const code = yield checkWithStatus(Object.assign(Object.assign({}, options), { argv: rest }));
265
+ writeReceipt({ path: receipt, argv: rest, ok: code === 0, said: said.join('\n') });
266
+ return code;
267
+ }
268
+ catch (thrown) {
269
+ said.push(thrown instanceof Error ? thrown.message : String(thrown));
270
+ writeReceipt({ path: receipt, argv: rest, ok: false, said: said.join('\n') });
271
+ throw thrown;
272
+ }
273
+ finally {
274
+ console.log = log;
275
+ console.error = error;
276
+ }
277
+ });
278
+ exports.checkDesign = checkDesign;
279
+ const checkWithStatus = (options) => __awaiter(void 0, void 0, void 0, function* () {
229
280
  var _a, _b;
230
- const { target, argv, invocation } = options;
281
+ const { target, invocation } = options;
282
+ const complete = options.argv.includes('--complete');
283
+ const argv = options.argv.filter((argument) => argument !== '--complete');
231
284
  const flags = parse(argv, ['--lint', '--tsconfig', '--call', '--variant', '--product']);
232
285
  const products = flags['--product'];
233
286
  if (products) {
234
287
  if (products.length === 0) {
235
- console.error(`usage: ${invocation} check --product <name>…`);
288
+ console.error(`usage: ${invocation} check --product <name>… [--complete]`);
236
289
  return 2;
237
290
  }
238
- return (0, check_system_1.checkSystemRendered)({ target, config: (_a = (0, paths_1.readConfig)(target)) !== null && _a !== void 0 ? _a : {}, products });
291
+ return (0, check_system_1.checkSystemRendered)({ target, config: (_a = (0, paths_1.readConfig)(target)) !== null && _a !== void 0 ? _a : {}, products, complete });
239
292
  }
240
293
  const config = argv.length === 0 ? (0, paths_1.readConfig)(target) : null;
241
294
  if ((config === null || config === void 0 ? void 0 : config.products) && Object.keys(config.products).length > 0)
242
- return (0, check_system_1.checkSystemRendered)({ target, config, products: Object.keys(config.products) });
295
+ return (0, check_system_1.checkSystemRendered)({ target, config, products: Object.keys(config.products), complete });
296
+ if (complete) {
297
+ console.error(`usage: ${invocation} check [--product <name>…] --complete - --complete checks products only`);
298
+ return 2;
299
+ }
243
300
  const slug = (_b = flags['--call']) === null || _b === void 0 ? void 0 : _b[0];
244
301
  let failure = '';
245
302
  let blocked = false;
@@ -280,5 +337,4 @@ const checkDesign = (options) => __awaiter(void 0, void 0, void 0, function* ()
280
337
  throw error;
281
338
  }
282
339
  });
283
- exports.checkDesign = checkDesign;
284
340
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/check.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,15 @@ export declare const changedBoxesOf: (options: {
86
86
  before: Buffer;
87
87
  after: Buffer;
88
88
  }) => Promise<ChangedBox[]>;
89
+ /**
90
+ * The share of the pixels each of `others` changes from `base`, from 0 to 1, over the larger of both sizes: a pixel
91
+ * only one of them covers counts as changed.
92
+ */
93
+ export declare const changedSharesOf: (options: {
94
+ browser: Browser;
95
+ base: Buffer;
96
+ others: Buffer[];
97
+ }) => Promise<number[]>;
89
98
  /** The page that lays each row of cells side by side, a label above every cell, the rows stacked. */
90
99
  export declare const contactSheetHtml: (rows: SheetCell[][]) => string;
91
100
  /** Draws the cells into one PNG in the given browser, and returns one line per diff cell with its pixel result. */