@nice2dev/icons 1.0.4 → 1.0.6

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 (57) hide show
  1. package/dist/cjs/NiceDesktopIconExporter.js +648 -0
  2. package/dist/cjs/NiceDesktopIconExporter.js.map +1 -0
  3. package/dist/cjs/NiceFaviconGenerator.js +429 -0
  4. package/dist/cjs/NiceFaviconGenerator.js.map +1 -0
  5. package/dist/cjs/NiceIconEditor.js +443 -0
  6. package/dist/cjs/NiceIconEditor.js.map +1 -0
  7. package/dist/cjs/NiceIconPreview.js +198 -0
  8. package/dist/cjs/NiceIconPreview.js.map +1 -0
  9. package/dist/cjs/NiceIconSetCreator.js +565 -0
  10. package/dist/cjs/NiceIconSetCreator.js.map +1 -0
  11. package/dist/cjs/_virtual/_commonjsHelpers.js +8 -0
  12. package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -0
  13. package/dist/cjs/_virtual/client.js +33 -0
  14. package/dist/cjs/_virtual/client.js.map +1 -0
  15. package/dist/cjs/_virtual/client2.js +6 -0
  16. package/dist/cjs/_virtual/client2.js.map +1 -0
  17. package/dist/cjs/advancedIconSearch.js +548 -0
  18. package/dist/cjs/advancedIconSearch.js.map +1 -0
  19. package/dist/cjs/iconAnalytics.js +395 -152
  20. package/dist/cjs/iconAnalytics.js.map +1 -1
  21. package/dist/cjs/index.js +42 -4
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/node_modules/react-dom/client.js +39 -0
  24. package/dist/cjs/node_modules/react-dom/client.js.map +1 -0
  25. package/dist/esm/NiceDesktopIconExporter.js +642 -0
  26. package/dist/esm/NiceDesktopIconExporter.js.map +1 -0
  27. package/dist/esm/NiceFaviconGenerator.js +426 -0
  28. package/dist/esm/NiceFaviconGenerator.js.map +1 -0
  29. package/dist/esm/NiceIconEditor.js +440 -0
  30. package/dist/esm/NiceIconEditor.js.map +1 -0
  31. package/dist/esm/NiceIconPreview.js +196 -0
  32. package/dist/esm/NiceIconPreview.js.map +1 -0
  33. package/dist/esm/NiceIconSetCreator.js +562 -0
  34. package/dist/esm/NiceIconSetCreator.js.map +1 -0
  35. package/dist/esm/_virtual/_commonjsHelpers.js +6 -0
  36. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -0
  37. package/dist/esm/_virtual/client.js +28 -0
  38. package/dist/esm/_virtual/client.js.map +1 -0
  39. package/dist/esm/_virtual/client2.js +4 -0
  40. package/dist/esm/_virtual/client2.js.map +1 -0
  41. package/dist/esm/advancedIconSearch.js +529 -0
  42. package/dist/esm/advancedIconSearch.js.map +1 -0
  43. package/dist/esm/iconAnalytics.js +393 -152
  44. package/dist/esm/iconAnalytics.js.map +1 -1
  45. package/dist/esm/index.js +7 -1
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/node_modules/react-dom/client.js +37 -0
  48. package/dist/esm/node_modules/react-dom/client.js.map +1 -0
  49. package/dist/types/NiceDesktopIconExporter.d.ts +119 -0
  50. package/dist/types/NiceFaviconGenerator.d.ts +64 -0
  51. package/dist/types/NiceIconEditor.d.ts +97 -0
  52. package/dist/types/NiceIconPreview.d.ts +47 -0
  53. package/dist/types/NiceIconSetCreator.d.ts +97 -0
  54. package/dist/types/advancedIconSearch.d.ts +218 -0
  55. package/dist/types/iconAnalytics.d.ts +219 -112
  56. package/dist/types/index.d.ts +18 -6
  57. package/package.json +2 -2
