@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 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 while a step is on screen.
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.** While a step is on screen and 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.
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":"AAWA,OAAO,EAAoC,KAAK,aAAa,EAAC,MAAM,4CAA4C,CAAC;AACjH,OAAO,KAAK,EAAC,GAAG,EAAQ,IAAI,EAAW,MAAM,8BAA8B,CAAC;AAG5E,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAmB,eAAe,EAAe,aAAa,EAAC,MAAM,gCAAgC,CAAC;AAClH,OAAO,KAAK,EAAgB,QAAQ,EAAa,MAAM,4BAA4B,CAAC;AAGpF,OAAO,KAAK,EAAoB,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAE3E,yDAAyD;AACzD,eAAO,MAAM,UAAU;IACrB,4FAA4F;;IAE5F,qEAAqE;;IAErE,0EAA0E;;IAE1E,mEAAmE;;CAE3D,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,eAAe,OAAO,CAAC;AAKpC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,mCAAmC;AACnC,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAM1C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AAEvE,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG;IACtB,oHAAoH;IACpH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,kGAAkG;IAClG,QAAQ,CAAC,SAAS,EAAE,GAAG,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;CAChC,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,GAAG,GAAG,SAAS,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,aAAa,GAAG,OAAO,GAAG,eAAe,CAAC,CAAC;AAE5G,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;AAEhH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACzD,QAAQ,CAAC,cAAc,EAAE,MAAM,eAAe,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,aAAa,CAAC;IAC3C,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACzD,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,IAAI,CAAC;IACjC,kHAAkH;IAClH,QAAQ,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC7D,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC;CAC1F,CAAC;AAyFF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,iBAAiB,GAAG,UAAU,CA85B9E"}
@@ -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
- return await scrollIntoViewAndVerify({ ...input, startFollowing });
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 skipped.
353
+ // the second one is instant. Partly visible targets are shown, invisible ones are not.
324
354
  if (behavior === 'instant') {
325
- return visibility === 'partial' ? current : undefined;
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
- options.adapter.observe(shown.step.target, () => {
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":"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"}
@@ -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;AAYxD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,WAAW,CA+HxE"}
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,oEAAoE;AACpE,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAyB;IACzD,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QAEzB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM;YAChC,4FAA4F;YAC5F,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,IAA8B,CAAC;YACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;gBAClD,UAAU,GAAG,IAAI,CAAC;gBAClB,IAAI,EAAE,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,IAAI,EAAE,EAAE,CAAC;YACX,CAAC,CAAC;YAEF,MAAM,gBAAgB,GAAG,KAAK,IAAmB,EAAE,CACjD,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAC5B,IAAI,GAAG,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,IAAI,QAAyB,CAAC;gBAC9B,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,IAAI,WAAW,GAAG,CAAC,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACvB,UAAU,GAAG,KAAK,CAAC;oBACnB,+FAA+F;oBAC/F,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,OAAO,SAAS,CAAC;oBACnB,CAAC;oBAED,IAAI,OAAO,EAAE,CAAC;wBACZ,YAAY,GAAG,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1F,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;wBAC5D,YAAY,EAAE,CAAC;wBACf,MAAM,SAAS,GACb,YAAY,IAAI,kBAAkB;4BAClC,YAAY,GAAG,eAAe;4BAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,IAAI,WAAW,CAAC;wBAC1C,IAAI,SAAS,EAAE,CAAC;4BACd,OAAO,OAAO,CAAC;wBACjB,CAAC;wBAED,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;wBACxB,yDAAyD;wBACzD,MAAM,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;wBAC9C,SAAS;oBACX,CAAC;oBAED,QAAQ,GAAG,SAAS,CAAC;oBACrB,YAAY,GAAG,CAAC,CAAC;oBACjB,YAAY,GAAG,CAAC,CAAC;oBACjB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;wBACtC,yDAAyD;wBACzD,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC1B,CAAC;yBAAM,IAAI,CAAC,UAAU,EAAE,CAAC;wBACvB,mEAAmE;wBACnE,yDAAyD;wBACzD,MAAM,gBAAgB,EAAE,CAAC;wBACzB,IAAI,GAAG,SAAS,CAAC;oBACnB,CAAC;gBACH,CAAC;gBAED,OAAO,SAAS,CAAC;YACnB,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7C,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,WAAW,EAAE,QAAQ,CAAC,WAAW;QAEjC,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB;QAEvD,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;YAC1B,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,MAAM,wBAAwB,CAAC;gBAC7B,UAAU;gBACV,KAAK,CAAC,aAAa;oBACjB,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACnD,OAAO,WAAW,EAAE,IAAI,CAAC;gBAC3B,CAAC;gBACD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE;gBACxE,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,MAA8B,EAAE,QAAQ,EAAE,MAAM;YACtD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,0DAA0D;YAC1D,IAAI,WAAqC,CAAC;YAC1C,MAAM,QAAQ,GAAG,GAAS,EAAE;gBAC1B,IAAI,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBAChD,OAAO;gBACT,CAAC;gBAED,WAAW,GAAG,YAAY,CAAC,GAAG,EAAE;oBAC9B,WAAW,GAAG,SAAS,CAAC;oBACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,QAAQ,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpC,WAAW,EAAE,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,aAAa,EAAE,QAAQ,CAAC,aAAa;QAErC,SAAS;KACV,CAAC;AACJ,CAAC"}
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.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
- return await scrollIntoViewAndVerify({...input, startFollowing});
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<TargetMeasurement | undefined> {
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 skipped.
552
+ // the second one is instant. Partly visible targets are shown, invisible ones are not.
499
553
  if (behavior === 'instant') {
500
- return visibility === 'partial' ? current : undefined;
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
- shown.step.target,
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,