@korsolutions/guidon 1.0.2 → 1.0.3
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/dist/commonjs/components/GuidonTarget.js +10 -8
- package/dist/commonjs/components/GuidonTarget.js.map +1 -1
- package/dist/commonjs/store.js +21 -12
- package/dist/commonjs/store.js.map +1 -1
- package/dist/module/components/GuidonTarget.js +10 -8
- package/dist/module/components/GuidonTarget.js.map +1 -1
- package/dist/module/store.js +21 -12
- package/dist/module/store.js.map +1 -1
- package/dist/typescript/commonjs/components/GuidonTarget.d.ts.map +1 -1
- package/dist/typescript/commonjs/store.d.ts.map +1 -1
- package/dist/typescript/module/components/GuidonTarget.d.ts.map +1 -1
- package/dist/typescript/module/store.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/GuidonTarget.tsx +16 -10
- package/src/store.ts +41 -28
|
@@ -42,7 +42,9 @@ function GuidonTarget({
|
|
|
42
42
|
}
|
|
43
43
|
} else {
|
|
44
44
|
// Native measurement using measureInWindow
|
|
45
|
-
|
|
45
|
+
// Cast to access the native measureInWindow method
|
|
46
|
+
const nativeRef = viewRef.current;
|
|
47
|
+
nativeRef.measureInWindow((x, y, width, height) => {
|
|
46
48
|
if (width > 0 && height > 0) {
|
|
47
49
|
const measurements = {
|
|
48
50
|
x,
|
|
@@ -66,13 +68,13 @@ function GuidonTarget({
|
|
|
66
68
|
|
|
67
69
|
// Re-measure when walkthrough becomes active or when this target becomes relevant
|
|
68
70
|
(0, _react.useEffect)(() => {
|
|
69
|
-
if (isTargetNeeded)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
71
|
+
if (!isTargetNeeded) return;
|
|
72
|
+
|
|
73
|
+
// Delay to ensure the element is rendered
|
|
74
|
+
const timer = setTimeout(() => {
|
|
75
|
+
measureElement();
|
|
76
|
+
}, 100);
|
|
77
|
+
return () => clearTimeout(timer);
|
|
76
78
|
}, [isTargetNeeded, measureElement]);
|
|
77
79
|
|
|
78
80
|
// Re-measure on scroll (web only)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_store","_jsxRuntime","GuidonTarget","children","targetId","active","viewRef","useRef","registerTarget","useGuidonStore","state","unregisterTarget","isActive","config","isTargetNeeded","steps","some","step","measureElement","useCallback","current","Platform","OS","element","getBoundingClientRect","rect","measurements","x","left","window","scrollX","y","top","scrollY","width","height","measureInWindow","handleLayout","_event","requestAnimationFrame","useEffect","timer","setTimeout","clearTimeout","handleScroll","addEventListener","removeEventListener","jsx","View","ref","onLayout","collapsable","style","alignSelf"],"sourceRoot":"../../../src","sources":["components/GuidonTarget.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAA0C,IAAAG,WAAA,GAAAH,OAAA;AAQ1C;AACA;AACA;AACA;AACO,SAASI,YAAYA,CAAC;EAC3BC,QAAQ;EACRC,QAAQ;EACRC,MAAM,GAAG;AACQ,CAAC,EAAE;EACpB,MAAMC,OAAO,GAAG,IAAAC,aAAM,
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_store","_jsxRuntime","GuidonTarget","children","targetId","active","viewRef","useRef","registerTarget","useGuidonStore","state","unregisterTarget","isActive","config","isTargetNeeded","steps","some","step","measureElement","useCallback","current","Platform","OS","element","getBoundingClientRect","rect","measurements","x","left","window","scrollX","y","top","scrollY","width","height","nativeRef","measureInWindow","handleLayout","_event","requestAnimationFrame","useEffect","timer","setTimeout","clearTimeout","handleScroll","addEventListener","removeEventListener","jsx","View","ref","onLayout","collapsable","style","alignSelf"],"sourceRoot":"../../../src","sources":["components/GuidonTarget.tsx"],"mappings":"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","ignoreList":[]}
|
package/dist/commonjs/store.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useWaitingState = exports.useTargetMeasurements = exports.useIsFloatingStep = exports.useGuidonStore = exports.useGuidonStep = exports.useGuidonProgress = exports.useGuidonActive = exports.Guidon = void 0;
|
|
7
7
|
var _zustand = require("zustand");
|
|
8
|
+
var _shallow = require("zustand/react/shallow");
|
|
8
9
|
const initialState = {
|
|
9
10
|
config: null,
|
|
10
11
|
isActive: false,
|
|
@@ -38,8 +39,10 @@ const useGuidonStore = exports.useGuidonStore = (0, _zustand.create)((set, get)
|
|
|
38
39
|
|
|
39
40
|
// Call onStepEnter for the first step
|
|
40
41
|
const firstStep = config.steps[0];
|
|
41
|
-
firstStep
|
|
42
|
-
|
|
42
|
+
firstStep?.onStepEnter?.();
|
|
43
|
+
if (firstStep) {
|
|
44
|
+
config.onStepChange?.(0, firstStep);
|
|
45
|
+
}
|
|
43
46
|
},
|
|
44
47
|
next: () => {
|
|
45
48
|
const {
|
|
@@ -56,8 +59,10 @@ const useGuidonStore = exports.useGuidonStore = (0, _zustand.create)((set, get)
|
|
|
56
59
|
set({
|
|
57
60
|
currentStepIndex: nextIndex
|
|
58
61
|
});
|
|
59
|
-
nextStep
|
|
60
|
-
|
|
62
|
+
nextStep?.onStepEnter?.();
|
|
63
|
+
if (nextStep) {
|
|
64
|
+
config.onStepChange?.(nextIndex, nextStep);
|
|
65
|
+
}
|
|
61
66
|
} else {
|
|
62
67
|
// Last step completed
|
|
63
68
|
get().complete();
|
|
@@ -77,8 +82,10 @@ const useGuidonStore = exports.useGuidonStore = (0, _zustand.create)((set, get)
|
|
|
77
82
|
set({
|
|
78
83
|
currentStepIndex: prevIndex
|
|
79
84
|
});
|
|
80
|
-
prevStep
|
|
81
|
-
|
|
85
|
+
prevStep?.onStepEnter?.();
|
|
86
|
+
if (prevStep) {
|
|
87
|
+
config.onStepChange?.(prevIndex, prevStep);
|
|
88
|
+
}
|
|
82
89
|
},
|
|
83
90
|
goToStep: index => {
|
|
84
91
|
const {
|
|
@@ -94,8 +101,10 @@ const useGuidonStore = exports.useGuidonStore = (0, _zustand.create)((set, get)
|
|
|
94
101
|
set({
|
|
95
102
|
currentStepIndex: index
|
|
96
103
|
});
|
|
97
|
-
targetStep
|
|
98
|
-
|
|
104
|
+
targetStep?.onStepEnter?.();
|
|
105
|
+
if (targetStep) {
|
|
106
|
+
config.onStepChange?.(index, targetStep);
|
|
107
|
+
}
|
|
99
108
|
},
|
|
100
109
|
skip: () => {
|
|
101
110
|
const {
|
|
@@ -265,11 +274,11 @@ const useGuidonStep = () => useGuidonStore(state => {
|
|
|
265
274
|
return state.config.steps[state.currentStepIndex];
|
|
266
275
|
});
|
|
267
276
|
exports.useGuidonStep = useGuidonStep;
|
|
268
|
-
const useGuidonProgress = () => useGuidonStore(state => ({
|
|
277
|
+
const useGuidonProgress = () => useGuidonStore((0, _shallow.useShallow)(state => ({
|
|
269
278
|
currentStep: state.currentStepIndex + 1,
|
|
270
279
|
totalSteps: state.config?.steps.length ?? 0,
|
|
271
280
|
percentage: state.config ? (state.currentStepIndex + 1) / state.config.steps.length * 100 : 0
|
|
272
|
-
}));
|
|
281
|
+
})));
|
|
273
282
|
exports.useGuidonProgress = useGuidonProgress;
|
|
274
283
|
const useTargetMeasurements = targetId => useGuidonStore(state => state.targetMeasurements[targetId]);
|
|
275
284
|
|
|
@@ -278,7 +287,7 @@ const useTargetMeasurements = targetId => useGuidonStore(state => state.targetMe
|
|
|
278
287
|
* Returns null if not active, not waiting, or if it's a floating step
|
|
279
288
|
*/
|
|
280
289
|
exports.useTargetMeasurements = useTargetMeasurements;
|
|
281
|
-
const useWaitingState = () => useGuidonStore(state => {
|
|
290
|
+
const useWaitingState = () => useGuidonStore((0, _shallow.useShallow)(state => {
|
|
282
291
|
if (!state.isActive || !state.config) return null;
|
|
283
292
|
const currentStep = state.config.steps[state.currentStepIndex];
|
|
284
293
|
const targetId = currentStep?.targetId;
|
|
@@ -291,7 +300,7 @@ const useWaitingState = () => useGuidonStore(state => {
|
|
|
291
300
|
targetId: hasMeasurements ? null : targetId,
|
|
292
301
|
message: currentStep?.waitingMessage ?? null
|
|
293
302
|
};
|
|
294
|
-
});
|
|
303
|
+
}));
|
|
295
304
|
|
|
296
305
|
/**
|
|
297
306
|
* Hook to check if the current step is a floating step (no target element)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_zustand","require","initialState","config","isActive","currentStepIndex","isCompleted","targetMeasurements","isLoading","error","waitingForTarget","waitingTargetId","useGuidonStore","exports","create","set","get","configure","start","steps","length","firstStep","onStepEnter","onStepChange","next","currentStep","onStepExit","nextIndex","nextStep","complete","previous","prevIndex","prevStep","goToStep","index","targetStep","skip","onSkip","onComplete","reset","registerTarget","targetId","measurements","state","unregisterTarget","_","rest","setLoading","setError","Guidon","getState","getCurrentStepIndex","getCurrentStep","getSteps","subscribe","useGuidonActive","useGuidonStep","useGuidonProgress","totalSteps","percentage","useTargetMeasurements","useWaitingState","hasMeasurements","isWaiting","message","waitingMessage","useIsFloatingStep"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAOA,
|
|
1
|
+
{"version":3,"names":["_zustand","require","_shallow","initialState","config","isActive","currentStepIndex","isCompleted","targetMeasurements","isLoading","error","waitingForTarget","waitingTargetId","useGuidonStore","exports","create","set","get","configure","start","steps","length","firstStep","onStepEnter","onStepChange","next","currentStep","onStepExit","nextIndex","nextStep","complete","previous","prevIndex","prevStep","goToStep","index","targetStep","skip","onSkip","onComplete","reset","registerTarget","targetId","measurements","state","unregisterTarget","_","rest","setLoading","setError","Guidon","getState","getCurrentStepIndex","getCurrentStep","getSteps","subscribe","useGuidonActive","useGuidonStep","useGuidonProgress","useShallow","totalSteps","percentage","useTargetMeasurements","useWaitingState","hasMeasurements","isWaiting","message","waitingMessage","useIsFloatingStep"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -38,7 +38,9 @@ export function GuidonTarget({
|
|
|
38
38
|
}
|
|
39
39
|
} else {
|
|
40
40
|
// Native measurement using measureInWindow
|
|
41
|
-
|
|
41
|
+
// Cast to access the native measureInWindow method
|
|
42
|
+
const nativeRef = viewRef.current;
|
|
43
|
+
nativeRef.measureInWindow((x, y, width, height) => {
|
|
42
44
|
if (width > 0 && height > 0) {
|
|
43
45
|
const measurements = {
|
|
44
46
|
x,
|
|
@@ -62,13 +64,13 @@ export function GuidonTarget({
|
|
|
62
64
|
|
|
63
65
|
// Re-measure when walkthrough becomes active or when this target becomes relevant
|
|
64
66
|
useEffect(() => {
|
|
65
|
-
if (isTargetNeeded)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
if (!isTargetNeeded) return;
|
|
68
|
+
|
|
69
|
+
// Delay to ensure the element is rendered
|
|
70
|
+
const timer = setTimeout(() => {
|
|
71
|
+
measureElement();
|
|
72
|
+
}, 100);
|
|
73
|
+
return () => clearTimeout(timer);
|
|
72
74
|
}, [isTargetNeeded, measureElement]);
|
|
73
75
|
|
|
74
76
|
// Re-measure on scroll (web only)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","View","Platform","useGuidonStore","jsx","_jsx","GuidonTarget","children","targetId","active","viewRef","registerTarget","state","unregisterTarget","isActive","config","isTargetNeeded","steps","some","step","measureElement","current","OS","element","getBoundingClientRect","rect","measurements","x","left","window","scrollX","y","top","scrollY","width","height","measureInWindow","handleLayout","_event","requestAnimationFrame","timer","setTimeout","clearTimeout","handleScroll","addEventListener","removeEventListener","ref","onLayout","collapsable","style","alignSelf"],"sourceRoot":"../../../src","sources":["components/GuidonTarget.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","View","Platform","useGuidonStore","jsx","_jsx","GuidonTarget","children","targetId","active","viewRef","registerTarget","state","unregisterTarget","isActive","config","isTargetNeeded","steps","some","step","measureElement","current","OS","element","getBoundingClientRect","rect","measurements","x","left","window","scrollX","y","top","scrollY","width","height","nativeRef","measureInWindow","handleLayout","_event","requestAnimationFrame","timer","setTimeout","clearTimeout","handleScroll","addEventListener","removeEventListener","ref","onLayout","collapsable","style","alignSelf"],"sourceRoot":"../../../src","sources":["components/GuidonTarget.tsx"],"mappings":"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","ignoreList":[]}
|
package/dist/module/store.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { create } from "zustand";
|
|
4
|
+
import { useShallow } from "zustand/react/shallow";
|
|
4
5
|
const initialState = {
|
|
5
6
|
config: null,
|
|
6
7
|
isActive: false,
|
|
@@ -34,8 +35,10 @@ export const useGuidonStore = create((set, get) => ({
|
|
|
34
35
|
|
|
35
36
|
// Call onStepEnter for the first step
|
|
36
37
|
const firstStep = config.steps[0];
|
|
37
|
-
firstStep
|
|
38
|
-
|
|
38
|
+
firstStep?.onStepEnter?.();
|
|
39
|
+
if (firstStep) {
|
|
40
|
+
config.onStepChange?.(0, firstStep);
|
|
41
|
+
}
|
|
39
42
|
},
|
|
40
43
|
next: () => {
|
|
41
44
|
const {
|
|
@@ -52,8 +55,10 @@ export const useGuidonStore = create((set, get) => ({
|
|
|
52
55
|
set({
|
|
53
56
|
currentStepIndex: nextIndex
|
|
54
57
|
});
|
|
55
|
-
nextStep
|
|
56
|
-
|
|
58
|
+
nextStep?.onStepEnter?.();
|
|
59
|
+
if (nextStep) {
|
|
60
|
+
config.onStepChange?.(nextIndex, nextStep);
|
|
61
|
+
}
|
|
57
62
|
} else {
|
|
58
63
|
// Last step completed
|
|
59
64
|
get().complete();
|
|
@@ -73,8 +78,10 @@ export const useGuidonStore = create((set, get) => ({
|
|
|
73
78
|
set({
|
|
74
79
|
currentStepIndex: prevIndex
|
|
75
80
|
});
|
|
76
|
-
prevStep
|
|
77
|
-
|
|
81
|
+
prevStep?.onStepEnter?.();
|
|
82
|
+
if (prevStep) {
|
|
83
|
+
config.onStepChange?.(prevIndex, prevStep);
|
|
84
|
+
}
|
|
78
85
|
},
|
|
79
86
|
goToStep: index => {
|
|
80
87
|
const {
|
|
@@ -90,8 +97,10 @@ export const useGuidonStore = create((set, get) => ({
|
|
|
90
97
|
set({
|
|
91
98
|
currentStepIndex: index
|
|
92
99
|
});
|
|
93
|
-
targetStep
|
|
94
|
-
|
|
100
|
+
targetStep?.onStepEnter?.();
|
|
101
|
+
if (targetStep) {
|
|
102
|
+
config.onStepChange?.(index, targetStep);
|
|
103
|
+
}
|
|
95
104
|
},
|
|
96
105
|
skip: () => {
|
|
97
106
|
const {
|
|
@@ -259,18 +268,18 @@ export const useGuidonStep = () => useGuidonStore(state => {
|
|
|
259
268
|
if (!state.config || !state.isActive) return null;
|
|
260
269
|
return state.config.steps[state.currentStepIndex];
|
|
261
270
|
});
|
|
262
|
-
export const useGuidonProgress = () => useGuidonStore(state => ({
|
|
271
|
+
export const useGuidonProgress = () => useGuidonStore(useShallow(state => ({
|
|
263
272
|
currentStep: state.currentStepIndex + 1,
|
|
264
273
|
totalSteps: state.config?.steps.length ?? 0,
|
|
265
274
|
percentage: state.config ? (state.currentStepIndex + 1) / state.config.steps.length * 100 : 0
|
|
266
|
-
}));
|
|
275
|
+
})));
|
|
267
276
|
export const useTargetMeasurements = targetId => useGuidonStore(state => state.targetMeasurements[targetId]);
|
|
268
277
|
|
|
269
278
|
/**
|
|
270
279
|
* Hook to check if the guidon is waiting for a target element to mount
|
|
271
280
|
* Returns null if not active, not waiting, or if it's a floating step
|
|
272
281
|
*/
|
|
273
|
-
export const useWaitingState = () => useGuidonStore(state => {
|
|
282
|
+
export const useWaitingState = () => useGuidonStore(useShallow(state => {
|
|
274
283
|
if (!state.isActive || !state.config) return null;
|
|
275
284
|
const currentStep = state.config.steps[state.currentStepIndex];
|
|
276
285
|
const targetId = currentStep?.targetId;
|
|
@@ -283,7 +292,7 @@ export const useWaitingState = () => useGuidonStore(state => {
|
|
|
283
292
|
targetId: hasMeasurements ? null : targetId,
|
|
284
293
|
message: currentStep?.waitingMessage ?? null
|
|
285
294
|
};
|
|
286
|
-
});
|
|
295
|
+
}));
|
|
287
296
|
|
|
288
297
|
/**
|
|
289
298
|
* Hook to check if the current step is a floating step (no target element)
|
package/dist/module/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["create","initialState","config","isActive","currentStepIndex","isCompleted","targetMeasurements","isLoading","error","waitingForTarget","waitingTargetId","useGuidonStore","set","get","configure","start","steps","length","firstStep","onStepEnter","onStepChange","next","currentStep","onStepExit","nextIndex","nextStep","complete","previous","prevIndex","prevStep","goToStep","index","targetStep","skip","onSkip","onComplete","reset","registerTarget","targetId","measurements","state","unregisterTarget","_","rest","setLoading","setError","Guidon","getState","getCurrentStepIndex","getCurrentStep","getSteps","subscribe","useGuidonActive","useGuidonStep","useGuidonProgress","totalSteps","percentage","useTargetMeasurements","useWaitingState","hasMeasurements","isWaiting","message","waitingMessage","useIsFloatingStep"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,SAAS;
|
|
1
|
+
{"version":3,"names":["create","useShallow","initialState","config","isActive","currentStepIndex","isCompleted","targetMeasurements","isLoading","error","waitingForTarget","waitingTargetId","useGuidonStore","set","get","configure","start","steps","length","firstStep","onStepEnter","onStepChange","next","currentStep","onStepExit","nextIndex","nextStep","complete","previous","prevIndex","prevStep","goToStep","index","targetStep","skip","onSkip","onComplete","reset","registerTarget","targetId","measurements","state","unregisterTarget","_","rest","setLoading","setError","Guidon","getState","getCurrentStepIndex","getCurrentStep","getSteps","subscribe","useGuidonActive","useGuidonStep","useGuidonProgress","totalSteps","percentage","useTargetMeasurements","useWaitingState","hasMeasurements","isWaiting","message","waitingMessage","useIsFloatingStep"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GuidonTarget.d.ts","sourceRoot":"","sources":["../../../../src/components/GuidonTarget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,MAAa,GACd,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"GuidonTarget.d.ts","sourceRoot":"","sources":["../../../../src/components/GuidonTarget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,MAAa,GACd,EAAE,iBAAiB,2CAyGnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAcjB,eAAO,MAAM,cAAc,0EAuIxB,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;wBACiB,YAAY;IAIhC;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;sBACe,MAAM;IAIxB;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAMH;;OAEG;;IAKH;;OAEG;;CAEJ,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,eAC4B,CAAC;AAEzD,eAAO,MAAM,aAAa,2CAItB,CAAC;AAEL,eAAO,MAAM,iBAAiB;;;;CAS3B,CAAC;AAEJ,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,uBAGnD,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;QAmBzB,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,iBAAiB,eAI1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GuidonTarget.d.ts","sourceRoot":"","sources":["../../../../src/components/GuidonTarget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,MAAa,GACd,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"GuidonTarget.d.ts","sourceRoot":"","sources":["../../../../src/components/GuidonTarget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,MAAa,GACd,EAAE,iBAAiB,2CAyGnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAcjB,eAAO,MAAM,cAAc,0EAuIxB,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;wBACiB,YAAY;IAIhC;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;sBACe,MAAM;IAIxB;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAKH;;OAEG;;IAMH;;OAEG;;IAKH;;OAEG;;CAEJ,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,eAC4B,CAAC;AAEzD,eAAO,MAAM,aAAa,2CAItB,CAAC;AAEL,eAAO,MAAM,iBAAiB;;;;CAS3B,CAAC;AAEJ,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,uBAGnD,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;QAmBzB,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,iBAAiB,eAI1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@korsolutions/guidon",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "A cross-platform walkthrough/onboarding component library for React Native with web support. Features spotlight effects, customizable tooltips, and flexible persistence options. ",
|
|
5
5
|
"repository": "https://github.com/KorSoftwareSolutions/guidon.git",
|
|
6
6
|
"author": "Christian Jimenez <christianjimenezfael@gmail.com>",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useEffect, useRef } from "react";
|
|
1
|
+
import { useCallback, useEffect, useRef, type ComponentRef } from "react";
|
|
2
2
|
import { View, Platform, type LayoutChangeEvent } from "react-native";
|
|
3
3
|
import { useGuidonStore } from "../store";
|
|
4
4
|
import type {
|
|
@@ -17,7 +17,7 @@ export function GuidonTarget({
|
|
|
17
17
|
targetId,
|
|
18
18
|
active = true,
|
|
19
19
|
}: GuidonTargetProps) {
|
|
20
|
-
const viewRef = useRef<View
|
|
20
|
+
const viewRef = useRef<ComponentRef<typeof View>>(null);
|
|
21
21
|
const registerTarget = useGuidonStore(
|
|
22
22
|
(state: GuidonStore) => state.registerTarget,
|
|
23
23
|
);
|
|
@@ -50,7 +50,13 @@ export function GuidonTarget({
|
|
|
50
50
|
}
|
|
51
51
|
} else {
|
|
52
52
|
// Native measurement using measureInWindow
|
|
53
|
-
|
|
53
|
+
// Cast to access the native measureInWindow method
|
|
54
|
+
const nativeRef = viewRef.current as unknown as {
|
|
55
|
+
measureInWindow: (
|
|
56
|
+
callback: (x: number, y: number, width: number, height: number) => void
|
|
57
|
+
) => void;
|
|
58
|
+
};
|
|
59
|
+
nativeRef.measureInWindow((x, y, width, height) => {
|
|
54
60
|
if (width > 0 && height > 0) {
|
|
55
61
|
const measurements: TargetMeasurements = { x, y, width, height };
|
|
56
62
|
registerTarget(targetId, measurements);
|
|
@@ -72,13 +78,13 @@ export function GuidonTarget({
|
|
|
72
78
|
|
|
73
79
|
// Re-measure when walkthrough becomes active or when this target becomes relevant
|
|
74
80
|
useEffect(() => {
|
|
75
|
-
if (isTargetNeeded)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
if (!isTargetNeeded) return;
|
|
82
|
+
|
|
83
|
+
// Delay to ensure the element is rendered
|
|
84
|
+
const timer = setTimeout(() => {
|
|
85
|
+
measureElement();
|
|
86
|
+
}, 100);
|
|
87
|
+
return () => clearTimeout(timer);
|
|
82
88
|
}, [isTargetNeeded, measureElement]);
|
|
83
89
|
|
|
84
90
|
// Re-measure on scroll (web only)
|
package/src/store.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { create } from "zustand";
|
|
2
|
+
import { useShallow } from "zustand/react/shallow";
|
|
2
3
|
import type {
|
|
3
4
|
GuidonConfig,
|
|
4
5
|
GuidonStore,
|
|
@@ -32,8 +33,10 @@ export const useGuidonStore = create<GuidonStore>((set, get) => ({
|
|
|
32
33
|
|
|
33
34
|
// Call onStepEnter for the first step
|
|
34
35
|
const firstStep = config.steps[0];
|
|
35
|
-
firstStep
|
|
36
|
-
|
|
36
|
+
firstStep?.onStepEnter?.();
|
|
37
|
+
if (firstStep) {
|
|
38
|
+
config.onStepChange?.(0, firstStep);
|
|
39
|
+
}
|
|
37
40
|
},
|
|
38
41
|
|
|
39
42
|
next: () => {
|
|
@@ -49,8 +52,10 @@ export const useGuidonStore = create<GuidonStore>((set, get) => ({
|
|
|
49
52
|
|
|
50
53
|
set({ currentStepIndex: nextIndex });
|
|
51
54
|
|
|
52
|
-
nextStep
|
|
53
|
-
|
|
55
|
+
nextStep?.onStepEnter?.();
|
|
56
|
+
if (nextStep) {
|
|
57
|
+
config.onStepChange?.(nextIndex, nextStep);
|
|
58
|
+
}
|
|
54
59
|
} else {
|
|
55
60
|
// Last step completed
|
|
56
61
|
get().complete();
|
|
@@ -69,8 +74,10 @@ export const useGuidonStore = create<GuidonStore>((set, get) => ({
|
|
|
69
74
|
|
|
70
75
|
set({ currentStepIndex: prevIndex });
|
|
71
76
|
|
|
72
|
-
prevStep
|
|
73
|
-
|
|
77
|
+
prevStep?.onStepEnter?.();
|
|
78
|
+
if (prevStep) {
|
|
79
|
+
config.onStepChange?.(prevIndex, prevStep);
|
|
80
|
+
}
|
|
74
81
|
},
|
|
75
82
|
|
|
76
83
|
goToStep: (index: number) => {
|
|
@@ -85,8 +92,10 @@ export const useGuidonStore = create<GuidonStore>((set, get) => ({
|
|
|
85
92
|
|
|
86
93
|
set({ currentStepIndex: index });
|
|
87
94
|
|
|
88
|
-
targetStep
|
|
89
|
-
|
|
95
|
+
targetStep?.onStepEnter?.();
|
|
96
|
+
if (targetStep) {
|
|
97
|
+
config.onStepChange?.(index, targetStep);
|
|
98
|
+
}
|
|
90
99
|
},
|
|
91
100
|
|
|
92
101
|
skip: () => {
|
|
@@ -262,13 +271,15 @@ export const useGuidonStep = () =>
|
|
|
262
271
|
});
|
|
263
272
|
|
|
264
273
|
export const useGuidonProgress = () =>
|
|
265
|
-
useGuidonStore(
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
274
|
+
useGuidonStore(
|
|
275
|
+
useShallow((state: GuidonStore) => ({
|
|
276
|
+
currentStep: state.currentStepIndex + 1,
|
|
277
|
+
totalSteps: state.config?.steps.length ?? 0,
|
|
278
|
+
percentage: state.config
|
|
279
|
+
? ((state.currentStepIndex + 1) / state.config.steps.length) * 100
|
|
280
|
+
: 0,
|
|
281
|
+
}))
|
|
282
|
+
);
|
|
272
283
|
|
|
273
284
|
export const useTargetMeasurements = (targetId: string) =>
|
|
274
285
|
useGuidonStore(
|
|
@@ -280,23 +291,25 @@ export const useTargetMeasurements = (targetId: string) =>
|
|
|
280
291
|
* Returns null if not active, not waiting, or if it's a floating step
|
|
281
292
|
*/
|
|
282
293
|
export const useWaitingState = () =>
|
|
283
|
-
useGuidonStore(
|
|
284
|
-
|
|
294
|
+
useGuidonStore(
|
|
295
|
+
useShallow((state: GuidonStore) => {
|
|
296
|
+
if (!state.isActive || !state.config) return null;
|
|
285
297
|
|
|
286
|
-
|
|
287
|
-
|
|
298
|
+
const currentStep = state.config.steps[state.currentStepIndex];
|
|
299
|
+
const targetId = currentStep?.targetId;
|
|
288
300
|
|
|
289
|
-
|
|
290
|
-
|
|
301
|
+
// Floating step (no targetId) - not waiting
|
|
302
|
+
if (!targetId) return null;
|
|
291
303
|
|
|
292
|
-
|
|
304
|
+
const hasMeasurements = !!state.targetMeasurements[targetId];
|
|
293
305
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
306
|
+
return {
|
|
307
|
+
isWaiting: !hasMeasurements,
|
|
308
|
+
targetId: hasMeasurements ? null : targetId,
|
|
309
|
+
message: currentStep?.waitingMessage ?? null,
|
|
310
|
+
};
|
|
311
|
+
})
|
|
312
|
+
);
|
|
300
313
|
|
|
301
314
|
/**
|
|
302
315
|
* Hook to check if the current step is a floating step (no target element)
|