react-native-lumen 1.0.1 → 1.1.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.
Files changed (49) hide show
  1. package/README.md +770 -231
  2. package/lib/module/components/TourOverlay.js +45 -45
  3. package/lib/module/components/TourOverlay.js.map +1 -1
  4. package/lib/module/components/TourProvider.js +345 -80
  5. package/lib/module/components/TourProvider.js.map +1 -1
  6. package/lib/module/components/TourTooltip.js +113 -73
  7. package/lib/module/components/TourTooltip.js.map +1 -1
  8. package/lib/module/components/TourZone.js +229 -125
  9. package/lib/module/components/TourZone.js.map +1 -1
  10. package/lib/module/constants/defaults.js +43 -0
  11. package/lib/module/constants/defaults.js.map +1 -1
  12. package/lib/module/context/TourContext.js +5 -0
  13. package/lib/module/context/TourContext.js.map +1 -0
  14. package/lib/module/hooks/useTour.js +1 -1
  15. package/lib/module/hooks/useTour.js.map +1 -1
  16. package/lib/module/hooks/useTourScrollView.js +74 -0
  17. package/lib/module/hooks/useTourScrollView.js.map +1 -0
  18. package/lib/module/index.js +6 -0
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/utils/storage.js +188 -0
  21. package/lib/module/utils/storage.js.map +1 -0
  22. package/lib/typescript/src/components/TourOverlay.d.ts.map +1 -1
  23. package/lib/typescript/src/components/TourProvider.d.ts +21 -4
  24. package/lib/typescript/src/components/TourProvider.d.ts.map +1 -1
  25. package/lib/typescript/src/components/TourTooltip.d.ts.map +1 -1
  26. package/lib/typescript/src/components/TourZone.d.ts +19 -1
  27. package/lib/typescript/src/components/TourZone.d.ts.map +1 -1
  28. package/lib/typescript/src/constants/defaults.d.ts +10 -0
  29. package/lib/typescript/src/constants/defaults.d.ts.map +1 -1
  30. package/lib/typescript/src/context/TourContext.d.ts +3 -0
  31. package/lib/typescript/src/context/TourContext.d.ts.map +1 -0
  32. package/lib/typescript/src/hooks/useTourScrollView.d.ts +76 -0
  33. package/lib/typescript/src/hooks/useTourScrollView.d.ts.map +1 -0
  34. package/lib/typescript/src/index.d.ts +4 -0
  35. package/lib/typescript/src/index.d.ts.map +1 -1
  36. package/lib/typescript/src/types/index.d.ts +316 -1
  37. package/lib/typescript/src/types/index.d.ts.map +1 -1
  38. package/lib/typescript/src/utils/storage.d.ts +51 -0
  39. package/lib/typescript/src/utils/storage.d.ts.map +1 -0
  40. package/package.json +169 -171
  41. package/src/components/TourOverlay.tsx +0 -153
  42. package/src/components/TourProvider.tsx +0 -361
  43. package/src/components/TourTooltip.tsx +0 -256
  44. package/src/components/TourZone.tsx +0 -371
  45. package/src/constants/animations.ts +0 -71
  46. package/src/constants/defaults.ts +0 -15
  47. package/src/hooks/useTour.ts +0 -10
  48. package/src/index.tsx +0 -8
  49. package/src/types/index.ts +0 -142
@@ -1,13 +1,88 @@
1
1
  "use strict";
2
2
 
3
- import React, { createContext, useState, useCallback, useMemo, useRef } from 'react';
3
+ import React, { useState, useCallback, useMemo, useRef, useEffect } from 'react';
4
4
  import { useSharedValue, withSpring, withTiming, useAnimatedRef, default as Animated } from 'react-native-reanimated';
5
- import { StyleSheet } from 'react-native';
5
+ import { StyleSheet, Dimensions } from 'react-native';
6
+ import { TourContext } from "../context/TourContext.js";
6
7
  import { TourOverlay } from "./TourOverlay.js";
7
8
  import { TourTooltip } from "./TourTooltip.js";
