@korsolutions/guidon 1.0.22 → 1.0.23

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.
@@ -58,6 +58,8 @@ function useGuidon() {
58
58
  function useGuidonRegister() {
59
59
  const elementsRef = (0, _react.useRef)(new Map());
60
60
  const rafRef = (0, _react.useRef)(new Map());
61
+ // Cache ref callbacks to prevent creating new functions on every call
62
+ const refCallbacksRef = (0, _react.useRef)(new Map());
61
63
  const registerTarget = (0, _store.useGuidonStore)(state => state.registerTarget);
62
64
  const unregisterTarget = (0, _store.useGuidonStore)(state => state.unregisterTarget);
63
65
  const isActive = (0, _store.useGuidonStore)(state => state.isActive);
@@ -122,22 +124,36 @@ function useGuidonRegister() {
122
124
  }
123
125
  });
124
126
  }, [registerTarget]);
127
+
128
+ // Use refs for measure and unregisterTarget to avoid recreating callbacks
129
+ const measureRef = (0, _react.useRef)(measure);
130
+ const unregisterTargetRef = (0, _react.useRef)(unregisterTarget);
131
+ measureRef.current = measure;
132
+ unregisterTargetRef.current = unregisterTarget;
125
133
  const register = (0, _react.useCallback)(targetId => {
126
- return node => {
134
+ // Return cached callback if it exists
135
+ const cached = refCallbacksRef.current.get(targetId);
136
+ if (cached) return cached;
137
+
138
+ // Create and cache a new callback
139
+ const callback = node => {
127
140
  if (node) {
128
141
  elementsRef.current.set(targetId, node);
129
142
  const raf = requestAnimationFrame(() => {
130
- measure(targetId, node);
143
+ measureRef.current(targetId, node);
131
144
  });
132
145
  rafRef.current.set(targetId, raf);
133
146
  return;
134
147
  }
135
148
  elementsRef.current.delete(targetId);
136
- unregisterTarget(targetId);
149
+ unregisterTargetRef.current(targetId);
137
150
  const raf = rafRef.current.get(targetId);
138
151
  if (raf) cancelAnimationFrame(raf);
139
152
  };
140
- }, [measure, unregisterTarget]);
153
+ refCallbacksRef.current.set(targetId, callback);
154
+ return callback;
155
+ }, [] // No dependencies - callbacks are cached and use refs
156
+ );
141
157
 
142
158
  // Re-measure all registered targets when guide becomes active or step changes
143
159
  // This ensures targets from all hook instances get measured
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_store","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","registerTarget","useGuidonStore","state","unregisterTarget","isActive","config","currentStepIndex","isActiveRef","configRef","current","measure","useCallback","targetId","node","currentIsActive","currentConfig","console","log","hasNode","hasConfig","isTargetUsed","steps","some","step","Platform","OS","style","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","measurements","x","scrollX","y","scrollY","width","height","native","measureInWindow","set","raf","requestAnimationFrame","delete","get","cancelAnimationFrame","useEffect","Array","from","keys","currentStep","currentTargetId","shouldScroll","forEach","id","theme","scrollOptions","handler","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_store","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","node","currentIsActive","currentConfig","console","log","hasNode","hasConfig","isTargetUsed","steps","some","step","Platform","OS","style","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","measurements","x","scrollX","y","scrollY","width","height","native","measureInWindow","measureRef","unregisterTargetRef","cached","get","callback","set","raf","requestAnimationFrame","delete","cancelAnimationFrame","useEffect","Array","from","keys","currentStep","currentTargetId","shouldScroll","forEach","id","theme","scrollOptions","handler","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":"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","ignoreList":[]}
@@ -54,6 +54,8 @@ export function useGuidon() {
54
54
  export function useGuidonRegister() {
55
55
  const elementsRef = useRef(new Map());
56
56
  const rafRef = useRef(new Map());
57
+ // Cache ref callbacks to prevent creating new functions on every call
58
+ const refCallbacksRef = useRef(new Map());
57
59
  const registerTarget = useGuidonStore(state => state.registerTarget);
58
60
  const unregisterTarget = useGuidonStore(state => state.unregisterTarget);
59
61
  const isActive = useGuidonStore(state => state.isActive);
@@ -118,22 +120,36 @@ export function useGuidonRegister() {
118
120
  }
119
121
  });
120
122
  }, [registerTarget]);
123
+
124
+ // Use refs for measure and unregisterTarget to avoid recreating callbacks
125
+ const measureRef = useRef(measure);
126
+ const unregisterTargetRef = useRef(unregisterTarget);
127
+ measureRef.current = measure;
128
+ unregisterTargetRef.current = unregisterTarget;
121
129
  const register = useCallback(targetId => {
122
- return node => {
130
+ // Return cached callback if it exists
131
+ const cached = refCallbacksRef.current.get(targetId);
132
+ if (cached) return cached;
133
+
134
+ // Create and cache a new callback
135
+ const callback = node => {
123
136
  if (node) {
124
137
  elementsRef.current.set(targetId, node);
125
138
  const raf = requestAnimationFrame(() => {
126
- measure(targetId, node);
139
+ measureRef.current(targetId, node);
127
140
  });
128
141
  rafRef.current.set(targetId, raf);
129
142
  return;
130
143
  }
131
144
  elementsRef.current.delete(targetId);
132
- unregisterTarget(targetId);
145
+ unregisterTargetRef.current(targetId);
133
146
  const raf = rafRef.current.get(targetId);
134
147
  if (raf) cancelAnimationFrame(raf);
135
148
  };
136
- }, [measure, unregisterTarget]);
149
+ refCallbacksRef.current.set(targetId, callback);
150
+ return callback;
151
+ }, [] // No dependencies - callbacks are cached and use refs
152
+ );
137
153
 
