@robertlinde/react-tour-kit 1.0.0 → 1.0.1
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/CHANGELOG.md +8 -0
- package/README.md +4 -4
- package/dist/shared/engine/tour-adapter.type.d.ts +7 -0
- package/dist/shared/engine/tour-adapter.type.d.ts.map +1 -1
- package/dist/shared/engine/tour-engine.d.ts +9 -0
- package/dist/shared/engine/tour-engine.d.ts.map +1 -1
- package/dist/shared/engine/tour-engine.js +53 -5
- package/dist/shared/engine/tour-engine.js.map +1 -1
- package/dist/shared/platform/create-tour-adapter.d.ts.map +1 -1
- package/dist/shared/platform/create-tour-adapter.js +16 -1
- package/dist/shared/platform/create-tour-adapter.js.map +1 -1
- package/package.json +1 -1
- package/src/shared/engine/tour-adapter.type.ts +11 -0
- package/src/shared/engine/tour-engine.ts +85 -6
- package/src/shared/platform/create-tour-adapter.ts +19 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Releases are published automatically from `main`; each GitHub release lists its commits. This file describes the larger changes.
|
|
4
4
|
|
|
5
|
+
## 1.0.1
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Targets moved by animations that report no events are followed: a React Native screen sliding in with the native driver (a stack navigator, for example), or an animation of the Web Animations API. Until such an animation ends, the target is measured where it started:
|
|
10
|
+
- when that was on screen, the highlight and tooltip stayed there instead of following the target;
|
|
11
|
+
- when it was off screen (a screen sliding in from the side), the step was skipped.
|
|
12
|
+
|
|
5
13
|
## 1.0.0
|
|
6
14
|
|
|
7
15
|
A rewrite for reliability, smoothness and accessibility. The everyday API is unchanged; see [MIGRATION.md](./MIGRATION.md) for the breaking changes.
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ startTour([
|
|
|
16
16
|
- **Simple**: one provider, one hook. Steps are plain objects.
|
|
17
17
|
- **Always in sight**: the target is scrolled into view — through nested scroll containers, horizontal lists, and past sticky headers, cookie banners and floating buttons — and the tooltip stays inside the visible screen and its safe areas, at any size, orientation and zoom.
|
|
18
18
|
- **Across pages and screens**: a step's `onBeforeStep` navigates; the tour waits for the target by itself.
|
|
19
|
-
- **Smooth**: the highlight glides from step to step, with the scroll. Nothing runs
|
|
19
|
+
- **Smooth**: the highlight glides from step to step, with the scroll. Nothing runs once a step is in place.
|
|
20
20
|
- **Accessible**: a real modal dialog with focus management, keyboard navigation and screen-reader announcements on the web; screen-reader focus, roles and the back button on React Native.
|
|
21
21
|
- **Themeable and customisable**: colours, texts, a content-only custom tooltip, and CSS hooks on the web.
|
|
22
22
|
- **Small and typed**: no dependencies besides React (and React Native), written in TypeScript.
|
|
@@ -319,7 +319,7 @@ type TourStep = {
|
|
|
319
319
|
- **`placement`** is a preference. If there is not enough room on that side, the tooltip moves to the opposite side, then to the roomier of the remaining sides; it is never pushed off screen.
|
|
320
320
|
- **`onBeforeStep`** runs before the step is shown — to navigate, open a menu, switch a tab, or load data. The tour waits for its promise, then for the target to appear (up to 5 seconds), so there is no need to poll or add delays. It receives the step's target and an `AbortSignal` that aborts when the step is abandoned (the user moves on or closes the tour). Make it idempotent: it runs again when the user comes back to the step. If it throws or rejects, the tour ends with the reason `'error'`.
|
|
321
321
|
|
|
322
|
-
**Missing targets**: if a step's target does not appear within 5 seconds, or cannot be scrolled into view, the step is skipped (with a warning in development) and the tour continues in the direction the user was going. Going back past the first step returns to the step the user came from. If no step can be shown at all, the tour ends with `'target-missing'`.
|
|
322
|
+
**Missing targets**: if a step's target does not appear within 5 seconds, or cannot be scrolled into view (and has not moved for a second, in case an animation is still bringing it in), the step is skipped (with a warning in development) and the tour continues in the direction the user was going. Going back past the first step returns to the step the user came from. If no step can be shown at all, the tour ends with `'target-missing'`.
|
|
323
323
|
|
|
324
324
|
**Carousels and sliders**: the tour scrolls everything users can scroll, but never an element with `overflow: hidden` — what such an element shows is up to your app (carousels, sliders, off-canvas menus), and scrolling it would leave it out of step with your app's state. Bring the target into view in `onBeforeStep`, for example by moving the carousel to its slide.
|
|
325
325
|
|
|
@@ -572,11 +572,11 @@ The tour is rendered as a modal `<dialog>` in the browser's top layer, so it is
|
|
|
572
572
|
|
|
573
573
|
## What the tour does for you
|
|
574
574
|
|
|
575
|
-
- **Keeps everything in sight.** Before a step is shown, its target is scrolled into view — through every scroll container around it, including horizontal ones — with room for the tooltip. Elements that stay put while the page scrolls (sticky headers, cookie banners, floating buttons; any number, any shape) are detected and the target is scrolled clear of them, in both directions. Targets larger than the screen are aligned to their start. The tooltip is placed inside the visible screen minus safe areas and the on-screen keyboard, flips to another side when there is no room, and scrolls its own content if it is taller than the screen. When the window is resized or rotated, or your app moves the target, the tour follows.
|
|
575
|
+
- **Keeps everything in sight.** Before a step is shown, its target is scrolled into view — through every scroll container around it, including horizontal ones — with room for the tooltip. Elements that stay put while the page scrolls (sticky headers, cookie banners, floating buttons; any number, any shape) are detected and the target is scrolled clear of them, in both directions. Targets larger than the screen are aligned to their start. The tooltip is placed inside the visible screen minus safe areas and the on-screen keyboard, flips to another side when there is no room, and scrolls its own content if it is taller than the screen. When the window is resized or rotated, or your app or an animation moves the target, the tour follows.
|
|
576
576
|
- **Waits instead of guessing.** Targets that are not rendered yet (lazy pages, animations, data loading) are awaited, event-driven, for up to 5 seconds.
|
|
577
577
|
- **Animates.** The tour fades in, the highlight glides from target to target together with the scroll, and the tooltip enters from the side it is on. On React Native every animation runs on the UI thread, so it stays smooth while JavaScript is busy. With reduced motion turned on in the system, movement is replaced by short fades.
|
|
578
578
|
- **Is accessible.** On the web the tour is a modal dialog (`aria-modal`, labelled by the step title, described by its content): focus moves into the tooltip and back to where it was when the tour ends, the rest of the page is inert, arrow keys and <kbd>Esc</kbd> work (but leave text fields, sliders, radio groups and other controls in a custom tooltip alone), a long tooltip scrolls with the keyboard, and step changes are announced. Buttons have accessible names and large enough touch targets. In Windows high-contrast mode the highlight is drawn as an outline. On React Native, screen-reader focus moves to the tooltip, the app behind it is hidden from screen readers (in a `TourHost`, see [Modal screens](#modal-screens)), and the back button closes the tour.
|
|
579
|
-
- **Costs nothing while idle.**
|
|
579
|
+
- **Costs nothing while idle.** Right after a step appears, the tour checks its target every frame until it has stayed put for a second (three at most), because animations can move it without any event (a React Native screen sliding in, for example). After that, while nothing moves, the tour does no work at all: no timers, no measuring, no re-rendering. Scrolling and resizing are followed once per frame, without re-rendering your app. `useTour()` only re-renders components when the tour's state changes.
|
|
580
580
|
- **Is safe.** Callbacks run exactly once, also in Strict Mode, with double clicks and when tours replace each other. Errors in your callbacks are reported and never leave the tour stuck.
|
|
581
581
|
|
|
582
582
|
## Testing your app
|
|
@@ -32,6 +32,13 @@ export type TourAdapter = {
|
|
|
32
32
|
readonly measure: (target: TourTarget) => Promise<TargetMeasurement | undefined>;
|
|
33
33
|
/** Resolves as soon as the target is rendered and measurable. Event-driven where the platform allows; never busy-polls. */
|
|
34
34
|
readonly waitForTarget: (target: TourTarget, signal: AbortSignal) => Promise<TargetMeasurement | undefined>;
|
|
35
|
+
/**
|
|
36
|
+
* Resolves with the target's measurement once it differs from `from`, or `undefined` once the
|
|
37
|
+
* target is gone. Checks every frame: animations can move a target without any event (React
|
|
38
|
+
* Native's native-driver animations, such as a screen sliding in, and the Web Animations API).
|
|
39
|
+
* Resolves `undefined` as soon as `signal` is aborted.
|
|
40
|
+
*/
|
|
41
|
+
readonly waitForMove: (target: TourTarget, from: TargetMeasurement | undefined, signal: AbortSignal) => Promise<TargetMeasurement | undefined>;
|
|
35
42
|
/**
|
|
36
43
|
* The visible area of the tour layer and what covers its edges (safe areas, the on-screen
|
|
37
44
|
* keyboard, stuck navigation bars). Pass the step's target so that a bar containing it does not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tour-adapter.type.d.ts","sourceRoot":"","sources":["../../../src/shared/engine/tour-adapter.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAE3D,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,CAAC;IAC/B,kHAAkH;IAClH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IACjF,2HAA2H;IAC3H,QAAQ,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC5G;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,KAAK,QAAQ,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,uIAAuI;IACvI,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACtG,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IACtC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D,CAAC"}
|
|
1
|
+
{"version":3,"file":"tour-adapter.type.d.ts","sourceRoot":"","sources":["../../../src/shared/engine/tour-adapter.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAE3D,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,CAAC;IAC/B,kHAAkH;IAClH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,GAAG,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IACjF,2HAA2H;IAC3H,QAAQ,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC5G;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,CACpB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,KAAK,QAAQ,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,uIAAuI;IACvI,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACtG,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IACtC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D,CAAC"}
|
|
@@ -17,6 +17,15 @@ export declare const tourLayout: {
|
|
|
17
17
|
};
|
|
18
18
|
/** How long to wait for a step's target to appear before skipping it. */
|
|
19
19
|
export declare const targetTimeoutMs = 5000;
|
|
20
|
+
/**
|
|
21
|
+
* Animations can move a target without any event (React Native's native-driver animations, such as
|
|
22
|
+
* a screen sliding in, and the Web Animations API): until one ends, the target is measured where it
|
|
23
|
+
* started. So right after a step appears, and before a target out of sight is skipped, the target is
|
|
24
|
+
* checked every frame until it has not moved for this long...
|
|
25
|
+
*/
|
|
26
|
+
export declare const silentMoveQuietMs = 1000;
|
|
27
|
+
/** ...or for this long at most. */
|
|
28
|
+
export declare const silentMoveMaxMs = 3000;
|
|
20
29
|
/**
|
|
21
30
|
* Safety cap for `onBeforeStep`. The tour covers the app meanwhile, so it cannot be waiting for the
|
|
22
31
|
* user; one that never settles would otherwise leave a dimmed screen with no way out.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tour-engine.d.ts","sourceRoot":"","sources":["../../../src/shared/engine/tour-engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tour-engine.d.ts","sourceRoot":"","sources":["../../../src/shared/engine/tour-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,15 @@ export const targetTimeoutMs = 5000;
|
|
|
21
21
|
const measureTimeoutMs = 1000;
|
|
22
22
|
/** Safety cap for scrolling a target into view. */
|
|
23
23
|
const revealTimeoutMs = 2000;
|
|
24
|
+
/**
|
|
25
|
+
* Animations can move a target without any event (React Native's native-driver animations, such as
|
|
26
|
+
* a screen sliding in, and the Web Animations API): until one ends, the target is measured where it
|
|
27
|
+
* started. So right after a step appears, and before a target out of sight is skipped, the target is
|
|
28
|
+
* checked every frame until it has not moved for this long...
|
|
29
|
+
*/
|
|
30
|
+
export const silentMoveQuietMs = 1000;
|
|
31
|
+
/** ...or for this long at most. */
|
|
32
|
+
export const silentMoveMaxMs = 3000;
|
|
24
33
|
/**
|
|
25
34
|
* Safety cap for `onBeforeStep`. The tour covers the app meanwhile, so it cannot be waiting for the
|
|
26
35
|
* user; one that never settles would otherwise leave a dimmed screen with no way out.
|
|
@@ -230,6 +239,13 @@ export function createTourEngine(initialOptions) {
|
|
|
230
239
|
reportedSizes.delete(id);
|
|
231
240
|
return { id, size: size ?? lastTooltipSize ?? fallbackTooltipSize };
|
|
232
241
|
}
|
|
242
|
+
/** Waits up to `ms` for the target to move away from `from`; resolves `undefined` if it does not. */
|
|
243
|
+
async function waitForMove(target, from, signal, ms) {
|
|
244
|
+
return withTimeout(async (childSignal) => {
|
|
245
|
+
const to = await options.adapter.waitForMove(target, from, childSignal);
|
|
246
|
+
return childSignal.aborted ? undefined : { to };
|
|
247
|
+
}, signal, ms);
|
|
248
|
+
}
|
|
233
249
|
/** Scrolls the target into view and returns its measurement if it is (at least partly) visible. */
|
|
234
250
|
async function reveal(input) {
|
|
235
251
|
const { target, signal } = input;
|
|
@@ -247,7 +263,20 @@ export function createTourEngine(initialOptions) {
|
|
|
247
263
|
}
|
|
248
264
|
};
|
|
249
265
|
try {
|
|
250
|
-
|
|
266
|
+
let outcome = await scrollIntoViewAndVerify({ ...input, startFollowing });
|
|
267
|
+
// Out of sight, the target may still be on its way (see `silentMoveQuietMs`): give it a moment
|
|
268
|
+
// to arrive before it is skipped.
|
|
269
|
+
const deadline = Date.now() + silentMoveMaxMs;
|
|
270
|
+
while (outcome && !outcome.isInSight && Date.now() < deadline) {
|
|
271
|
+
// eslint-disable-next-line no-await-in-loop -- each attempt starts where the target moved to
|
|
272
|
+
const move = await waitForMove(target, outcome.measurement, signal, Math.min(silentMoveQuietMs, deadline - Date.now()));
|
|
273
|
+
if (!move?.to || signal.aborted) {
|
|
274
|
+
return undefined;
|
|
275
|
+
}
|
|
276
|
+
// eslint-disable-next-line no-await-in-loop -- see above
|
|
277
|
+
outcome = await scrollIntoViewAndVerify({ ...input, measurement: move.to, startFollowing });
|
|
278
|
+
}
|
|
279
|
+
return outcome?.isInSight ? outcome.measurement : undefined;
|
|
251
280
|
}
|
|
252
281
|
finally {
|
|
253
282
|
signal.removeEventListener('abort', stopFollowing);
|
|
@@ -270,6 +299,7 @@ export function createTourEngine(initialOptions) {
|
|
|
270
299
|
}
|
|
271
300
|
}
|
|
272
301
|
}
|
|
302
|
+
/** Resolves `undefined` when aborted, or when the target is gone. */
|
|
273
303
|
async function scrollIntoViewAndVerify({ step, target, measurement, size, signal, startFollowing, }) {
|
|
274
304
|
const { adapter } = options;
|
|
275
305
|
const margins = buildRevealMargins({
|
|
@@ -317,12 +347,12 @@ export function createTourEngine(initialOptions) {
|
|
|
317
347
|
latest.measurement = current;
|
|
318
348
|
const visibility = visibilityOf(current, unobstructed(adapter.getViewport(target)));
|
|
319
349
|
if (visibility === 'full') {
|
|
320
|
-
return current;
|
|
350
|
+
return { measurement: current, isInSight: true };
|
|
321
351
|
}
|
|
322
352
|
// The first attempt can be cut short (the user scrolled, or the page moved while scrolling);
|
|
323
|
-
// the second one is instant. Partly visible targets are shown, invisible ones are
|
|
353
|
+
// the second one is instant. Partly visible targets are shown, invisible ones are not.
|
|
324
354
|
if (behavior === 'instant') {
|
|
325
|
-
return visibility === 'partial'
|
|
355
|
+
return { measurement: current, isInSight: visibility === 'partial' };
|
|
326
356
|
}
|
|
327
357
|
}
|
|
328
358
|
return undefined;
|
|
@@ -488,11 +518,29 @@ export function createTourEngine(initialOptions) {
|
|
|
488
518
|
}
|
|
489
519
|
const scope = new AbortController();
|
|
490
520
|
stepScope = scope;
|
|
491
|
-
|
|
521
|
+
const { target } = shown.step;
|
|
522
|
+
options.adapter.observe(target, () => {
|
|
492
523
|
void remeasure(scope.signal);
|
|
493
524
|
}, scope.signal);
|
|
525
|
+
if (target !== undefined) {
|
|
526
|
+
followSilentMoves(target, shownDetails?.measurement, scope.signal).catch(reportError);
|
|
527
|
+
}
|
|
494
528
|
return scope.signal;
|
|
495
529
|
}
|
|
530
|
+
/** Follows the shown target while it moves without any event (see `silentMoveQuietMs`). */
|
|
531
|
+
async function followSilentMoves(target, from, signal) {
|
|
532
|
+
const deadline = Date.now() + silentMoveMaxMs;
|
|
533
|
+
let last = from;
|
|
534
|
+
while (!signal.aborted && Date.now() < deadline) {
|
|
535
|
+
// eslint-disable-next-line no-await-in-loop -- one move at a time
|
|
536
|
+
const move = await waitForMove(target, last, signal, Math.min(silentMoveQuietMs, deadline - Date.now()));
|
|
537
|
+
if (!move || signal.aborted) {
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
last = move.to;
|
|
541
|
+
void remeasure(signal);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
496
544
|
/** `canKeepInView: false` only follows the target (after keepInView's own scroll: no second attempt). */
|
|
497
545
|
async function remeasure(signal, { canKeepInView = true } = {}) {
|
|
498
546
|
const sequence = ++measureSequence;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tour-engine.js","sourceRoot":"","sources":["../../../src/shared/engine/tour-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tour-engine.js","sourceRoot":"","sources":["../../../src/shared/engine/tour-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,OAAO,EACP,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,oBAAoB,EAAE,WAAW,EAAqB,MAAM,4CAA4C,CAAC;AAEjH,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAwB,MAAM,uCAAuC,CAAC;AAIjG,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAGlE,yDAAyD;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,4FAA4F;IAC5F,GAAG,EAAE,EAAE;IACP,qEAAqE;IACrE,gBAAgB,EAAE,CAAC;IACnB,0EAA0E;IAC1E,eAAe,EAAE,EAAE;IACnB,mEAAmE;IACnE,YAAY,EAAE,EAAE;CACR,CAAC;AAEX,yEAAyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,yGAAyG;AACzG,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,mDAAmD;AACnD,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,mCAAmC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,4FAA4F;AAC5F,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,2GAA2G;AAC3G,MAAM,mBAAmB,GAAS,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC;AA+F5D,MAAM,UAAU,GAAwB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE1D,MAAM,SAAS,GAAkC;IAC/C,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;IACxC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;CAC1C,CAAC;AAEF,6FAA6F;AAC7F,SAAS,YAAY,CAAC,QAAkB;IACtC,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,wEAAwE;AACxE;;;GAGG;AACH,SAAS,WAAW,CAAC,WAA8B;IACjD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1G,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,WAA8B,EAAE,MAAW;IAC/D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/E,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,IAAI,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AACpH,CAAC;AAED,SAAS,YAAY,CAAC,CAAgB,EAAE,CAAgB;IACtD,OAAO,CACL,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI;QAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI;QACpC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI;QACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI;QAC1C,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;YAC9B,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAClH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,cAAiC;IAChE,IAAI,OAAO,GAAG,cAAc,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAExC,IAAI,KAAK,GAAU;QACjB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,CAAC;QACd,gBAAgB,EAAE,SAAS;QAC3B,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,SAAS;KAC3B,CAAC;IACF,IAAI,WAAW,GAAoB,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAC,CAAC;IAClH,IAAI,SAAS,GAAkB;QAC7B,KAAK,EAAE,MAAM;QACb,eAAe,EAAE,SAAS;QAC1B,aAAa,EAAE,cAAc,CAAC,OAAO,CAAC,sBAAsB;QAC5D,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;KACnB,CAAC;IAEF,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,uCAAuC;IACvC,IAAI,UAAuC,CAAC;IAC5C,yCAAyC;IACzC,IAAI,SAAsC,CAAC;IAC3C,IAAI,YAAsC,CAAC;IAC3C,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,uEAAuE;IACvE,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,8FAA8F;IAC9F,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,kFAAkF;IAClF,IAAI,eAA4C,CAAC;IACjD,IAAI,eAAiC,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgB,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC5D,IAAI,SAAS,GAAwC,MAAM,CAAC;IAE5D,8FAA8F;IAC9F,QAAQ;IACR,8FAA8F;IAE9F,yFAAyF;IACzF,SAAS,iBAAiB,CAAC,QAAyB;QAClD,MAAM,IAAI,GAAoB;YAC5B,QAAQ,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM;YAChC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,UAAU;YAC1C,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM;SACrC,CAAC;QACF,MAAM,WAAW,GACf,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;YACnC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;YACzC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAC7B,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,CAAC;QAChD,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,qFAAqF;IACrF,SAAS,eAAe,CAAC,QAAuB;QAC9C,MAAM,IAAI,GAAkB;YAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,eAAe,EAAE,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;YAChF,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,sBAAsB;YACrD,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO;YAC/C,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU;YACzC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;QACF,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAC7B,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,eAAe;YACjD,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa;YAC7C,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO;YACjC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAC7B,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAC7B,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC;QACpC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,SAAS,QAAQ,CAAC,KAAqB;QACrC,KAAK,GAAG,EAAC,GAAG,KAAK,EAAE,GAAG,KAAK,EAAC,CAAC;QAC7B,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,UAAU,KAAK,WAAW,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO;QACT,CAAC;QAED,WAAW,GAAG,UAAU,CAAC;QACzB,SAAS,GAAG,QAAQ,CAAC;QACrB,yEAAyE;QACzE,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;QAChC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,8FAA8F;IAC9F,SAAS;IACT,8FAA8F;IAE9F,SAAS,aAAa,CACpB,IAAc,EACd,SAA0B,EAC1B,IAAU,EACV,QAAmC;QAEnC,OAAO,oBAAoB,CAAC;YAC1B,GAAG,UAAU;YACb,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YAClD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ;YACrC,iBAAiB,EAAE,QAAQ,EAAE,SAAS;YACtC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,SAAS,WAAW,CAAC,WAA0C,EAAE,IAAU;QACzE,MAAM,EAAC,KAAK,EAAC,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,YAAY,GAAG,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC;QACnC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACjF,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAC,EAAC,CAAC,CAAC;IACnD,CAAC;IAED,8FAA8F;IAC9F,iBAAiB;IACjB,8FAA8F;IAE9F,KAAK,UAAU,kBAAkB,CAAC,EAAU,EAAE,MAAmB;QAC/D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,EAAE;YAC/C,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvB,OAAO,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,IAAc,EAAE,MAAmB;QAC9E,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC;QACvB,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;QAC/F,QAAQ,CAAC,EAAC,OAAO,EAAE,EAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAC,EAAC,CAAC,CAAC;QAChG,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,EAC1D,MAAM,EACN,gBAAgB,CACjB,CAAC;QACF,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,eAAe,IAAI,mBAAmB,EAAC,CAAC;IACpE,CAAC;IAUD,qGAAqG;IACrG,KAAK,UAAU,WAAW,CACxB,MAAkB,EAClB,IAAmC,EACnC,MAAmB,EACnB,EAAU;QAEV,OAAO,WAAW,CAChB,KAAK,EAAE,WAAW,EAAE,EAAE;YACpB,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YACxE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC;QAChD,CAAC,EACD,MAAM,EACN,EAAE,CACH,CAAC;IACJ,CAAC;IAED,mGAAmG;IACnG,KAAK,UAAU,MAAM,CAAC,KAAkB;QACtC,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,KAAK,CAAC;QAC/B,yGAAyG;QACzG,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,MAAM,cAAc,GAAG,GAAS,EAAE;YAChC,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnC,UAAU,GAAG,IAAI,CAAC;gBAClB,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAC,GAAG,KAAK,EAAE,cAAc,EAAC,CAAC,CAAC;YACxE,+FAA+F;YAC/F,kCAAkC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;YAC9C,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;gBAC9D,6FAA6F;gBAC7F,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,MAAM,EACN,OAAO,CAAC,WAAW,EACnB,MAAM,EACN,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CACnD,CAAC;gBACF,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBAChC,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,yDAAyD;gBACzD,OAAO,GAAG,MAAM,uBAAuB,CAAC,EAAC,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,cAAc,EAAC,CAAC,CAAC;YAC5F,CAAC;YAED,OAAO,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACnD,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,yFAAyF;IACzF,KAAK,UAAU,YAAY,CAAC,MAAkB,EAAE,MAAmB;QACjE,MAAM,EAAC,OAAO,EAAC,GAAG,OAAO,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,yEAAyE;YACzE,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAChC,yDAAyD;YACzD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,IAAI,OAAO,EAAE,CAAC;gBAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;oBAClD,QAAQ,CAAC,EAAC,eAAe,EAAE,SAAS,EAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IASD,qEAAqE;IACrE,KAAK,UAAU,uBAAuB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,WAAW,EACX,IAAI,EACJ,MAAM,EACN,cAAc,GACsC;QACpD,MAAM,EAAC,OAAO,EAAC,GAAG,OAAO,CAAC;QAC1B,MAAM,OAAO,GAAG,kBAAkB,CAAC;YACjC,GAAG,UAAU;YACb,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/C,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC;SAC7C,CAAC,CAAC;QACH,gFAAgF;QAChF,MAAM,MAAM,GAAG,EAAC,WAAW,EAAC,CAAC;QAC7B,KAAK,MAAM,QAAQ,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAU,EAAE,CAAC;YACtD,gGAAgG;YAChG,MAAM,WAAW,CACf,KAAK,EAAE,WAAW,EAAE,EAAE;gBACpB,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC3B,OAAO;oBACP,QAAQ;oBACR,MAAM,EAAE,WAAW;oBACnB,aAAa,CAAC,WAAW;wBACvB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;4BACnB,OAAO;wBACT,CAAC;wBAED,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;4BACnC,QAAQ,CAAC,EAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC;4BACjF,cAAc,EAAE,CAAC;wBACnB,CAAC;6BAAM,CAAC;4BACN,uFAAuF;4BACvF,mCAAmC;4BACnC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;4BACzD,QAAQ,CAAC,EAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,EAAC,CAAC,CAAC;wBAClG,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC,EACD,MAAM,EACN,eAAe,CAChB,CAAC;YACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,yDAAyD;YACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;YAC7B,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC;YACjD,CAAC;YAED,6FAA6F;YAC7F,uFAAuF;YACvF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,SAAS,EAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IASD,SAAS,eAAe;QACtB,UAAU,EAAE,KAAK,EAAE,CAAC;QACpB,wFAAwF;QACxF,oEAAoE;QACpE,eAAe,EAAE,KAAK,EAAE,CAAC;QACzB,eAAe,GAAG,SAAS,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,UAAU,GAAG,UAAU,CAAC;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,OAAO,CACpB,SAAiB,EACjB,gBAAwB,EACxB,iBAAiC,EAAE;QAEnC,MAAM,EAAC,OAAO,EAAC,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,SAAS,CAAC;QACtB,IAAI,SAAS,GAAG,gBAAgB,CAAC;QACjC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/C,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACjF,yEAAyE;oBACzE,gBAAgB,GAAG,IAAI,CAAC;oBACxB,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC;oBAC9B,SAAS,GAAG,CAAC,CAAC;oBACd,SAAS;gBACX,CAAC;gBAED,MAAM,CAAC,gBAAgB,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC;gBAC1G,OAAO;YACT,CAAC;YAED,iFAAiF;YACjF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,iBAAiB,KAAK,KAAK,CAAC,CAAC;YAChG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,KAAK,IAAI,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,cAAc,CAC3B,IAAc,EACd,YAAmD,EACnD,MAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,GAAS,EAAE;YAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,KAAgD,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,EAAE;YAC9C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAmB,EAAE;gBAC1C,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,6FAA6F;IAC7F,KAAK,UAAU,WAAW,CACxB,UAA2B,EAC3B,KAAa,EACb,aAAsB;QAEtB,MAAM,EAAC,MAAM,EAAC,GAAG,UAAU,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAC,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,IAAI,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACxE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,CAAC,OAAO,EAAE;wBACd,SAAS,EAAE,KAAK;wBAChB,KAAK,EAAE,IAAI,KAAK,CACd,wBAAwB,KAAK,GAAG,CAAC,0BAA0B,mBAAmB,GAAG,IAAI,WAAW,CACjG;qBACF,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,MAAM,EAAC,OAAO,EAAC,GAAG,OAAO,CAAC;YAC1B,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC;YACtB,IAAI,WAA0C,CAAC;YAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,WAAW,GAAG,MAAM,WAAW,CAC7B,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,EACjE,MAAM,EACN,eAAe,CAChB,CAAC;gBACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,iBAAiB,KAAK,GAAG,CAAC,qCAAqC,eAAe,GAAG,IAAI,WAAW,CAAC,CAAC;oBAC1G,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;gBACxC,WAAW,GAAG,MAAM,MAAM,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;gBACtE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,iBAAiB,KAAK,GAAG,CAAC,+CAA+C,CAAC,CAAC;oBACnF,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,EAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAWD,SAAS,IAAI,CAAC,EAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAY;QACvE,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9B,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;QAED,YAAY,GAAG,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC;QACnC,eAAe,GAAG,IAAI,CAAC;QACvB,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,QAAQ,CAAC;YACP,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,KAAK;YAClB,gBAAgB,EAAE,SAAS;YAC3B,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE;gBACL,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,KAAK;gBAChB,IAAI;gBACJ,SAAS;gBACT,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;aACxD;SACF,CAAC,CAAC;QACH,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,SAAS,YAAY;QACnB,SAAS,EAAE,KAAK,EAAE,CAAC;QACnB,MAAM,EAAC,KAAK,EAAC,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,SAAS,GAAG,KAAK,CAAC;QAClB,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC,IAAI,CAAC;QAC5B,OAAO,CAAC,OAAO,CAAC,OAAO,CACrB,MAAM,EACN,GAAG,EAAE;YACH,KAAK,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,EACD,KAAK,CAAC,MAAM,CACb,CAAC;QACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxF,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,2FAA2F;IAC3F,KAAK,UAAU,iBAAiB,CAC9B,MAAkB,EAClB,IAAmC,EACnC,MAAmB;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;QAC9C,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAChD,kEAAkE;YAClE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACzG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACf,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,yGAAyG;IACzG,KAAK,UAAU,SAAS,CAAC,MAAmB,EAAE,EAAC,aAAa,GAAG,IAAI,KAA+B,EAAE;QAClG,MAAM,QAAQ,GAAG,EAAE,eAAe,CAAC;QACnC,MAAM,EAAC,KAAK,EAAC,GAAG,KAAK,CAAC;QACtB,8FAA8F;QAC9F,6FAA6F;QAC7F,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,EAAE,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC,IAAI,CAAC;QAC5B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,sEAAsE;QACtE,MAAM,IAAI,GAAG,YAAY,EAAE,IAAI,CAAC;QAChC,IAAI,MAAM,CAAC,OAAO,IAAI,QAAQ,KAAK,eAAe,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACrF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,mGAAmG;gBACnG,KAAK,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,CAAC,SAAS,EAAC,CAAC,CAAC;YACzE,CAAC;YAED,OAAO;QACT,CAAC;QAED,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,aAAa,EAAE,CAAC;YAC/C,KAAK,UAAU,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAUD;;;;OAIG;IACH,KAAK,UAAU,UAAU,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAkB;QAClF,IAAI,eAAe,EAAE,CAAC;YACpB,iBAAiB,GAAG,IAAI,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,EAAC,OAAO,EAAC,GAAG,OAAO,CAAC;QAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,mGAAmG;QACnG,0FAA0F;QAC1F,kGAAkG;QAClG,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QAChG,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,eAAe,GAAG,IAAI,CAAC;QACvB,iBAAiB,GAAG,KAAK,CAAC;QAC1B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,eAAe,GAAG,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,kBAAkB,CAAC;gBACjC,GAAG,UAAU;gBACb,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC;aAC7C,CAAC,CAAC;YACH,MAAM,WAAW,CACf,KAAK,EAAE,WAAW,EAAE,EAAE;gBACpB,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC3B,OAAO;oBACP,QAAQ,EAAE,QAAQ;oBAClB,MAAM,EAAE,WAAW;oBACnB,aAAa;wBACX,WAAW,GAAG,IAAI,CAAC;oBACrB,CAAC;iBACF,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC,EACD,KAAK,CAAC,MAAM,EACZ,eAAe,CAChB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,eAAe,GAAG,KAAK,CAAC;YACxB,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;gBAC9B,eAAe,GAAG,SAAS,CAAC;YAC9B,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,iBAAiB,EAAE,CAAC;oBACtB,2EAA2E;oBAC3E,iBAAiB,GAAG,KAAK,CAAC;oBAC1B,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC;qBAAM,IAAI,WAAW,EAAE,CAAC;oBACvB,uFAAuF;oBACvF,mEAAmE;oBACnE,KAAK,SAAS,CAAC,MAAM,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,MAAM,CAAC,MAAqB,EAAE,QAA+C,EAAE;QACtF,MAAM,EAAC,OAAO,EAAC,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,WAAW,CAAC;QAC3G,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAgB;YACxB,MAAM;YACN,SAAS;YACT,IAAI;YACJ,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;YAChC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC;QACF,UAAU,EAAE,KAAK,EAAE,CAAC;QACpB,UAAU,GAAG,SAAS,CAAC;QACvB,SAAS,EAAE,KAAK,EAAE,CAAC;QACnB,SAAS,GAAG,SAAS,CAAC;QACtB,YAAY,GAAG,SAAS,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,OAAO,CAAC,eAAe,IAAI,mBAAmB,CAAC,CAAC;QAClD,CAAC;QAED,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,aAAa,CAAC,KAAK,EAAE,CAAC;QACtB,6FAA6F;QAC7F,QAAQ,CAAC;YACP,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,CAAC;YACd,gBAAgB,EAAE,SAAS;YAC3B,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,8FAA8F;IAC9F,UAAU;IACV,8FAA8F;IAE9F,MAAM,OAAO,GAAgB;QAC3B,SAAS,CAAC,KAA0B,EAAE,MAAe,EAAE,YAA+B;YACpF,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,sDAAsD,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7F,OAAO;YACT,CAAC;YAED,qFAAqF;YACrF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnB,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,iFAAiF,CAAC,CAAC;YAC7F,CAAC;YAED,MAAM,OAAO,GAAY;gBACvB,GAAG,EAAE,EAAE,cAAc;gBACrB,MAAM;gBACN,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;gBACjB,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,YAAY,EAAE,SAAS;aACnC,CAAC;YACF,eAAe,GAAG,SAAS,CAAC;YAC5B,QAAQ,CAAC;gBACP,OAAO;gBACP,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,CAAC;gBACd,gBAAgB,EAAE,CAAC;gBACnB,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YACH,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,OAAO;YACL,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;QAED,QAAQ;YACN,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,MAAM,EAAC,OAAO,EAAC,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,WAAW,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,KAAK,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,EAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAC,CAAC,CAAC;QACtE,CAAC;QAED,QAAQ;YACN,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;gBAC3E,OAAO;YACT,CAAC;YAED,KAAK,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAC,CAAC,CAAC;QACvE,CAAC;QAED,QAAQ,CAAC,KAAa;YACpB,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,MAAM,EAAC,OAAO,EAAC,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACvF,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC/F,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC;YACzD,KAAK,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAC,CAAC,CAAC;QACxF,CAAC;KACF,CAAC;IAEF,8FAA8F;IAC9F,YAAY;IACZ,8FAA8F;IAE9F,SAAS,OAAO;QACd,SAAS,GAAG,WAAW,CAAC;QACxB,UAAU,EAAE,KAAK,EAAE,CAAC;QACpB,UAAU,GAAG,SAAS,CAAC;QACvB,SAAS,EAAE,KAAK,EAAE,CAAC;QACnB,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC;IAED,SAAS,MAAM;QACb,SAAS,GAAG,MAAM,CAAC;QACnB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;YAC9B,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAClC,KAAK,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,CAAC,QAAQ;YAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC;QACD,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW;QACjC,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;QAC7B,OAAO;QACP,SAAS,CAAC,IAAI;YACZ,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,KAAK;YACH,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBAC/B,SAAS,GAAG,MAAM,CAAC;YACrB,CAAC;iBAAM,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBACrC,MAAM,EAAE,CAAC;YACX,CAAC;YAED,OAAO,GAAG,EAAE;gBACV,SAAS,GAAG,YAAY,CAAC;gBACzB,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC/B,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;wBAC/B,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;QACD,iBAAiB,CAAC,EAAE,EAAE,OAAO;YAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC7B,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC5B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC5B,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,EAAE,YAAY,KAAK,EAAE,IAAI,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC7F,eAAe,GAAG,IAAI,CAAC;gBACvB,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,OAAO,CAAC,MAAM;YACZ,MAAM,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-tour-adapter.d.ts","sourceRoot":"","sources":["../../../src/shared/platform/create-tour-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAKnF,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-tour-adapter.d.ts","sourceRoot":"","sources":["../../../src/shared/platform/create-tour-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAKnF,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAgBxD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,WAAW,CA6IxE"}
|
|
@@ -8,8 +8,11 @@ const stableFramesNeeded = 2;
|
|
|
8
8
|
const maxSettleFrames = 12;
|
|
9
9
|
/** ...or after this long: frames stop in background tabs, timers only slow down. */
|
|
10
10
|
const maxSettleMs = 300;
|
|
11
|
-
/** Longest wait for a frame while settling, for the same reason. */
|
|
11
|
+
/** Longest wait for a frame while settling or watching, for the same reason. */
|
|
12
12
|
const settleFrameMs = 50;
|
|
13
|
+
function sameMeasurement(a, b) {
|
|
14
|
+
return boxesEqual(a?.rect, b?.rect, 0.5) && boxesEqual(a?.clip, b?.clip, 0.5);
|
|
15
|
+
}
|
|
13
16
|
/**
|
|
14
17
|
* The tour's behaviour on top of a platform: waiting for targets, following them, and scrolling
|
|
15
18
|
* them into view. Shared by every platform, so they behave the same; platforms only provide the
|
|
@@ -81,6 +84,18 @@ export function createTourAdapter(platform) {
|
|
|
81
84
|
unsubscribe();
|
|
82
85
|
}
|
|
83
86
|
},
|
|
87
|
+
async waitForMove(target, from, signal) {
|
|
88
|
+
while (!signal.aborted) {
|
|
89
|
+
// eslint-disable-next-line no-await-in-loop -- one measurement per frame
|
|
90
|
+
await nextFrameOrAfter(signal, settleFrameMs);
|
|
91
|
+
// eslint-disable-next-line no-await-in-loop -- see above
|
|
92
|
+
const current = signal.aborted ? undefined : await platform.measure(target);
|
|
93
|
+
if (!signal.aborted && !sameMeasurement(from, current)) {
|
|
94
|
+
return current;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
},
|
|
84
99
|
getViewport: platform.getViewport,
|
|
85
100
|
measuresWhileScrolling: platform.measuresWhileScrolling,
|
|
86
101
|
async reveal(target, request) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-tour-adapter.js","sourceRoot":"","sources":["../../../src/shared/platform/create-tour-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAGnD,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAE1E,wHAAwH;AACxH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,6GAA6G;AAC7G,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,oFAAoF;AACpF,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,
|
|
1
|
+
{"version":3,"file":"create-tour-adapter.js","sourceRoot":"","sources":["../../../src/shared/platform/create-tour-adapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@robertlinde/react-tour-kit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Guided product tours for React and React Native. Smooth, accessible, and guaranteed to stay on screen: the target is scrolled into view and the tooltip never renders out of sight.",
|
|
6
6
|
"author": "Robert Linde",
|
|
@@ -35,6 +35,17 @@ export type TourAdapter = {
|
|
|
35
35
|
readonly measure: (target: TourTarget) => Promise<TargetMeasurement | undefined>;
|
|
36
36
|
/** Resolves as soon as the target is rendered and measurable. Event-driven where the platform allows; never busy-polls. */
|
|
37
37
|
readonly waitForTarget: (target: TourTarget, signal: AbortSignal) => Promise<TargetMeasurement | undefined>;
|
|
38
|
+
/**
|
|
39
|
+
* Resolves with the target's measurement once it differs from `from`, or `undefined` once the
|
|
40
|
+
* target is gone. Checks every frame: animations can move a target without any event (React
|
|
41
|
+
* Native's native-driver animations, such as a screen sliding in, and the Web Animations API).
|
|
42
|
+
* Resolves `undefined` as soon as `signal` is aborted.
|
|
43
|
+
*/
|
|
44
|
+
readonly waitForMove: (
|
|
45
|
+
target: TourTarget,
|
|
46
|
+
from: TargetMeasurement | undefined,
|
|
47
|
+
signal: AbortSignal,
|
|
48
|
+
) => Promise<TargetMeasurement | undefined>;
|
|
38
49
|
/**
|
|
39
50
|
* The visible area of the tour layer and what covers its edges (safe areas, the on-screen
|
|
40
51
|
* keyboard, stuck navigation bars). Pass the step's target so that a bar containing it does not
|
|
@@ -38,6 +38,15 @@ export const targetTimeoutMs = 5000;
|
|
|
38
38
|
const measureTimeoutMs = 1000;
|
|
39
39
|
/** Safety cap for scrolling a target into view. */
|
|
40
40
|
const revealTimeoutMs = 2000;
|
|
41
|
+
/**
|
|
42
|
+
* Animations can move a target without any event (React Native's native-driver animations, such as
|
|
43
|
+
* a screen sliding in, and the Web Animations API): until one ends, the target is measured where it
|
|
44
|
+
* started. So right after a step appears, and before a target out of sight is skipped, the target is
|
|
45
|
+
* checked every frame until it has not moved for this long...
|
|
46
|
+
*/
|
|
47
|
+
export const silentMoveQuietMs = 1000;
|
|
48
|
+
/** ...or for this long at most. */
|
|
49
|
+
export const silentMoveMaxMs = 3000;
|
|
41
50
|
/**
|
|
42
51
|
* Safety cap for `onBeforeStep`. The tour covers the app meanwhile, so it cannot be waiting for the
|
|
43
52
|
* user; one that never settles would otherwise leave a dimmed screen with no way out.
|
|
@@ -388,6 +397,23 @@ export function createTourEngine(initialOptions: TourEngineOptions): TourEngine
|
|
|
388
397
|
readonly signal: AbortSignal;
|
|
389
398
|
};
|
|
390
399
|
|
|
400
|
+
/** Waits up to `ms` for the target to move away from `from`; resolves `undefined` if it does not. */
|
|
401
|
+
async function waitForMove(
|
|
402
|
+
target: TourTarget,
|
|
403
|
+
from: TargetMeasurement | undefined,
|
|
404
|
+
signal: AbortSignal,
|
|
405
|
+
ms: number,
|
|
406
|
+
): Promise<{readonly to: TargetMeasurement | undefined} | undefined> {
|
|
407
|
+
return withTimeout(
|
|
408
|
+
async (childSignal) => {
|
|
409
|
+
const to = await options.adapter.waitForMove(target, from, childSignal);
|
|
410
|
+
return childSignal.aborted ? undefined : {to};
|
|
411
|
+
},
|
|
412
|
+
signal,
|
|
413
|
+
ms,
|
|
414
|
+
);
|
|
415
|
+
}
|
|
416
|
+
|
|
391
417
|
/** Scrolls the target into view and returns its measurement if it is (at least partly) visible. */
|
|
392
418
|
async function reveal(input: RevealInput): Promise<TargetMeasurement | undefined> {
|
|
393
419
|
const {target, signal} = input;
|
|
@@ -407,7 +433,27 @@ export function createTourEngine(initialOptions: TourEngineOptions): TourEngine
|
|
|
407
433
|
};
|
|
408
434
|
|
|
409
435
|
try {
|
|
410
|
-
|
|
436
|
+
let outcome = await scrollIntoViewAndVerify({...input, startFollowing});
|
|
437
|
+
// Out of sight, the target may still be on its way (see `silentMoveQuietMs`): give it a moment
|
|
438
|
+
// to arrive before it is skipped.
|
|
439
|
+
const deadline = Date.now() + silentMoveMaxMs;
|
|
440
|
+
while (outcome && !outcome.isInSight && Date.now() < deadline) {
|
|
441
|
+
// eslint-disable-next-line no-await-in-loop -- each attempt starts where the target moved to
|
|
442
|
+
const move = await waitForMove(
|
|
443
|
+
target,
|
|
444
|
+
outcome.measurement,
|
|
445
|
+
signal,
|
|
446
|
+
Math.min(silentMoveQuietMs, deadline - Date.now()),
|
|
447
|
+
);
|
|
448
|
+
if (!move?.to || signal.aborted) {
|
|
449
|
+
return undefined;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
// eslint-disable-next-line no-await-in-loop -- see above
|
|
453
|
+
outcome = await scrollIntoViewAndVerify({...input, measurement: move.to, startFollowing});
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
return outcome?.isInSight ? outcome.measurement : undefined;
|
|
411
457
|
} finally {
|
|
412
458
|
signal.removeEventListener('abort', stopFollowing);
|
|
413
459
|
stopFollowing();
|
|
@@ -431,6 +477,14 @@ export function createTourEngine(initialOptions: TourEngineOptions): TourEngine
|
|
|
431
477
|
}
|
|
432
478
|
}
|
|
433
479
|
|
|
480
|
+
type RevealOutcome = {
|
|
481
|
+
/** Where the target is once scrolling has finished. */
|
|
482
|
+
readonly measurement: TargetMeasurement;
|
|
483
|
+
/** Fully visible, or partly visible after the instant correction: the step can be shown. */
|
|
484
|
+
readonly isInSight: boolean;
|
|
485
|
+
};
|
|
486
|
+
|
|
487
|
+
/** Resolves `undefined` when aborted, or when the target is gone. */
|
|
434
488
|
async function scrollIntoViewAndVerify({
|
|
435
489
|
step,
|
|
436
490
|
target,
|
|
@@ -438,7 +492,7 @@ export function createTourEngine(initialOptions: TourEngineOptions): TourEngine
|
|
|
438
492
|
size,
|
|
439
493
|
signal,
|
|
440
494
|
startFollowing,
|
|
441
|
-
}: RevealInput & {readonly startFollowing: () => void}): Promise<
|
|
495
|
+
}: RevealInput & {readonly startFollowing: () => void}): Promise<RevealOutcome | undefined> {
|
|
442
496
|
const {adapter} = options;
|
|
443
497
|
const margins = buildRevealMargins({
|
|
444
498
|
...tourLayout,
|
|
@@ -491,13 +545,13 @@ export function createTourEngine(initialOptions: TourEngineOptions): TourEngine
|
|
|
491
545
|
latest.measurement = current;
|
|
492
546
|
const visibility = visibilityOf(current, unobstructed(adapter.getViewport(target)));
|
|
493
547
|
if (visibility === 'full') {
|
|
494
|
-
return current;
|
|
548
|
+
return {measurement: current, isInSight: true};
|
|
495
549
|
}
|
|
496
550
|
|
|
497
551
|
// The first attempt can be cut short (the user scrolled, or the page moved while scrolling);
|
|
498
|
-
// the second one is instant. Partly visible targets are shown, invisible ones are
|
|
552
|
+
// the second one is instant. Partly visible targets are shown, invisible ones are not.
|
|
499
553
|
if (behavior === 'instant') {
|
|
500
|
-
return visibility === 'partial'
|
|
554
|
+
return {measurement: current, isInSight: visibility === 'partial'};
|
|
501
555
|
}
|
|
502
556
|
}
|
|
503
557
|
|
|
@@ -718,16 +772,41 @@ export function createTourEngine(initialOptions: TourEngineOptions): TourEngine
|
|
|
718
772
|
|
|
719
773
|
const scope = new AbortController();
|
|
720
774
|
stepScope = scope;
|
|
775
|
+
const {target} = shown.step;
|
|
721
776
|
options.adapter.observe(
|
|
722
|
-
|
|
777
|
+
target,
|
|
723
778
|
() => {
|
|
724
779
|
void remeasure(scope.signal);
|
|
725
780
|
},
|
|
726
781
|
scope.signal,
|
|
727
782
|
);
|
|
783
|
+
if (target !== undefined) {
|
|
784
|
+
followSilentMoves(target, shownDetails?.measurement, scope.signal).catch(reportError);
|
|
785
|
+
}
|
|
786
|
+
|
|
728
787
|
return scope.signal;
|
|
729
788
|
}
|
|
730
789
|
|
|
790
|
+
/** Follows the shown target while it moves without any event (see `silentMoveQuietMs`). */
|
|
791
|
+
async function followSilentMoves(
|
|
792
|
+
target: TourTarget,
|
|
793
|
+
from: TargetMeasurement | undefined,
|
|
794
|
+
signal: AbortSignal,
|
|
795
|
+
): Promise<void> {
|
|
796
|
+
const deadline = Date.now() + silentMoveMaxMs;
|
|
797
|
+
let last = from;
|
|
798
|
+
while (!signal.aborted && Date.now() < deadline) {
|
|
799
|
+
// eslint-disable-next-line no-await-in-loop -- one move at a time
|
|
800
|
+
const move = await waitForMove(target, last, signal, Math.min(silentMoveQuietMs, deadline - Date.now()));
|
|
801
|
+
if (!move || signal.aborted) {
|
|
802
|
+
return;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
last = move.to;
|
|
806
|
+
void remeasure(signal);
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
|
|
731
810
|
/** `canKeepInView: false` only follows the target (after keepInView's own scroll: no second attempt). */
|
|
732
811
|
async function remeasure(signal: AbortSignal, {canKeepInView = true}: {canKeepInView?: boolean} = {}): Promise<void> {
|
|
733
812
|
const sequence = ++measureSequence;
|
|
@@ -13,9 +13,13 @@ const stableFramesNeeded = 2;
|
|
|
13
13
|
const maxSettleFrames = 12;
|
|
14
14
|
/** ...or after this long: frames stop in background tabs, timers only slow down. */
|
|
15
15
|
const maxSettleMs = 300;
|
|
16
|
-
/** Longest wait for a frame while settling, for the same reason. */
|
|
16
|
+
/** Longest wait for a frame while settling or watching, for the same reason. */
|
|
17
17
|
const settleFrameMs = 50;
|
|
18
18
|
|
|
19
|
+
function sameMeasurement(a: TargetMeasurement | undefined, b: TargetMeasurement | undefined): boolean {
|
|
20
|
+
return boxesEqual(a?.rect, b?.rect, 0.5) && boxesEqual(a?.clip, b?.clip, 0.5);
|
|
21
|
+
}
|
|
22
|
+
|
|
19
23
|
/**
|
|
20
24
|
* The tour's behaviour on top of a platform: waiting for targets, following them, and scrolling
|
|
21
25
|
* them into view. Shared by every platform, so they behave the same; platforms only provide the
|
|
@@ -94,6 +98,20 @@ export function createTourAdapter(platform: PlatformAdapter): TourAdapter {
|
|
|
94
98
|
}
|
|
95
99
|
},
|
|
96
100
|
|
|
101
|
+
async waitForMove(target, from, signal): Promise<TargetMeasurement | undefined> {
|
|
102
|
+
while (!signal.aborted) {
|
|
103
|
+
// eslint-disable-next-line no-await-in-loop -- one measurement per frame
|
|
104
|
+
await nextFrameOrAfter(signal, settleFrameMs);
|
|
105
|
+
// eslint-disable-next-line no-await-in-loop -- see above
|
|
106
|
+
const current = signal.aborted ? undefined : await platform.measure(target);
|
|
107
|
+
if (!signal.aborted && !sameMeasurement(from, current)) {
|
|
108
|
+
return current;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return undefined;
|
|
113
|
+
},
|
|
114
|
+
|
|
97
115
|
getViewport: platform.getViewport,
|
|
98
116
|
|
|
99
117
|
measuresWhileScrolling: platform.measuresWhileScrolling,
|