8
- import { DEFAULT_BACKDROP_OPACITY, DEFAULT_SPRING_CONFIG } from "../constants/defaults.js";
9
+ import { DEFAULT_BACKDROP_OPACITY, DEFAULT_SPRING_CONFIG, DEFAULT_ZONE_STYLE, resolveZoneStyle } from "../constants/defaults.js";
10
+ import { detectStorage, saveTourProgress, loadTourProgress, clearTourProgress } from "../utils/storage.js";
9
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- export const TourContext = /*#__PURE__*/createContext(null);
12
+ const {
13
+ width: SCREEN_WIDTH,
14
+ height: SCREEN_HEIGHT
15
+ } = Dimensions.get('window');
16
+
17
+ /**
18
+ * Computes the zone geometry based on element bounds and zone style.
19
+ * Handles different shapes: rounded-rect, circle, pill.
20
+ */
21
+ function computeZoneGeometry(element, style) {
22
+ const {
23
+ paddingTop,
24
+ paddingRight,
25
+ paddingBottom,
26
+ paddingLeft,
27
+ shape,
28
+ borderRadius
29
+ } = style;
30
+ let sx, sy, sw, sh, sr;
31
+ switch (shape) {
32
+ case 'circle':
33
+ {
34
+ // Create a circular zone that encompasses the element
35
+ const cx = element.x + element.width / 2;
36
+ const cy = element.y + element.height / 2;
37
+ // Use the larger dimension to create a circle, plus padding
38
+ const radius = Math.max(element.width, element.height) / 2 + style.padding;
39
+ sx = cx - radius;
40
+ sy = cy - radius;
41
+ sw = radius * 2;
42
+ sh = radius * 2;
43
+ sr = radius;
44
+ break;
45
+ }
46
+ case 'pill':
47
+ {
48
+ // Pill shape with fully rounded ends
49
+ sx = element.x - paddingLeft;
50
+ sy = element.y - paddingTop;
51
+ sw = element.width + paddingLeft + paddingRight;
52
+ sh = element.height + paddingTop + paddingBottom;
53
+ sr = sh / 2; // Fully rounded based on height
54
+ break;
55
+ }
56
+ case 'rounded-rect':
57
+ default:
58
+ {
59
+ sx = element.x - paddingLeft;
60
+ sy = element.y - paddingTop;
61
+ sw = element.width + paddingLeft + paddingRight;
62
+ sh = element.height + paddingTop + paddingBottom;
63
+ sr = borderRadius;
64
+ break;
65
+ }
66
+ }
67
+
68
+ // Clamp to screen bounds
69
+ sx = Math.max(0, Math.min(sx, SCREEN_WIDTH - sw));
70
+ sy = Math.max(0, Math.min(sy, SCREEN_HEIGHT - sh));
71
+ sw = Math.min(sw, SCREEN_WIDTH - sx);
72
+ sh = Math.min(sh, SCREEN_HEIGHT - sy);
73
+
74
+ // Ensure minimum size
75
+ const minSize = 40;
76
+ sw = Math.max(sw, minSize);
77
+ sh = Math.max(sh, minSize);
78
+ return {
79
+ x: sx,
80
+ y: sy,
81
+ width: sw,
82
+ height: sh,
83
+ borderRadius: sr
84
+ };
85
+ }
11
86
  const AnimatedView = Animated.View;
