viconic-react-icons 1.5.1 → 1.5.2

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/index.js CHANGED
@@ -2064,7 +2064,7 @@ function _dispatchBatchFetch(prefix, iconBaseName, entry) {
2064
2064
  }
2065
2065
  }).catch(() => {
2066
2066
  });
2067
- }, 0);
2067
+ }, 150);
2068
2068
  }
2069
2069
  function _queueKitMiss(prefix, iconBaseName) {
2070
2070
  if (typeof window === "undefined") return;
@@ -2168,18 +2168,13 @@ var ViconicIcon = ({ name, className, style, size, color, ...props }) => {
2168
2168
  }
2169
2169
  }
2170
2170
  document.addEventListener("viconic:ready", tryInjectFromEvent);
2171
- const fallbackTimer = setTimeout(() => {
2172
- if (isInjected()) return;
2173
- tryInjectFromEvent();
2174
- if (!isInjected() && isKitIcon && prefixMatch) {
2175
- const prefix = prefixMatch[1];
2176
- const iconBaseName = prefixMatch[2];
2177
- _queueKitMiss(prefix, iconBaseName);
2178
- }
2179
- }, 50);
2171
+ if (!isInjected() && isKitIcon && prefixMatch) {
2172
+ const prefix = prefixMatch[1];
2173
+ const iconBaseName = prefixMatch[2];
2174
+ _queueKitMiss(prefix, iconBaseName);
2175
+ }
2180
2176
  return () => {
2181
2177
  document.removeEventListener("viconic:ready", tryInjectFromEvent);
2182
- clearTimeout(fallbackTimer);
2183
2178
  };
2184
2179
  }, [name, className, size, color, style]);
2185
2180
  const combinedStyle = {
package/dist/index.mjs CHANGED
@@ -2029,7 +2029,7 @@ function _dispatchBatchFetch(prefix, iconBaseName, entry) {
2029
2029
  }
2030
2030
  }).catch(() => {
2031
2031
  });
2032
- }, 0);
2032
+ }, 150);
2033
2033
  }
2034
2034
  function _queueKitMiss(prefix, iconBaseName) {
2035
2035
  if (typeof window === "undefined") return;
@@ -2133,18 +2133,13 @@ var ViconicIcon = ({ name, className, style, size, color, ...props }) => {
2133
2133
  }
2134
2134
  }
2135
2135
  document.addEventListener("viconic:ready", tryInjectFromEvent);
2136
- const fallbackTimer = setTimeout(() => {
2137
- if (isInjected()) return;
2138
- tryInjectFromEvent();
2139
- if (!isInjected() && isKitIcon && prefixMatch) {
2140
- const prefix = prefixMatch[1];
2141
- const iconBaseName = prefixMatch[2];
2142
- _queueKitMiss(prefix, iconBaseName);
2143
- }
2144
- }, 50);
2136
+ if (!isInjected() && isKitIcon && prefixMatch) {
2137
+ const prefix = prefixMatch[1];
2138
+ const iconBaseName = prefixMatch[2];
2139
+ _queueKitMiss(prefix, iconBaseName);
2140
+ }
2145
2141
  return () => {
2146
2142
  document.removeEventListener("viconic:ready", tryInjectFromEvent);
2147
- clearTimeout(fallbackTimer);
2148
2143
  };
2149
2144
  }, [name, className, size, color, style]);
2150
2145
  const combinedStyle = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viconic-react-icons",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "description": "Viconic Smart Icons loader for React — supports Kit and 200k+ system icons",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
package/src/index.jsx CHANGED
@@ -91,7 +91,8 @@ function _dispatchBatchFetch(prefix, iconBaseName, entry) {
91
91
  const { kitId, api } = entry;
92
92
  if (!_kitMissQueues[kitId]) _kitMissQueues[kitId] = new Set();
93
93
  _kitMissQueues[kitId].add(iconBaseName);
94
- if (_kitMissTimers[kitId]) return;
94
+ if (_kitMissTimers[kitId]) return; // already scheduled, will pick up new additions
95
+ // 150ms debounce: long enough to collect all icons across a full React render cycle
95
96
  _kitMissTimers[kitId] = setTimeout(() => {
96
97
  delete _kitMissTimers[kitId];
97
98
  const names = [...(_kitMissQueues[kitId] || [])];
@@ -116,7 +117,7 @@ function _dispatchBatchFetch(prefix, iconBaseName, entry) {
116
117
  try { document.dispatchEvent(new CustomEvent('viconic:ready', { detail: { prefix, kitId } })); } catch(e) {}
117
118
  })
118
119
  .catch(() => {});
119
- }, 0);
120
+ }, 150);
120
121
  }
121
122
 
122
123
  function _queueKitMiss(prefix, iconBaseName) {
@@ -288,21 +289,17 @@ export const ViconicIcon = ({ name, className, style, size, color, ...props }) =
288
289
 
289
290
  document.addEventListener('viconic:ready', tryInjectFromEvent);
290
291
 
291
- // --- PATH 5: Short-deadline fallback (50ms) — queue a batch fetch for all missing kit icons ---
292
- const fallbackTimer = setTimeout(() => {
293
- if (isInjected()) return;
294
- tryInjectFromEvent();
295
- if (!isInjected() && isKitIcon && prefixMatch) {
296
- const prefix = prefixMatch[1];
297
- const iconBaseName = prefixMatch[2];
298
- // Use batch queue instead of kit.reload() to avoid N separate API calls
299
- _queueKitMiss(prefix, iconBaseName);
300
- }
301
- }, 50);
292
+ // --- PATH 5: Immediate queue for missing kit icons ---
293
+ // Call _queueKitMiss immediately (no per-component delay) so all icons from
294
+ // the same render cycle are collected into the same debounced batch request.
295
+ if (!isInjected() && isKitIcon && prefixMatch) {
296
+ const prefix = prefixMatch[1];
297
+ const iconBaseName = prefixMatch[2];
298
+ _queueKitMiss(prefix, iconBaseName);
299
+ }
302
300
 
303
301
  return () => {
304
302
  document.removeEventListener('viconic:ready', tryInjectFromEvent);
305
- clearTimeout(fallbackTimer);
306
303
  };
307
304
  }, [name, className, size, color, style]);
308
305