@korsolutions/guidon 1.0.34 → 1.0.36
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/hooks/useGuidonRef.js +77 -16
- package/dist/commonjs/hooks/useGuidonRef.js.map +1 -1
- package/dist/module/hooks/useGuidonRef.js +77 -16
- package/dist/module/hooks/useGuidonRef.js.map +1 -1
- package/dist/typescript/commonjs/hooks/useGuidonRef.d.ts.map +1 -1
- package/dist/typescript/module/hooks/useGuidonRef.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/useGuidonRef.ts +93 -18
|
@@ -14,23 +14,69 @@ var _store = require("../store.js");
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* Measure a native element
|
|
18
|
-
* (
|
|
17
|
+
* Measure a native element with multiple fallback methods for composite components
|
|
18
|
+
* and New Architecture (Fabric) support. Includes retry logic for timing issues.
|
|
19
19
|
*/
|
|
20
|
-
function measureNativeElement(node, callback) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
node.measureInWindow
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
20
|
+
function measureNativeElement(node, callback, retries = 3) {
|
|
21
|
+
const attemptMeasure = attemptsLeft => {
|
|
22
|
+
// Method 1: measureInWindow (works on View, preferred)
|
|
23
|
+
if (typeof node.measureInWindow === "function") {
|
|
24
|
+
node.measureInWindow((x, y, width, height) => {
|
|
25
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
26
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
callback(x, y, width, height);
|
|
30
|
+
});
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Method 2: measure() - returns pageX/pageY (window coordinates)
|
|
35
|
+
if (typeof node.measure === "function") {
|
|
36
|
+
node.measure((_x, _y, width, height, pageX, pageY) => {
|
|
37
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
38
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
callback(pageX, pageY, width, height);
|
|
42
|
+
});
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Method 3: unstable_getBoundingClientRect (Fabric - RN 0.71+)
|
|
47
|
+
if (typeof node.unstable_getBoundingClientRect === "function") {
|
|
48
|
+
const rect = node.unstable_getBoundingClientRect();
|
|
49
|
+
if (rect.width === 0 && rect.height === 0 && attemptsLeft > 0) {
|
|
50
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
callback(rect.x, rect.y, rect.width, rect.height);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Method 4: Legacy fallback - findNodeHandle + UIManager (Old Architecture)
|
|
58
|
+
const handle = (0, _reactNative.findNodeHandle)(node);
|
|
59
|
+
if (handle) {
|
|
60
|
+
_reactNative.UIManager.measureInWindow(handle, (x, y, width, height) => {
|
|
61
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
62
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
callback(x, y, width, height);
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Retry if handle is null (node might not be ready)
|
|
71
|
+
if (attemptsLeft > 0) {
|
|
72
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (__DEV__) {
|
|
76
|
+
console.warn('[Guidon] Could not measure node. Component type:', node?.constructor?.name ?? 'unknown');
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
attemptMeasure(retries);
|
|
34
80
|
}
|
|
35
81
|
|
|
36
82
|
/**
|
|
@@ -80,6 +126,8 @@ function useGuidonRegister() {
|
|
|
80
126
|
const rafRef = (0, _react.useRef)(new Map());
|
|
81
127
|
// Cache ref callbacks to prevent creating new functions on every call
|
|
82
128
|
const refCallbacksRef = (0, _react.useRef)(new Map());
|
|
129
|
+
// Track last measurements to avoid redundant store updates
|
|
130
|
+
const lastMeasurementsRef = (0, _react.useRef)(new Map());
|
|
83
131
|
const registerTarget = (0, _store.useGuidonStore)(state => state.registerTarget);
|
|
84
132
|
const unregisterTarget = (0, _store.useGuidonStore)(state => state.unregisterTarget);
|
|
85
133
|
const isActive = (0, _store.useGuidonStore)(state => state.isActive);
|
|
@@ -120,6 +168,13 @@ function useGuidonRegister() {
|
|
|
120
168
|
width: rect.width - paddingLeft - paddingRight - borderLeft - borderRight,
|
|
121
169
|
height: rect.height - paddingTop - paddingBottom - borderTop - borderBottom
|
|
122
170
|
};
|
|
171
|
+
|
|
172
|
+
// Skip update if measurements haven't changed (prevents infinite loops)
|
|
173
|
+
const key = `${Math.round(measurements.x)},${Math.round(measurements.y)},${Math.round(measurements.width)},${Math.round(measurements.height)}`;
|
|
174
|
+
if (lastMeasurementsRef.current.get(targetId) === key) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
lastMeasurementsRef.current.set(targetId, key);
|
|
123
178
|
registerTarget(targetId, measurements);
|
|
124
179
|
return;
|
|
125
180
|
}
|
|
@@ -127,6 +182,12 @@ function useGuidonRegister() {
|
|
|
127
182
|
// Use helper that handles composite components (TouchableOpacity, etc.)
|
|
128
183
|
measureNativeElement(node, (x, y, width, height) => {
|
|
129
184
|
if (width > 0 && height > 0) {
|
|
185
|
+
// Skip update if measurements haven't changed (prevents infinite loops)
|
|
186
|
+
const key = `${Math.round(x)},${Math.round(y)},${Math.round(width)},${Math.round(height)}`;
|
|
187
|
+
if (lastMeasurementsRef.current.get(targetId) === key) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
lastMeasurementsRef.current.set(targetId, key);
|
|
130
191
|
registerTarget(targetId, {
|
|
131
192
|
x,
|
|
132
193
|
y,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_store","measureNativeElement","node","callback","measureInWindow","handle","findNodeHandle","UIManager","x","y","width","height","isElementInViewport","el","rect","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","scrollElementIntoView","options","scrollIntoView","behavior","block","inline","useGuidon","register","useGuidonRegister","elementsRef","useRef","Map","rafRef","refCallbacksRef","registerTarget","useGuidonStore","state","unregisterTarget","isActive","config","currentStepIndex","isActiveRef","configRef","current","measure","useCallback","targetId","currentIsActive","currentConfig","isTargetUsed","steps","some","step","Platform","OS","style","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","measurements","scrollX","scrollY","measureRef","unregisterTargetRef","cached","get","set","raf","requestAnimationFrame","delete","cancelAnimationFrame","useEffect","currentStep","currentTargetId","shouldScroll","forEach","id","theme","scrollOptions","timer","setTimeout","clearTimeout","undefined","handler","addEventListener","removeEventListener","clear"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_store","measureNativeElement","node","callback","retries","attemptMeasure","attemptsLeft","measureInWindow","x","y","width","height","setTimeout","measure","_x","_y","pageX","pageY","unstable_getBoundingClientRect","rect","handle","findNodeHandle","UIManager","__DEV__","console","warn","constructor","name","isElementInViewport","el","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","scrollElementIntoView","options","scrollIntoView","behavior","block","inline","useGuidon","register","useGuidonRegister","elementsRef","useRef","Map","rafRef","refCallbacksRef","lastMeasurementsRef","registerTarget","useGuidonStore","state","unregisterTarget","isActive","config","currentStepIndex","isActiveRef","configRef","current","useCallback","targetId","currentIsActive","currentConfig","isTargetUsed","steps","some","step","Platform","OS","style","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","measurements","scrollX","scrollY","key","Math","round","get","set","measureRef","unregisterTargetRef","cached","raf","requestAnimationFrame","delete","cancelAnimationFrame","useEffect","currentStep","currentTargetId","shouldScroll","forEach","id","theme","scrollOptions","timer","clearTimeout","undefined","handler","addEventListener","removeEventListener","clear"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,23 +10,69 @@ import { useGuidonStore } from "../store.js";
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Measure a native element
|
|
14
|
-
* (
|
|
13
|
+
* Measure a native element with multiple fallback methods for composite components
|
|
14
|
+
* and New Architecture (Fabric) support. Includes retry logic for timing issues.
|
|
15
15
|
*/
|
|
16
|
-
function measureNativeElement(node, callback) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
node.measureInWindow
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
16
|
+
function measureNativeElement(node, callback, retries = 3) {
|
|
17
|
+
const attemptMeasure = attemptsLeft => {
|
|
18
|
+
// Method 1: measureInWindow (works on View, preferred)
|
|
19
|
+
if (typeof node.measureInWindow === "function") {
|
|
20
|
+
node.measureInWindow((x, y, width, height) => {
|
|
21
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
22
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
callback(x, y, width, height);
|
|
26
|
+
});
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Method 2: measure() - returns pageX/pageY (window coordinates)
|
|
31
|
+
if (typeof node.measure === "function") {
|
|
32
|
+
node.measure((_x, _y, width, height, pageX, pageY) => {
|
|
33
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
34
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
callback(pageX, pageY, width, height);
|
|
38
|
+
});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Method 3: unstable_getBoundingClientRect (Fabric - RN 0.71+)
|
|
43
|
+
if (typeof node.unstable_getBoundingClientRect === "function") {
|
|
44
|
+
const rect = node.unstable_getBoundingClientRect();
|
|
45
|
+
if (rect.width === 0 && rect.height === 0 && attemptsLeft > 0) {
|
|
46
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
callback(rect.x, rect.y, rect.width, rect.height);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Method 4: Legacy fallback - findNodeHandle + UIManager (Old Architecture)
|
|
54
|
+
const handle = findNodeHandle(node);
|
|
55
|
+
if (handle) {
|
|
56
|
+
UIManager.measureInWindow(handle, (x, y, width, height) => {
|
|
57
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
58
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
callback(x, y, width, height);
|
|
62
|
+
});
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Retry if handle is null (node might not be ready)
|
|
67
|
+
if (attemptsLeft > 0) {
|
|
68
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (__DEV__) {
|
|
72
|
+
console.warn('[Guidon] Could not measure node. Component type:', node?.constructor?.name ?? 'unknown');
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
attemptMeasure(retries);
|
|
30
76
|
}
|
|
31
77
|
|
|
32
78
|
/**
|
|
@@ -76,6 +122,8 @@ export function useGuidonRegister() {
|
|
|
76
122
|
const rafRef = useRef(new Map());
|
|
77
123
|
// Cache ref callbacks to prevent creating new functions on every call
|
|
78
124
|
const refCallbacksRef = useRef(new Map());
|
|
125
|
+
// Track last measurements to avoid redundant store updates
|
|
126
|
+
const lastMeasurementsRef = useRef(new Map());
|
|
79
127
|
const registerTarget = useGuidonStore(state => state.registerTarget);
|
|
80
128
|
const unregisterTarget = useGuidonStore(state => state.unregisterTarget);
|
|
81
129
|
const isActive = useGuidonStore(state => state.isActive);
|
|
@@ -116,6 +164,13 @@ export function useGuidonRegister() {
|
|
|
116
164
|
width: rect.width - paddingLeft - paddingRight - borderLeft - borderRight,
|
|
117
165
|
height: rect.height - paddingTop - paddingBottom - borderTop - borderBottom
|
|
118
166
|
};
|
|
167
|
+
|
|
168
|
+
// Skip update if measurements haven't changed (prevents infinite loops)
|
|
169
|
+
const key = `${Math.round(measurements.x)},${Math.round(measurements.y)},${Math.round(measurements.width)},${Math.round(measurements.height)}`;
|
|
170
|
+
if (lastMeasurementsRef.current.get(targetId) === key) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
lastMeasurementsRef.current.set(targetId, key);
|
|
119
174
|
registerTarget(targetId, measurements);
|
|
120
175
|
return;
|
|
121
176
|
}
|
|
@@ -123,6 +178,12 @@ export function useGuidonRegister() {
|
|
|
123
178
|
// Use helper that handles composite components (TouchableOpacity, etc.)
|
|
124
179
|
measureNativeElement(node, (x, y, width, height) => {
|
|
125
180
|
if (width > 0 && height > 0) {
|
|
181
|
+
// Skip update if measurements haven't changed (prevents infinite loops)
|
|
182
|
+
const key = `${Math.round(x)},${Math.round(y)},${Math.round(width)},${Math.round(height)}`;
|
|
183
|
+
if (lastMeasurementsRef.current.get(targetId) === key) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
lastMeasurementsRef.current.set(targetId, key);
|
|
126
187
|
registerTarget(targetId, {
|
|
127
188
|
x,
|
|
128
189
|
y,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","findNodeHandle","Platform","UIManager","useGuidonStore","measureNativeElement","node","callback","measureInWindow","handle","x","y","width","height","isElementInViewport","el","rect","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","scrollElementIntoView","options","scrollIntoView","behavior","block","inline","useGuidon","register","useGuidonRegister","elementsRef","Map","rafRef","refCallbacksRef","registerTarget","state","unregisterTarget","isActive","config","currentStepIndex","isActiveRef","configRef","current","measure","targetId","currentIsActive","currentConfig","isTargetUsed","steps","some","step","OS","style","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","measurements","scrollX","scrollY","measureRef","unregisterTargetRef","cached","get","set","raf","requestAnimationFrame","delete","cancelAnimationFrame","currentStep","currentTargetId","shouldScroll","forEach","id","theme","scrollOptions","timer","setTimeout","clearTimeout","undefined","handler","addEventListener","removeEventListener","clear"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","findNodeHandle","Platform","UIManager","useGuidonStore","measureNativeElement","node","callback","retries","attemptMeasure","attemptsLeft","measureInWindow","x","y","width","height","setTimeout","measure","_x","_y","pageX","pageY","unstable_getBoundingClientRect","rect","handle","__DEV__","console","warn","constructor","name","isElementInViewport","el","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","scrollElementIntoView","options","scrollIntoView","behavior","block","inline","useGuidon","register","useGuidonRegister","elementsRef","Map","rafRef","refCallbacksRef","lastMeasurementsRef","registerTarget","state","unregisterTarget","isActive","config","currentStepIndex","isActiveRef","configRef","current","targetId","currentIsActive","currentConfig","isTargetUsed","steps","some","step","OS","style","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","measurements","scrollX","scrollY","key","Math","round","get","set","measureRef","unregisterTargetRef","cached","raf","requestAnimationFrame","delete","cancelAnimationFrame","currentStep","currentTargetId","shouldScroll","forEach","id","theme","scrollOptions","timer","clearTimeout","undefined","handler","addEventListener","removeEventListener","clear"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACtD,SAASC,cAAc,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,cAAc;AAClE,SAASC,cAAc,QAAQ,aAAU;;AAGzC;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA,SAASC,oBAAoBA,CAC3BC,IAAuB,EACvBC,QAAuE,EACvEC,OAAO,GAAG,CAAC,EACL;EACN,MAAMC,cAAc,GAAIC,YAAoB,IAAK;IAC/C;IACA,IAAI,OAAQJ,IAAI,CAASK,eAAe,KAAK,UAAU,EAAE;MACtDL,IAAI,CAASK,eAAe,CAAC,CAACC,CAAS,EAAEC,CAAS,EAAEC,KAAa,EAAEC,MAAc,KAAK;QACrF,IAAID,KAAK,KAAK,CAAC,IAAIC,MAAM,KAAK,CAAC,IAAIL,YAAY,GAAG,CAAC,EAAE;UACnDM,UAAU,CAAC,MAAMP,cAAc,CAACC,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;UACvD;QACF;QACAH,QAAQ,CAACK,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,MAAM,CAAC;MAC/B,CAAC,CAAC;MACF;IACF;;IAEA;IACA,IAAI,OAAQT,IAAI,CAASW,OAAO,KAAK,UAAU,EAAE;MAC9CX,IAAI,CAASW,OAAO,CACnB,CAACC,EAAU,EAAEC,EAAU,EAAEL,KAAa,EAAEC,MAAc,EAAEK,KAAa,EAAEC,KAAa,KAAK;QACvF,IAAIP,KAAK,KAAK,CAAC,IAAIC,MAAM,KAAK,CAAC,IAAIL,YAAY,GAAG,CAAC,EAAE;UACnDM,UAAU,CAAC,MAAMP,cAAc,CAACC,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;UACvD;QACF;QACAH,QAAQ,CAACa,KAAK,EAAEC,KAAK,EAAEP,KAAK,EAAEC,MAAM,CAAC;MACvC,CACF,CAAC;MACD;IACF;;IAEA;IACA,IAAI,OAAQT,IAAI,CAASgB,8BAA8B,KAAK,UAAU,EAAE;MACtE,MAAMC,IAAI,GAAIjB,IAAI,CAASgB,8BAA8B,CAAC,CAAC;MAC3D,IAAIC,IAAI,CAACT,KAAK,KAAK,CAAC,IAAIS,IAAI,CAACR,MAAM,KAAK,CAAC,IAAIL,YAAY,GAAG,CAAC,EAAE;QAC7DM,UAAU,CAAC,MAAMP,cAAc,CAACC,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;QACvD;MACF;MACAH,QAAQ,CAACgB,IAAI,CAACX,CAAC,EAAEW,IAAI,CAACV,CAAC,EAAEU,IAAI,CAACT,KAAK,EAAES,IAAI,CAACR,MAAM,CAAC;MACjD;IACF;;IAEA;IACA,MAAMS,MAAM,GAAGvB,cAAc,CAACK,IAAW,CAAC;IAC1C,IAAIkB,MAAM,EAAE;MACVrB,SAAS,CAACQ,eAAe,CAACa,MAAM,EAAE,CAACZ,CAAS,EAAEC,CAAS,EAAEC,KAAa,EAAEC,MAAc,KAAK;QACzF,IAAID,KAAK,KAAK,CAAC,IAAIC,MAAM,KAAK,CAAC,IAAIL,YAAY,GAAG,CAAC,EAAE;UACnDM,UAAU,CAAC,MAAMP,cAAc,CAACC,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;UACvD;QACF;QACAH,QAAQ,CAACK,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,MAAM,CAAC;MAC/B,CAAC,CAAC;MACF;IACF;;IAEA;IACA,IAAIL,YAAY,GAAG,CAAC,EAAE;MACpBM,UAAU,CAAC,MAAMP,cAAc,CAACC,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;MACvD;IACF;IAEA,IAAIe,OAAO,EAAE;MACXC,OAAO,CAACC,IAAI,CACV,kDAAkD,EACjDrB,IAAI,EAAUsB,WAAW,EAAEC,IAAI,IAAI,SACtC,CAAC;IACH;EACF,CAAC;EAEDpB,cAAc,CAACD,OAAO,CAAC;AACzB;;AAEA;AACA;AACA;AACA,SAASsB,mBAAmBA,CAACC,EAAe,EAAW;EACrD,MAAMR,IAAI,GAAGQ,EAAE,CAACC,qBAAqB,CAAC,CAAC;EACvC,OACET,IAAI,CAACU,GAAG,IAAI,CAAC,IACbV,IAAI,CAACW,IAAI,IAAI,CAAC,IACdX,IAAI,CAACY,MAAM,KACRC,MAAM,CAACC,WAAW,IAAIC,QAAQ,CAACC,eAAe,CAACC,YAAY,CAAC,IAC/DjB,IAAI,CAACkB,KAAK,KAAKL,MAAM,CAACM,UAAU,IAAIJ,QAAQ,CAACC,eAAe,CAACI,WAAW,CAAC;AAE7E;;AAEA;AACA;AACA;AACA,SAASC,qBAAqBA,CAC5Bb,EAAe,EACfc,OAA6B,EACvB;EACN,IAAIf,mBAAmB,CAACC,EAAE,CAAC,EAAE;EAE7BA,EAAE,CAACe,cAAc,CAAC;IAChBC,QAAQ,EAAEF,OAAO,EAAEE,QAAQ,IAAI,QAAQ;IACvCC,KAAK,EAAEH,OAAO,EAAEG,KAAK,IAAI,QAAQ;IACjCC,MAAM,EAAEJ,OAAO,EAAEI,MAAM,IAAI;EAC7B,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,MAAMC,QAAQ,GAAGC,iBAAiB,CAAC,CAAC;EACpC,OAAO;IAAED;EAAS,CAAC;AACrB;AAEA,OAAO,SAASC,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,WAAW,GAAGrD,MAAM,CAAiC,IAAIsD,GAAG,CAAC,CAAC,CAAC;EACrE,MAAMC,MAAM,GAAGvD,MAAM,CAAsB,IAAIsD,GAAG,CAAC,CAAC,CAAC;EACrD;EACA,MAAME,eAAe,GAAGxD,MAAM,CAE5B,IAAIsD,GAAG,CAAC,CAAC,CAAC;EACZ;EACA,MAAMG,mBAAmB,GAAGzD,MAAM,CAAsB,IAAIsD,GAAG,CAAC,CAAC,CAAC;EAElE,MAAMI,cAAc,GAAGtD,cAAc,CAClCuD,KAAkB,IAAKA,KAAK,CAACD,cAChC,CAAC;EACD,MAAME,gBAAgB,GAAGxD,cAAc,CACpCuD,KAAkB,IAAKA,KAAK,CAACC,gBAChC,CAAC;EACD,MAAMC,QAAQ,GAAGzD,cAAc,CAAEuD,KAAK,IAAKA,KAAK,CAACE,QAAQ,CAAC;EAC1D,MAAMC,MAAM,GAAG1D,cAAc,CAAEuD,KAAK,IAAKA,KAAK,CAACG,MAAM,CAAC;EACtD,MAAMC,gBAAgB,GAAG3D,cAAc,CAAEuD,KAAK,IAAKA,KAAK,CAACI,gBAAgB,CAAC;;EAE1E;EACA,MAAMC,WAAW,GAAGhE,MAAM,CAAC6D,QAAQ,CAAC;EACpC,MAAMI,SAAS,GAAGjE,MAAM,CAAC8D,MAAM,CAAC;EAChCE,WAAW,CAACE,OAAO,GAAGL,QAAQ;EAC9BI,SAAS,CAACC,OAAO,GAAGJ,MAAM;EAE1B,MAAM7C,OAAO,GAAGnB,WAAW,CACzB,CAACqE,QAAgB,EAAE7D,IAA8B,KAAK;IACpD,MAAM8D,eAAe,GAAGJ,WAAW,CAACE,OAAO;IAC3C,MAAMG,aAAa,GAAGJ,SAAS,CAACC,OAAO;IAEvC,IAAI,CAAC5D,IAAI,IAAI,CAAC8D,eAAe,IAAI,CAACC,aAAa,EAAE;MAC/C;IACF;IAEA,MAAMC,YAAY,GAAGD,aAAa,CAACE,KAAK,CAACC,IAAI,CAC1CC,IAAI,IAAKA,IAAI,CAACN,QAAQ,KAAKA,QAC9B,CAAC;IAED,IAAI,CAACG,YAAY,EAAE;MACjB;IACF;IAEA,IAAIpE,QAAQ,CAACwE,EAAE,KAAK,KAAK,EAAE;MACzB,MAAM3C,EAAE,GAAGzB,IAA8B;MAEzC,IAAI,CAACyB,EAAE,EAAEC,qBAAqB,EAAE;MAEhC,MAAMT,IAAI,GAAGQ,EAAE,CAACC,qBAAqB,CAAC,CAAC;MACvC,MAAM2C,KAAK,GAAGvC,MAAM,CAACwC,gBAAgB,CAAC7C,EAAE,CAAC;MAEzC,MAAM8C,WAAW,GAAGC,UAAU,CAACH,KAAK,CAACE,WAAW,CAAC;MACjD,MAAME,YAAY,GAAGD,UAAU,CAACH,KAAK,CAACI,YAAY,CAAC;MACnD,MAAMC,UAAU,GAAGF,UAAU,CAACH,KAAK,CAACK,UAAU,CAAC;MAC/C,MAAMC,aAAa,GAAGH,UAAU,CAACH,KAAK,CAACM,aAAa,CAAC;MAErD,MAAMC,UAAU,GAAGJ,UAAU,CAACH,KAAK,CAACQ,eAAe,CAAC;MACpD,MAAMC,WAAW,GAAGN,UAAU,CAACH,KAAK,CAACU,gBAAgB,CAAC;MACtD,MAAMC,SAAS,GAAGR,UAAU,CAACH,KAAK,CAACY,cAAc,CAAC;MAClD,MAAMC,YAAY,GAAGV,UAAU,CAACH,KAAK,CAACc,iBAAiB,CAAC;MAExD,MAAMC,YAAY,GAAG;QACnB9E,CAAC,EAAEW,IAAI,CAACW,IAAI,GAAGE,MAAM,CAACuD,OAAO,GAAGT,UAAU,GAAGL,WAAW;QACxDhE,CAAC,EAAEU,IAAI,CAACU,GAAG,GAAGG,MAAM,CAACwD,OAAO,GAAGN,SAAS,GAAGN,UAAU;QACrDlE,KAAK,EACHS,IAAI,CAACT,KAAK,GAAG+D,WAAW,GAAGE,YAAY,GAAGG,UAAU,GAAGE,WAAW;QACpErE,MAAM,EACJQ,IAAI,CAACR,MAAM,GAAGiE,UAAU,GAAGC,aAAa,GAAGK,SAAS,GAAGE;MAC3D,CAAC;;MAED;MACA,MAAMK,GAAG,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACL,YAAY,CAAC9E,CAAC,CAAC,IAAIkF,IAAI,CAACC,KAAK,CAACL,YAAY,CAAC7E,CAAC,CAAC,IAAIiF,IAAI,CAACC,KAAK,CAACL,YAAY,CAAC5E,KAAK,CAAC,IAAIgF,IAAI,CAACC,KAAK,CAACL,YAAY,CAAC3E,MAAM,CAAC,EAAE;MAC9I,IAAI0C,mBAAmB,CAACS,OAAO,CAAC8B,GAAG,CAAC7B,QAAQ,CAAC,KAAK0B,GAAG,EAAE;QACrD;MACF;MACApC,mBAAmB,CAACS,OAAO,CAAC+B,GAAG,CAAC9B,QAAQ,EAAE0B,GAAG,CAAC;MAC9CnC,cAAc,CAACS,QAAQ,EAAEuB,YAAY,CAAC;MAEtC;IACF;;IAEA;IACArF,oBAAoB,CAACC,IAAI,EAAE,CAACM,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,MAAM,KAAK;MAClD,IAAID,KAAK,GAAG,CAAC,IAAIC,MAAM,GAAG,CAAC,EAAE;QAC3B;QACA,MAAM8E,GAAG,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACnF,CAAC,CAAC,IAAIkF,IAAI,CAACC,KAAK,CAAClF,CAAC,CAAC,IAAIiF,IAAI,CAACC,KAAK,CAACjF,KAAK,CAAC,IAAIgF,IAAI,CAACC,KAAK,CAAChF,MAAM,CAAC,EAAE;QAC1F,IAAI0C,mBAAmB,CAACS,OAAO,CAAC8B,GAAG,CAAC7B,QAAQ,CAAC,KAAK0B,GAAG,EAAE;UACrD;QACF;QACApC,mBAAmB,CAACS,OAAO,CAAC+B,GAAG,CAAC9B,QAAQ,EAAE0B,GAAG,CAAC;QAC9CnC,cAAc,CAACS,QAAQ,EAAE;UAAEvD,CAAC;UAAEC,CAAC;UAAEC,KAAK;UAAEC;QAAO,CAAC,CAAC;MACnD;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAAC2C,cAAc,CACjB,CAAC;;EAED;EACA,MAAMwC,UAAU,GAAGlG,MAAM,CAACiB,OAAO,CAAC;EAClC,MAAMkF,mBAAmB,GAAGnG,MAAM,CAAC4D,gBAAgB,CAAC;EACpDsC,UAAU,CAAChC,OAAO,GAAGjD,OAAO;EAC5BkF,mBAAmB,CAACjC,OAAO,GAAGN,gBAAgB;EAE9C,MAAMT,QAAQ,GAAGrD,WAAW,CACzBqE,QAAgB,IAAK;IACpB;IACA,MAAMiC,MAAM,GAAG5C,eAAe,CAACU,OAAO,CAAC8B,GAAG,CAAC7B,QAAQ,CAAC;IACpD,IAAIiC,MAAM,EAAE,OAAOA,MAAM;;IAEzB;IACA,MAAM7F,QAAQ,GAAID,IAA8B,IAAK;MACnD,IAAIA,IAAI,EAAE;QACR+C,WAAW,CAACa,OAAO,CAAC+B,GAAG,CAAC9B,QAAQ,EAAE7D,IAAI,CAAC;QAEvC,MAAM+F,GAAG,GAAGC,qBAAqB,CAAC,MAAM;UACtCJ,UAAU,CAAChC,OAAO,CAACC,QAAQ,EAAE7D,IAAI,CAAC;QACpC,CAAC,CAAC;QAEFiD,MAAM,CAACW,OAAO,CAAC+B,GAAG,CAAC9B,QAAQ,EAAEkC,GAAG,CAAC;QACjC;MACF;MACAhD,WAAW,CAACa,OAAO,CAACqC,MAAM,CAACpC,QAAQ,CAAC;MACpCgC,mBAAmB,CAACjC,OAAO,CAACC,QAAQ,CAAC;MAErC,MAAMkC,GAAG,GAAG9C,MAAM,CAACW,OAAO,CAAC8B,GAAG,CAAC7B,QAAQ,CAAC;MACxC,IAAIkC,GAAG,EAAE;QACPG,oBAAoB,CAACH,GAAG,CAAC;QACzB9C,MAAM,CAACW,OAAO,CAACqC,MAAM,CAACpC,QAAQ,CAAC;MACjC;IACF,CAAC;IAEDX,eAAe,CAACU,OAAO,CAAC+B,GAAG,CAAC9B,QAAQ,EAAE5D,QAAQ,CAAC;IAC/C,OAAOA,QAAQ;EACjB,CAAC,EACD,EAAE,CAAE;EACN,CAAC;;EAED;EACA;EACAR,SAAS,CAAC,MAAM;IACd,IAAI,CAAC8D,QAAQ,IAAI,CAACC,MAAM,EAAE;;IAE1B;IACA,MAAM2C,WAAW,GAAG3C,MAAM,CAACS,KAAK,CAACR,gBAAgB,CAAC;IAClD,MAAM2C,eAAe,GAAGD,WAAW,EAAEtC,QAAQ;IAC7C,MAAMwC,YAAY,GAAGF,WAAW,EAAE3D,cAAc,KAAK,KAAK;;IAE1D;IACAO,WAAW,CAACa,OAAO,CAAC0C,OAAO,CAAC,CAACtG,IAAI,EAAEuG,EAAE,KAAK;MACxCP,qBAAqB,CAAC,MAAM;QAC1BJ,UAAU,CAAChC,OAAO,CAAC2C,EAAE,EAAEvG,IAAI,CAAC;;QAE5B;QACA,IACEJ,QAAQ,CAACwE,EAAE,KAAK,KAAK,IACrBiC,YAAY,IACZE,EAAE,KAAKH,eAAe,IACtBpG,IAAI,EACJ;UACA,MAAMyB,EAAE,GAAGzB,IAA8B;UACzCsC,qBAAqB,CAACb,EAAE,EAAE+B,MAAM,CAACgD,KAAK,EAAEC,aAAa,CAAC;QACxD;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;;IAEF;IACA;IACA,IAAI7G,QAAQ,CAACwE,EAAE,KAAK,KAAK,IAAIiC,YAAY,IAAID,eAAe,EAAE;MAC5D,MAAMM,KAAK,GAAGhG,UAAU,CAAC,MAAM;QAC7B,MAAMV,IAAI,GAAG+C,WAAW,CAACa,OAAO,CAAC8B,GAAG,CAACU,eAAe,CAAC;QACrD,IAAIpG,IAAI,EAAE;UACR4F,UAAU,CAAChC,OAAO,CAACwC,eAAe,EAAEpG,IAAI,CAAC;QAC3C;MACF,CAAC,EAAE,GAAG,CAAC;MACP,OAAO,MAAM2G,YAAY,CAACD,KAAK,CAAC;IAClC;IAEA,OAAOE,SAAS;EAClB,CAAC,EAAE,CAACnD,gBAAgB,EAAEF,QAAQ,EAAEC,MAAM,CAAC,CAAC;EAExC/D,SAAS,CAAC,MAAM;IACd,IAAIG,QAAQ,CAACwE,EAAE,KAAK,KAAK,IAAI,CAACb,QAAQ,EAAE;IAExC,MAAMsD,OAAO,GAAGA,CAAA,KAAM;MACpB9D,WAAW,CAACa,OAAO,CAAC0C,OAAO,CAAC,CAACtG,IAAI,EAAEuG,EAAE,KAAK;QACxCX,UAAU,CAAChC,OAAO,CAAC2C,EAAE,EAAEvG,IAAI,CAAC;MAC9B,CAAC,CAAC;IACJ,CAAC;IAED8B,MAAM,CAACgF,gBAAgB,CAAC,QAAQ,EAAED,OAAO,EAAE,IAAI,CAAC;IAChD/E,MAAM,CAACgF,gBAAgB,CAAC,QAAQ,EAAED,OAAO,CAAC;IAE1C,OAAO,MAAM;MACX/E,MAAM,CAACiF,mBAAmB,CAAC,QAAQ,EAAEF,OAAO,EAAE,IAAI,CAAC;MACnD/E,MAAM,CAACiF,mBAAmB,CAAC,QAAQ,EAAEF,OAAO,CAAC;IAC/C,CAAC;EACH,CAAC,EAAE,CAACtD,QAAQ,CAAC,CAAC;EAEd9D,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXyD,eAAe,CAACU,OAAO,CAACoD,KAAK,CAAC,CAAC;IACjC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOnE,QAAQ;AACjB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGuidonRef.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useGuidonRef.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,KAAK,iBAAiB,GAAG;IACvB,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,KACpE,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5D,CAAC;
|
|
1
|
+
{"version":3,"file":"useGuidonRef.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useGuidonRef.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,KAAK,iBAAiB,GAAG;IACvB,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,KACpE,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5D,CAAC;AA6GF;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,SAAS;yBA6GV,MAAM,YAnGE,iBAAiB,GAAG,IAAI,KAAK,IAAI;EAPvD;AAED,wBAAgB,iBAAiB,eAwGlB,MAAM,YAnGE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAwMvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGuidonRef.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useGuidonRef.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,KAAK,iBAAiB,GAAG;IACvB,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,KACpE,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5D,CAAC;
|
|
1
|
+
{"version":3,"file":"useGuidonRef.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useGuidonRef.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,KAAK,iBAAiB,GAAG;IACvB,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,KACpE,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5D,CAAC;AA6GF;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,SAAS;yBA6GV,MAAM,YAnGE,iBAAiB,GAAG,IAAI,KAAK,IAAI;EAPvD;AAED,wBAAgB,iBAAiB,eAwGlB,MAAM,YAnGE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAwMvD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@korsolutions/guidon",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.36",
|
|
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>",
|
|
@@ -16,26 +16,80 @@ type MeasurableElement = {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Measure a native element
|
|
20
|
-
* (
|
|
19
|
+
* Measure a native element with multiple fallback methods for composite components
|
|
20
|
+
* and New Architecture (Fabric) support. Includes retry logic for timing issues.
|
|
21
21
|
*/
|
|
22
22
|
function measureNativeElement(
|
|
23
23
|
node: MeasurableElement,
|
|
24
24
|
callback: (x: number, y: number, width: number, height: number) => void,
|
|
25
|
+
retries = 3,
|
|
25
26
|
): void {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
(node as any).measureInWindow
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
27
|
+
const attemptMeasure = (attemptsLeft: number) => {
|
|
28
|
+
// Method 1: measureInWindow (works on View, preferred)
|
|
29
|
+
if (typeof (node as any).measureInWindow === "function") {
|
|
30
|
+
(node as any).measureInWindow((x: number, y: number, width: number, height: number) => {
|
|
31
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
32
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
callback(x, y, width, height);
|
|
36
|
+
});
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Method 2: measure() - returns pageX/pageY (window coordinates)
|
|
41
|
+
if (typeof (node as any).measure === "function") {
|
|
42
|
+
(node as any).measure(
|
|
43
|
+
(_x: number, _y: number, width: number, height: number, pageX: number, pageY: number) => {
|
|
44
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
45
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
callback(pageX, pageY, width, height);
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Method 3: unstable_getBoundingClientRect (Fabric - RN 0.71+)
|
|
55
|
+
if (typeof (node as any).unstable_getBoundingClientRect === "function") {
|
|
56
|
+
const rect = (node as any).unstable_getBoundingClientRect();
|
|
57
|
+
if (rect.width === 0 && rect.height === 0 && attemptsLeft > 0) {
|
|
58
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
callback(rect.x, rect.y, rect.width, rect.height);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Method 4: Legacy fallback - findNodeHandle + UIManager (Old Architecture)
|
|
66
|
+
const handle = findNodeHandle(node as any);
|
|
67
|
+
if (handle) {
|
|
68
|
+
UIManager.measureInWindow(handle, (x: number, y: number, width: number, height: number) => {
|
|
69
|
+
if (width === 0 && height === 0 && attemptsLeft > 0) {
|
|
70
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
callback(x, y, width, height);
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Retry if handle is null (node might not be ready)
|
|
79
|
+
if (attemptsLeft > 0) {
|
|
80
|
+
setTimeout(() => attemptMeasure(attemptsLeft - 1), 100);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (__DEV__) {
|
|
85
|
+
console.warn(
|
|
86
|
+
'[Guidon] Could not measure node. Component type:',
|
|
87
|
+
(node as any)?.constructor?.name ?? 'unknown'
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
attemptMeasure(retries);
|
|
39
93
|
}
|
|
40
94
|
|
|
41
95
|
/**
|
|
@@ -46,7 +100,8 @@ function isElementInViewport(el: HTMLElement): boolean {
|
|
|
46
100
|
return (
|
|
47
101
|
rect.top >= 0 &&
|
|
48
102
|
rect.left >= 0 &&
|
|
49
|
-
rect.bottom <=
|
|
103
|
+
rect.bottom <=
|
|
104
|
+
(window.innerHeight || document.documentElement.clientHeight) &&
|
|
50
105
|
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
|
|
51
106
|
);
|
|
52
107
|
}
|
|
@@ -54,7 +109,10 @@ function isElementInViewport(el: HTMLElement): boolean {
|
|
|
54
109
|
/**
|
|
55
110
|
* Scroll element into view (web only)
|
|
56
111
|
*/
|
|
57
|
-
function scrollElementIntoView(
|
|
112
|
+
function scrollElementIntoView(
|
|
113
|
+
el: HTMLElement,
|
|
114
|
+
options?: GuidonScrollOptions,
|
|
115
|
+
): void {
|
|
58
116
|
if (isElementInViewport(el)) return;
|
|
59
117
|
|
|
60
118
|
el.scrollIntoView({
|
|
@@ -89,7 +147,11 @@ export function useGuidonRegister() {
|
|
|
89
147
|
const elementsRef = useRef<Map<string, MeasurableElement>>(new Map());
|
|
90
148
|
const rafRef = useRef<Map<string, number>>(new Map());
|
|
91
149
|
// Cache ref callbacks to prevent creating new functions on every call
|
|
92
|
-
const refCallbacksRef = useRef<
|
|
150
|
+
const refCallbacksRef = useRef<
|
|
151
|
+
Map<string, (node: MeasurableElement | null) => void>
|
|
152
|
+
>(new Map());
|
|
153
|
+
// Track last measurements to avoid redundant store updates
|
|
154
|
+
const lastMeasurementsRef = useRef<Map<string, string>>(new Map());
|
|
93
155
|
|
|
94
156
|
const registerTarget = useGuidonStore(
|
|
95
157
|
(state: GuidonStore) => state.registerTarget,
|
|
@@ -150,6 +212,13 @@ export function useGuidonRegister() {
|
|
|
150
212
|
height:
|
|
151
213
|
rect.height - paddingTop - paddingBottom - borderTop - borderBottom,
|
|
152
214
|
};
|
|
215
|
+
|
|
216
|
+
// Skip update if measurements haven't changed (prevents infinite loops)
|
|
217
|
+
const key = `${Math.round(measurements.x)},${Math.round(measurements.y)},${Math.round(measurements.width)},${Math.round(measurements.height)}`;
|
|
218
|
+
if (lastMeasurementsRef.current.get(targetId) === key) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
lastMeasurementsRef.current.set(targetId, key);
|
|
153
222
|
registerTarget(targetId, measurements);
|
|
154
223
|
|
|
155
224
|
return;
|
|
@@ -158,6 +227,12 @@ export function useGuidonRegister() {
|
|
|
158
227
|
// Use helper that handles composite components (TouchableOpacity, etc.)
|
|
159
228
|
measureNativeElement(node, (x, y, width, height) => {
|
|
160
229
|
if (width > 0 && height > 0) {
|
|
230
|
+
// Skip update if measurements haven't changed (prevents infinite loops)
|
|
231
|
+
const key = `${Math.round(x)},${Math.round(y)},${Math.round(width)},${Math.round(height)}`;
|
|
232
|
+
if (lastMeasurementsRef.current.get(targetId) === key) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
lastMeasurementsRef.current.set(targetId, key);
|
|
161
236
|
registerTarget(targetId, { x, y, width, height });
|
|
162
237
|
}
|
|
163
238
|
});
|