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,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import React, { useEffect, useCallback, useRef } from 'react';
3
+ import React, { useEffect, useLayoutEffect, useCallback, useMemo } from 'react';
4
4
  import { useTour } from "../hooks/useTour.js";
5
- import { useAnimatedRef, measure, useFrameCallback, withSpring, default as Animated, useSharedValue } from 'react-native-reanimated';
5
+ import { useAnimatedRef, measure, useFrameCallback, withSpring, withTiming, default as Animated, useSharedValue } from 'react-native-reanimated';
6
6
  import { Dimensions } from 'react-native';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  const {
@@ -14,11 +14,28 @@ export const TourZone = ({
14
14
  name,
15
15
  description,
16
16
  order,
17
- shape = 'rect',
17
+ shape = 'rounded-rect',
18
18
  borderRadius = 10,
19
19
  children,
20
20
  style,
21
- clickable
21
+ clickable,
22
+ preventInteraction,
23
+ required,
24
+ completed,
25
+ zonePadding,
26
+ zonePaddingTop,
27
+ zonePaddingRight,
28
+ zonePaddingBottom,
29
+ zonePaddingLeft,
30
+ zoneBorderWidth,
31
+ zoneBorderColor,
32
+ zoneGlowColor,
33
+ zoneGlowRadius,
34
+ zoneGlowSpread,
35
+ zoneGlowOffsetX,
36
+ zoneGlowOffsetY,
37
+ zoneStyle,
38
+ renderCustomCard
22
39
  }) => {
23
40
  const {
24
41
  registerStep,
@@ -32,39 +49,76 @@ export const TourZone = ({
32
49
  targetWidth,
33
50
  targetHeight,
34
51
  targetRadius,
35
- config
52
+ config,
53
+ registerScrollEndCallback,
54
+ unregisterScrollEndCallback,
55
+ opacity,
56
+ backdropOpacity
36
57
  } = useTour();
37
58
  const viewRef = useAnimatedRef();
38
59
  const isActive = currentStep === stepKey;
39
-
40
- // Track if we're currently scrolling to prevent position updates during scroll
41
60
  const isScrolling = useSharedValue(false);
42
- const hasScrolled = useRef(false);
43
-
44
- // Signal when scroll completes (from JS thread)
45
- const onScrollComplete = useCallback(() => {
46
- isScrolling.value = false;
47
- }, [isScrolling]);
61
+ const resolvedZoneStyle = useMemo(() => ({
62
+ ...zoneStyle,
63
+ ...(zonePadding !== undefined && {
64
+ padding: zonePadding
65
+ }),
66
+ ...(zonePaddingTop !== undefined && {
67
+ paddingTop: zonePaddingTop
68
+ }),
69
+ ...(zonePaddingRight !== undefined && {
70
+ paddingRight: zonePaddingRight
71
+ }),
72
+ ...(zonePaddingBottom !== undefined && {
73
+ paddingBottom: zonePaddingBottom
74
+ }),
75
+ ...(zonePaddingLeft !== undefined && {
76
+ paddingLeft: zonePaddingLeft
77
+ }),
78
+ ...(zoneBorderWidth !== undefined && {
79
+ borderWidth: zoneBorderWidth
80
+ }),
81
+ ...(zoneBorderColor !== undefined && {
82
+ borderColor: zoneBorderColor
83
+ }),
84
+ ...(zoneGlowColor !== undefined && {
85
+ glowColor: zoneGlowColor
86
+ }),
87
+ ...(zoneGlowRadius !== undefined && {
88
+ glowRadius: zoneGlowRadius
89
+ }),
90
+ ...(zoneGlowSpread !== undefined && {
91
+ glowSpread: zoneGlowSpread
92
+ }),
93
+ ...(zoneGlowOffsetX !== undefined && {
94
+ glowOffsetX: zoneGlowOffsetX
95
+ }),
96
+ ...(zoneGlowOffsetY !== undefined && {
97
+ glowOffsetY: zoneGlowOffsetY
98
+ }),
99
+ shape,
100
+ borderRadius
101
+ }), [zoneStyle, zonePadding, zonePaddingTop, zonePaddingRight, zonePaddingBottom, zonePaddingLeft, zoneBorderWidth, zoneBorderColor, zoneGlowColor, zoneGlowRadius, zoneGlowSpread, zoneGlowOffsetX, zoneGlowOffsetY, shape, borderRadius]);
48
102
 
49
- /**
50
- * UNIFIED MEASUREMENT FUNCTION (JS THREAD)
51
- * Always measures relative to SCREEN (Viewport), not Content.
52
- * This fixes the bug where measureLayout returned content-relative Y.
53
- */
54
- const measureJS = useCallback(() => {
55
- if (isScrolling.value || !isActive) {
56
- return;
103
+ // Lock the frame callback synchronously after commit so it can't read
104
+ // stale off-screen coordinates in the gap before the scroll pipeline starts.
105
+ useLayoutEffect(() => {
106
+ if (isActive) {
107
+ isScrolling.value = true;
57
108
  }
109
+ }, [isActive, isScrolling]);
110
+
111
+ // Reads the element's final screen position and updates the overlay.
112
+ // onComplete fires after updateStepLayout succeeds — used to fade back in
113
+ // after a scroll-induced fade-out.
114
+ const measureJS = useCallback(onComplete => {
115
+ if (!isActive) return;
58
116
  const view = viewRef.current;
59
117
  const container = containerRef.current;
60
118
  if (view && container) {
61
- // 1. Measure the View in Screen Coordinates (PageX/PageY)
62
119
  view.measure((_x, _y, width, height, pageX, pageY) => {
63
- // 2. Measure the Container (TourOverlay) in Screen Coordinates
64
- // This handles cases where the Tour Overlay isn't exactly at 0,0 (e.g. inside a SafeAreaView)
65
120
  container.measure((_cx, _cy, _cw, _ch, containerPageX, containerPageY) => {
66
121
  if (width > 0 && height > 0 && !isNaN(pageX) && !isNaN(pageY)) {
67
- // Calculate final position relative to the Tour Overlay
68
122
  const finalX = pageX - containerPageX;
69
123
  const finalY = pageY - containerPageY;
70
124
  updateStepLayout(stepKey, {
@@ -73,102 +127,51 @@ export const TourZone = ({
73
127
  width,
74
128
  height
75
129
  });
130
+ isScrolling.value = false;
131
+ onComplete?.();
76
132
  }
77
133
  });
78
134
  });
79
135
  }
80
- }, [containerRef, stepKey, updateStepLayout, viewRef, isScrolling, isActive]);
81
-
82
- // Initial measurement when step becomes active
83
- useEffect(() => {
84
- if (!isActive) return;
85
-
86
- // Small delay to ensure layout is ready
87
- const timeoutId = setTimeout(() => {
88
- measureJS();
89
- }, 50);
90
- return () => clearTimeout(timeoutId);
91
- }, [isActive, measureJS]);
92
-
93
- // Reanimated Frame Callback (UI Thread Tracking)
94
- // This keeps the highlight sticky during manual user scrolling
95
- useFrameCallback(() => {
96
- 'worklet';
97
-
98
- if (!isActive || isScrolling.value) {
99
- return;
100
- }
101
- try {
102
- const measured = measure(viewRef);
103
- const container = measure(containerRef);
104
- if (measured && container) {
105
- const x = measured.pageX - container.pageX;
106
- const y = measured.pageY - container.pageY;
107
- const width = measured.width;
108
- const height = measured.height;
109
- if (width > 0 && height > 0 && !isNaN(x) && !isNaN(y) && isFinite(x) && isFinite(y)) {
110
- const springConfig = config?.springConfig ?? {
111
- damping: 100,
112
- stiffness: 100
113
- };
114
- targetX.value = withSpring(x, springConfig);
115
- targetY.value = withSpring(y, springConfig);
116
- targetWidth.value = withSpring(width, springConfig);
117
- targetHeight.value = withSpring(height, springConfig);
118
- targetRadius.value = withSpring(borderRadius, springConfig);
119
- }
120
- }
121
- } catch {
122
- // Silently ignore measurement errors on UI thread
123
- }
124
- }, isActive);
125
-
126
- // Auto-scroll Effect
136
+ }, [containerRef, isActive, isScrolling, stepKey, updateStepLayout, viewRef]);
127
137
  useEffect(() => {
128
138
  if (!isActive || !scrollViewRef?.current || !viewRef.current) {
129
139
  return;
130
140
  }
131
- hasScrolled.current = false;
132
- const view = viewRef.current;
133
- const scroll = scrollViewRef.current;
134
- const container = containerRef.current;
141
+ let cancelled = false;
135
142
  let attemptCount = 0;
136
- const maxAttempts = 3;
137
- const attemptMeasurement = delay => {
143
+ const maxAttempts = 5;
144
+ let hasInitiatedScroll = false;
145
+ let fallbackTimeoutId = null;
146
+ isScrolling.value = true;
147
+ const checkAndScroll = delay => {
138
148
  const timeoutId = setTimeout(() => {
139
- if (hasScrolled.current) return;
149
+ if (cancelled || hasInitiatedScroll) return;
140
150
  attemptCount++;
141
-
142
- // 1. Check current visibility on screen
151
+ const view = viewRef.current;
152
+ const scroll = scrollViewRef.current;
153
+ const container = containerRef.current;
143
154
  view.measure((_mx, _my, mw, mh, px, py) => {
155
+ if (cancelled) return;
144
156
  if (mw > 0 && mh > 0 && !isNaN(px) && !isNaN(py)) {
145
- const viewportHeight = SCREEN_HEIGHT;
146
157
  const topBuffer = 100;
147
158
  const bottomBuffer = 150;
148
-
149
- // Check if element is out of the "safe" visual zone
150
- const needsScroll = py < topBuffer || py + mh > viewportHeight - bottomBuffer;
159
+ const needsScroll = py < topBuffer || py + mh > SCREEN_HEIGHT - bottomBuffer;
151
160
  if (needsScroll) {
152
- hasScrolled.current = true;
153
- isScrolling.value = true;
154
-
155
- // 2. Measure ScrollView to get its Screen Position (Offset from top)
156
- // This fixes the "upwards" bug by accounting for headers/safe-areas
161
+ hasInitiatedScroll = true;
157
162
  scroll.measure((_sx, _sy, _sw, _sh, scrollPx, scrollPy) => {
158
- // 3. Measure Element relative to ScrollView Content
163
+ if (cancelled) return;
159
164
  if (view.measureLayout) {
160
165
  view.measureLayout(scroll, (contentX, contentY) => {
161
- // Calculate target scroll position (center the element)
162
- const centerY = contentY - viewportHeight / 2 + mh / 2 + 50;
166
+ if (cancelled) return;
167
+ const centerY = contentY - SCREEN_HEIGHT / 2 + mh / 2 + 50;
163
168
  const scrollY = Math.max(0, centerY);
164
-
165
- // 4. Measure Container to map coordinates to Overlay space
166
169
  container.measure((_cx, _cy, _cw, _ch, containerPx, containerPy) => {
167
- // THE FIX: Add scrollPy (ScrollView's screen Y)
168
- // Visual Y = ScrollViewScreenY + (ElementContentY - ScrollAmount)
169
- const targetScreenY = scrollPy + contentY - scrollY - containerPy;
170
+ if (cancelled) return;
170
171
 
171
- // X is simpler: ScrollViewScreenX + ElementContentX - ContainerScreenX
172
+ // Calculate predictive screen coordinates so the zone smoothly jumps
173
+ // to the destination *while* the screen is scrolling.
174
+ const targetScreenY = scrollPy + contentY - scrollY - containerPy;
172
175
  const targetScreenX = scrollPx + contentX - containerPx;
173
176
  updateStepLayout(stepKey, {
174
177
  x: targetScreenX,
@@ -176,51 +179,147 @@ export const TourZone = ({
176
179
  width: mw,
177
180
  height: mh
178
181
  });
182
+
183
+ // Fade out before scrolling so the user doesn't see
184
+ // the predicted (potentially wrong) interim position.
185
+ opacity.value = withTiming(0, {
186
+ duration: 150
187
+ });
179
188
  try {
180
189
  scroll.scrollTo({
181
190
  y: scrollY,
182
191
  animated: true
183
192
  });
184
- // Wait for scroll animation
185
- setTimeout(() => onScrollComplete(), 800);
186
193
  } catch (e) {
187
194
  console.error(e);
188
- onScrollComplete();
189
195
  }
196
+
197
+ // Fade back in once the scroll settles and the position is accurate.
198
+ const fadeIn = () => {
199
+ opacity.value = withTiming(backdropOpacity, {
200
+ duration: 220
201
+ });
202
+ };
203
+
204
+ // Primary: fire as soon as onMomentumScrollEnd is received.
205
+ registerScrollEndCallback(() => {
206
+ if (!cancelled) {
207
+ if (fallbackTimeoutId !== null) {
208
+ clearTimeout(fallbackTimeoutId);
209
+ fallbackTimeoutId = null;
210
+ }
211
+ measureJS(fadeIn);
212
+ }
213
+ });
214
+
215
+ // Fallback: if onMomentumScrollEnd never fires.
216
+ fallbackTimeoutId = setTimeout(() => {
217
+ if (!cancelled) {
218
+ unregisterScrollEndCallback();
219
+ measureJS(fadeIn);
220
+ }
221
+ }, 1500);
190
222
  });
223
+ }, () => {
224
+ // measureLayout unavailable — degrade to timed fallback.
225
+ fallbackTimeoutId = setTimeout(() => {
226
+ if (!cancelled) {
227
+ measureJS(() => {
228
+ opacity.value = withTiming(backdropOpacity, {
229
+ duration: 220
230
+ });
231
+ });
232
+ }
233
+ }, 800);
191
234
  });
192
235
  }
193
236
  });
194
237
  } else {
195
- // Element is already visible - just sync position
196
- container.measure((_cx, _cy, _cw, _ch, cPx, cPy) => {
197
- const finalX = px - cPx;
198
- const finalY = py - cPy;
199
- updateStepLayout(stepKey, {
200
- x: finalX,
201
- y: finalY,
202
- width: mw,
203
- height: mh
204
- });
205
- });
238
+ // No scroll needed element is already on screen.
239
+ measureJS();
206
240
  }
207
241
  } else if (attemptCount < maxAttempts) {
208
- attemptMeasurement(150 * attemptCount);
242
+ checkAndScroll(150);
209
243
  }
210
244
  });
211
245
  }, delay);
212
246
  return timeoutId;
213
247
  };
214
- const timeoutId = attemptMeasurement(150);
215
- return () => clearTimeout(timeoutId);
216
- }, [isActive, scrollViewRef, viewRef, stepKey, isScrolling, onScrollComplete, containerRef, updateStepLayout]);
248
+ const initialTimeout = checkAndScroll(50);
249
+ return () => {
250
+ cancelled = true;
251
+ clearTimeout(initialTimeout);
252
+ if (fallbackTimeoutId !== null) clearTimeout(fallbackTimeoutId);
253
+ // Ensure no stale callback fires after this step is deactivated
254
+ unregisterScrollEndCallback();
255
+ };
256
+ }, [isActive, scrollViewRef, viewRef, containerRef, stepKey, updateStepLayout, measureJS, isScrolling, registerScrollEndCallback, unregisterScrollEndCallback, opacity, backdropOpacity]);
257
+
258
+ // UI Thread tracking
259
+ useFrameCallback(() => {
260
+ 'worklet';
217
261
 
218
- // Standard onLayout handler (uses the unified measureJS)
219
- const onLayout = () => {
220
- measureJS();
221
- };
262
+ if (!isActive || isScrolling.value) {
263
+ return;
264
+ }
265
+ try {
266
+ const measured = measure(viewRef);
267
+ const container = measure(containerRef);
268
+ if (measured && container) {
269
+ const x = measured.pageX - container.pageX;
270
+ const y = measured.pageY - container.pageY;
271
+ const width = measured.width;
272
+ const height = measured.height;
273
+ if (width > 0 && height > 0 && !isNaN(x) && !isNaN(y) && isFinite(x) && isFinite(y)) {
274
+ const springConfig = config?.springConfig ?? {
275
+ damping: 100,
276
+ stiffness: 100
277
+ };
278
+ const zpt = resolvedZoneStyle.paddingTop ?? resolvedZoneStyle.padding ?? 0;
279
+ const zpr = resolvedZoneStyle.paddingRight ?? resolvedZoneStyle.padding ?? 0;
280
+ const zpb = resolvedZoneStyle.paddingBottom ?? resolvedZoneStyle.padding ?? 0;
281
+ const zpl = resolvedZoneStyle.paddingLeft ?? resolvedZoneStyle.padding ?? 0;
282
+ const zShape = resolvedZoneStyle.shape ?? 'rounded-rect';
283
+ let sx = x - zpl;
284
+ let sy = y - zpt;
285
+ let sw = width + zpl + zpr;
286
+ let sh = height + zpt + zpb;
287
+ let sr = borderRadius;
288
+ if (zShape === 'circle') {
289
+ const cx = x + width / 2;
290
+ const cy = y + height / 2;
291
+ const radius = Math.max(width, height) / 2 + (resolvedZoneStyle.padding ?? 0);
292
+ sx = cx - radius;
293
+ sy = cy - radius;
294
+ sw = radius * 2;
295
+ sh = radius * 2;
296
+ sr = radius;
297
+ } else if (zShape === 'pill') {
298
+ sx = x - zpl;
299
+ sy = y - zpt;
300
+ sw = width + zpl + zpr;
301
+ sh = height + zpt + zpb;
302
+ sr = sh / 2;
303
+ }
304
+ targetX.value = withSpring(sx, springConfig);
305
+ targetY.value = withSpring(sy, springConfig);
306
+ targetWidth.value = withSpring(sw, springConfig);
307
+ targetHeight.value = withSpring(sh, springConfig);
308
+ targetRadius.value = withSpring(sr, springConfig);
309
+ }
310
+ }
311
+ } catch {
312
+ // Silently ignore measurement errors on UI thread
313
+ }
314
+ }, isActive);
222
315
 
223
- // Register step on mount
316
+ // Sync position if the element physically resizes, but strictly avoid
317
+ // measuring if we are currently handling an orchestrated scroll.
318
+ const onLayout = useCallback(() => {
319
+ if (isActive && !isScrolling.value) {
320
+ measureJS();
321
+ }
322
+ }, [isActive, isScrolling.value, measureJS]);
224
323
  useEffect(() => {
225
324
  registerStep({
226
325
  key: stepKey,
@@ -228,13 +327,18 @@ export const TourZone = ({
228
327
  description,
229
328
  order,
230
329
  clickable,
330
+ preventInteraction,
331
+ required,
332
+ completed,
231
333
  meta: {
232
- shape,
334
+ shape: resolvedZoneStyle.shape,
233
335
  borderRadius
234
- }
336
+ },
337
+ zoneStyle: resolvedZoneStyle,
338
+ renderCustomCard
235
339
  });
236
340
  return () => unregisterStep(stepKey);
237
- }, [stepKey, name, description, order, shape, borderRadius, registerStep, unregisterStep, clickable]);
341
+ }, [stepKey, name, description, order, borderRadius, registerStep, unregisterStep, clickable, preventInteraction, required, completed, resolvedZoneStyle, renderCustomCard]);
238
342
  return /*#__PURE__*/_jsx(AnimatedView, {
239
343
  ref: viewRef,
240
344
  onLayout: onLayout,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useCallback","useRef","useTour","useAnimatedRef","measure","useFrameCallback","withSpring","default","Animated","useSharedValue","Dimensions","jsx","_jsx","height","SCREEN_HEIGHT","get","AnimatedView","View","TourZone","stepKey","name","description","order","shape","borderRadius","children","style","clickable","registerStep","unregisterStep","updateStepLayout","currentStep","containerRef","scrollViewRef","targetX","targetY","targetWidth","targetHeight","targetRadius","config","viewRef","isActive","isScrolling","hasScrolled","onScrollComplete","value","measureJS","view","current","container","_x","_y","width","pageX","pageY","_cx","_cy","_cw","_ch","containerPageX","containerPageY","isNaN","finalX","finalY","x","y","timeoutId","setTimeout","clearTimeout","measured","isFinite","springConfig","damping","stiffness","scroll","attemptCount","maxAttempts","attemptMeasurement","delay","_mx","_my","mw","mh","px","py","viewportHeight","topBuffer","bottomBuffer","needsScroll","_sx","_sy","_sw","_sh","scrollPx","scrollPy","measureLayout","contentX","contentY","centerY","scrollY","Math","max","containerPx","containerPy","targetScreenY","targetScreenX","scrollTo","animated","e","console","error","cPx","cPy","onLayout","key","meta","ref","collapsable"],"sourceRoot":"..\\..\\..\\src","sources":["components/TourZone.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useLayoutEffect","useCallback","useMemo","useTour","useAnimatedRef","measure","useFrameCallback","withSpring","withTiming","default","Animated","useSharedValue","Dimensions","jsx","_jsx","height","SCREEN_HEIGHT","get","AnimatedView","View","TourZone","stepKey","name","description","order","shape","borderRadius","children","style","clickable","preventInteraction","required","completed","zonePadding","zonePaddingTop","zonePaddingRight","zonePaddingBottom","zonePaddingLeft","zoneBorderWidth","zoneBorderColor","zoneGlowColor","zoneGlowRadius","zoneGlowSpread","zoneGlowOffsetX","zoneGlowOffsetY","zoneStyle","renderCustomCard","registerStep","unregisterStep","updateStepLayout","currentStep","containerRef","scrollViewRef","targetX","targetY","targetWidth","targetHeight","targetRadius","config","registerScrollEndCallback","unregisterScrollEndCallback","opacity","backdropOpacity","viewRef","isActive","isScrolling","resolvedZoneStyle","undefined","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","borderWidth","borderColor","glowColor","glowRadius","glowSpread","glowOffsetX","glowOffsetY","value","measureJS","onComplete","view","current","container","_x","_y","width","pageX","pageY","_cx","_cy","_cw","_ch","containerPageX","containerPageY","isNaN","finalX","finalY","x","y","cancelled","attemptCount","maxAttempts","hasInitiatedScroll","fallbackTimeoutId","checkAndScroll","delay","timeoutId","setTimeout","scroll","_mx","_my","mw","mh","px","py","topBuffer","bottomBuffer","needsScroll","_sx","_sy","_sw","_sh","scrollPx","scrollPy","measureLayout","contentX","contentY","centerY","scrollY","Math","max","containerPx","containerPy","targetScreenY","targetScreenX","duration","scrollTo","animated","e","console","error","fadeIn","clearTimeout","initialTimeout","measured","isFinite","springConfig","damping","stiffness","zpt","zpr","zpb","zpl","zShape","sx","sy","sw","sh","sr","cx","cy","radius","onLayout","key","meta","ref","collapsable"],"sourceRoot":"..\\..\\..\\src","sources":["components/TourZone.tsx"],"mappings":"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","ignoreList":[]}
@@ -11,4 +11,47 @@ export const DEFAULT_LABELS = {
11
11
  finish: 'Finish',
12
12
  skip: 'Skip'
13
13
  };
14
+
15
+ /**
16
+ * Default zone style configuration.
17
+ * These values are used when no custom style is provided.
18
+ */
19
+ export const DEFAULT_ZONE_STYLE = {
20
+ padding: 0,
21
+ paddingTop: 0,
22
+ paddingRight: 0,
23
+ paddingBottom: 0,
24
+ paddingLeft: 0,
25
+ borderRadius: 10,
26
+ shape: 'rounded-rect',
27
+ borderWidth: 0,
28
+ borderColor: 'transparent',
29
+ glowColor: '#FFFFFF',
30
+ glowRadius: 10,
31
+ glowSpread: 5,
32
+ glowOffsetX: 0,
33
+ glowOffsetY: 0,
34
+ springDamping: 20,
35
+ springStiffness: 90
36
+ };
37
+
38
+ /**
39
+ * Merges global and per-step zone styles with defaults.
40
+ */
41
+ export function resolveZoneStyle(globalStyle, stepStyle) {
42
+ const merged = {
43
+ ...DEFAULT_ZONE_STYLE,
44
+ ...globalStyle,
45
+ ...stepStyle
46
+ };
47
+
48
+ // Handle individual padding overrides
49
+ return {
50
+ ...merged,
51
+ paddingTop: stepStyle?.paddingTop ?? globalStyle?.paddingTop ?? merged.padding,
52
+ paddingRight: stepStyle?.paddingRight ?? globalStyle?.paddingRight ?? merged.padding,
53
+ paddingBottom: stepStyle?.paddingBottom ?? globalStyle?.paddingBottom ?? merged.padding,
54
+ paddingLeft: stepStyle?.paddingLeft ?? globalStyle?.paddingLeft ?? merged.padding
55
+ };
56
+ }
14
57
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_SPRING_CONFIG","damping","stiffness","DEFAULT_BACKDROP_OPACITY","DEFAULT_LABELS","next","previous","finish","skip"],"sourceRoot":"..\\..\\..\\src","sources":["constants/defaults.ts"],"mappings":";;AAEA,OAAO,MAAMA,qBAAuC,GAAG;EACrDC,OAAO,EAAE,EAAE;EACXC,SAAS,EAAE;AACb,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAG,GAAG;AAE3C,OAAO,MAAMC,cAAc,GAAG;EAC5BC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE,UAAU;EACpBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE;AACR,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_SPRING_CONFIG","damping","stiffness","DEFAULT_BACKDROP_OPACITY","DEFAULT_LABELS","next","previous","finish","skip","DEFAULT_ZONE_STYLE","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","borderRadius","shape","borderWidth","borderColor","glowColor","glowRadius","glowSpread","glowOffsetX","glowOffsetY","springDamping","springStiffness","resolveZoneStyle","globalStyle","stepStyle","merged"],"sourceRoot":"..\\..\\..\\src","sources":["constants/defaults.ts"],"mappings":";;AAGA,OAAO,MAAMA,qBAAuC,GAAG;EACrDC,OAAO,EAAE,EAAE;EACXC,SAAS,EAAE;AACb,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAG,GAAG;AAE3C,OAAO,MAAMC,cAAc,GAAG;EAC5BC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE,UAAU;EACpBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAuC,GAAG;EACrDC,OAAO,EAAE,CAAC;EACVC,UAAU,EAAE,CAAC;EACbC,YAAY,EAAE,CAAC;EACfC,aAAa,EAAE,CAAC;EAChBC,WAAW,EAAE,CAAC;EACdC,YAAY,EAAE,EAAE;EAChBC,KAAK,EAAE,cAAc;EACrBC,WAAW,EAAE,CAAC;EACdC,WAAW,EAAE,aAAa;EAC1BC,SAAS,EAAE,SAAS;EACpBC,UAAU,EAAE,EAAE;EACdC,UAAU,EAAE,CAAC;EACbC,WAAW,EAAE,CAAC;EACdC,WAAW,EAAE,CAAC;EACdC,aAAa,EAAE,EAAE;EACjBC,eAAe,EAAE;AACnB,CAAC;;AAED;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,WAAuB,EACvBC,SAAqB,EACA;EACrB,MAAMC,MAAM,GAAG;IACb,GAAGpB,kBAAkB;IACrB,GAAGkB,WAAW;IACd,GAAGC;EACL,CAAC;;EAED;EACA,OAAO;IACL,GAAGC,MAAM;IACTlB,UAAU,EACRiB,SAAS,EAAEjB,UAAU,IAAIgB,WAAW,EAAEhB,UAAU,IAAIkB,MAAM,CAACnB,OAAO;IACpEE,YAAY,EACVgB,SAAS,EAAEhB,YAAY,IAAIe,WAAW,EAAEf,YAAY,IAAIiB,MAAM,CAACnB,OAAO;IACxEG,aAAa,EACXe,SAAS,EAAEf,aAAa,IAAIc,WAAW,EAAEd,aAAa,IAAIgB,MAAM,CAACnB,OAAO;IAC1EI,WAAW,EACTc,SAAS,EAAEd,WAAW,IAAIa,WAAW,EAAEb,WAAW,IAAIe,MAAM,CAACnB;EACjE,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { createContext } from 'react';
4
+ export const TourContext = /*#__PURE__*/createContext(null);
5
+ //# sourceMappingURL=TourContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","TourContext"],"sourceRoot":"..\\..\\..\\src","sources":["context/TourContext.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,OAAO;AAGrC,OAAO,MAAMC,WAAW,gBAAGD,aAAa,CAAiC,IAAI,CAAC","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { useContext } from 'react';
4
- import { TourContext } from "../components/TourProvider.js";
4
+ import { TourContext } from "../context/TourContext.js";
5
5
  export const useTour = () => {
6
6
  const context = useContext(TourContext);
7
7
  if (!context) {
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","TourContext","useTour","context","Error"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useTour.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,WAAW,QAAQ,+BAA4B;AAExD,OAAO,MAAMC,OAAO,GAAGA,CAAA,KAAM;EAC3B,MAAMC,OAAO,GAAGH,UAAU,CAACC,WAAW,CAAC;EACvC,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EACA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useContext","TourContext","useTour","context","Error"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useTour.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,WAAW,QAAQ,2BAAwB;AAEpD,OAAO,MAAMC,OAAO,GAAGA,CAAA,KAAM;EAC3B,MAAMC,OAAO,GAAGH,UAAU,CAACC,WAAW,CAAC;EACvC,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EACA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useMemo } from 'react';
4
+ import { useTour } from "./useTour.js";
5
+ /**
6
+ * Hook to simplify integrating custom scroll views with the tour system.
7
+ *
8
+ * @example
9
+ * // Basic usage with Animated.ScrollView
10
+ * const { scrollViewRef } = useTourScrollView();
11
+ * return <Animated.ScrollView ref={scrollViewRef}>...</Animated.ScrollView>;
12
+ *
13
+ * @example
14
+ * // With scroll disabled during tour
15
+ * const { scrollViewProps } = useTourScrollView({ disableScrollDuringTour: true });
16
+ * return <Animated.ScrollView {...scrollViewProps}>...</Animated.ScrollView>;
17
+ *
18
+ * @example
19
+ * // Custom scroll view wrapper (forwardRef pattern)
20
+ * const MyScrollView = forwardRef((props, ref) => {
21
+ * const { scrollViewRef } = useTourScrollView();
22
+ * useImperativeHandle(ref, () => ({
23
+ * getScrollRef: () => scrollViewRef.current,
24
+ * }));
25
+ * return <Animated.ScrollView ref={scrollViewRef} {...props} />;
26
+ * });
27
+ */
28
+ export function useTourScrollView(options = {}) {
29
+ const {
30
+ disableScrollDuringTour = false
31
+ } = options;
32
+
33
+ // Get the tour context - use type assertion since we know the internal structure
34
+ const tour = useTour();
35
+ const {
36
+ scrollViewRef,
37
+ currentStep,
38
+ triggerScrollEnd
39
+ } = tour;
40
+ const isTourActive = currentStep !== null;
41
+ const scrollEnabled = disableScrollDuringTour ? !isTourActive : true;
42
+ const scrollTo = useCallback(opts => {
43
+ try {
44
+ if (scrollViewRef?.current?.scrollTo) {
45
+ scrollViewRef.current.scrollTo({
46
+ x: opts.x ?? 0,
47
+ y: opts.y ?? 0,
48
+ animated: opts.animated !== false
49
+ });
50
+ }
51
+ } catch {
52
+ // Silently ignore scroll errors
53
+ }
54
+ }, [scrollViewRef]);
55
+ const scrollViewProps = useMemo(() => {
56
+ const props = {
57
+ ref: scrollViewRef,
58
+ onMomentumScrollEnd: triggerScrollEnd
59
+ };
60
+ if (disableScrollDuringTour) {
61
+ props.scrollEnabled = scrollEnabled;
62
+ }
63
+ return props;
64
+ }, [scrollViewRef, triggerScrollEnd, disableScrollDuringTour, scrollEnabled]);
65
+ return {
66
+ scrollViewRef,
67
+ isTourActive,
68
+ scrollEnabled,
69
+ scrollTo,
70
+ onMomentumScrollEnd: triggerScrollEnd,
71
+ scrollViewProps
72
+ };
73
+ }
74
+ //# sourceMappingURL=useTourScrollView.js.map