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