playwright-director 0.2.0 → 0.3.0
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 +45 -3
- package/dist/Tutorial.d.ts +13 -0
- package/dist/Tutorial.d.ts.map +1 -1
- package/dist/Tutorial.js +41 -0
- package/dist/Tutorial.js.map +1 -1
- package/dist/cursor.d.ts +2 -0
- package/dist/cursor.d.ts.map +1 -1
- package/dist/cursor.js +6 -1
- package/dist/cursor.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/overlay.js +3 -3
- package/dist/overlay.js.map +1 -1
- package/dist/zoom.d.ts +65 -0
- package/dist/zoom.d.ts.map +1 -0
- package/dist/zoom.js +295 -0
- package/dist/zoom.js.map +1 -0
- package/package.json +1 -1
- package/skills/tutorialize/SKILL.md +3 -0
- package/skills/tutorialize/agent.md +5 -0
- package/skills/tutorialize/references/api.md +46 -1
- package/skills/tutorialize/references/storytelling.md +30 -0
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ An AI agent can also write or adapt the test for a specific communication goal
|
|
|
17
17
|
- [Installation](#installation)
|
|
18
18
|
- [Quick Start](#quick-start)
|
|
19
19
|
- [API Reference](#api-reference)
|
|
20
|
+
- [Zooming on an element](#zooming-on-an-element)
|
|
20
21
|
- [Multiple user profiles](#multiple-user-profiles)
|
|
21
22
|
- [Variants — record the same tutorial for mobile](#variants--record-the-same-tutorial-for-mobile)
|
|
22
23
|
- [TTS Configuration](#tts-configuration)
|
|
@@ -47,6 +48,8 @@ Most software teams maintain **tests** and **documentation** separately. Tests v
|
|
|
47
48
|
- **Step overlays** — On-screen banners showing current step, progress bar, and descriptions
|
|
48
49
|
- **Context screens** — Goal / clarification / attention cards between steps to explain what's happening
|
|
49
50
|
- **Background music** — Looping audio with fade-out on completion
|
|
51
|
+
- **Camera zoom** — `zoom()` pushes in on a button, a field or a whole panel, optionally blurring the rest, then zooms back out
|
|
52
|
+
- **Blurred secrets** — `typeBlurred()` types passwords and API keys into a field that stays blurred in the video
|
|
50
53
|
- **Email previews** — Simulated email popups for verification flow demos
|
|
51
54
|
- **Multiple user profiles** — Two signed-in personas as browser-like tabs in one video, with an optional side-by-side moment
|
|
52
55
|
- **ffmpeg post-processing** — Automatic video + audio merge with timeline-accurate voice placement
|
|
@@ -220,8 +223,12 @@ const tutorial = new Tutorial(page, options);
|
|
|
220
223
|
| `click(locator)` | Click with cursor animation and highlight |
|
|
221
224
|
| `fill(locator, value)` | Fill input with highlight |
|
|
222
225
|
| `typeSlowly(locator, value, delay?)` | Type character by character (visual effect) |
|
|
226
|
+
| `typeBlurred(locator, value, options?)` | Type a secret into a field that stays blurred — options `{ delay?: 50, blur?: 4 (px), reveal?: false }` (or a number = `delay`). The blur is **not** removed afterwards unless `reveal: true` |
|
|
227
|
+
| `unblur(locator)` | Remove the blur left by `typeBlurred()` |
|
|
223
228
|
| `selectOption(locator, value)` | Select dropdown option with highlight |
|
|
224
229
|
| `highlight(locator, duration?)` | Highlight an element |
|
|
230
|
+
| `zoom(locator, options?)` | Camera zoom on an element, hold, zoom back out — see [Zooming on an element](#zooming-on-an-element) |
|
|
231
|
+
| `zoomIn(locator, options?)` / `zoomOut()` | Zoom in and stay zoomed (interact while zoomed), then zoom back out |
|
|
225
232
|
| `moveMouseToElement(locator)` | Animate cursor to element |
|
|
226
233
|
| `showEmailPreview(options)` | Show simulated email popup |
|
|
227
234
|
| `switchPage(page)` | Switch recording to another tab/window |
|
|
@@ -251,6 +258,41 @@ const tutorial = new Tutorial(page, options);
|
|
|
251
258
|
| `style` | `'goal' \| 'clarification' \| 'attention'` | Visual style |
|
|
252
259
|
| `voiceText` | `string` | Custom TTS text |
|
|
253
260
|
|
|
261
|
+
### Zooming on an element
|
|
262
|
+
|
|
263
|
+
`zoom()` pushes the camera in on an element — a button, a form field, a whole
|
|
264
|
+
card or panel — holds, then zooms back out. Optionally the rest of the page is
|
|
265
|
+
blurred. The step banner and cursor stay crisp and in place: only the page
|
|
266
|
+
zooms.
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
tutorial.step('The Pro plan', async () => {
|
|
270
|
+
await tutorial.zoom(page.locator('#pro-plan'), { blur: true });
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
// Stay zoomed while acting — clicks and the cursor work in the zoomed view
|
|
274
|
+
tutorial.step('Pick it', async () => {
|
|
275
|
+
await tutorial.zoomIn(page.locator('#pick-pro'));
|
|
276
|
+
await tutorial.click(page.locator('#pick-pro'));
|
|
277
|
+
await tutorial.zoomOut();
|
|
278
|
+
});
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+

|
|
282
|
+
|
|
283
|
+
| Option | Type | Default | Description |
|
|
284
|
+
|---|---|---|---|
|
|
285
|
+
| `scale` | `number` | auto | Zoom factor. Auto fits the element to ~70% of the viewport, capped at 2.5× (never below 1× — a huge element just gets the blur) |
|
|
286
|
+
| `duration` | `number` | `1500` | `zoom()` only: how long to hold the zoomed view (ms) |
|
|
287
|
+
| `blur` | `boolean \| number` | `false` | Blur and slightly dim everything but the element. `true` = 4px, a number sets the radius |
|
|
288
|
+
| `transition` | `number` | `600` | Duration of each zoom-in / zoom-out animation (ms) |
|
|
289
|
+
|
|
290
|
+
The zoom stays "reasonable": the view never pans past the page edge, so an
|
|
291
|
+
element near a corner stays off-center instead of revealing blank canvas.
|
|
292
|
+
It works across scenes (the whole stage zooms) and on scrolled pages with
|
|
293
|
+
fixed headers. Like the rest of the tutorial layer, it is a no-op when
|
|
294
|
+
`TUTORIAL_MODE` is off. Keep a `zoomIn()`/`zoomOut()` pair inside one step.
|
|
295
|
+
|
|
254
296
|
## Multiple user profiles
|
|
255
297
|
|
|
256
298
|
Some stories need two people: an accountant issues an invoice, a client pays it.
|
|
@@ -593,8 +635,8 @@ The skill bundles two reference documents that Claude reads before tutorializing
|
|
|
593
635
|
| File | Content |
|
|
594
636
|
|---|---|
|
|
595
637
|
| `SKILL.md` | 4-phase process: understand the viewer → design the arc → implement with `playwright-director` → verify |
|
|
596
|
-
| `references/storytelling.md` | Who is watching (role, expertise, emotional state), narration voice rules, pacing decisions, when to use context screens vs steps, multi-profile scene heuristics |
|
|
597
|
-
| `references/api.md` | Complete `Tutorial` class API with timing model, critical rules (e.g., navigate before any tutorial call, never override `--reporter`), and a pre-commit checklist |
|
|
638
|
+
| `references/storytelling.md` | Who is watching (role, expertise, emotional state), narration voice rules, pacing decisions, when to use context screens vs steps, multi-profile scene heuristics, directing attention (highlight vs camera zoom vs blur, secrets typed blurred) |
|
|
639
|
+
| `references/api.md` | Complete `Tutorial` class API with timing model, critical rules (e.g., navigate before any tutorial call, never override `--reporter`), camera zoom options and rules, and a pre-commit checklist |
|
|
598
640
|
|
|
599
641
|
### Setup
|
|
600
642
|
|
|
@@ -628,7 +670,7 @@ This interactively copies the skill and agent into your `.claude/` directory. Ex
|
|
|
628
670
|
Claude will:
|
|
629
671
|
1. Read the test and identify the viewer persona
|
|
630
672
|
2. Design a storytelling arc (goal → steps → completion)
|
|
631
|
-
3. Write the tutorial code with `tutorial.context()`, `tutorial.step()`, voice narration text, and `tutorial.complete()`
|
|
673
|
+
3. Write the tutorial code with `tutorial.context()`, `tutorial.step()`, voice narration text, camera zooms on the key moments, and `tutorial.complete()`
|
|
632
674
|
4. Verify the test still passes in both normal and tutorial mode
|
|
633
675
|
|
|
634
676
|
### Keeping them up to date
|
package/dist/Tutorial.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Page, Locator, FrameLocator } from '@playwright/test';
|
|
2
2
|
import type { TutorialOptions, StepOptions, ContextOptions, SceneFocus, FocusOptions } from './types.js';
|
|
3
3
|
import { TutorialTimeline } from './timeline.js';
|
|
4
|
+
import { type ZoomOptions } from './zoom.js';
|
|
4
5
|
/**
|
|
5
6
|
* When to start a step's action inside its narration clip (option B of
|
|
6
7
|
* docs/narration-action-overlap.md — one merged clip, computed offset).
|
|
@@ -20,6 +21,7 @@ export declare class Tutorial {
|
|
|
20
21
|
private music;
|
|
21
22
|
private cursor;
|
|
22
23
|
private overlay;
|
|
24
|
+
private zoomer;
|
|
23
25
|
private timeline;
|
|
24
26
|
private pendingItems;
|
|
25
27
|
private stepCounter;
|
|
@@ -70,6 +72,17 @@ export declare class Tutorial {
|
|
|
70
72
|
step(key: string, action: () => Promise<void>, options?: StepOptions): void;
|
|
71
73
|
highlight(selector: string | Locator, duration?: number): Promise<void>;
|
|
72
74
|
unhighlight(selector: string | Locator): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Camera zoom on an element — a button, a card, a whole panel: the page
|
|
77
|
+
* zooms in around it (optionally blurring everything else), holds for
|
|
78
|
+
* `duration` ms, then zooms back out. The step banner and cursor stay
|
|
79
|
+
* crisp and unscaled. No-op outside tutorial mode.
|
|
80
|
+
*/
|
|
81
|
+
zoom(selector: string | Locator, options?: ZoomOptions): Promise<void>;
|
|
82
|
+
/** Zoom in and stay zoomed — interact with the page, then call `zoomOut()` (same step). */
|
|
83
|
+
zoomIn(selector: string | Locator, options?: ZoomOptions): Promise<void>;
|
|
84
|
+
/** Undo `zoomIn()`. Safe to call when not zoomed. */
|
|
85
|
+
zoomOut(): Promise<void>;
|
|
73
86
|
moveMouseToElement(locator: Locator): Promise<void>;
|
|
74
87
|
moveMouse(targetX: number, targetY: number): Promise<void>;
|
|
75
88
|
animateClick(): Promise<void>;
|
package/dist/Tutorial.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tutorial.d.ts","sourceRoot":"","sources":["../src/Tutorial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIpE,OAAO,KAAK,EACX,eAAe,EACf,WAAW,EACX,cAAc,EAId,UAAU,EACV,YAAY,EACZ,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Tutorial.d.ts","sourceRoot":"","sources":["../src/Tutorial.ts"],"names":[],"mappings":"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"}
|
package/dist/Tutorial.js
CHANGED
|
@@ -7,6 +7,7 @@ import { TutorialMusic } from './music.js';
|
|
|
7
7
|
import { TutorialCursor } from './cursor.js';
|
|
8
8
|
import { TutorialOverlay } from './overlay.js';
|
|
9
9
|
import { TutorialTimeline } from './timeline.js';
|
|
10
|
+
import { TutorialZoom } from './zoom.js';
|
|
10
11
|
const __filename = fileURLToPath(import.meta.url);
|
|
11
12
|
const __dirname = dirname(__filename);
|
|
12
13
|
const TUTORIAL_MODE = process.env.TUTORIAL_MODE === 'true';
|
|
@@ -58,6 +59,7 @@ export class Tutorial {
|
|
|
58
59
|
music;
|
|
59
60
|
cursor;
|
|
60
61
|
overlay;
|
|
62
|
+
zoomer;
|
|
61
63
|
timeline;
|
|
62
64
|
pendingItems = [];
|
|
63
65
|
stepCounter = 0;
|
|
@@ -123,6 +125,7 @@ export class Tutorial {
|
|
|
123
125
|
highlightDuration: this.options.highlightDuration,
|
|
124
126
|
position: this.options.overlayPosition ?? 'TR'
|
|
125
127
|
});
|
|
128
|
+
this.zoomer = new TutorialZoom(page);
|
|
126
129
|
this.timeline = new TutorialTimeline(this.testName, this.options.testFile, this.options.projectName, this.options.lang, options.testTitle ?? '', options.feature ?? '', {
|
|
127
130
|
musicFile: this.options.backgroundMusic?.startsWith('http')
|
|
128
131
|
? 'static/audio/tutorial-background.mp3'
|
|
@@ -259,6 +262,7 @@ export class Tutorial {
|
|
|
259
262
|
this.music.switchPage(page);
|
|
260
263
|
this.cursor.switchPage(page);
|
|
261
264
|
this.overlay.switchPage(page);
|
|
265
|
+
this.zoomer.switchPage(page);
|
|
262
266
|
}
|
|
263
267
|
/** @deprecated Total steps are now calculated automatically. */
|
|
264
268
|
setTotalSteps(total) {
|
|
@@ -405,6 +409,43 @@ export class Tutorial {
|
|
|
405
409
|
return;
|
|
406
410
|
await this.overlay.unhighlight(selector);
|
|
407
411
|
}
|
|
412
|
+
/**
|
|
413
|
+
* Camera zoom on an element — a button, a card, a whole panel: the page
|
|
414
|
+
* zooms in around it (optionally blurring everything else), holds for
|
|
415
|
+
* `duration` ms, then zooms back out. The step banner and cursor stay
|
|
416
|
+
* crisp and unscaled. No-op outside tutorial mode.
|
|
417
|
+
*/
|
|
418
|
+
async zoom(selector, options = {}) {
|
|
419
|
+
if (!TUTORIAL_MODE)
|
|
420
|
+
return;
|
|
421
|
+
await this.zoomIn(selector, options);
|
|
422
|
+
await this.page.waitForTimeout(options.duration ?? 1500);
|
|
423
|
+
await this.zoomOut();
|
|
424
|
+
}
|
|
425
|
+
/** Zoom in and stay zoomed — interact with the page, then call `zoomOut()` (same step). */
|
|
426
|
+
async zoomIn(selector, options = {}) {
|
|
427
|
+
if (!TUTORIAL_MODE)
|
|
428
|
+
return;
|
|
429
|
+
const locator = typeof selector === 'string' ? this.page.locator(selector) : selector;
|
|
430
|
+
await this.zoomer.zoomOut();
|
|
431
|
+
await locator.scrollIntoViewIfNeeded();
|
|
432
|
+
const box = await locator.boundingBox();
|
|
433
|
+
if (!box)
|
|
434
|
+
return;
|
|
435
|
+
const viewport = this.page.viewportSize()
|
|
436
|
+
?? await this.page.evaluate(() => ({ width: innerWidth, height: innerHeight }));
|
|
437
|
+
const cursor = await this.zoomer.zoomIn(box, viewport, options);
|
|
438
|
+
if (cursor)
|
|
439
|
+
this.cursor.setPosition(cursor.x, cursor.y);
|
|
440
|
+
}
|
|
441
|
+
/** Undo `zoomIn()`. Safe to call when not zoomed. */
|
|
442
|
+
async zoomOut() {
|
|
443
|
+
if (!TUTORIAL_MODE)
|
|
444
|
+
return;
|
|
445
|
+
const cursor = await this.zoomer.zoomOut();
|
|
446
|
+
if (cursor)
|
|
447
|
+
this.cursor.setPosition(cursor.x, cursor.y);
|
|
448
|
+
}
|
|
408
449
|
async moveMouseToElement(locator) {
|
|
409
450
|
if (!TUTORIAL_MODE)
|
|
410
451
|
return;
|
package/dist/Tutorial.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tutorial.js","sourceRoot":"","sources":["../src/Tutorial.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tutorial.js","sourceRoot":"","sources":["../src/Tutorial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAWpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAoB,MAAM,WAAW,CAAC;AAE3D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC;AAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,OAAO,CAAC;AAC9D,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC5D,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,kBAAkB,CAAC;AAElF,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AACvD,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;AAChE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAClD,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,MAAM,CAAC,CAAC;AACtF,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,KAAK,CAAC,CAAC;AAErF,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAE5E,IAAI,MAAM,GAAkC,IAAI,CAAC;AACjD,KAAK,UAAU,QAAQ;IACtB,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACnC,IAAI,CAAC;QACJ,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACzC,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AA+BD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACpC,UAAkB,EAClB,QAAgB,EAChB,MAAe;IAEf,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAY,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEzF,MAAM,OAAO,QAAQ;IACZ,IAAI,CAAO;IACnB,iFAAiF;IACzE,OAAO,CAE8B;IACrC,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,CAAS;IACjB,WAAW,CAA0B;IAErC,KAAK,CAAgB;IACrB,KAAK,CAAgB;IACrB,MAAM,CAAiB;IACvB,OAAO,CAAkB;IACzB,MAAM,CAAe;IACrB,QAAQ,CAAmB;IAE3B,YAAY,GAAkB,EAAE,CAAC;IACjC,WAAW,GAAG,CAAC,CAAC;IAChB,cAAc,GAAG,CAAC,CAAC;IAEnB,MAAM,CAA+B;IACrC,YAAY,GAAa,EAAE,CAAC;IAC5B,iBAAiB,CAAS;IAC1B,OAAO,CAAU;IACzB,yFAAyF;IACjF,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAY,IAAU,EAAE,OAAwB;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,wEAAwE;QACxE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,SAAS,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5F,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,sBAAsB,CAAC;QACpE,MAAM,eAAe,GAAG,cAAc,IAAI,EAAE,CAAC;QAE7C,IAAI,CAAC,OAAO,GAAG;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,YAAY;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG;YACnC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,GAAG;YACnD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;YACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,GAAG;YACjD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,cAAc;YAClD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,mBAAmB,IAAI,EAAE;YACzD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;YACnC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,eAAe;YAC3D,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,qBAAqB;YACzD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,qBAAqB;YACzD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;YACxC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI;YACtD,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;SAChD,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE;YACpC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;YACnC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;YAC9C,YAAY;SACZ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE;YACpC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;YAC7C,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE;YACtC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;YACnC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE;YACxC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;YACjD,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,IAAI,CAAC,OAAO,CAAC,WAAW,EACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,OAAO,CAAC,SAAS,IAAI,EAAE,EACvB,OAAO,CAAC,OAAO,IAAI,EAAE,EACrB;YACC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC;gBAC1D,CAAC,CAAC,sCAAsC;gBACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;YAC/B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;SACrC,EACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,IAAI,CAAC,OAAO,IAAI,EAAE,CAClB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,IAAI,GAAG,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAEtE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,uEAAuE;IACvE,0EAA0E;IAElE,YAAY,CAAC,IAAY;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,aAAa,KAAK,GAAG,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK;QACV,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACzB,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,IAAY;QACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,yBAAyB,IAAI,IAAI,CAAC,CAAC;IAClE,CAAC;IAED;4EACwE;IACxE,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,GAAW;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAE5E,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CACvB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YACnB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,yBAAyB,KAAK,IAAI,CAAsB,CAAC;YAC3F,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC;QACf,CAAC,EACD,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAC7B,CAAC;QAEF,0EAA0E;QAC1E,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,MAAkB,EAAE,OAAsB;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjD,IAAI,aAAa,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEhE,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACxD,IAAI,KAAK;gBAAE,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACjF,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC/D,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAE,CAAC;gBACnD,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBACjE,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,qBAAqB,CAAE,CAAC;gBACrD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC5B,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjD,6EAA6E;gBAC7E,IAAI,CAAC,MAAM;oBAAG,EAAkB,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,CAAC,CAAC,CAAC;QACJ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,aAAa,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAC1E,CAAC;IAED;yEACqE;IACrE,IAAY,WAAW;QACtB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACrD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACvF,CAAC;IAEO,SAAS,CAAC,MAAkB;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,CACN,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM;YACzC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACvD,CAAC;IACH,CAAC;IAED,MAAM,KAAK,SAAS;QACnB,OAAO,aAAa,CAAC;IACtB,CAAC;IAEO,SAAS,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;QACV,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,SAAS,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,QAAQ,CAAC,gBAAgB,CACxB,iHAAiH,CACjH,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,IAAU;QACpB,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,gEAAgE;IAChE,aAAa,CAAC,KAAa;QAC1B,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QAClG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,YAAY,CAAC,KAAe;QACjC,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAC1F,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;YAAE,OAAO;QACxD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,UAAU;QACvB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa;YAAE,OAAO;QAE/C,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,sEAAsE;QACtE,uEAAuE;QACvE,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC7B,IAAI,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC;oBAAE,OAAO;gBAC5D,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACzC,EAAE,CAAC,EAAE,GAAG,sBAAsB,CAAC;gBAC/B,EAAE,CAAC,KAAK,CAAC,OAAO;oBACf,+IAA+I,CAAC;gBACjJ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,GAAG,EAAE;oBACjB,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;oBAC9C,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC;gBACF,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACrE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,YAAY;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,cAAc,CAAC;QAE3D,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7C,yEAAyE;YACzE,wEAAwE;YACxE,IAAI,OAAO;gBAAE,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;YACrF,IAAI,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC;gBAAE,OAAO;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,KAAK,CAAC,EAAE,GAAG,iBAAiB,CAAC;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,OAAwB;QAC5C,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE7E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;YAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;YACrC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAErB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,SAAS;YACf,KAAK;YACL,IAAI;YACJ,KAAK;YACL,SAAS;YACT,YAAY;YACZ,GAAG;SACH,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,MAA2B,EAAE,OAAqB;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,MAAM;gBACZ,KAAK;gBACL,MAAM;gBACN,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,KAAK;gBAChB,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE;gBAC/B,KAAK,EAAE,OAAO,EAAE,KAAK;aACrB,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,SAAiB,CAAC;QACtB,IAAI,WAA+B,CAAC;QACpC,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACxB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAC9B,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,QAAQ,GAAG,CAAC;gBAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YAC5C,SAAS,GAAG,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YAChD,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC;YACxB,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;YACjC,SAAS,GAAG,GAAG,KAAK,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/C,WAAW,GAAG,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,SAAS,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,SAAS;YACnE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;YACrC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAErB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,MAAM;YACZ,KAAK;YACL,MAAM;YACN,WAAW,EAAE,OAAO,EAAE,EAAE,IAAI,KAAK;YACjC,kBAAkB,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,WAAW;YAC5D,SAAS;YACT,WAAW;YACX,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,YAAY;YACZ,GAAG;YACH,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,eAAe,EAAE,OAAO,EAAE,eAAe;SACzC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAA0B,EAAE,QAAiB;QAC5D,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEtF,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAA0B;QAC3C,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,QAA0B,EAAE,UAAuB,EAAE;QAC/D,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,MAAM,CAAC,QAA0B,EAAE,UAAuB,EAAE;QACjE,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;eACrC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAgB;QACxC,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,OAAe;QAC/C,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY;QACjB,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAA0B;QACrC,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtF,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,aAAa;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAA0B,EAAE,KAAa;QACnD,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtF,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,aAAa;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAA0B,EAAE,KAAa,EAAE,KAAK,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtF,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAChB,QAA0B,EAC1B,KAAa,EACb,UAAwE,EAAE;QAE1E,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QACtD,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtF,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAe,EAAE,EAAU,EAAE,EAAE;gBACtD,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,KAAK,CAAC;YACnC,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,IAAI,MAAM;gBAAE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,MAAM,CAAC,QAA0B;QACtC,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtF,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAe,EAAE,EAAE;YAC1C,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAA0B,EAAE,KAAa;QAC3D,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtF,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,aAAa;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAOtB;QACA,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CACvB,CAAC,UAAU,EAAE,EAAE;YACd,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,wBAAwB,CAA6B,CAAC;YAC5F,MAAM,GAAG,GAAG,MAAM,EAAE,eAAe,CAAC;YACpC,MAAM,QAAQ,GAAG,GAAG,EAAE,gBAA2C,CAAC;YAClE,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEzC,MAAM,GAAG,GAAG,GAAG,EAAE;gBAChB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;gBACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;gBAChD,IAAI,SAAS,IAAI,CAAC;oBAAE,OAAO;gBAE3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAwB,CAAC;gBACnF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;gBACjF,IAAI,MAAM,GAAG,SAAS,CAAC;gBACvB,IAAI,GAAG,EAAE,CAAC;oBACT,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;oBACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;oBAClD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxE,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC;gBACpD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;gBAC7C,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;oBAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;oBACjE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrC,QAAQ,CAAC,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;oBACpC,IAAI,CAAC,GAAG,CAAC;wBAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC,CAAC;gBACF,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC;YAEF,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU;gBAAE,GAAG,EAAE,CAAC;;gBACpC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC,EACD,QAAQ,CACR,CAAC;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,gBAAgB;QACrB,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,6DAA6D;oBAC7D,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;wBAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC5E,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,CAAC;YACF,CAAC;YACD,OAAO;QACR,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAC/F,MAAM,iBAAiB,GAAG,OAAO,IAAI,cAAc,CAAC;QACpD,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;YACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC;YAC7C,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,sEAAsE;QACtE,uEAAuE;QACvE,yEAAyE;QACzE,sEAAsE;QACtE,uEAAuE;QACvE,mEAAmE;QACnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAChD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,EAAE,CAAC,EAAE,GAAG,sBAAsB,CAAC;YAC/B,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,2DAA2D,CAAC;YAC/E,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC7B,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3D,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QACnD,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC;gBACzD,IAAI,OAAO,GAAG,CAAC;oBAAE,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;YACrD,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,2EAA2E;QAC5E,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7C,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAEtC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAElE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBAC9B,mEAAmE;oBACnE,oEAAoE;oBACpE,wDAAwD;oBACxD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBACzH,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC;oBAC3D,IAAI,SAAS,GAAG,CAAC;wBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACP,qEAAqE;oBACrE,kEAAkE;oBAClE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpG,CAAC;gBAED,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAExD,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;gBAEzC,mEAAmE;gBACnE,mDAAmD;gBACnD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE5E,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAElC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;oBACrE,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAClC,CAAC;gBAED,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBAE7F,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjD,8DAA8D;oBAC9D,gEAAgE;oBAChE,+DAA+D;oBAC/D,8BAA8B;oBAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAEpI,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBACjF,IAAI,MAAM,GAAG,CAAC;wBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBACvD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpB,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC;oBAC3D,IAAI,SAAS,GAAG,CAAC;wBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC9G,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACvD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,CAAC;gBACD,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;gBAElD,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAC/C,CAAC;QACF,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YACnE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACjJ,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC;YAC3D,IAAI,SAAS,GAAG,CAAC;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5H,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,gBAAgB,CAAC,CAAC,CAAC;QAEtE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,UAAkB;QACrD,IAAI,CAAC;YACJ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAChC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;YAE/B,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,QAAQ,SAAS,UAAU,OAAO,CAAC,CAAC;gBACvF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAClH,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;gBACtC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,QAAQ,cAAc,CAAC,CAAC;oBACvE,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACxH,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,QAAQ,SAAS,UAAU,OAAO,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACP,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,QAAQ,SAAS,UAAU,MAAM,CAAC,CAAC;gBACtF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzE,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;gBACnC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,QAAQ,aAAa,CAAC,CAAC;oBACtE,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,wDAAwD,IAAI,CAAC,QAAQ,SAAS,UAAU,MAAM,CAAC,CAAC;YAC7G,CAAC;QACF,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,yCAAyC,UAAU,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;IAED,KAAK,CAAC,kBAAkB;QACvB,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC;oBACJ,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;oBACrC,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBACxC,UAAU,CAAC,SAAS,CAAC,CAAC;wBACtB,OAAO,CAAC,GAAG,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAC;wBAC5D,OAAO,IAAI,CAAC;oBACb,CAAC;gBACF,CAAC;gBAAC,MAAM,CAAC;oBACR,+BAA+B;gBAChC,CAAC;YACF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;CACD"}
|
package/dist/cursor.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export declare class TutorialCursor {
|
|
|
16
16
|
private injectCursor;
|
|
17
17
|
/** Ensure cursor is visible (re-inject after navigation) */
|
|
18
18
|
ensureVisible(): Promise<void>;
|
|
19
|
+
/** Sync the tracked position after the cursor was moved in-page (e.g. by a zoom). */
|
|
20
|
+
setPosition(x: number, y: number): void;
|
|
19
21
|
moveToElement(locator: Locator): Promise<void>;
|
|
20
22
|
moveTo(targetX: number, targetY: number): Promise<void>;
|
|
21
23
|
animateClick(): Promise<void>;
|
package/dist/cursor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../src/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,CAAC,CAAK;IACd,OAAO,CAAC,CAAC,CAAK;IACd,OAAO,CAAC,WAAW,CAAS;gBAEhB,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa;IAK9C,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAKtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,sCAAsC;YACxB,YAAY;IAY1B,4DAA4D;IACtD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../src/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,CAAC,CAAK;IACd,OAAO,CAAC,CAAC,CAAK;IACd,OAAO,CAAC,WAAW,CAAS;gBAEhB,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa;IAK9C,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAKtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,sCAAsC;YACxB,YAAY;IAY1B,4DAA4D;IACtD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,qFAAqF;IACrF,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKjC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAM3B"}
|
package/dist/cursor.js
CHANGED
|
@@ -34,13 +34,18 @@ export class TutorialCursor {
|
|
|
34
34
|
cursor.className = 'tutorial-cursor';
|
|
35
35
|
cursor.innerHTML = cursorSvg;
|
|
36
36
|
cursor.style.display = 'none';
|
|
37
|
-
document.body.appendChild(cursor);
|
|
37
|
+
(document.getElementById('tutorial-zoom-layer') ?? document.body).appendChild(cursor);
|
|
38
38
|
}, CURSOR_SVG);
|
|
39
39
|
}
|
|
40
40
|
/** Ensure cursor is visible (re-inject after navigation) */
|
|
41
41
|
async ensureVisible() {
|
|
42
42
|
await this.injectCursor();
|
|
43
43
|
}
|
|
44
|
+
/** Sync the tracked position after the cursor was moved in-page (e.g. by a zoom). */
|
|
45
|
+
setPosition(x, y) {
|
|
46
|
+
this.x = x;
|
|
47
|
+
this.y = y;
|
|
48
|
+
}
|
|
44
49
|
async moveToElement(locator) {
|
|
45
50
|
const box = await locator.boundingBox();
|
|
46
51
|
if (!box)
|
package/dist/cursor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../src/cursor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/C,MAAM,OAAO,cAAc;IAClB,IAAI,CAAO;IACX,OAAO,CAAgB;IACvB,CAAC,GAAG,CAAC,CAAC;IACN,CAAC,GAAG,CAAC,CAAC;IACN,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAY,IAAU,EAAE,OAAsB;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,UAAU,CAAC,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,+CAA+C;IAC1E,CAAC;IAED,KAAK,CAAC,UAAU;QACf,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,sCAAsC;IAC9B,KAAK,CAAC,YAAY;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE;YACtC,IAAI,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC;gBAAE,OAAO;YACvD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,EAAE,GAAG,iBAAiB,CAAC;YAC9B,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;YACrC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../src/cursor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export { TutorialMusic } from './music.js';
|
|
|
11
11
|
export { TutorialCursor } from './cursor.js';
|
|
12
12
|
export { TutorialOverlay } from './overlay.js';
|
|
13
13
|
export { TutorialTimeline } from './timeline.js';
|
|
14
|
+
export { TutorialZoom, zoomScale, zoomFrame, zoomFrames } from './zoom.js';
|
|
15
|
+
export type { ZoomOptions } from './zoom.js';
|
|
14
16
|
export { buildTranscriptMarkdown, parseTranscript, applyCorrections, TranscriptCorrections } from './transcript.js';
|
|
15
17
|
export type { TranscriptEntry, ApplyReport, ApplyChange, ApplyProblem, ApplyIO } from './transcript.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC3F,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC3F,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACpH,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,5 +8,6 @@ export { TutorialMusic } from './music.js';
|
|
|
8
8
|
export { TutorialCursor } from './cursor.js';
|
|
9
9
|
export { TutorialOverlay } from './overlay.js';
|
|
10
10
|
export { TutorialTimeline } from './timeline.js';
|
|
11
|
+
export { TutorialZoom, zoomScale, zoomFrame, zoomFrames } from './zoom.js';
|
|
11
12
|
export { buildTranscriptMarkdown, parseTranscript, applyCorrections, TranscriptCorrections } from './transcript.js';
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG3F,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG3F,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG3E,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/overlay.js
CHANGED
|
@@ -42,7 +42,7 @@ export class TutorialOverlay {
|
|
|
42
42
|
const container = document.createElement('div');
|
|
43
43
|
container.innerHTML = html;
|
|
44
44
|
const overlay = container.firstElementChild;
|
|
45
|
-
document.body.appendChild(overlay);
|
|
45
|
+
(document.getElementById('tutorial-zoom-layer') ?? document.body).appendChild(overlay);
|
|
46
46
|
}, html);
|
|
47
47
|
}
|
|
48
48
|
async showContext(contextTitle, text, style = 'goal') {
|
|
@@ -61,7 +61,7 @@ export class TutorialOverlay {
|
|
|
61
61
|
const container = document.createElement('div');
|
|
62
62
|
container.innerHTML = html;
|
|
63
63
|
const overlay = container.firstElementChild;
|
|
64
|
-
document.body.appendChild(overlay);
|
|
64
|
+
(document.getElementById('tutorial-zoom-layer') ?? document.body).appendChild(overlay);
|
|
65
65
|
}, html);
|
|
66
66
|
}
|
|
67
67
|
async showComplete(message) {
|
|
@@ -99,7 +99,7 @@ export class TutorialOverlay {
|
|
|
99
99
|
const container = document.createElement('div');
|
|
100
100
|
container.innerHTML = html;
|
|
101
101
|
const preview = container.firstElementChild;
|
|
102
|
-
document.body.appendChild(preview);
|
|
102
|
+
(document.getElementById('tutorial-zoom-layer') ?? document.body).appendChild(preview);
|
|
103
103
|
}, html);
|
|
104
104
|
}
|
|
105
105
|
async hideEmailPreview() {
|
package/dist/overlay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,MAAM,mBAAmB,CAAC;AAS3B,MAAM,OAAO,eAAe;IACnB,IAAI,CAAO;IACX,OAAO,CAAiB;IACxB,WAAW,GAAG,CAAC,CAAC;IAChB,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,IAAU,EAAE,OAAuB;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,UAAU,CAAC,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,aAAa,CAAC,KAAa;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,IAAY;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,aAAa;QACZ,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,WAAoB,EAAE,QAA0B;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QACzC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7F,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC9B,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACjC,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,KAAK;YACL,WAAW;YACX,KAAK;YACL,eAAe;YACf,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;SAC3C,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC7D,IAAI,QAAQ;gBAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;YAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAkB,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"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"}
|
package/dist/zoom.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Page } from '@playwright/test';
|
|
2
|
+
export interface ZoomOptions {
|
|
3
|
+
/** Zoom factor. Default: auto — the target fills ~70% of the viewport, capped at 2.5×, never below 1×. */
|
|
4
|
+
scale?: number;
|
|
5
|
+
/** `zoom()` only: how long to hold the zoomed view, in ms (default: 1500). */
|
|
6
|
+
duration?: number;
|
|
7
|
+
/** Blur (and slightly dim) everything but the target. `true` = 4px; a number sets the radius in px. Default: false. */
|
|
8
|
+
blur?: boolean | number;
|
|
9
|
+
/** Duration of each zoom-in / zoom-out animation, in ms (default: 600). */
|
|
10
|
+
transition?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ZoomRect {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ZoomViewport {
|
|
19
|
+
width: number;
|
|
20
|
+
height: number;
|
|
21
|
+
}
|
|
22
|
+
/** One animation frame: the page is drawn at `k`× with its viewport origin at (`ox`, `oy`); `e` is the eased progress. */
|
|
23
|
+
export interface ZoomFrame {
|
|
24
|
+
k: number;
|
|
25
|
+
ox: number;
|
|
26
|
+
oy: number;
|
|
27
|
+
e: number;
|
|
28
|
+
}
|
|
29
|
+
export declare const ZOOM_MAX_SCALE = 2.5;
|
|
30
|
+
/** The zoom factor for a target: explicit `scale` wins, otherwise fit the target to ~70% of the viewport. */
|
|
31
|
+
export declare function zoomScale(rect: ZoomRect, viewport: ZoomViewport, scale?: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* The camera at progress `e` (0 → 1): scale grows from 1 to `scale` while the
|
|
34
|
+
* target's center glides toward the viewport center. The origin is clamped so
|
|
35
|
+
* the scaled page always covers the viewport — a target near an edge stays
|
|
36
|
+
* off-center rather than exposing blank canvas.
|
|
37
|
+
*/
|
|
38
|
+
export declare function zoomFrame(rect: ZoomRect, viewport: ZoomViewport, scale: number, e: number): ZoomFrame;
|
|
39
|
+
/** Precomputed zoom-in frames (~60fps); zoom-out plays them backwards. */
|
|
40
|
+
export declare function zoomFrames(rect: ZoomRect, viewport: ZoomViewport, scale: number, transitionMs: number): ZoomFrame[];
|
|
41
|
+
export declare function zoomBlurPx(blur: ZoomOptions['blur']): number;
|
|
42
|
+
/**
|
|
43
|
+
* Camera zoom on the top-level page. The page (iframes and scenes included) is
|
|
44
|
+
* scaled with a CSS transform on `<html>`, while the tutorial UI (step banner,
|
|
45
|
+
* cursor, email preview, debug clock) is lifted into a top-layer popover so it
|
|
46
|
+
* stays crisp and in place. Returns the cursor's on-screen position at the end,
|
|
47
|
+
* so the Node-side cursor can continue from there.
|
|
48
|
+
*/
|
|
49
|
+
export declare class TutorialZoom {
|
|
50
|
+
private page;
|
|
51
|
+
private active;
|
|
52
|
+
constructor(page: Page);
|
|
53
|
+
switchPage(page: Page): void;
|
|
54
|
+
get isZoomed(): boolean;
|
|
55
|
+
zoomIn(rect: ZoomRect, viewport: ZoomViewport, options?: ZoomOptions): Promise<{
|
|
56
|
+
x: number;
|
|
57
|
+
y: number;
|
|
58
|
+
} | null>;
|
|
59
|
+
zoomOut(): Promise<{
|
|
60
|
+
x: number;
|
|
61
|
+
y: number;
|
|
62
|
+
} | null>;
|
|
63
|
+
private run;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=zoom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoom.d.ts","sourceRoot":"","sources":["../src/zoom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC3B,0GAA0G;IAC1G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uHAAuH;IACvH,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,0HAA0H;AAC1H,MAAM,WAAW,SAAS;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;CACV;AAED,eAAO,MAAM,cAAc,MAAM,CAAC;AAIlC,6GAA6G;AAC7G,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAQxF;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAYrG;AAID,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,CAGnH;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAI5D;AAUD;;;;;;GAMG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,MAAM,CAA4F;gBAE9F,IAAI,EAAE,IAAI;IAItB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAK5B,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAEK,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAUnH,OAAO,IAAI,OAAO,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAiBzD,OAAO,CAAC,GAAG;CAgMX"}
|
package/dist/zoom.js
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
export const ZOOM_MAX_SCALE = 2.5;
|
|
2
|
+
const ZOOM_FILL = 0.7;
|
|
3
|
+
const ZOOM_DEFAULT_BLUR = 4;
|
|
4
|
+
/** The zoom factor for a target: explicit `scale` wins, otherwise fit the target to ~70% of the viewport. */
|
|
5
|
+
export function zoomScale(rect, viewport, scale) {
|
|
6
|
+
if (scale !== undefined)
|
|
7
|
+
return Math.max(1, scale);
|
|
8
|
+
if (rect.width <= 0 || rect.height <= 0)
|
|
9
|
+
return 1;
|
|
10
|
+
const fit = Math.min((viewport.width * ZOOM_FILL) / rect.width, (viewport.height * ZOOM_FILL) / rect.height);
|
|
11
|
+
return Math.min(ZOOM_MAX_SCALE, Math.max(1, fit));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The camera at progress `e` (0 → 1): scale grows from 1 to `scale` while the
|
|
15
|
+
* target's center glides toward the viewport center. The origin is clamped so
|
|
16
|
+
* the scaled page always covers the viewport — a target near an edge stays
|
|
17
|
+
* off-center rather than exposing blank canvas.
|
|
18
|
+
*/
|
|
19
|
+
export function zoomFrame(rect, viewport, scale, e) {
|
|
20
|
+
const k = 1 + (scale - 1) * e;
|
|
21
|
+
const axis = (center, size) => {
|
|
22
|
+
const target = center + (size / 2 - center) * e;
|
|
23
|
+
return Math.min(0, Math.max(size * (1 - k), target - k * center));
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
k,
|
|
27
|
+
ox: axis(rect.x + rect.width / 2, viewport.width),
|
|
28
|
+
oy: axis(rect.y + rect.height / 2, viewport.height),
|
|
29
|
+
e
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const easeInOut = (t) => (t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2);
|
|
33
|
+
/** Precomputed zoom-in frames (~60fps); zoom-out plays them backwards. */
|
|
34
|
+
export function zoomFrames(rect, viewport, scale, transitionMs) {
|
|
35
|
+
const n = Math.max(1, Math.round(transitionMs / 16));
|
|
36
|
+
return Array.from({ length: n + 1 }, (_, i) => zoomFrame(rect, viewport, scale, easeInOut(i / n)));
|
|
37
|
+
}
|
|
38
|
+
export function zoomBlurPx(blur) {
|
|
39
|
+
if (blur === true)
|
|
40
|
+
return ZOOM_DEFAULT_BLUR;
|
|
41
|
+
if (typeof blur === 'number' && blur > 0)
|
|
42
|
+
return blur;
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Camera zoom on the top-level page. The page (iframes and scenes included) is
|
|
47
|
+
* scaled with a CSS transform on `<html>`, while the tutorial UI (step banner,
|
|
48
|
+
* cursor, email preview, debug clock) is lifted into a top-layer popover so it
|
|
49
|
+
* stays crisp and in place. Returns the cursor's on-screen position at the end,
|
|
50
|
+
* so the Node-side cursor can continue from there.
|
|
51
|
+
*/
|
|
52
|
+
export class TutorialZoom {
|
|
53
|
+
page;
|
|
54
|
+
active = null;
|
|
55
|
+
constructor(page) {
|
|
56
|
+
this.page = page;
|
|
57
|
+
}
|
|
58
|
+
switchPage(page) {
|
|
59
|
+
this.page = page;
|
|
60
|
+
this.active = null;
|
|
61
|
+
}
|
|
62
|
+
get isZoomed() {
|
|
63
|
+
return this.active !== null;
|
|
64
|
+
}
|
|
65
|
+
async zoomIn(rect, viewport, options = {}) {
|
|
66
|
+
if (this.active)
|
|
67
|
+
await this.zoomOut();
|
|
68
|
+
const scale = zoomScale(rect, viewport, options.scale);
|
|
69
|
+
const durationMs = options.transition ?? 600;
|
|
70
|
+
const frames = zoomFrames(rect, viewport, scale, durationMs);
|
|
71
|
+
const blurPx = zoomBlurPx(options.blur);
|
|
72
|
+
this.active = { frames, rect, blurPx, durationMs };
|
|
73
|
+
return this.run({ frames, durationMs, rect, blurPx, direction: 'in' });
|
|
74
|
+
}
|
|
75
|
+
async zoomOut() {
|
|
76
|
+
if (!this.active)
|
|
77
|
+
return null;
|
|
78
|
+
const { frames, rect, blurPx, durationMs } = this.active;
|
|
79
|
+
this.active = null;
|
|
80
|
+
try {
|
|
81
|
+
return await this.run({ frames, durationMs, rect, blurPx, direction: 'out' });
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// Usually the page navigated or closed while zoomed — nothing left to restore.
|
|
85
|
+
console.warn(`[Tutorial] zoomOut failed: ${error.message}`);
|
|
86
|
+
// Best effort: put the page back without animating.
|
|
87
|
+
await this.page
|
|
88
|
+
.evaluate(() => window.__tutorialZoom?.restore?.())
|
|
89
|
+
.catch(() => { });
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
run(args) {
|
|
94
|
+
return this.page.evaluate(async ({ frames, durationMs, rect, blurPx, direction }) => {
|
|
95
|
+
const UI_IDS = ['tutorial-overlay', 'tutorial-email-preview', 'tutorial-cursor', 'tutorial-debug-clock'];
|
|
96
|
+
const html = document.documentElement;
|
|
97
|
+
const w = window;
|
|
98
|
+
let state = w.__tutorialZoom;
|
|
99
|
+
// Re-inserting a node restarts its CSS entrance animation (banner fade-in):
|
|
100
|
+
// jump finite ones to their end so moving the UI never flashes it.
|
|
101
|
+
const settle = (el) => {
|
|
102
|
+
for (const a of el.getAnimations({ subtree: true })) {
|
|
103
|
+
if (a.effect?.getComputedTiming().iterations !== Infinity)
|
|
104
|
+
a.finish();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const restore = (st) => {
|
|
108
|
+
removeEventListener('scroll', st.onScroll);
|
|
109
|
+
html.style.transform = st.prevTransform;
|
|
110
|
+
html.style.transformOrigin = st.prevOrigin;
|
|
111
|
+
html.removeAttribute('data-tutorial-zoom');
|
|
112
|
+
for (const { el, prev } of st.fixed)
|
|
113
|
+
el.style.translate = prev;
|
|
114
|
+
// Everything in the layer (incl. a banner shown while zoomed) goes back to <body>.
|
|
115
|
+
for (const el of Array.from(st.layer.children)) {
|
|
116
|
+
if (el === st.blur)
|
|
117
|
+
continue;
|
|
118
|
+
document.body.appendChild(el);
|
|
119
|
+
settle(el);
|
|
120
|
+
}
|
|
121
|
+
if (st.layer.matches(':popover-open'))
|
|
122
|
+
st.layer.hidePopover();
|
|
123
|
+
st.layer.remove();
|
|
124
|
+
if (w.__tutorialZoom === st)
|
|
125
|
+
delete w.__tutorialZoom;
|
|
126
|
+
};
|
|
127
|
+
if (direction === 'in') {
|
|
128
|
+
if (state)
|
|
129
|
+
restore(state); // a zoom left behind (e.g. a failed zoomOut)
|
|
130
|
+
// <html> becomes the containing block of fixed elements once it has a
|
|
131
|
+
// transform: each frame shifts them back by the live scroll offset so
|
|
132
|
+
// fixed headers (and the stage) stay put.
|
|
133
|
+
const htmlRect = html.getBoundingClientRect();
|
|
134
|
+
const base = { x: htmlRect.left + scrollX, y: htmlRect.top + scrollY };
|
|
135
|
+
const establishesBlock = (el) => {
|
|
136
|
+
const cs = getComputedStyle(el);
|
|
137
|
+
return cs.transform !== 'none' || cs.filter !== 'none' || cs.perspective !== 'none'
|
|
138
|
+
|| cs.backdropFilter !== 'none' || /paint|layout|strict|content/.test(cs.contain)
|
|
139
|
+
|| /transform|filter|perspective/.test(cs.willChange);
|
|
140
|
+
};
|
|
141
|
+
const fixed = [];
|
|
142
|
+
for (const el of Array.from(document.body.querySelectorAll('*'))) {
|
|
143
|
+
if (UI_IDS.includes(el.id) || getComputedStyle(el).position !== 'fixed')
|
|
144
|
+
continue;
|
|
145
|
+
let contained = false;
|
|
146
|
+
for (let p = el.parentElement; p && p !== html; p = p.parentElement) {
|
|
147
|
+
if (establishesBlock(p)) {
|
|
148
|
+
contained = true;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (contained)
|
|
153
|
+
continue;
|
|
154
|
+
const translate = getComputedStyle(el).translate;
|
|
155
|
+
const [tx = '0px', ty = '0px'] = translate === 'none' ? [] : translate.split(' ');
|
|
156
|
+
fixed.push({ el, prev: el.style.translate, tx, ty });
|
|
157
|
+
}
|
|
158
|
+
const layer = document.createElement('div');
|
|
159
|
+
layer.id = 'tutorial-zoom-layer';
|
|
160
|
+
layer.className = 'tutorial-zoom-layer';
|
|
161
|
+
layer.style.cssText = 'position:fixed;inset:0;width:auto;height:auto;margin:0;padding:0;border:0;'
|
|
162
|
+
+ 'background:transparent;overflow:visible;pointer-events:none;color:inherit;';
|
|
163
|
+
let blur = null;
|
|
164
|
+
if (blurPx > 0) {
|
|
165
|
+
blur = document.createElement('div');
|
|
166
|
+
blur.className = 'tutorial-zoom-blur';
|
|
167
|
+
blur.style.cssText = `position:fixed;inset:0;pointer-events:none;opacity:0;`
|
|
168
|
+
+ `backdrop-filter:blur(${blurPx}px);-webkit-backdrop-filter:blur(${blurPx}px);`;
|
|
169
|
+
layer.appendChild(blur);
|
|
170
|
+
}
|
|
171
|
+
document.body.appendChild(layer);
|
|
172
|
+
for (const id of UI_IDS) {
|
|
173
|
+
const el = document.getElementById(id);
|
|
174
|
+
if (el) {
|
|
175
|
+
layer.appendChild(el);
|
|
176
|
+
settle(el);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (typeof layer.showPopover === 'function') {
|
|
180
|
+
layer.setAttribute('popover', 'manual');
|
|
181
|
+
layer.showPopover();
|
|
182
|
+
}
|
|
183
|
+
const cursor = document.getElementById('tutorial-cursor');
|
|
184
|
+
const cursorBase = cursor && cursor.style.left
|
|
185
|
+
? { x: parseFloat(cursor.style.left), y: parseFloat(cursor.style.top) }
|
|
186
|
+
: null;
|
|
187
|
+
state = w.__tutorialZoom = {
|
|
188
|
+
base,
|
|
189
|
+
fixed,
|
|
190
|
+
layer,
|
|
191
|
+
blur,
|
|
192
|
+
cursorBase,
|
|
193
|
+
frame: null,
|
|
194
|
+
onScroll: null,
|
|
195
|
+
restore: null,
|
|
196
|
+
prevTransform: html.style.transform,
|
|
197
|
+
prevOrigin: html.style.transformOrigin
|
|
198
|
+
};
|
|
199
|
+
html.style.transformOrigin = '0 0';
|
|
200
|
+
html.setAttribute('data-tutorial-zoom', '');
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
if (!state)
|
|
204
|
+
return null;
|
|
205
|
+
// The cursor may have moved while zoomed: map it back into page space.
|
|
206
|
+
const last = frames[frames.length - 1];
|
|
207
|
+
const cursor = document.getElementById('tutorial-cursor');
|
|
208
|
+
state.cursorBase = cursor && cursor.style.left
|
|
209
|
+
? { x: (parseFloat(cursor.style.left) - last.ox) / last.k, y: (parseFloat(cursor.style.top) - last.oy) / last.k }
|
|
210
|
+
: null;
|
|
211
|
+
}
|
|
212
|
+
const st = state;
|
|
213
|
+
const apply = (f) => {
|
|
214
|
+
st.frame = f;
|
|
215
|
+
// The zoomed page can overflow, and a Playwright action may scroll it:
|
|
216
|
+
// use the live scroll so the picture stays put whatever happens.
|
|
217
|
+
const tl = { x: st.base.x - scrollX, y: st.base.y - scrollY };
|
|
218
|
+
html.style.transform = `translate(${f.ox - tl.x * (1 - f.k)}px, ${f.oy - tl.y * (1 - f.k)}px) scale(${f.k})`;
|
|
219
|
+
for (const { el, tx, ty } of st.fixed) {
|
|
220
|
+
el.style.translate = `calc(${tx} + ${-tl.x}px) calc(${ty} + ${-tl.y}px)`;
|
|
221
|
+
}
|
|
222
|
+
const cursor = document.getElementById('tutorial-cursor');
|
|
223
|
+
if (cursor && st.cursorBase) {
|
|
224
|
+
cursor.style.left = `${f.ox + f.k * st.cursorBase.x}px`;
|
|
225
|
+
cursor.style.top = `${f.oy + f.k * st.cursorBase.y}px`;
|
|
226
|
+
}
|
|
227
|
+
if (st.blur) {
|
|
228
|
+
const pad = 6 * f.k;
|
|
229
|
+
const x1 = f.ox + f.k * rect.x - pad;
|
|
230
|
+
const y1 = f.oy + f.k * rect.y - pad;
|
|
231
|
+
const x2 = f.ox + f.k * (rect.x + rect.width) + pad;
|
|
232
|
+
const y2 = f.oy + f.k * (rect.y + rect.height) + pad;
|
|
233
|
+
st.blur.style.opacity = String(f.e);
|
|
234
|
+
st.blur.style.clipPath = `polygon(evenodd, 0 0, 100% 0, 100% 100%, 0 100%, 0 0, `
|
|
235
|
+
+ `${x1}px ${y1}px, ${x2}px ${y1}px, ${x2}px ${y2}px, ${x1}px ${y2}px, ${x1}px ${y1}px)`;
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
if (direction === 'in') {
|
|
239
|
+
st.restore = () => restore(st);
|
|
240
|
+
st.onScroll = () => {
|
|
241
|
+
if (w.__tutorialZoom === st && st.frame)
|
|
242
|
+
apply(st.frame);
|
|
243
|
+
};
|
|
244
|
+
addEventListener('scroll', st.onScroll, { passive: true });
|
|
245
|
+
}
|
|
246
|
+
const sequence = direction === 'in' ? frames : [...frames].reverse();
|
|
247
|
+
await new Promise((resolve) => {
|
|
248
|
+
const start = performance.now();
|
|
249
|
+
const tick = (now) => {
|
|
250
|
+
// A newer zoom took over (or this one was torn down): stop touching the page.
|
|
251
|
+
if (w.__tutorialZoom !== st)
|
|
252
|
+
return resolve();
|
|
253
|
+
const t = Math.min(1, (now - start) / durationMs);
|
|
254
|
+
const pos = t * (sequence.length - 1);
|
|
255
|
+
const i = Math.min(sequence.length - 2, Math.floor(pos));
|
|
256
|
+
const a = sequence[Math.max(0, i)];
|
|
257
|
+
const b = sequence[Math.min(sequence.length - 1, i + 1)];
|
|
258
|
+
const u = pos - Math.max(0, i);
|
|
259
|
+
apply({
|
|
260
|
+
k: a.k + (b.k - a.k) * u,
|
|
261
|
+
ox: a.ox + (b.ox - a.ox) * u,
|
|
262
|
+
oy: a.oy + (b.oy - a.oy) * u,
|
|
263
|
+
e: a.e + (b.e - a.e) * u
|
|
264
|
+
});
|
|
265
|
+
if (t < 1)
|
|
266
|
+
schedule();
|
|
267
|
+
else
|
|
268
|
+
resolve();
|
|
269
|
+
};
|
|
270
|
+
// rAF drives the animation; a timer takes over if frames stall, so
|
|
271
|
+
// the zoom always completes instead of hanging the step.
|
|
272
|
+
const schedule = () => {
|
|
273
|
+
let fired = false;
|
|
274
|
+
const go = () => {
|
|
275
|
+
if (fired)
|
|
276
|
+
return;
|
|
277
|
+
fired = true;
|
|
278
|
+
tick(performance.now());
|
|
279
|
+
};
|
|
280
|
+
requestAnimationFrame(go);
|
|
281
|
+
setTimeout(go, 50);
|
|
282
|
+
};
|
|
283
|
+
schedule();
|
|
284
|
+
});
|
|
285
|
+
const cursor = document.getElementById('tutorial-cursor');
|
|
286
|
+
const cursorPos = cursor && cursor.style.left
|
|
287
|
+
? { x: parseFloat(cursor.style.left), y: parseFloat(cursor.style.top) }
|
|
288
|
+
: null;
|
|
289
|
+
if (direction === 'out' && w.__tutorialZoom === st)
|
|
290
|
+
restore(st);
|
|
291
|
+
return cursorPos;
|
|
292
|
+
}, args);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=zoom.js.map
|
package/dist/zoom.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoom.js","sourceRoot":"","sources":["../src/zoom.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "playwright-director",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "AI-assisted Playwright tool that turns executable tests into directed video guides — demos, tutorials, and documentation that never lag behind the product.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -43,6 +43,9 @@ COMPLETE: Celebrate the outcome, suggest what's next
|
|
|
43
43
|
### 3. Implement (read `api.md`)
|
|
44
44
|
- Use the Tutorial API: `context()`, `step()`, `complete()`
|
|
45
45
|
- Follow timing rules, blank-screen prevention, navigation handling
|
|
46
|
+
- Direct attention sparingly: `zoom()` (optionally `blur`) on the 1–3 moments
|
|
47
|
+
the viewer must not miss (`storytelling.md` §9, `api.md` §13); secrets go
|
|
48
|
+
through `typeBlurred()`
|
|
46
49
|
- Apply the polish checklist before submitting
|
|
47
50
|
|
|
48
51
|
### 4. Verify
|
|
@@ -44,6 +44,11 @@ Follow all rules from `api.md`:
|
|
|
44
44
|
- Dual-mode (test works with and without TUTORIAL_MODE)
|
|
45
45
|
- `@tutorial` tag on the test
|
|
46
46
|
- Acronyms have `voiceText` where TTS mispronounces
|
|
47
|
+
- Camera zooms (`tutorial.zoom()`, `zoomIn()`/`zoomOut()`, optional `blur`) on
|
|
48
|
+
the 1–3 moments the narration names — a total, a status, a tiny badge, a
|
|
49
|
+
panel filled while zoomed (`storytelling.md` §9, `api.md` §13). Never on
|
|
50
|
+
every step
|
|
51
|
+
- Passwords, API keys and tokens typed with `tutorial.typeBlurred()`
|
|
47
52
|
- Multi-scene only: every step touching a scene carries `{ scene }`, scenes sit
|
|
48
53
|
on distinct origins, each tab switch is acknowledged in the narration, and
|
|
49
54
|
split ratios (`focus(['a','b'], { ratio: [30, 70] })`) are used to keep the
|
|
@@ -124,9 +124,13 @@ Use these inside step actions instead of raw Playwright calls — they add curso
|
|
|
124
124
|
| `tutorial.click(locator)` | `page.click(...)` | Cursor animation → highlight → click |
|
|
125
125
|
| `tutorial.fill(locator, value)` | `page.fill(...)` | Highlight → fill |
|
|
126
126
|
| `tutorial.typeSlowly(locator, value, delay?)` | `page.fill(...)` | Highlight → character-by-character typing |
|
|
127
|
+
| `tutorial.typeBlurred(locator, value, options?)` | `page.fill(...)` | Highlight → blur the field → type. Options `{ delay?: 50, blur?: 4, reveal?: false }`; the field **stays blurred** afterwards (use for passwords, API keys, tokens) |
|
|
128
|
+
| `tutorial.unblur(locator)` | — | Remove the blur left by `typeBlurred` |
|
|
127
129
|
| `tutorial.selectOption(locator, value)` | `page.selectOption(...)` | Highlight → select |
|
|
128
130
|
| `tutorial.highlight(locator, duration?)` | — | Pulsing highlight around element |
|
|
129
131
|
| `tutorial.unhighlight(locator)` | — | Remove highlight |
|
|
132
|
+
| `tutorial.zoom(locator, options?)` | — | Camera zoom on the element (button, field, whole card), hold `duration` (1500ms), zoom back out. Options: `scale` (auto: fit ~70% of viewport, max 2.5×), `blur` (`true` = 4px, or px), `transition` (600ms per direction) |
|
|
133
|
+
| `tutorial.zoomIn(locator, options?)` / `tutorial.zoomOut()` | — | Zoom in and stay zoomed — `tutorial.click()` etc. work in the zoomed view — then zoom out. Keep the pair inside one step |
|
|
130
134
|
| `tutorial.moveMouseToElement(locator)` | — | Animate cursor to element |
|
|
131
135
|
| `tutorial.showEmailPreview(options)` | — | Simulated email popup |
|
|
132
136
|
| `tutorial.switchPage(page)` | — | Switch recording to another tab |
|
|
@@ -134,6 +138,8 @@ Use these inside step actions instead of raw Playwright calls — they add curso
|
|
|
134
138
|
|
|
135
139
|
`locator` can be a Playwright `Locator` or a CSS selector string.
|
|
136
140
|
|
|
141
|
+
**Zoom timing:** `zoom()` takes `2 × transition + duration` (default 2.7s) of the step's action time. In a voiced step it runs inside the narration like any action; pick `duration` so the zoom covers the sentence that talks about the element. Use it for "look here" moments (a total, a setting, a whole panel) — not on every click.
|
|
142
|
+
|
|
137
143
|
## 4. Timing Model
|
|
138
144
|
|
|
139
145
|
### Single-phase step (no `do`/`explain`)
|
|
@@ -464,7 +470,44 @@ Any other variant name only suffixes outputs and stamps `data-tutorial-variant`
|
|
|
464
470
|
|
|
465
471
|
In tutorial mode `mobileStage()` records **oversampled 2× by default** (Playwright never upscales video, so 1× phone video is blurry): it forces `--force-device-scale-factor=2`, aligns `deviceScaleFactor` and doubles `video.size` — layout unchanged. Tune with `mobileStage(2, 'Pixel 7', { scale })`. Caveat: `test.use()` replaces the config's `launchOptions`; repeat any tutorial-mode Chromium args via `{ launchArgs: [...] }`.
|
|
466
472
|
|
|
467
|
-
## 13.
|
|
473
|
+
## 13. Camera zoom
|
|
474
|
+
|
|
475
|
+
`zoom()` is a camera push-in: the whole top-level page (stage and scenes included) scales up around an element, holds, and scales back. The step banner and cursor stay crisp and unscaled.
|
|
476
|
+
|
|
477
|
+
```typescript
|
|
478
|
+
// One-shot: zoom in, hold `duration`, zoom out
|
|
479
|
+
tutorial.step('Your total includes VAT', async () => {
|
|
480
|
+
await tutorial.zoom(page.locator('.invoice-total'), { blur: true });
|
|
481
|
+
}, { explain: 'That is the amount your client will pay.' });
|
|
482
|
+
|
|
483
|
+
// Stay zoomed while acting — clicks, typing and the cursor all work zoomed
|
|
484
|
+
tutorial.step('Turn on reminders', async () => {
|
|
485
|
+
await tutorial.zoomIn(page.locator('#reminders'), { blur: true });
|
|
486
|
+
await tutorial.click(page.locator('#auto-remind'));
|
|
487
|
+
await tutorial.typeSlowly(page.locator('#cc'), 'finance@acme.com');
|
|
488
|
+
await tutorial.zoomOut();
|
|
489
|
+
});
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
| Option | Default | Effect |
|
|
493
|
+
|---|---|---|
|
|
494
|
+
| `scale` | auto | Auto fits the element to ~70% of the viewport, capped at 2.5×, never below 1× (a huge element only gets the blur) |
|
|
495
|
+
| `duration` | `1500` | `zoom()` only — hold time in ms |
|
|
496
|
+
| `blur` | `false` | Blur + slight dim of everything but the element. `true` = 4px, a number = radius in px |
|
|
497
|
+
| `transition` | `600` | Each zoom-in / zoom-out animation in ms |
|
|
498
|
+
|
|
499
|
+
### Rules
|
|
500
|
+
|
|
501
|
+
- **Timing:** `zoom()` costs `2 × transition + duration` (2.7s by default) of action time. In a voiced step the action starts inside the narration — make the zoom cover the sentence that talks about the element.
|
|
502
|
+
- **Pair `zoomIn()` / `zoomOut()` in the same step.** A new step's banner shown while zoomed would be scaled with the page.
|
|
503
|
+
- **Target what the narration names.** Zoom on the total the narration mentions, not the whole invoice; on a whole panel when the narration is about the panel.
|
|
504
|
+
- **Small targets get big:** a badge or icon goes straight to 2.5×. Pass `scale: 1.5`–`2` when context around it matters.
|
|
505
|
+
- **Blur when the page is busy**, or when the element must read as "the only thing that matters". Skip it on sparse pages — it adds nothing.
|
|
506
|
+
- **Highlight + zoom combine:** `highlight(el, 600)` then `zoom(el)` reads as "look here… closer".
|
|
507
|
+
- Pure decoration: no-op without `TUTORIAL_MODE`, not recorded in the timeline, safe in plain E2E runs.
|
|
508
|
+
- Don't zoom on every step — 1 to 3 zooms per tutorial, on the moments the viewer must not miss (see `storytelling.md` §9).
|
|
509
|
+
|
|
510
|
+
## 14. Checklist
|
|
468
511
|
|
|
469
512
|
Before submitting a tutorialized test:
|
|
470
513
|
|
|
@@ -480,6 +523,8 @@ Before submitting a tutorialized test:
|
|
|
480
523
|
- [ ] Test passes without `TUTORIAL_MODE` (plain E2E)
|
|
481
524
|
- [ ] Test passes with `TUTORIAL_MODE=true` (video generation)
|
|
482
525
|
- [ ] Video watched — does it feel human?
|
|
526
|
+
- [ ] Zooms (if any) land on what the narration names, ≤ 3 per tutorial, each `zoomIn` paired with a `zoomOut` in the same step
|
|
527
|
+
- [ ] Secrets (passwords, API keys) typed with `typeBlurred`, never `fill`/`typeSlowly`
|
|
483
528
|
|
|
484
529
|
Multi-scene tutorials, additionally:
|
|
485
530
|
|
|
@@ -191,3 +191,33 @@ Labels are on screen the whole tutorial, so they carry the cast:
|
|
|
191
191
|
|
|
192
192
|
A named person makes the handoff feel like a story rather than a demo of two
|
|
193
193
|
browser windows.
|
|
194
|
+
|
|
195
|
+
## 9. Directing Attention — Highlight, Zoom, Blur
|
|
196
|
+
|
|
197
|
+
The viewer's eye goes where the screen moves. You have three tools, from soft to strong:
|
|
198
|
+
|
|
199
|
+
| Tool | What it says | Use for |
|
|
200
|
+
|---|---|---|
|
|
201
|
+
| `highlight()` (also implicit in `click`/`fill`) | "This is what we touch" | Every interaction — it's automatic |
|
|
202
|
+
| `zoom()` | "Look closer — this matters" | A number, a status, a setting the story hinges on |
|
|
203
|
+
| `zoom(…, { blur: true })` | "Nothing else matters right now" | The one thing on a busy screen the viewer must not miss |
|
|
204
|
+
|
|
205
|
+
### When a zoom earns its place
|
|
206
|
+
|
|
207
|
+
- **The payoff:** the total after adding lines, the "Paid" status after the client pays, the generated reference number.
|
|
208
|
+
- **The tiny thing:** a badge, a toggle, an icon that is unreadable at video resolution.
|
|
209
|
+
- **The panel in focus:** a settings block filled in while zoomed (`zoomIn` → actions → `zoomOut`), so the viewer reads the fields instead of hunting for them.
|
|
210
|
+
|
|
211
|
+
### When it doesn't
|
|
212
|
+
|
|
213
|
+
- Something the narration doesn't mention — the camera and the voice must point at the same thing.
|
|
214
|
+
- Every step. Zooms lose their meaning by repetition: **1 to 3 per tutorial**.
|
|
215
|
+
- Large, obvious elements on a sparse page — the viewer already sees them.
|
|
216
|
+
|
|
217
|
+
### Pace it with the words
|
|
218
|
+
|
|
219
|
+
A zoom is a beat. Let the narration name the thing *while* the camera pushes in — "your total, VAT included" — and let the hold breathe for the explain sentence. If the narration has moved on, the zoom has lasted too long.
|
|
220
|
+
|
|
221
|
+
### Secrets stay secret
|
|
222
|
+
|
|
223
|
+
Passwords, API keys and tokens are typed with `typeBlurred()` — the field is blurred before the first keystroke and stays blurred. Say so in the narration ("type your password — it stays hidden") so the blur reads as intentional, not as a glitch.
|