@@ -0,0 +1,529 @@
1
+ import { useState, useMemo, useEffect, useCallback } from 'react';
2
+
3
+ /**
4
+ * @file advancedIconSearch.ts
5
+ * @module @nice2dev/icons
6
+ * @description PRO-28.3 — Advanced Icon Search with fuzzy matching,
7
+ * filters, semantic search support, and analytics.
8
+ */
9
+ /* ══════════════════════════════════════════════════════════════════════════════
10
+ Fuzzy Match Utilities
11
+ ══════════════════════════════════════════════════════════════════════════════ */
12
+ /**
13
+ * Calculate Levenshtein distance between two strings.
14
+ */
15
+ function levenshteinDistance(a, b) {
16
+ const matrix = [];
17
+ // Handle empty strings
18
+ if (a.length === 0)
19
+ return b.length;
20
+ if (b.length === 0)
21
+ return a.length;
22
+ // Initialize matrix
23
+ for (let i = 0; i <= b.length; i++) {
24
+ matrix[i] = [i];
25
+ }
26
+ for (let j = 0; j <= a.length; j++) {
27
+ matrix[0][j] = j;
28
+ }
29
+ // Fill matrix
30
+ for (let i = 1; i <= b.length; i++) {
31
+ for (let j = 1; j <= a.length; j++) {
32
+ if (b.charAt(i - 1) === a.charAt(j - 1)) {
33
+ matrix[i][j] = matrix[i - 1][j - 1];
34
+ }
35
+ else {
36
+ matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
37
+ matrix[i][j - 1] + 1, // insertion
38
+ matrix[i - 1][j] + 1);
39
+ }
40
+ }
41
+ }
42
+ return matrix[b.length][a.length];
43
+ }
44
+ /**
45
+ * Calculate fuzzy match score (0-100).
46
+ */
47
+ function fuzzyMatchScore(query, target) {
48
+ const q = query.toLowerCase();
49
+ const t = target.toLowerCase();
50
+ // Exact match
51
+ if (q === t)
52
+ return 100;
53
+ // Contains exact
54
+ if (t.includes(q))
55
+ return 90 - (t.length - q.length) / 2;
56
+ // Starts with
57
+ if (t.startsWith(q))
58
+ return 85;
59
+ // Calculate Levenshtein-based similarity
60
+ const distance = levenshteinDistance(q, t);
61
+ const maxLen = Math.max(q.length, t.length);
62
+ const similarity = ((maxLen - distance) / maxLen) * 100;
63
+ return Math.max(0, Math.round(similarity));
64
+ }
65
+ /**
66
+ * Tokenize a search query.
67
+ */
68
+ function tokenizeQuery(query) {
69
+ return query
70
+ .toLowerCase()
71
+ .replace(/[^\w\s-]/g, ' ')
72
+ .split(/\s+/)
73
+ .filter((token) => token.length > 1);
74
+ }
75
+ /* ══════════════════════════════════════════════════════════════════════════════
76
+ Extended Icon Registry
77
+ ══════════════════════════════════════════════════════════════════════════════ */
78
+ const extendedRegistry = new Map();
79
+ const favoriteIcons = new Set();
80
+ const recentlyUsedIcons = [];
81
+ const searchHistory = [];
82
+ /**
83
+ * Register an icon with extended metadata.
84
+ */
85
+ function registerExtendedIcon(name, metadata) {
86
+ // Merge with defaults
87
+ const extended = {
88
+ name,
89
+ category: metadata.category || 'ui',
90
+ primaryCategory: metadata.primaryCategory || metadata.category || 'ui',
91
+ secondaryCategories: metadata.secondaryCategories || [],
92
+ domains: metadata.domains || ['general'],
93
+ useCases: metadata.useCases || ['action'],
94
+ styles: metadata.styles || ['solid', 'outline'],
95
+ tags: metadata.tags || [],
96
+ aliases: metadata.aliases || [],
97
+ description: metadata.description || '',
98
+ related: metadata.related || [],
99
+ relatedIcons: metadata.relatedIcons || metadata.related || [],
100
+ recommendedSizes: metadata.recommendedSizes || [16, 48],
101
+ localizedNames: metadata.localizedNames || { en: name },
102
+ searchKeywords: metadata.searchKeywords || [],
103
+ dateAdded: metadata.dateAdded,
104
+ versionAdded: metadata.versionAdded,
105
+ deprecated: metadata.deprecated,
106
+ deprecatedMessage: metadata.deprecatedMessage,
107
+ };
108
+ extendedRegistry.set(name, extended);
109
+ }
110
+ /**
111
+ * Get extended metadata for an icon.
112
+ */
113
+ function getExtendedMetadata(name) {
114
+ return extendedRegistry.get(name);
115
+ }
116
+ /**
117
+ * Mark an icon as favorite.
118
+ */
119
+ function toggleFavorite(name) {
120
+ if (favoriteIcons.has(name)) {
121
+ favoriteIcons.delete(name);
122
+ return false;
123
+ }
124
+ favoriteIcons.add(name);
125
+ return true;
126
+ }
127
+ /**
128
+ * Check if icon is favorite.
129
+ */
130
+ function isFavorite(name) {
131
+ return favoriteIcons.has(name);
132
+ }
133
+ /**
134
+ * Get all favorite icons.
135
+ */
136
+ function getFavorites() {
137
+ return Array.from(favoriteIcons);
138
+ }
139
+ /**
140
+ * Record icon usage (for analytics).
141
+ */
142
+ function recordIconUsage(name) {
143
+ const existing = recentlyUsedIcons.findIndex((item) => item.name === name);
144
+ if (existing >= 0) {
145
+ recentlyUsedIcons.splice(existing, 1);
146
+ }
147
+ recentlyUsedIcons.unshift({ name, timestamp: Date.now() });
148
+ // Keep only last 100
149
+ if (recentlyUsedIcons.length > 100) {
150
+ recentlyUsedIcons.pop();
151
+ }
152
+ }
153
+ /**
154
+ * Get recently used icons.
155
+ */
156
+ function getRecentlyUsed(limit = 20) {
157
+ return recentlyUsedIcons.slice(0, limit).map((item) => item.name);
158
+ }
159
+ /* ══════════════════════════════════════════════════════════════════════════════
160
+ Advanced Search Engine
161
+ ══════════════════════════════════════════════════════════════════════════════ */
162
+ /**
163
+ * Perform advanced search with fuzzy matching and filters.
164
+ */
165
+ function advancedSearch(query, filters = {}, options = {}) {
166
+ const startTime = performance.now();
167
+ const { maxResults = 50, minScore = 30, locale = 'en' } = options;
168
+ const tokens = tokenizeQuery(query);
169
+ const results = [];
170
+ for (const [name, metadata] of extendedRegistry) {
171
+ // Apply filters first
172
+ if (!passesFilters(metadata, filters))
173
+ continue;
174
+ // Calculate match score
175
+ const { score, matchedIn, highlights } = calculateMatchScore(tokens, query, name, metadata, locale);
176
+ if (score >= minScore) {
177
+ results.push({ name, metadata, score, matchedIn, highlights });
178
+ }
179
+ }
180
+ // Sort by score descending
181
+ results.sort((a, b) => b.score - a.score);
182
+ // Track analytics
183
+ const duration = performance.now() - startTime;
184
+ searchHistory.push({
185
+ query,
186
+ duration,
187
+ totalResults: results.length,
188
+ filters,
189
+ timestamp: Date.now(),
190
+ });
191
+ return results.slice(0, maxResults);
192
+ }
193
+ /**
194
+ * Check if metadata passes all filters.
195
+ */
196
+ function passesFilters(metadata, filters) {
197
+ var _a, _b, _c, _d;
198
+ // Category filter
199
+ if ((_a = filters.categories) === null || _a === void 0 ? void 0 : _a.length) {
200
+ const allCats = [metadata.primaryCategory, ...metadata.secondaryCategories];
201
+ if (!filters.categories.some((c) => allCats.includes(c)))
202
+ return false;
203
+ }
204
+ // Domain filter
205
+ if ((_b = filters.domains) === null || _b === void 0 ? void 0 : _b.length) {
206
+ if (!filters.domains.some((d) => metadata.domains.includes(d)))
207
+ return false;
208
+ }
209
+ // Use-case filter
210
+ if ((_c = filters.useCases) === null || _c === void 0 ? void 0 : _c.length) {
211
+ if (!filters.useCases.some((u) => metadata.useCases.includes(u)))
212
+ return false;
213
+ }
214
+ // Style filter
215
+ if ((_d = filters.styles) === null || _d === void 0 ? void 0 : _d.length) {
216
+ if (!filters.styles.some((s) => metadata.styles.includes(s)))
217
+ return false;
218
+ }
219
+ // Size filter
220
+ if (filters.minSize !== undefined) {
221
+ if (metadata.recommendedSizes[1] < filters.minSize)
222
+ return false;
223
+ }
224
+ if (filters.maxSize !== undefined) {
225
+ if (metadata.recommendedSizes[0] > filters.maxSize)
226
+ return false;
227
+ }
228
+ // Deprecated filter
229
+ if (filters.excludeDeprecated && metadata.deprecated)
230
+ return false;
231
+ // Favorites filter
232
+ if (filters.favoritesOnly && !favoriteIcons.has(metadata.name))
233
+ return false;
234
+ // Recently used filter
235
+ if (filters.recentlyUsedOnly) {
236
+ const isRecent = recentlyUsedIcons.some((r) => r.name === metadata.name);
237
+ if (!isRecent)
238
+ return false;
239
+ }
240
+ // Recent days filter
241
+ if (filters.recentDays !== undefined && metadata.dateAdded) {
242
+ const addedDate = new Date(metadata.dateAdded).getTime();
243
+ const cutoff = Date.now() - filters.recentDays * 24 * 60 * 60 * 1000;
244
+ if (addedDate < cutoff)
245
+ return false;
246
+ }
247
+ return true;
248
+ }
249
+ /**
250
+ * Calculate match score for an icon.
251
+ */
252
+ function calculateMatchScore(tokens, fullQuery, name, metadata, locale) {
253
+ let totalScore = 0;
254
+ const matchedIn = [];
255
+ const highlights = [];
256
+ // Match against name (highest weight)
257
+ const nameScore = fuzzyMatchScore(fullQuery, name);
258
+ if (nameScore > 30) {
259
+ totalScore += nameScore * 2; // 2x weight for name
260
+ matchedIn.push('name');
261
+ highlights.push({ field: 'name', text: name });
262
+ }
263
+ // Match against aliases
264
+ for (const alias of metadata.aliases) {
265
+ const aliasScore = fuzzyMatchScore(fullQuery, alias);
266
+ if (aliasScore > 30) {
267
+ totalScore += aliasScore * 1.5;
268
+ if (!matchedIn.includes('alias'))
269
+ matchedIn.push('alias');
270
+ highlights.push({ field: 'alias', text: alias });
271
+ }
272
+ }
273
+ // Match against localized name
274
+ const localizedName = metadata.localizedNames[locale] || metadata.localizedNames.en;
275
+ if (localizedName && localizedName !== name) {
276
+ const localScore = fuzzyMatchScore(fullQuery, localizedName);
277
+ if (localScore > 30) {
278
+ totalScore += localScore * 1.3;
279
+ if (!matchedIn.includes('localized'))
280
+ matchedIn.push('localized');
281
+ highlights.push({ field: 'localized', text: localizedName });
282
+ }
283
+ }
284
+ // Match against tags
285
+ for (const tag of metadata.tags) {
286
+ for (const token of tokens) {
287
+ const tagScore = fuzzyMatchScore(token, tag);
288
+ if (tagScore > 50) {
289
+ totalScore += tagScore * 0.7;
290
+ if (!matchedIn.includes('tag'))
291
+ matchedIn.push('tag');
292
+ highlights.push({ field: 'tag', text: tag });
293
+ }
294
+ }
295
+ }
296
+ // Match against keywords
297
+ for (const keyword of metadata.searchKeywords) {
298
+ for (const token of tokens) {
299
+ const keywordScore = fuzzyMatchScore(token, keyword);
300
+ if (keywordScore > 50) {
301
+ totalScore += keywordScore * 0.8;
302
+ if (!matchedIn.includes('keyword'))
303
+ matchedIn.push('keyword');
304
+ highlights.push({ field: 'keyword', text: keyword });
305
+ }
306
+ }
307
+ }
308
+ // Match against description
309
+ if (metadata.description) {
310
+ for (const token of tokens) {
311
+ if (metadata.description.toLowerCase().includes(token)) {
312
+ totalScore += 15;
313
+ if (!matchedIn.includes('description'))
314
+ matchedIn.push('description');
315
+ highlights.push({ field: 'description', text: metadata.description });
316
+ break; // Only count once for description
317
+ }
318
+ }
319
+ }
320
+ // Normalize score to 0-100
321
+ const normalizedScore = Math.min(100, Math.round(totalScore / (tokens.length || 1)));
322
+ return { score: normalizedScore, matchedIn, highlights };
323
+ }
324
+ /* ══════════════════════════════════════════════════════════════════════════════
325
+ Similar Icons Finder
326
+ ══════════════════════════════════════════════════════════════════════════════ */
327
+ /**
328
+ * Find similar icons based on metadata overlap.
329
+ */
330
+ function findSimilarIcons(iconName, limit = 10) {
331
+ const source = extendedRegistry.get(iconName);
332
+ if (!source)
333
+ return [];
334
+ const similarities = [];
335
+ for (const [name, metadata] of extendedRegistry) {
336
+ if (name === iconName)
337
+ continue;
338
+ let similarity = 0;
339
+ // Same primary category (+30)
340
+ if (metadata.primaryCategory === source.primaryCategory)
341
+ similarity += 30;
342
+ // Shared secondary categories (+5 each)
343
+ for (const cat of metadata.secondaryCategories) {
344
+ if (source.secondaryCategories.includes(cat))
345
+ similarity += 5;
346
+ }
347
+ // Shared domains (+10 each)
348
+ for (const domain of metadata.domains) {
349
+ if (source.domains.includes(domain))
350
+ similarity += 10;
351
+ }
352
+ // Shared use-cases (+5 each)
353
+ for (const useCase of metadata.useCases) {
354
+ if (source.useCases.includes(useCase))
355
+ similarity += 5;
356
+ }
357
+ // Shared tags (+3 each)
358
+ for (const tag of metadata.tags) {
359
+ if (source.tags.includes(tag))
360
+ similarity += 3;
361
+ }
362
+ // In related icons list (+20)
363
+ if (source.relatedIcons.includes(name))
364
+ similarity += 20;
365
+ // Similar name (+fuzzy score / 5)
366
+ similarity += fuzzyMatchScore(iconName, name) / 5;
367
+ if (similarity > 20) {
368
+ similarities.push({ name, similarity: Math.min(100, similarity) });
369
+ }
370
+ }
371
+ // Sort by similarity descending
372
+ similarities.sort((a, b) => b.similarity - a.similarity);
373
+ return similarities.slice(0, limit);
374
+ }
375
+ /* ══════════════════════════════════════════════════════════════════════════════
376
+ Search Suggestions / Autocomplete
377
+ ══════════════════════════════════════════════════════════════════════════════ */
378
+ /**
379
+ * Get search suggestions based on partial input.
380
+ */
381
+ function getSearchSuggestions(partial, limit = 10) {
382
+ if (partial.length < 2)
383
+ return [];
384
+ const p = partial.toLowerCase();
385
+ const suggestions = new Set();
386
+ for (const [name, metadata] of extendedRegistry) {
387
+ // Name starts with partial
388
+ if (name.toLowerCase().startsWith(p)) {
389
+ suggestions.add(name);
390
+ }
391
+ // Alias starts with partial
392
+ for (const alias of metadata.aliases) {
393
+ if (alias.toLowerCase().startsWith(p)) {
394
+ suggestions.add(alias);
395
+ }
396
+ }
397
+ // Tag starts with partial
398
+ for (const tag of metadata.tags) {
399
+ if (tag.toLowerCase().startsWith(p)) {
400
+ suggestions.add(tag);
401
+ }
402
+ }
403
+ if (suggestions.size >= limit * 2)
404
+ break;
405
+ }
406
+ return Array.from(suggestions).slice(0, limit);
407
+ }
408
+ /* ══════════════════════════════════════════════════════════════════════════════
409
+ Analytics & Insights
410
+ ══════════════════════════════════════════════════════════════════════════════ */
411
+ /**
412
+ * Get search analytics summary.
413
+ */
414
+ function getSearchAnalytics() {
415
+ const queryCounts = new Map();
416
+ const zeroResults = [];
417
+ let totalDuration = 0;
418
+ for (const search of searchHistory) {
419
+ totalDuration += search.duration;
420
+ const count = queryCounts.get(search.query) || 0;
421
+ queryCounts.set(search.query, count + 1);
422
+ if (search.totalResults === 0) {
423
+ zeroResults.push(search.query);
424
+ }
425
+ }
426
+ // Top queries
427
+ const topQueries = Array.from(queryCounts.entries())
428
+ .map(([query, count]) => ({ query, count }))
429
+ .sort((a, b) => b.count - a.count)
430
+ .slice(0, 10);
431
+ return {
432
+ totalSearches: searchHistory.length,
433
+ averageDuration: searchHistory.length > 0 ? totalDuration / searchHistory.length : 0,
434
+ topQueries,
435
+ zeroResultQueries: [...new Set(zeroResults)].slice(0, 20),
436
+ };
437
+ }
438
+ /**
439
+ * Get icon usage statistics.
440
+ */
441
+ function getIconUsageStats() {
442
+ // Count usage from history
443
+ const usageCounts = new Map();
444
+ for (const item of recentlyUsedIcons) {
445
+ const count = usageCounts.get(item.name) || 0;
446
+ usageCounts.set(item.name, count + 1);
447
+ }
448
+ // Most used
449
+ const mostUsed = Array.from(usageCounts.entries())
450
+ .map(([name, count]) => ({ name, count }))
451
+ .sort((a, b) => b.count - a.count)
452
+ .slice(0, 20);
453
+ // Find never used
454
+ const usedNames = new Set(recentlyUsedIcons.map((i) => i.name));
455
+ const neverUsed = [];
456
+ for (const name of extendedRegistry.keys()) {
457
+ if (!usedNames.has(name)) {
458
+ neverUsed.push(name);
459
+ }
460
+ }
461
+ // Least used (used once)
462
+ const leastUsed = Array.from(usageCounts.entries())
463
+ .filter(([_, count]) => count === 1)
464
+ .map(([name]) => name)
465
+ .slice(0, 20);
466
+ return { mostUsed, leastUsed, neverUsed };
467
+ }
468
+ /**
469
+ * Clear search history.
470
+ */
471
+ function clearSearchHistory() {
472
+ searchHistory.length = 0;
473
+ }
474
+ /**
475
+ * Clear recently used.
476
+ */
477
+ function clearRecentlyUsed() {
478
+ recentlyUsedIcons.length = 0;
479
+ }
480
+ /**
481
+ * React hook for advanced icon search.
482
+ */
483
+ function useAdvancedIconSearch(debounceMs = 200, locale = 'en') {
484
+ const [query, setQuery] = useState('');
485
+ const [filters, setFilters] = useState({});
486
+ const [results, setResults] = useState([]);
487
+ const [isSearching, setIsSearching] = useState(false);
488
+ // Suggestions
489
+ const suggestions = useMemo(() => {
490
+ return query.length >= 2 ? getSearchSuggestions(query) : [];
491
+ }, [query]);
492
+ // Debounced search
493
+ useEffect(() => {
494
+ if (!query && !Object.keys(filters).length) {
495
+ setResults([]);
496
+ return;
497
+ }
498
+ setIsSearching(true);
499
+ const timer = setTimeout(() => {
500
+ const searchResults = advancedSearch(query, filters, { locale });
501
+ setResults(searchResults);
502
+ setIsSearching(false);
503
+ }, debounceMs);
504
+ return () => clearTimeout(timer);
505
+ }, [query, filters, debounceMs, locale]);
506
+ const search = useCallback(() => {
507
+ setIsSearching(true);
508
+ const searchResults = advancedSearch(query, filters, { locale });
509
+ setResults(searchResults);
510
+ setIsSearching(false);
511
+ }, [query, filters, locale]);
512
+ const clearFilters = useCallback(() => {
513
+ setFilters({});
514
+ }, []);
515
+ return {
516
+ query,
517
+ setQuery,
518
+ filters,
519
+ setFilters,
520
+ results,
521
+ isSearching,
522
+ suggestions,
523
+ search,
524
+ clearFilters,
525
+ };
526
+ }
527
+
528
+ export { advancedSearch, clearRecentlyUsed, clearSearchHistory, findSimilarIcons, fuzzyMatchScore, getExtendedMetadata, getFavorites, getIconUsageStats, getRecentlyUsed, getSearchAnalytics, getSearchSuggestions, isFavorite, levenshteinDistance, recordIconUsage, registerExtendedIcon, toggleFavorite, tokenizeQuery, useAdvancedIconSearch };
529
+ //# sourceMappingURL=advancedIconSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advancedIconSearch.js","sources":["../../src/advancedIconSearch.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}