12
87
  export const TourProvider = ({
13
88
  children,
@@ -17,11 +92,80 @@ export const TourProvider = ({
17
92
  }) => {
18
93
  const [steps, setSteps] = useState({});
19
94
  const [currentStep, setCurrentStep] = useState(null);
95
+ const [hasSavedProgress, setHasSavedProgress] = useState(false);
20
96
 
21
97
  // ref to access latest measurements without causing re-renders
22
98
  const measurements = useRef({});
23
99
  const containerRef = useAnimatedRef();
24
100
 
101
+ // ─── Scroll-end detection ────────────────────────────────────────────────────
102
+ // Holds a one-shot callback set by the active TourZone just before it calls
103
+ // scrollTo(). When the ScrollView fires onMomentumScrollEnd, triggerScrollEnd
104
+ // calls this callback so TourZone can measure the final settled position
105
+ // immediately instead of waiting for a fixed-duration timeout.
106
+ const onScrollEndCallbackRef = useRef(null);
107
+ const registerScrollEndCallback = useCallback(cb => {
108
+ onScrollEndCallbackRef.current = cb;
109
+ }, []);
110
+ const unregisterScrollEndCallback = useCallback(() => {
111
+ onScrollEndCallbackRef.current = null;
112
+ }, []);
113
+
114
+ /**
115
+ * One-shot: fires the registered callback and immediately clears it so that
116
+ * user-initiated momentum scrolls that happen between steps don't re-trigger.
117
+ */
118
+ const triggerScrollEnd = useCallback(() => {
119
+ const cb = onScrollEndCallbackRef.current;
120
+ if (cb) {
121
+ onScrollEndCallbackRef.current = null;
122
+ cb();
123
+ }
124
+ }, []);
125
+
126
+ // ─── Persistence Setup ─────────────────────────────────────────────────────
127
+ const persistenceConfig = config?.persistence;
128
+ const isPersistenceEnabled = persistenceConfig?.enabled ?? false;
129
+ const tourId = persistenceConfig?.tourId ?? 'default';
130
+ const autoResume = persistenceConfig?.autoResume ?? true;
131
+ const clearOnComplete = persistenceConfig?.clearOnComplete ?? true;
132
+ const maxAge = persistenceConfig?.maxAge;
133
+
134
+ // Get storage adapter (custom or auto-detected)
135
+ const storageAdapter = useMemo(() => {
136
+ if (!isPersistenceEnabled) return null;
137
+ if (persistenceConfig?.storage) return persistenceConfig.storage;
138
+ const detected = detectStorage();
139
+ return detected.adapter;
140
+ }, [isPersistenceEnabled, persistenceConfig?.storage]);
141
+
142
+ // Check for saved progress on mount
143
+ useEffect(() => {
144
+ if (!isPersistenceEnabled || !storageAdapter) {
145
+ setHasSavedProgress(false);
146
+ return;
147
+ }
148
+ const checkSavedProgress = async () => {
149
+ try {
150
+ const savedProgress = await loadTourProgress(storageAdapter, tourId);
151
+ if (savedProgress) {
152
+ // Check if progress is expired
153
+ if (maxAge && Date.now() - savedProgress.timestamp > maxAge) {
154
+ await clearTourProgress(storageAdapter, tourId);
155
+ setHasSavedProgress(false);
156
+ } else {
157
+ setHasSavedProgress(true);
158
+ }
159
+ } else {
160
+ setHasSavedProgress(false);
161
+ }
162
+ } catch {
163
+ setHasSavedProgress(false);
164
+ }
165
+ };
166
+ checkSavedProgress();
167
+ }, [isPersistenceEnabled, storageAdapter, tourId, maxAge]);
168
+
25
169
  // --- Shared Values for Animations (Zero Bridge Crossing) ---
26
170
  // Initialize off-screen or 0
27
171
  const targetX = useSharedValue(0);
@@ -30,6 +174,35 @@ export const TourProvider = ({
30
174
  const targetHeight = useSharedValue(0);
31
175
  const targetRadius = useSharedValue(10); // Default border radius
32
176
  const opacity = useSharedValue(0); // 0 = hidden, 1 = visible
177
+ const zoneBorderWidth = useSharedValue(DEFAULT_ZONE_STYLE.borderWidth);
178
+
179
+ // Track current step's resolved zone style
180
+ const currentZoneStyle = useMemo(() => {
181
+ if (!currentStep) return null;
182
+ const step = steps[currentStep];
183
+ if (!step) return null;
184
+ return resolveZoneStyle(config?.zoneStyle, step.zoneStyle);
185
+ }, [currentStep, steps, config?.zoneStyle]);
186
+
187
+ // Helper to get spring config for a step (supports per-step overrides)
188
+ const getSpringConfigForStep = useCallback(stepKey => {
189
+ const step = steps[stepKey];
190
+ const stepStyle = step?.zoneStyle;
191
+ const baseConfig = config?.springConfig ?? DEFAULT_SPRING_CONFIG;
192
+
193
+ // Allow per-step spring overrides
194
+ if (stepStyle?.springDamping !== undefined || stepStyle?.springStiffness !== undefined) {
195
+ return {
196
+ damping: stepStyle.springDamping ?? baseConfig.damping,
197
+ stiffness: stepStyle.springStiffness ?? baseConfig.stiffness,
198
+ mass: baseConfig.mass,
199
+ overshootClamping: baseConfig.overshootClamping,
200
+ restDisplacementThreshold: baseConfig.restDisplacementThreshold,
201
+ restSpeedThreshold: baseConfig.restSpeedThreshold
202
+ };
203
+ }
204
+ return baseConfig;
205
+ }, [steps, config?.springConfig]);
33
206
 
34
207
  // Helper to animate to a specific step's layout
35
208
  const animateToStep = useCallback(stepKey => {
@@ -40,18 +213,18 @@ export const TourProvider = ({
40
213
  console.warn('[TourProvider] Invalid measurements for step:', stepKey, measure);
41
214
  return;
42
215
  }
43
- const springConfig = config?.springConfig ?? DEFAULT_SPRING_CONFIG;
44
- targetX.value = withSpring(measure.x, springConfig);
45
- targetY.value = withSpring(measure.y, springConfig);
46
- targetWidth.value = withSpring(measure.width, springConfig);
47
- targetHeight.value = withSpring(measure.height, springConfig);
48
-
49
- // If measure result has radius or step meta has radius, use it.
50
- // For now defaulting to 10 or meta reading if we passed it back in measure?
51
- // Let's assume meta is in steps state.
52
216
  const step = steps[stepKey];
53
- const radius = step?.meta?.borderRadius ?? 10;
54
- targetRadius.value = withSpring(radius, springConfig);
217
+ const resolvedStyle = resolveZoneStyle(config?.zoneStyle, step?.zoneStyle);
218
+ const springConfig = getSpringConfigForStep(stepKey);
219
+
220
+ // Compute zone geometry based on style (handles shapes and padding)
221
+ const geo = computeZoneGeometry(measure, resolvedStyle);
222
+ targetX.value = withSpring(geo.x, springConfig);
223
+ targetY.value = withSpring(geo.y, springConfig);
224
+ targetWidth.value = withSpring(geo.width, springConfig);
225
+ targetHeight.value = withSpring(geo.height, springConfig);
226
+ targetRadius.value = withSpring(geo.borderRadius, springConfig);
227
+ zoneBorderWidth.value = withSpring(resolvedStyle.borderWidth, springConfig);
55
228
 
56
229
  // Ensure overlay is visible
57
230
  opacity.value = withTiming(backdropOpacity, {
@@ -60,12 +233,18 @@ export const TourProvider = ({
60
233
  } else {
61
234
  console.warn('[TourProvider] No measurements found for step:', stepKey);
62
235
  }
63
- }, [backdropOpacity, targetX, targetY, targetWidth, targetHeight, targetRadius, opacity, config?.springConfig, steps]);
236
+ }, [backdropOpacity, targetX, targetY, targetWidth, targetHeight, targetRadius, zoneBorderWidth, opacity, getSpringConfigForStep, steps, config?.zoneStyle]);
64
237
  const registerStep = useCallback(step => {
65
238
  setSteps(prev => ({
66
239
  ...prev,
67
240
  [step.key]: step
68
241
  }));
242
+ // If this step was pending (waiting for cross-screen mount), activate it
243
+ if (pendingStepRef.current === step.key) {
244
+ pendingStepRef.current = null;
245
+ setCurrentStep(step.key);
246
+ // Overlay opacity will be set by updateStepLayout when measurement arrives
247
+ }
69
248
  }, []);
70
249
  const unregisterStep = useCallback(key => {
71
250
  setSteps(prev => {
@@ -85,25 +264,35 @@ export const TourProvider = ({
85
264
  measurements.current[key] = measure;
86
265
  // If this step is currently active (e.g. scroll happened or resize), update shared values on the fly
87
266
  if (currentStep === key) {
88
- const springConfig = config?.springConfig ?? DEFAULT_SPRING_CONFIG;
89
- targetX.value = withSpring(measure.x, springConfig);
90
- targetY.value = withSpring(measure.y, springConfig);
91
- targetWidth.value = withSpring(measure.width, springConfig);
92
- targetHeight.value = withSpring(measure.height, springConfig);
93
-
94
- // Update radius if available
95
267
  const step = steps[key];
96
- const radius = step?.meta?.borderRadius ?? 10;
97
- targetRadius.value = withSpring(radius, springConfig);
268
+ const resolvedStyle = resolveZoneStyle(config?.zoneStyle, step?.zoneStyle);
269
+ const springConfig = getSpringConfigForStep(key);
270
+
271
+ // Compute zone geometry based on style
272
+ const geo = computeZoneGeometry(measure, resolvedStyle);
273
+ targetX.value = withSpring(geo.x, springConfig);
274
+ targetY.value = withSpring(geo.y, springConfig);
275
+ targetWidth.value = withSpring(geo.width, springConfig);
276
+ targetHeight.value = withSpring(geo.height, springConfig);
277
+ targetRadius.value = withSpring(geo.borderRadius, springConfig);
278
+ zoneBorderWidth.value = withSpring(resolvedStyle.borderWidth, springConfig);
98
279
 
99
280
  // Ensure overlay is visible (fixes race condition where start() was called before measure)
100
281
  opacity.value = withTiming(backdropOpacity, {
101
282
  duration: 300
102
283
  });
103
284
  }
104
- }, [currentStep, targetX, targetY, targetWidth, targetHeight, targetRadius, opacity, backdropOpacity, config?.springConfig, steps]);
285
+ }, [currentStep, targetX, targetY, targetWidth, targetHeight, targetRadius, zoneBorderWidth, opacity, backdropOpacity, getSpringConfigForStep, config?.zoneStyle, steps]);
286
+
287
+ // Flatten stepsOrder (supports both string[] and Record<string, string[]>)
288
+ const flatStepsOrder = useMemo(() => {
289
+ if (!initialStepsOrder) return undefined;
290
+ if (Array.isArray(initialStepsOrder)) return initialStepsOrder;
291
+ // Object format: flatten values in key order
292
+ return Object.values(initialStepsOrder).flat();
293
+ }, [initialStepsOrder]);
105
294
  const getOrderedSteps = useCallback(() => {
106
- if (initialStepsOrder) return initialStepsOrder;
295
+ if (flatStepsOrder) return flatStepsOrder;
107
296
  // If order property exists on steps, sort by it.
108
297
  const stepKeys = Object.keys(steps);
109
298
  if (stepKeys.length > 0) {
@@ -114,84 +303,151 @@ export const TourProvider = ({
114
303
  }
115
304
  }
116
305
  return stepKeys;
117
- }, [initialStepsOrder, steps]);
118
- const start = useCallback(stepKey => {
306
+ }, [flatStepsOrder, steps]);
307
+
308
+ // Pending step for cross-screen navigation
309
+ // When next/prev targets a step that isn't mounted yet, we store it here
310
+ // and resume when that step's TourZone registers.
311
+ const pendingStepRef = useRef(null);
312
+
313
+ // Save progress when step changes
314
+ useEffect(() => {
315
+ if (!isPersistenceEnabled || !storageAdapter || !currentStep) return;
316
+ const ordered = getOrderedSteps();
317
+ const stepIndex = ordered.indexOf(currentStep);
318
+ if (stepIndex >= 0) {
319
+ saveTourProgress(storageAdapter, tourId, currentStep, stepIndex).catch(() => {
320
+ // Silently ignore save errors
321
+ });
322
+ }
323
+ }, [currentStep, isPersistenceEnabled, storageAdapter, tourId, getOrderedSteps]);
324
+ const start = useCallback(async stepKey => {
119
325
  const ordered = getOrderedSteps();
120
- const firstStep = stepKey || ordered[0];
326
+ let targetStep = stepKey;
327
+
328
+ // If no specific step and autoResume is enabled, try to restore from storage
329
+ if (!targetStep && isPersistenceEnabled && storageAdapter && autoResume) {
330
+ try {
331
+ const savedProgress = await loadTourProgress(storageAdapter, tourId);
332
+ if (savedProgress) {
333
+ // Check if progress is expired
334
+ if (maxAge && Date.now() - savedProgress.timestamp > maxAge) {
335
+ await clearTourProgress(storageAdapter, tourId);
336
+ setHasSavedProgress(false);
337
+ } else if (ordered.includes(savedProgress.currentStepKey)) {
338
+ // Verify the saved step still exists in order
339
+ targetStep = savedProgress.currentStepKey;
340
+ }
341
+ }
342
+ } catch {
343
+ // Ignore load errors, start from beginning
344
+ }
345
+ }
346
+ const firstStep = targetStep || ordered[0];
121
347
  if (firstStep) {
122
- setCurrentStep(firstStep);
123
- // We need to wait for layout if it's not ready?
124
- // Assuming layout is ready since components are mounted.
125
- // But if we start immediately on mount, might be tricky.
126
- // For now assume standard flow.
127
- // requestAnimationFrame to ensure state update propagates if needed,
128
- // but simple call is usually fine.
129
- setTimeout(() => animateToStep(firstStep), 0);
348
+ // Check if the target step is registered (mounted)
349
+ if (steps[firstStep]) {
350
+ setCurrentStep(firstStep);
351
+ setTimeout(() => animateToStep(firstStep), 0);
352
+ } else {
353
+ // Step not mounted yet (on a different screen) - set as pending
354
+ pendingStepRef.current = firstStep;
355
+ // Don't set currentStep or opacity - wait for TourZone to mount
356
+ }
130
357
  }
131
- }, [getOrderedSteps, animateToStep]);
358
+ }, [getOrderedSteps, animateToStep, steps, isPersistenceEnabled, storageAdapter, autoResume, tourId, maxAge]);
132
359
  const stop = useCallback(() => {
133
360
  setCurrentStep(null);
134
361
  opacity.value = withTiming(0, {
135
362
  duration: 300
136
363
  });
364
+ // Note: We do NOT clear progress on stop - only on complete or explicit clearProgress
137
365
  }, [opacity]);
366
+
367
+ // Clear progress helper
368
+ const clearProgress = useCallback(async () => {
369
+ if (!isPersistenceEnabled || !storageAdapter) return;
370
+ try {
371
+ await clearTourProgress(storageAdapter, tourId);
372
+ setHasSavedProgress(false);
373
+ } catch {
374
+ // Silently ignore clear errors
375
+ }
376
+ }, [isPersistenceEnabled, storageAdapter, tourId]);
138
377
  const next = useCallback(() => {
139
378
  if (!currentStep) return;
379
+
380
+ // Block navigation if current step has completed === false
381
+ const currentStepData = steps[currentStep];
382
+ if (currentStepData?.completed === false) {
383
+ return;
384
+ }
140
385
  const ordered = getOrderedSteps();
141
386
  const currentIndex = ordered.indexOf(currentStep);
142
387
  if (currentIndex < ordered.length - 1) {
143
- const nextStep = ordered[currentIndex + 1];
144
- if (nextStep) {
145
- setCurrentStep(nextStep);
146
- // Don't call animateToStep here - it uses cached measurements that may be stale
147
- // after scroll. The useFrameCallback in TourZone will handle position tracking
148
- // using measure() with correct screen coordinates (pageX/pageY).
149
- // Just ensure the overlay is visible.
150
- opacity.value = withTiming(backdropOpacity, {
151
- duration: 300
152
- });
388
+ const nextStepKey = ordered[currentIndex + 1];
389
+ if (nextStepKey) {
390
+ // Check if the next step is registered (mounted)
391
+ if (steps[nextStepKey]) {
392
+ setCurrentStep(nextStepKey);
393
+ // Position tracking is handled by TourZone's useFrameCallback.
394
+ opacity.value = withTiming(backdropOpacity, {
395
+ duration: 300
396
+ });
397
+ } else {
398
+ // Next step is on a different screen — set as pending and hide overlay
399
+ pendingStepRef.current = nextStepKey;
400
+ setCurrentStep(null);
401
+ opacity.value = withTiming(0, {
402
+ duration: 300
403
+ });
404
+ if (isPersistenceEnabled && storageAdapter) {
405
+ const stepIndex = ordered.indexOf(nextStepKey);
406
+ saveTourProgress(storageAdapter, tourId, nextStepKey, stepIndex).catch(() => {});
407
+ }
408
+ }
153
409
  } else {
154
410
  stop();
155
411
  }
156
412
  } else {
157
- stop(); // End of tour
413
+ // End of tour - clear progress if configured
414
+ if (isPersistenceEnabled && clearOnComplete && storageAdapter) {
415
+ clearTourProgress(storageAdapter, tourId).then(() => setHasSavedProgress(false)).catch(() => {});
416
+ }
417
+ stop();
158
418
  }
159
- }, [currentStep, getOrderedSteps, stop, opacity, backdropOpacity]);
419
+ }, [currentStep, steps, getOrderedSteps, stop, opacity, backdropOpacity, isPersistenceEnabled, clearOnComplete, storageAdapter, tourId]);
160
420
  const prev = useCallback(() => {
161
421
  if (!currentStep) return;
162
422
  const ordered = getOrderedSteps();
163
423
  const currentIndex = ordered.indexOf(currentStep);
164
424
  if (currentIndex > 0) {
165
- const prevStep = ordered[currentIndex - 1];
166
- if (prevStep) {
167
- setCurrentStep(prevStep);
168
- // Don't call animateToStep - let useFrameCallback handle position tracking
169
- opacity.value = withTiming(backdropOpacity, {
170
- duration: 300
171
- });
425
+ const prevStepKey = ordered[currentIndex - 1];
426
+ if (prevStepKey) {
427
+ // Check if the previous step is registered (mounted)
428
+ if (steps[prevStepKey]) {
429
+ setCurrentStep(prevStepKey);
430
+ opacity.value = withTiming(backdropOpacity, {
431
+ duration: 300
432
+ });
433
+ } else {
434
+ // Previous step is on a different screen — set as pending
435
+ pendingStepRef.current = prevStepKey;
436
+ setCurrentStep(null);
437
+ opacity.value = withTiming(0, {
438
+ duration: 300
439
+ });
440
+ }
172
441
  }
173
442
  }
174
- }, [currentStep, getOrderedSteps, opacity, backdropOpacity]);
443
+ }, [currentStep, steps, getOrderedSteps, opacity, backdropOpacity]);
175
444
  const scrollViewRef = useAnimatedRef();
176
- const setScrollViewRef = useCallback(_ref => {
177
- // If user passes a ref, we might want to sync it?
178
- // Or we just provide this function for them to give us the ref.
179
- // With useAnimatedRef, we can assign it if it's a function or object?
180
- // Actually, safest is to let them assign our ref to their component.
181
- // But they might have their own ref.
182
- // Let's assume they call this with their ref.
183
- // BUT useAnimatedRef cannot easily accept an external ref object to "become".
184
- // Pattern: They should use the ref we give them, OR we wrap their component?
185
- // Simpler: We just expose 'scrollViewRef' from context, and they attach it.
186
- // So 'setScrollViewRef' might be redundant if we just say "here is the ref, use it".
187
- // But if they have their own, they can't usage two refs easily without merging.
188
- // Let's stick to exposing `scrollViewRef` from context that they MUST use.
189
- // But wait, the interface says `setScrollViewRef`.
190
- // Let's keep `setScrollViewRef` as a no-op or a way to manually set it if needed (not RecAnimated friendly).
191
- // Actually, let's just expose `scrollViewRef` and `registerScrollView` which essentially does nothing if we expect them to use the ref object.
192
- // Let's make `setScrollViewRef` actually do something if possible, or just document "Use exposed scrollViewRef".
193
- // For now, let's just return the `scrollViewRef` we created.
194
- }, []);
445
+
446
+ // Deprecated: consumers should use the scrollViewRef directly from context.
447
+ const setScrollViewRef = useCallback(_ref => {}, []);
448
+
449
+ // Expose ordered step keys for tooltip and external use
450
+ const orderedStepKeys = useMemo(() => getOrderedSteps(), [getOrderedSteps]);
195
451
  const value = useMemo(() => ({
196
452
  start,
197
453
  stop,
@@ -207,12 +463,21 @@ export const TourProvider = ({
207
463
  targetHeight,
208
464
  targetRadius,
209
465
  opacity,
466
+ zoneBorderWidth,
210
467
  steps,
211
468
  config,
212
469
  containerRef,
213
470
  scrollViewRef,
214
- setScrollViewRef
215
- }), [start, stop, next, prev, registerStep, unregisterStep, updateStepLayout, currentStep, targetX, targetY, targetWidth, targetHeight, targetRadius, opacity, steps, config, containerRef, scrollViewRef, setScrollViewRef]);
471
+ setScrollViewRef,
472
+ currentZoneStyle,
473
+ clearProgress,
474
+ hasSavedProgress,
475
+ orderedStepKeys,
476
+ registerScrollEndCallback,
477
+ unregisterScrollEndCallback,
478
+ triggerScrollEnd,
479
+ backdropOpacity
480
+ }), [start, stop, next, prev, registerStep, unregisterStep, updateStepLayout, currentStep, targetX, targetY, targetWidth, targetHeight, targetRadius, opacity, zoneBorderWidth, steps, config, containerRef, scrollViewRef, setScrollViewRef, currentZoneStyle, clearProgress, hasSavedProgress, orderedStepKeys, registerScrollEndCallback, unregisterScrollEndCallback, triggerScrollEnd, backdropOpacity]);
216
481
  return /*#__PURE__*/_jsx(TourContext.Provider, {
217
482
  value: value,
218
483
  children: /*#__PURE__*/_jsxs(AnimatedView, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useState","useCallback","useMemo","useRef","useSharedValue","withSpring","withTiming","useAnimatedRef","default","Animated","StyleSheet","TourOverlay","TourTooltip","DEFAULT_BACKDROP_OPACITY","DEFAULT_SPRING_CONFIG","jsx","_jsx","jsxs","_jsxs","TourContext","AnimatedView","View","TourProvider","children","stepsOrder","initialStepsOrder","backdropOpacity","config","steps","setSteps","currentStep","setCurrentStep","measurements","containerRef","targetX","targetY","targetWidth","targetHeight","targetRadius","opacity","animateToStep","stepKey","measure","current","width","height","isNaN","x","y","console","warn","springConfig","value","step","radius","meta","borderRadius","duration","registerStep","prev","key","unregisterStep","newSteps","updateStepLayout","isFinite","getOrderedSteps","stepKeys","Object","keys","length","hasOrder","some","order","sort","a","b","start","ordered","firstStep","setTimeout","stop","next","currentIndex","indexOf","nextStep","prevStep","scrollViewRef","setScrollViewRef","_ref","Provider","ref","style","styles","container","collapsable","create","flex"],"sourceRoot":"..\\..\\..\\src","sources":["components/TourProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","useCallback","useMemo","useRef","useEffect","useSharedValue","withSpring","withTiming","useAnimatedRef","default","Animated","StyleSheet","Dimensions","TourContext","TourOverlay","TourTooltip","DEFAULT_BACKDROP_OPACITY","DEFAULT_SPRING_CONFIG","DEFAULT_ZONE_STYLE","resolveZoneStyle","detectStorage","saveTourProgress","loadTourProgress","clearTourProgress","jsx","_jsx","jsxs","_jsxs","width","SCREEN_WIDTH","height","SCREEN_HEIGHT","get","computeZoneGeometry","element","style","paddingTop","paddingRight","paddingBottom","paddingLeft","shape","borderRadius","sx","sy","sw","sh","sr","cx","x","cy","y","radius","Math","max","padding","min","minSize","AnimatedView","View","TourProvider","children","stepsOrder","initialStepsOrder","backdropOpacity","config","steps","setSteps","currentStep","setCurrentStep","hasSavedProgress","setHasSavedProgress","measurements","containerRef","onScrollEndCallbackRef","registerScrollEndCallback","cb","current","unregisterScrollEndCallback","triggerScrollEnd","persistenceConfig","persistence","isPersistenceEnabled","enabled","tourId","autoResume","clearOnComplete","maxAge","storageAdapter","storage","detected","adapter","checkSavedProgress","savedProgress","Date","now","timestamp","targetX","targetY","targetWidth","targetHeight","targetRadius","opacity","zoneBorderWidth","borderWidth","currentZoneStyle","step","zoneStyle","getSpringConfigForStep","stepKey","stepStyle","baseConfig","springConfig","springDamping","undefined","springStiffness","damping","stiffness","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","animateToStep","measure","isNaN","console","warn","resolvedStyle","geo","value","duration","registerStep","prev","key","pendingStepRef","unregisterStep","newSteps","updateStepLayout","isFinite","flatStepsOrder","Array","isArray","Object","values","flat","getOrderedSteps","stepKeys","keys","length","hasOrder","some","order","sort","a","b","ordered","stepIndex","indexOf","catch","start","targetStep","includes","currentStepKey","firstStep","setTimeout","stop","clearProgress","next","currentStepData","completed","currentIndex","nextStepKey","then","prevStepKey","scrollViewRef","setScrollViewRef","_ref","orderedStepKeys","Provider","ref","styles","container","collapsable","create","flex"],"sourceRoot":"..\\..\\..\\src","sources":["components/TourProvider.tsx"],"mappings":"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","ignoreList":[]}