138
154
  // Re-measure all registered targets when guide becomes active or step changes
139
155
  // This ensures targets from all hook instances get measured
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","Platform","useGuidonStore","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","registerTarget","state","unregisterTarget","isActive","config","currentStepIndex","isActiveRef","configRef","current","measure","targetId","node","currentIsActive","currentConfig","console","log","hasNode","hasConfig","isTargetUsed","steps","some","step","OS","style","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","measurements","x","scrollX","y","scrollY","width","height","native","measureInWindow","set","raf","requestAnimationFrame","delete","get","cancelAnimationFrame","Array","from","keys","currentStep","currentTargetId","shouldScroll","forEach","id","theme","scrollOptions","handler","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","Platform","useGuidonStore","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","node","currentIsActive","currentConfig","console","log","hasNode","hasConfig","isTargetUsed","steps","some","step","OS","style","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","measurements","x","scrollX","y","scrollY","width","height","native","measureInWindow","measureRef","unregisterTargetRef","cached","get","callback","set","raf","requestAnimationFrame","delete","cancelAnimationFrame","Array","from","keys","currentStep","currentTargetId","shouldScroll","forEach","id","theme","scrollOptions","handler","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":"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","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;AA4BF;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,SAAS;yBA6GV,MAAM,YACD,iBAAiB,GAAG,IAAI;EA3G3C;AAED,wBAAgB,iBAAiB,eAwGlB,MAAM,YACD,iBAAiB,GAAG,IAAI,UA2E3C"}
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;AA4BF;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,SAAS;yBAqHV,MAAM,YA5G+B,iBAAiB,GAAG,IAAI,KAAK,IAAI;EANpF;AAED,wBAAgB,iBAAiB,eAgHlB,MAAM,YA5G+B,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAgMpF"}
@@ -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;AA4BF;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,SAAS;yBA6GV,MAAM,YACD,iBAAiB,GAAG,IAAI;EA3G3C;AAED,wBAAgB,iBAAiB,eAwGlB,MAAM,YACD,iBAAiB,GAAG,IAAI,UA2E3C"}
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;AA4BF;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,SAAS;yBAqHV,MAAM,YA5G+B,iBAAiB,GAAG,IAAI,KAAK,IAAI;EANpF;AAED,wBAAgB,iBAAiB,eAgHlB,MAAM,YA5G+B,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAgMpF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@korsolutions/guidon",
3
- "version": "1.0.22",
3
+ "version": "1.0.23",
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>",
@@ -65,6 +65,8 @@ export function useGuidon() {
65
65
  export function useGuidonRegister() {
66
66
  const elementsRef = useRef<Map<string, MeasurableElement>>(new Map());
67
67
  const rafRef = useRef<Map<string, number>>(new Map());
68
+ // Cache ref callbacks to prevent creating new functions on every call
69
+ const refCallbacksRef = useRef<Map<string, (node: MeasurableElement | null) => void>>(new Map());
68
70
 
69
71
  const registerTarget = useGuidonStore(
70
72
  (state: GuidonStore) => state.registerTarget,
@@ -165,27 +167,41 @@ export function useGuidonRegister() {
165
167
  [registerTarget],
166
168
  );
167
169
 
170
+ // Use refs for measure and unregisterTarget to avoid recreating callbacks
171
+ const measureRef = useRef(measure);
172
+ const unregisterTargetRef = useRef(unregisterTarget);
173
+ measureRef.current = measure;
174
+ unregisterTargetRef.current = unregisterTarget;
175
+
168
176
  const register = useCallback(
169
177
  (targetId: string) => {
170
- return (node: MeasurableElement | null) => {
178
+ // Return cached callback if it exists
179
+ const cached = refCallbacksRef.current.get(targetId);
180
+ if (cached) return cached;
181
+
182
+ // Create and cache a new callback
183
+ const callback = (node: MeasurableElement | null) => {
171
184
  if (node) {
172
185
  elementsRef.current.set(targetId, node);
173
186
 
174
187
  const raf = requestAnimationFrame(() => {
175
- measure(targetId, node);
188
+ measureRef.current(targetId, node);
176
189
  });
177
190
 
178
191
  rafRef.current.set(targetId, raf);
179
192
  return;
180
193
  }
181
194
  elementsRef.current.delete(targetId);
182
- unregisterTarget(targetId);
195
+ unregisterTargetRef.current(targetId);
183
196
 
184
197
  const raf = rafRef.current.get(targetId);
185
198
  if (raf) cancelAnimationFrame(raf);
186
199
  };
200
+
201
+ refCallbacksRef.current.set(targetId, callback);
202
+ return callback;
187
203
  },
188
- [measure, unregisterTarget],
204
+ [], // No dependencies - callbacks are cached and use refs
189
205
  );
190
206
 
191
207
  // Re-measure all registered targets when guide becomes active or step changes