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.
- package/README.md +770 -231
- package/lib/module/components/TourOverlay.js +45 -45
- package/lib/module/components/TourOverlay.js.map +1 -1
- package/lib/module/components/TourProvider.js +345 -80
- package/lib/module/components/TourProvider.js.map +1 -1
- package/lib/module/components/TourTooltip.js +113 -73
- package/lib/module/components/TourTooltip.js.map +1 -1
- package/lib/module/components/TourZone.js +229 -125
- package/lib/module/components/TourZone.js.map +1 -1
- package/lib/module/constants/defaults.js +43 -0
- package/lib/module/constants/defaults.js.map +1 -1
- package/lib/module/context/TourContext.js +5 -0
- package/lib/module/context/TourContext.js.map +1 -0
- package/lib/module/hooks/useTour.js +1 -1
- package/lib/module/hooks/useTour.js.map +1 -1
- package/lib/module/hooks/useTourScrollView.js +74 -0
- package/lib/module/hooks/useTourScrollView.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/storage.js +188 -0
- package/lib/module/utils/storage.js.map +1 -0
- package/lib/typescript/src/components/TourOverlay.d.ts.map +1 -1
- package/lib/typescript/src/components/TourProvider.d.ts +21 -4
- package/lib/typescript/src/components/TourProvider.d.ts.map +1 -1
- package/lib/typescript/src/components/TourTooltip.d.ts.map +1 -1
- package/lib/typescript/src/components/TourZone.d.ts +19 -1
- package/lib/typescript/src/components/TourZone.d.ts.map +1 -1
- package/lib/typescript/src/constants/defaults.d.ts +10 -0
- package/lib/typescript/src/constants/defaults.d.ts.map +1 -1
- package/lib/typescript/src/context/TourContext.d.ts +3 -0
- package/lib/typescript/src/context/TourContext.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useTourScrollView.d.ts +76 -0
- package/lib/typescript/src/hooks/useTourScrollView.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +316 -1
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/storage.d.ts +51 -0
- package/lib/typescript/src/utils/storage.d.ts.map +1 -0
- package/package.json +169 -171
- package/src/components/TourOverlay.tsx +0 -153
- package/src/components/TourProvider.tsx +0 -361
- package/src/components/TourTooltip.tsx +0 -256
- package/src/components/TourZone.tsx +0 -371
- package/src/constants/animations.ts +0 -71
- package/src/constants/defaults.ts +0 -15
- package/src/hooks/useTour.ts +0 -10
- package/src/index.tsx +0 -8
- package/src/types/index.ts +0 -142
|
@@ -1,13 +1,88 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import 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
|
-
|
|
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
|
|
54
|
-
|
|
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,
|
|
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
|
|
97
|
-
|
|
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?.
|
|
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 (
|
|
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
|
-
}, [
|
|
118
|
-
|
|
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
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
|
144
|
-
if (
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
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
|
|
166
|
-
if (
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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
|
-
|
|
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":[]}
|