@robosophy/ui-vue 1.1.12 → 1.2.0
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/ai-context.md +6 -3
- package/components.md +25 -4
- package/dist/components/RsIconPicker/RsIconPicker.types.d.ts +6 -0
- package/dist/components/RsIconPicker/RsIconPicker.types.d.ts.map +1 -0
- package/dist/components/RsIconPicker/RsIconPicker.vue.d.ts +13 -0
- package/dist/components/RsIconPicker/RsIconPicker.vue.d.ts.map +1 -0
- package/dist/components/RsIconPicker/iconCatalog.d.ts +2 -0
- package/dist/components/RsIconPicker/iconCatalog.d.ts.map +1 -0
- package/dist/components/RsIconPicker/index.d.ts +5 -0
- package/dist/components/RsIconPicker/index.d.ts.map +1 -0
- package/dist/components/RsSidebar/RsSidebar.vue.d.ts +2 -2
- package/dist/components/RsSidebar/RsSidebar.vue.d.ts.map +1 -1
- package/dist/icon-manifest.json +371 -1
- package/dist/index.css +74 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +546 -44
- package/dist/index.js.map +1 -1
- package/dist/vite.d.ts +2 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +256 -80
- package/dist/vite.js.map +1 -1
- package/icon-scanner.md +262 -167
- package/package.json +2 -2
package/dist/vite.js
CHANGED
|
@@ -21,9 +21,21 @@ const CACHE_BASE = join("node_modules", ".cache", "robosophy-svgs");
|
|
|
21
21
|
const BASE_OPSZ = 24;
|
|
22
22
|
const DEFAULT_WEIGHT = 400;
|
|
23
23
|
const GRADE_VARIANTS = [0, -25, 200];
|
|
24
|
+
function variantKey(grade, fill, weight) {
|
|
25
|
+
return `${clampGrade(grade)}:${fill ? 1 : 0}:${weight}`;
|
|
26
|
+
}
|
|
27
|
+
function parseVariantKey(key) {
|
|
28
|
+
const [grade, fill, weight] = key.split(":").map(Number);
|
|
29
|
+
return { grade, fill: fill === 1, weight };
|
|
30
|
+
}
|
|
31
|
+
function clampGrade(grade) {
|
|
32
|
+
return GRADE_VARIANTS.reduce(
|
|
33
|
+
(nearest, g) => Math.abs(g - grade) < Math.abs(nearest - grade) ? g : nearest
|
|
34
|
+
);
|
|
35
|
+
}
|
|
24
36
|
function robosophyMaterialSymbols(options = {}) {
|
|
25
37
|
const raw = (options.outputDir ?? "").trim().replace(/^\/+/, "");
|
|
26
|
-
|
|
38
|
+
raw.split("/").filter((part) => part && part !== "..").join("/") || "assets";
|
|
27
39
|
let config;
|
|
28
40
|
let cacheDir;
|
|
29
41
|
let cachedAssets = null;
|
|
@@ -32,9 +44,9 @@ function robosophyMaterialSymbols(options = {}) {
|
|
|
32
44
|
function usageMapKey(usages) {
|
|
33
45
|
const parts = [];
|
|
34
46
|
for (const family of families) {
|
|
35
|
-
const
|
|
36
|
-
if (!
|
|
37
|
-
const entries = [...
|
|
47
|
+
const iconVariants = usages.get(family);
|
|
48
|
+
if (!iconVariants || iconVariants.size === 0) continue;
|
|
49
|
+
const entries = [...iconVariants.entries()].map(([name, variants]) => `${name}[${[...variants].sort().join(";")}]`).sort();
|
|
38
50
|
parts.push(`${family}:${entries.join(",")}`);
|
|
39
51
|
}
|
|
40
52
|
return parts.join("|") || "(empty)";
|
|
@@ -111,37 +123,23 @@ function robosophyMaterialSymbols(options = {}) {
|
|
|
111
123
|
}
|
|
112
124
|
});
|
|
113
125
|
},
|
|
114
|
-
async generateBundle(
|
|
115
|
-
const assets = await getAssets();
|
|
116
|
-
if (assets.fullSprite) {
|
|
117
|
-
this.emitFile({
|
|
118
|
-
fileName: `${outputDir}/rs-material-symbols.svg`,
|
|
119
|
-
name: "rs-material-symbols.svg",
|
|
120
|
-
source: assets.fullSprite,
|
|
121
|
-
type: "asset"
|
|
122
|
-
});
|
|
123
|
-
}
|
|
126
|
+
async generateBundle() {
|
|
124
127
|
}
|
|
125
128
|
};
|
|
126
129
|
}
|
|
127
|
-
function
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
symbolSuffix: `${symbolGradeSuffix}${symbolFillSuffix}${weightSymbolSuffix}`
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return variants;
|
|
130
|
+
function buildSvgVariant(grade, fill, weight = DEFAULT_WEIGHT) {
|
|
131
|
+
const clampedGrade = clampGrade(grade);
|
|
132
|
+
const gradeSuffix = clampedGrade === 0 ? "" : clampedGrade > 0 ? `grad${clampedGrade}` : `gradN${Math.abs(clampedGrade)}`;
|
|
133
|
+
const symbolGradeSuffix = clampedGrade === 0 ? "" : `-${gradeSuffix}`;
|
|
134
|
+
const fillSuffix = fill ? "fill1" : "";
|
|
135
|
+
const symbolFillSuffix = fill ? "-fill" : "";
|
|
136
|
+
const weightSuffix = weight !== DEFAULT_WEIGHT ? `wght${weight}` : "";
|
|
137
|
+
const weightSymbolSuffix = weight !== DEFAULT_WEIGHT ? `-wght${weight}` : "";
|
|
138
|
+
const parts = [gradeSuffix, fillSuffix, weightSuffix].filter(Boolean);
|
|
139
|
+
return {
|
|
140
|
+
suffix: parts.length > 0 ? `${parts.join("")}_${BASE_OPSZ}px` : `${BASE_OPSZ}px`,
|
|
141
|
+
symbolSuffix: `${symbolGradeSuffix}${symbolFillSuffix}${weightSymbolSuffix}`
|
|
142
|
+
};
|
|
145
143
|
}
|
|
146
144
|
function buildSvgUrl(name, family, suffix) {
|
|
147
145
|
const style = family === "outlined" ? "materialsymbolsoutlined" : family === "rounded" ? "materialsymbolsrounded" : "materialsymbolssharp";
|
|
@@ -193,42 +191,48 @@ function parseSvgPaths(svgContent) {
|
|
|
193
191
|
async function generateSpriteAssets(usages, cacheDir, config) {
|
|
194
192
|
const symbols = [];
|
|
195
193
|
const iconClasses = [];
|
|
194
|
+
const skipped = /* @__PURE__ */ new Map();
|
|
196
195
|
let totalFetched = 0;
|
|
197
196
|
let totalBytes = 0;
|
|
198
197
|
for (const family of families) {
|
|
199
|
-
const
|
|
200
|
-
if (!
|
|
201
|
-
for (const [name,
|
|
202
|
-
for (const
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
198
|
+
const iconVariants = usages.get(family);
|
|
199
|
+
if (!iconVariants || iconVariants.size === 0) continue;
|
|
200
|
+
for (const [name, variants] of [...iconVariants.entries()].sort()) {
|
|
201
|
+
for (const key of [...variants].sort()) {
|
|
202
|
+
const { grade, fill, weight } = parseVariantKey(key);
|
|
203
|
+
const variant = buildSvgVariant(grade, fill, weight);
|
|
204
|
+
const symbolId = buildSymbolId(name, family, variant.symbolSuffix);
|
|
205
|
+
const url = buildSvgUrl(name, family, variant.suffix);
|
|
206
|
+
const cacheKey = createHash("sha256").update(url).digest("hex").slice(0, 12);
|
|
207
|
+
let svgContent = cacheDir ? await loadSvgFromCache(cacheDir, cacheKey) : null;
|
|
208
|
+
if (!svgContent) {
|
|
209
|
+
svgContent = await fetchSvg(url);
|
|
209
210
|
if (!svgContent) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
if (cacheDir) {
|
|
213
|
-
await saveSvgToCache(cacheDir, cacheKey, svgContent);
|
|
214
|
-
}
|
|
211
|
+
skipped.set(`${family}/${name}`, "fetch falló");
|
|
212
|
+
continue;
|
|
215
213
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
214
|
+
if (cacheDir) {
|
|
215
|
+
await saveSvgToCache(cacheDir, cacheKey, svgContent);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const pathContent = parseSvgPaths(svgContent);
|
|
219
|
+
if (!pathContent) {
|
|
220
|
+
skipped.set(`${family}/${name}`, "sin viewBox / formato viejo");
|
|
221
|
+
continue;
|
|
223
222
|
}
|
|
223
|
+
symbols.push(
|
|
224
|
+
`<symbol id="${symbolId}" viewBox="0 -960 960 960" fill="currentColor">${pathContent}</symbol>`
|
|
225
|
+
);
|
|
226
|
+
totalFetched++;
|
|
227
|
+
totalBytes += svgContent.length;
|
|
224
228
|
}
|
|
225
229
|
}
|
|
226
230
|
}
|
|
227
231
|
const iconNames = /* @__PURE__ */ new Set();
|
|
228
232
|
for (const family of families) {
|
|
229
|
-
const
|
|
230
|
-
if (
|
|
231
|
-
for (const name of
|
|
233
|
+
const iconVariants = usages.get(family);
|
|
234
|
+
if (iconVariants) {
|
|
235
|
+
for (const name of iconVariants.keys()) {
|
|
232
236
|
iconNames.add(name);
|
|
233
237
|
}
|
|
234
238
|
}
|
|
@@ -240,6 +244,13 @@ async function generateSpriteAssets(usages, cacheDir, config) {
|
|
|
240
244
|
const fullSprite = `<svg xmlns="http://www.w3.org/2000/svg" style="display:none" aria-hidden="true">${spriteContent}</svg>`;
|
|
241
245
|
const css = iconClasses.join("\n");
|
|
242
246
|
const totalIcons = [...usages.values()].reduce((sum, m) => sum + m.size, 0);
|
|
247
|
+
if (skipped.size > 0) {
|
|
248
|
+
const lines = [...skipped.entries()].map(([key, reason]) => `${key} (${reason})`);
|
|
249
|
+
config.logger.warn(
|
|
250
|
+
`[robosophy-material-symbols] ${skipped.size} íconos omitidos, van a renderizar vacíos:
|
|
251
|
+
${lines.join("\n ")}`
|
|
252
|
+
);
|
|
253
|
+
}
|
|
243
254
|
if (totalIcons > 0) {
|
|
244
255
|
const summary = formatDetectedMaterialSymbols(usages);
|
|
245
256
|
config.logger.info(
|
|
@@ -275,13 +286,7 @@ async function collectMaterialSymbolUsages(config, options = {}) {
|
|
|
275
286
|
}
|
|
276
287
|
for (const icon of options.include ?? []) {
|
|
277
288
|
const resolved = typeof icon === "string" ? { family: defaultFamily, name: icon } : icon;
|
|
278
|
-
|
|
279
|
-
addUsage(usages, resolved);
|
|
280
|
-
} else {
|
|
281
|
-
for (const w of VALID_WEIGHTS) {
|
|
282
|
-
addUsage(usages, { ...resolved, weight: w });
|
|
283
|
-
}
|
|
284
|
-
}
|
|
289
|
+
addUsage(usages, resolved);
|
|
285
290
|
}
|
|
286
291
|
if (options.scan !== false) {
|
|
287
292
|
const roots = options.roots ?? [join(config.root, "src")];
|
|
@@ -291,6 +296,15 @@ async function collectMaterialSymbolUsages(config, options = {}) {
|
|
|
291
296
|
collectFromSource(source, usages);
|
|
292
297
|
}
|
|
293
298
|
}
|
|
299
|
+
const proxyComponents = await findIconProxyComponents(roots);
|
|
300
|
+
if (proxyComponents.size > 0) {
|
|
301
|
+
for (const root of roots) {
|
|
302
|
+
for (const filePath of await listSourceFiles(root)) {
|
|
303
|
+
const source = await readFile(filePath, "utf8");
|
|
304
|
+
collectProxyIconUsages(source, proxyComponents, usages);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
294
308
|
}
|
|
295
309
|
return usages;
|
|
296
310
|
}
|
|
@@ -419,29 +433,46 @@ function findEnclosingObject(source, fromIndex) {
|
|
|
419
433
|
}
|
|
420
434
|
return null;
|
|
421
435
|
}
|
|
436
|
+
function isDynamicNonLiteral(attrs, name) {
|
|
437
|
+
const bound = attrs[`:${name}`];
|
|
438
|
+
if (bound === void 0) return false;
|
|
439
|
+
if (bound === "true" || bound === "false" || /^-?\d+$/.test(bound.trim())) return false;
|
|
440
|
+
return true;
|
|
441
|
+
}
|
|
422
442
|
function collectFromSource(source, usages) {
|
|
423
|
-
const rsIconTagPattern = /<RsIcon\b([
|
|
443
|
+
const rsIconTagPattern = /<RsIcon\b([\s\S]*?)>/g;
|
|
424
444
|
let tagMatch;
|
|
425
445
|
while (tagMatch = rsIconTagPattern.exec(source)) {
|
|
426
|
-
const
|
|
446
|
+
const attrsSource = tagMatch[1] ?? "";
|
|
447
|
+
const attrs = parseStaticAttributes(attrsSource);
|
|
427
448
|
const rawName = attrs.name ?? attrs[":name"];
|
|
428
449
|
const hasFamily = "family" in attrs || ":family" in attrs;
|
|
429
450
|
const rawFamily = attrs.family ?? attrs[":family"] ?? "";
|
|
430
|
-
const
|
|
431
|
-
const
|
|
432
|
-
const
|
|
451
|
+
const weight = parseNumberAttr(attrs, "weight", DEFAULT_WEIGHT);
|
|
452
|
+
const resolvedWeight = weight > 0 ? weight : DEFAULT_WEIGHT;
|
|
453
|
+
const fill = parseBooleanAttr(attrs, attrsSource, "fill");
|
|
454
|
+
const grade = parseNumberAttr(attrs, "grade", 0);
|
|
433
455
|
if (rawName) {
|
|
434
456
|
const isNameDynamic = ":name" in attrs;
|
|
435
457
|
const familyList = resolveFamilies(rawFamily, hasFamily);
|
|
436
458
|
const names = resolveNames(rawName, isNameDynamic);
|
|
459
|
+
const fills = isDynamicNonLiteral(attrs, "fill") ? [false, true] : [fill];
|
|
460
|
+
const grades = isDynamicNonLiteral(attrs, "grade") ? [...GRADE_VARIANTS] : [grade];
|
|
461
|
+
const weights = isDynamicNonLiteral(attrs, "weight") ? [...VALID_WEIGHTS] : [resolvedWeight];
|
|
437
462
|
for (const family of familyList) {
|
|
438
463
|
for (const name of names) {
|
|
439
|
-
|
|
464
|
+
for (const g of grades) {
|
|
465
|
+
for (const f of fills) {
|
|
466
|
+
for (const w of weights) {
|
|
467
|
+
addUsage(usages, { family, name, grade: g, fill: f, weight: w });
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
440
471
|
}
|
|
441
472
|
}
|
|
442
473
|
}
|
|
443
474
|
}
|
|
444
|
-
const primeHelperPattern = /\brsPrimeIcon\(\s*["']([a-z0-9_]+)["'](?:\s*,\s*\{([^)]*)\})?/g;
|
|
475
|
+
const primeHelperPattern = /\brsPrimeIcon\(\s*["'`]([a-z0-9_]+)["'`](?:\s*,\s*\{([^)]*)\})?/g;
|
|
445
476
|
let helperMatch;
|
|
446
477
|
while (helperMatch = primeHelperPattern.exec(source)) {
|
|
447
478
|
const family = toFamily(helperMatch[2]?.match(/\bfamily\s*:\s*["'](\w+)["']/)?.[1]);
|
|
@@ -450,7 +481,7 @@ function collectFromSource(source, usages) {
|
|
|
450
481
|
name: helperMatch[1] ?? ""
|
|
451
482
|
});
|
|
452
483
|
}
|
|
453
|
-
const objectIconPattern = /\bicon\s*:\s*["']([a-z0-9_]+)["']/g;
|
|
484
|
+
const objectIconPattern = /\bicon\s*:\s*["'`]([a-z0-9_]+)["'`]/g;
|
|
454
485
|
let objectMatch;
|
|
455
486
|
while (objectMatch = objectIconPattern.exec(source)) {
|
|
456
487
|
const name = objectMatch[1] ?? "";
|
|
@@ -459,16 +490,20 @@ function collectFromSource(source, usages) {
|
|
|
459
490
|
const cleanBody = obj.body.replace(/\/\/.*/g, "").replace(/\/\*[\s\S]*?\*\//g, "");
|
|
460
491
|
const weightMatch = cleanBody.match(/\bweight\s*:\s*(\d+)/);
|
|
461
492
|
const familyMatch = cleanBody.match(/\bfamily\s*:\s*["'](\w+)["']/);
|
|
493
|
+
const fillMatch = cleanBody.match(/\bfill\s*:\s*(true|false)/);
|
|
494
|
+
const gradeMatch = cleanBody.match(/\bgrade\s*:\s*(-?\d+)/);
|
|
462
495
|
addUsage(usages, {
|
|
463
496
|
family: familyMatch ? familyMatch[1] : defaultFamily,
|
|
464
497
|
name,
|
|
465
|
-
weight: weightMatch ? parseInt(weightMatch[1], 10) : void 0
|
|
498
|
+
weight: weightMatch ? parseInt(weightMatch[1], 10) : void 0,
|
|
499
|
+
fill: fillMatch ? fillMatch[1] === "true" : void 0,
|
|
500
|
+
grade: gradeMatch ? parseInt(gradeMatch[1], 10) : void 0
|
|
466
501
|
});
|
|
467
502
|
} else {
|
|
468
503
|
addUsage(usages, { family: defaultFamily, name });
|
|
469
504
|
}
|
|
470
505
|
}
|
|
471
|
-
const magicCommentPattern =
|
|
506
|
+
const magicCommentPattern = /(?:\/\/|\/\*)\s*@robosophy-icon:\s*([a-z0-9_]+)/g;
|
|
472
507
|
let magicMatch;
|
|
473
508
|
while (magicMatch = magicCommentPattern.exec(source)) {
|
|
474
509
|
const name = magicMatch[1] ?? "";
|
|
@@ -476,10 +511,14 @@ function collectFromSource(source, usages) {
|
|
|
476
511
|
const line = lineEnd === -1 ? source.slice(magicMatch.index) : source.slice(magicMatch.index, lineEnd);
|
|
477
512
|
const familyMatch = line.match(/\bfamily\s*=\s*["']?(\w+)["']?/);
|
|
478
513
|
const weightMatch = line.match(/\bweight\s*=\s*(\d+)/);
|
|
514
|
+
const fillMatch = line.match(/\bfill\s*=\s*(true|false)/);
|
|
515
|
+
const gradeMatch = line.match(/\bgrade\s*=\s*(-?\d+)/);
|
|
479
516
|
addUsage(usages, {
|
|
480
517
|
family: familyMatch ? familyMatch[1] : defaultFamily,
|
|
481
518
|
name,
|
|
482
|
-
weight: weightMatch ? parseInt(weightMatch[1], 10) : void 0
|
|
519
|
+
weight: weightMatch ? parseInt(weightMatch[1], 10) : void 0,
|
|
520
|
+
fill: fillMatch ? fillMatch[1] === "true" : void 0,
|
|
521
|
+
grade: gradeMatch ? parseInt(gradeMatch[1], 10) : void 0
|
|
483
522
|
});
|
|
484
523
|
}
|
|
485
524
|
const iconArrayPattern = /(?:const|let|var)\s+(\w*[Ii]con\w*)\s*=\s*\[/g;
|
|
@@ -554,6 +593,140 @@ function collectFromSource(source, usages) {
|
|
|
554
593
|
}
|
|
555
594
|
}
|
|
556
595
|
}
|
|
596
|
+
const iconObjectPattern = /(?:const|let|var)\s+(\w*[Ii]con\w*)[^=]*=\s*\{/g;
|
|
597
|
+
let objMatch;
|
|
598
|
+
while (objMatch = iconObjectPattern.exec(source)) {
|
|
599
|
+
const braceStart = objMatch.index + objMatch[0].length - 1;
|
|
600
|
+
let depth = 1;
|
|
601
|
+
let j = braceStart + 1;
|
|
602
|
+
while (j < source.length) {
|
|
603
|
+
const c = source[j];
|
|
604
|
+
if (c === '"' || c === "'" || c === "`") {
|
|
605
|
+
j = skipStringForward(source, j, c);
|
|
606
|
+
continue;
|
|
607
|
+
}
|
|
608
|
+
if (c === "/") {
|
|
609
|
+
if (j + 1 < source.length && source[j + 1] === "/") {
|
|
610
|
+
j += 2;
|
|
611
|
+
while (j < source.length && source[j] !== "\n") j++;
|
|
612
|
+
continue;
|
|
613
|
+
}
|
|
614
|
+
if (j + 1 < source.length && source[j + 1] === "*") {
|
|
615
|
+
j += 2;
|
|
616
|
+
while (j + 1 < source.length) {
|
|
617
|
+
if (source[j] === "*" && source[j + 1] === "/") {
|
|
618
|
+
j += 2;
|
|
619
|
+
break;
|
|
620
|
+
}
|
|
621
|
+
j++;
|
|
622
|
+
}
|
|
623
|
+
continue;
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
if (c === "{") depth++;
|
|
627
|
+
else if (c === "}") {
|
|
628
|
+
depth--;
|
|
629
|
+
if (depth === 0) break;
|
|
630
|
+
}
|
|
631
|
+
j++;
|
|
632
|
+
}
|
|
633
|
+
if (depth === 0) {
|
|
634
|
+
const bodyContent = source.slice(braceStart + 1, j);
|
|
635
|
+
let braceDepth = 0;
|
|
636
|
+
let k = 0;
|
|
637
|
+
while (k < bodyContent.length) {
|
|
638
|
+
const c = bodyContent[k];
|
|
639
|
+
if (c === '"' || c === "'" || c === "`") {
|
|
640
|
+
if (braceDepth === 0) {
|
|
641
|
+
const quote = c;
|
|
642
|
+
let strEnd = k + 1;
|
|
643
|
+
while (strEnd < bodyContent.length) {
|
|
644
|
+
if (bodyContent[strEnd] === "\\") {
|
|
645
|
+
strEnd += 2;
|
|
646
|
+
continue;
|
|
647
|
+
}
|
|
648
|
+
if (bodyContent[strEnd] === quote) break;
|
|
649
|
+
strEnd++;
|
|
650
|
+
}
|
|
651
|
+
const iconName = bodyContent.slice(k + 1, strEnd);
|
|
652
|
+
if (iconNamePattern.test(iconName)) {
|
|
653
|
+
addUsage(usages, { family: defaultFamily, name: iconName });
|
|
654
|
+
}
|
|
655
|
+
k = strEnd + 1;
|
|
656
|
+
continue;
|
|
657
|
+
} else {
|
|
658
|
+
k = skipStringForward(bodyContent, k, c);
|
|
659
|
+
continue;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
if (c === "{") braceDepth++;
|
|
663
|
+
else if (c === "}") braceDepth--;
|
|
664
|
+
k++;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
const componentIconPattern = /<([A-Z][a-zA-Z0-9_]*)\b([\s\S]*?)>/g;
|
|
669
|
+
let compMatch;
|
|
670
|
+
while (compMatch = componentIconPattern.exec(source)) {
|
|
671
|
+
const tagName = compMatch[1];
|
|
672
|
+
if (tagName === "RsIcon") continue;
|
|
673
|
+
const attrs = parseStaticAttributes(compMatch[2] ?? "");
|
|
674
|
+
const iconValue = attrs.icon ?? attrs.iconName ?? attrs["icon-name"];
|
|
675
|
+
if (iconValue && iconNamePattern.test(iconValue)) {
|
|
676
|
+
addUsage(usages, { family: defaultFamily, name: iconValue });
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
async function findIconProxyComponents(roots) {
|
|
681
|
+
const proxyComponents = /* @__PURE__ */ new Map();
|
|
682
|
+
for (const root of roots) {
|
|
683
|
+
for (const filePath of await listSourceFiles(root)) {
|
|
684
|
+
const source = await readFile(filePath, "utf8");
|
|
685
|
+
if (!/defineProps\s*[<(]/.test(source)) continue;
|
|
686
|
+
const rsIconPattern = /<RsIcon[\s\S]*?:name="([a-zA-Z_][a-zA-Z0-9_]*)"/g;
|
|
687
|
+
let match;
|
|
688
|
+
while (match = rsIconPattern.exec(source)) {
|
|
689
|
+
const propName = match[1];
|
|
690
|
+
const propRef = new RegExp(`["'\`]${propName}["'\`]\\s*[?:]`);
|
|
691
|
+
if (!propRef.test(source)) continue;
|
|
692
|
+
const optsMatch = source.match(/defineOptions\s*\(\s*\{\s*[^}]*?\bname:\s*["'](\w+)["']/);
|
|
693
|
+
if (optsMatch) {
|
|
694
|
+
proxyComponents.set(optsMatch[1], propName);
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
return proxyComponents;
|
|
700
|
+
}
|
|
701
|
+
function collectProxyIconUsages(source, proxyComponents, usages) {
|
|
702
|
+
for (const [compName, propName] of proxyComponents) {
|
|
703
|
+
const pattern = new RegExp(
|
|
704
|
+
`<${compName}\\b([\\s\\S]*?)>`,
|
|
705
|
+
"g"
|
|
706
|
+
);
|
|
707
|
+
let tagMatch;
|
|
708
|
+
while (tagMatch = pattern.exec(source)) {
|
|
709
|
+
const attrs = parseStaticAttributes(tagMatch[1] ?? "");
|
|
710
|
+
const value = attrs[propName];
|
|
711
|
+
if (value && iconNamePattern.test(value)) {
|
|
712
|
+
addUsage(usages, { family: defaultFamily, name: value });
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
function parseBooleanAttr(attrs, raw, name) {
|
|
718
|
+
const bound = attrs[`:${name}`];
|
|
719
|
+
if (bound === "false") return false;
|
|
720
|
+
if (bound === "true" || bound === "") return true;
|
|
721
|
+
const staticVal = attrs[name];
|
|
722
|
+
if (staticVal === "false") return false;
|
|
723
|
+
if (staticVal === "true" || staticVal === "") return true;
|
|
724
|
+
return new RegExp(`(?:^|\\s)${name}(?:\\s|$|(?==))`).test(raw);
|
|
725
|
+
}
|
|
726
|
+
function parseNumberAttr(attrs, name, fallback) {
|
|
727
|
+
const raw = attrs[name] ?? attrs[`:${name}`] ?? "";
|
|
728
|
+
const parsed = parseInt(raw, 10);
|
|
729
|
+
return !isNaN(parsed) ? parsed : fallback;
|
|
557
730
|
}
|
|
558
731
|
function parseStaticAttributes(source) {
|
|
559
732
|
const attrs = {};
|
|
@@ -572,17 +745,20 @@ function addUsage(usages, icon) {
|
|
|
572
745
|
const family = icon.family ?? defaultFamily;
|
|
573
746
|
const name = icon.name.trim();
|
|
574
747
|
const weight = icon.weight ?? DEFAULT_WEIGHT;
|
|
748
|
+
const fill = icon.fill ?? false;
|
|
749
|
+
const grade = icon.grade ?? 0;
|
|
575
750
|
if (!families.includes(family) || !iconNamePattern.test(name)) {
|
|
576
751
|
return;
|
|
577
752
|
}
|
|
578
753
|
if (!VALID_WEIGHTS.includes(weight)) return;
|
|
579
754
|
const iconMap = usages.get(family);
|
|
580
755
|
if (!iconMap) return;
|
|
756
|
+
const key = variantKey(grade, fill, weight);
|
|
581
757
|
const existing = iconMap.get(name);
|
|
582
758
|
if (existing) {
|
|
583
|
-
existing.add(
|
|
759
|
+
existing.add(key);
|
|
584
760
|
} else {
|
|
585
|
-
iconMap.set(name, /* @__PURE__ */ new Set([
|
|
761
|
+
iconMap.set(name, /* @__PURE__ */ new Set([key]));
|
|
586
762
|
}
|
|
587
763
|
}
|
|
588
764
|
async function loadIconManifest() {
|
|
@@ -657,9 +833,9 @@ async function listSourceFiles(root) {
|
|
|
657
833
|
}
|
|
658
834
|
function formatDetectedMaterialSymbols(usages) {
|
|
659
835
|
return families.map((family) => {
|
|
660
|
-
const
|
|
661
|
-
if (!
|
|
662
|
-
const entries = [...
|
|
836
|
+
const iconVariants = usages.get(family);
|
|
837
|
+
if (!iconVariants || iconVariants.size === 0) return `${family}: (none)`;
|
|
838
|
+
const entries = [...iconVariants.entries()].map(([name, variants]) => `${name}[${[...variants].sort().join(";")}]`).sort().join(", ");
|
|
663
839
|
return `${family}: ${entries}`;
|
|
664
840
|
}).join("\n");
|
|
665
841
|
}
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sources":["../src/vite.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\r\nimport { mkdir, readFile, readdir, writeFile } from \"node:fs/promises\";\r\nimport { extname, join, sep } from \"node:path\";\r\nimport { fileURLToPath } from \"node:url\";\r\nimport type { HtmlTagDescriptor, IndexHtmlTransformResult, Plugin, ResolvedConfig } from \"vite\";\r\n\r\nimport type { RsIconFamily } from \"./components/RsIcon\";\r\n\r\ntype IconInput = string | { family?: RsIconFamily; name: string; weight?: number };\r\nexport type RsIconFontDisplay = \"block\" | \"swap\" | \"fallback\" | \"optional\";\r\n\r\nexport type RobosophyMaterialSymbolsOptions = {\r\n outputDir?: string;\r\n fontDisplay?: RsIconFontDisplay;\r\n fontVariant?: string;\r\n include?: IconInput[];\r\n preload?: boolean;\r\n roots?: string[];\r\n scan?: boolean;\r\n};\r\n\r\ntype IconUsageMap = Map<RsIconFamily, Map<string, Set<number>>>;\r\n\r\nconst families = [\"outlined\", \"rounded\", \"sharp\"] as const satisfies readonly RsIconFamily[];\r\nconst defaultFamily: RsIconFamily = \"outlined\";\r\nconst iconNamePattern = /^[a-z0-9_]+$/;\r\nconst sourceExtensions = new Set([\".js\", \".jsx\", \".mjs\", \".ts\", \".tsx\", \".vue\"]);\r\nconst skippedDirs = new Set([\".git\", \"dist\", \"node_modules\", \"storybook-static\"]);\r\nconst internalIconNames = [\r\n \"arrow_drop_down\",\r\n \"arrow_drop_up\",\r\n \"arrow_left\",\r\n \"chevron_right\",\r\n \"close\",\r\n \"login\",\r\n \"nest_eco_leaf\",\r\n];\r\n\r\nconst GITHUB_RAW =\r\n \"https://raw.githubusercontent.com/google/material-design-icons/master/symbols/web\";\r\nconst CACHE_BASE = join(\"node_modules\", \".cache\", \"robosophy-svgs\");\r\nconst BASE_OPSZ = 24;\r\nconst DEFAULT_WEIGHT = 400;\r\n\r\nconst GRADE_VARIANTS = [0, -25, 200] as const;\r\n\r\nexport function robosophyMaterialSymbols(\r\n options: RobosophyMaterialSymbolsOptions = {},\r\n): Plugin {\r\n const raw = (options.outputDir ?? \"\").trim().replace(/^\\/+/, \"\");\r\n const outputDir = raw\r\n .split(\"/\")\r\n .filter((part) => part && part !== \"..\")\r\n .join(\"/\") || \"assets\";\r\n let config: ResolvedConfig;\r\n let cacheDir: string;\r\n let cachedAssets: GeneratedMaterialSymbolsAssets | null = null;\r\n let cachedUsagesKey = \"\";\r\n let needsRegeneration = true;\r\n\r\n function usageMapKey(usages: IconUsageMap): string {\r\n const parts: string[] = [];\r\n for (const family of families) {\r\n const iconWeights = usages.get(family);\r\n if (!iconWeights || iconWeights.size === 0) continue;\r\n const entries = [...iconWeights.entries()]\r\n .map(([name, weights]) => `${name}[${[...weights].sort().join(\",\")}]`)\r\n .sort();\r\n parts.push(`${family}:${entries.join(\",\")}`);\r\n }\r\n return parts.join(\"|\") || \"(empty)\";\r\n }\r\n\r\n async function getAssets(): Promise<GeneratedMaterialSymbolsAssets> {\r\n if (!needsRegeneration && cachedAssets) return cachedAssets;\r\n\r\n const usages = await collectMaterialSymbolUsages(config, options);\r\n const newKey = usageMapKey(usages);\r\n\r\n if (newKey === cachedUsagesKey && cachedAssets) {\r\n needsRegeneration = false;\r\n return cachedAssets;\r\n }\r\n\r\n if (config.command !== \"build\" && cachedUsagesKey !== \"\") {\r\n config.logger.info(\r\n \"[robosophy-material-symbols] icon usage changed, regenerating SVG sprite\",\r\n );\r\n }\r\n\r\n cachedUsagesKey = newKey;\r\n cachedAssets = await ensureGeneratedAssets(config, options, cacheDir);\r\n needsRegeneration = false;\r\n return cachedAssets;\r\n }\r\n\r\n return {\r\n name: \"robosophy-material-symbols\",\r\n async configResolved(resolvedConfig) {\r\n config = resolvedConfig;\r\n cacheDir = join(config.root, CACHE_BASE);\r\n await mkdir(cacheDir, { recursive: true });\r\n },\r\n async buildStart() {\r\n if (config.command === \"serve\" || config.command === \"build\") {\r\n await getAssets();\r\n }\r\n },\r\n async transformIndexHtml(): Promise<IndexHtmlTransformResult> {\r\n const assets = await getAssets();\r\n\r\n const tag: HtmlTagDescriptor = {\r\n tag: \"svg\",\r\n attrs: {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n style: \"display:none;\",\r\n \"aria-hidden\": \"true\",\r\n },\r\n children: assets.spriteContent,\r\n injectTo: \"body-prepend\",\r\n };\r\n\r\n return [tag, ...buildMaterialSymbolsCss(assets.css)];\r\n },\r\n configureServer(server) {\r\n server.watcher.on(\"all\", (_event, file) => {\r\n if (sourceExtensions.has(extname(file))) {\r\n needsRegeneration = true;\r\n }\r\n });\r\n server.middlewares.use(async (request, response, next) => {\r\n if (!request.url?.startsWith(\"/@robosophy-material-symbols/\")) {\r\n next();\r\n return;\r\n }\r\n\r\n try {\r\n const assets = await getAssets();\r\n const fileName = decodeURIComponent(\r\n request.url.replace(\"/@robosophy-material-symbols/\", \"\").split(\"?\")[0] ?? \"\",\r\n );\r\n\r\n if (fileName === \"rs-material-symbols.svg\") {\r\n response.setHeader(\"Content-Type\", \"image/svg+xml; charset=utf-8\");\r\n response.setHeader(\"Cache-Control\", \"no-cache\");\r\n response.end(assets.fullSprite);\r\n return;\r\n }\r\n\r\n next();\r\n } catch (error) {\r\n next(error);\r\n }\r\n });\r\n },\r\n async generateBundle(_outputOptions) {\r\n const assets = await getAssets();\r\n\r\n if (assets.fullSprite) {\r\n this.emitFile({\r\n fileName: `${outputDir}/rs-material-symbols.svg`,\r\n name: \"rs-material-symbols.svg\",\r\n source: assets.fullSprite,\r\n type: \"asset\",\r\n });\r\n }\r\n },\r\n };\r\n}\r\n\r\ntype GeneratedMaterialSymbolsAssets = {\r\n fullSprite: string;\r\n spriteContent: string;\r\n css: string;\r\n};\r\n\r\ntype SvgVariant = {\r\n suffix: string;\r\n symbolSuffix: string;\r\n};\r\n\r\nfunction buildSvgVariants(weight: number = DEFAULT_WEIGHT): SvgVariant[] {\r\n const variants: SvgVariant[] = [];\r\n for (const grade of GRADE_VARIANTS) {\r\n const gradeSuffix = grade === 0 ? \"\" : grade > 0 ? `grad${grade}` : `gradN${Math.abs(grade)}`;\r\n const symbolGradeSuffix = grade === 0 ? \"\" : `-${gradeSuffix}`;\r\n\r\n for (const fill of [false, true]) {\r\n const fillSuffix = fill ? \"fill1\" : \"\";\r\n const symbolFillSuffix = fill ? \"-fill\" : \"\";\r\n const weightSuffix = weight !== DEFAULT_WEIGHT ? `wght${weight}` : \"\";\r\n const weightSymbolSuffix = weight !== DEFAULT_WEIGHT ? `-wght${weight}` : \"\";\r\n const parts = [gradeSuffix, fillSuffix, weightSuffix].filter(Boolean);\r\n\r\n variants.push({\r\n suffix: parts.length > 0 ? `${parts.join(\"\")}_${BASE_OPSZ}px` : `${BASE_OPSZ}px`,\r\n symbolSuffix: `${symbolGradeSuffix}${symbolFillSuffix}${weightSymbolSuffix}`,\r\n });\r\n }\r\n }\r\n return variants;\r\n}\r\n\r\nfunction buildSvgUrl(name: string, family: RsIconFamily, suffix: string): string {\r\n const style = family === \"outlined\" ? \"materialsymbolsoutlined\"\r\n : family === \"rounded\" ? \"materialsymbolsrounded\"\r\n : \"materialsymbolssharp\";\r\n return `${GITHUB_RAW}/${name.toLowerCase()}/${style}/${name.toLowerCase()}_${suffix}.svg`;\r\n}\r\n\r\nfunction buildSymbolId(name: string, family: RsIconFamily, symbolSuffix: string): string {\r\n return `rs-icon-${family}-${name}${symbolSuffix}`;\r\n}\r\n\r\nasync function fetchSvg(url: string): Promise<string | null> {\r\n try {\r\n const response = await fetch(url);\r\n if (!response.ok) return null;\r\n return await response.text();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nasync function loadSvgFromCache(cacheDir: string, cacheKey: string): Promise<string | null> {\r\n const cachePath = join(cacheDir, `${cacheKey}.svg`);\r\n try {\r\n return await readFile(cachePath, \"utf8\");\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nasync function saveSvgToCache(cacheDir: string, cacheKey: string, content: string): Promise<void> {\r\n const cachePath = join(cacheDir, `${cacheKey}.svg`);\r\n try {\r\n await writeFile(cachePath, content, \"utf8\");\r\n } catch {\r\n // Ignore cache write errors\r\n }\r\n}\r\n\r\nfunction parseSvgPaths(svgContent: string): string | null {\r\n const viewBoxMatch = svgContent.match(/viewBox=\"([^\"]+)\"/i);\r\n if (!viewBoxMatch) return null;\r\n\r\n const paths: string[] = [];\r\n const pathRegex = /<path\\s+([^>]*)>/g;\r\n let pathMatch: RegExpExecArray | null;\r\n\r\n while ((pathMatch = pathRegex.exec(svgContent))) {\r\n const attrs = pathMatch[1] ?? \"\";\r\n const dMatch = attrs.match(/d=\"([^\"]*)\"/);\r\n if (dMatch) {\r\n paths.push(dMatch[1] ?? \"\");\r\n }\r\n }\r\n\r\n if (paths.length === 0) return null;\r\n\r\n return paths\r\n .map((d) => `<path fill=\"currentColor\" d=\"${d}\"/>`)\r\n .join(\"\");\r\n}\r\n\r\nasync function generateSpriteAssets(\r\n usages: IconUsageMap,\r\n cacheDir: string,\r\n config: ResolvedConfig,\r\n): Promise<GeneratedMaterialSymbolsAssets> {\r\n const symbols: string[] = [];\r\n const iconClasses: string[] = [];\r\n let totalFetched = 0;\r\n let totalBytes = 0;\r\n\r\n for (const family of families) {\r\n const iconWeights = usages.get(family);\r\n if (!iconWeights || iconWeights.size === 0) continue;\r\n\r\n for (const [name, weights] of [...iconWeights.entries()].sort()) {\r\n for (const weight of [...weights].sort()) {\r\n const variants = buildSvgVariants(weight);\r\n for (const variant of variants) {\r\n const symbolId = buildSymbolId(name, family, variant.symbolSuffix);\r\n const url = buildSvgUrl(name, family, variant.suffix);\r\n const cacheKey = createHash(\"sha256\")\r\n .update(url)\r\n .digest(\"hex\")\r\n .slice(0, 12);\r\n\r\n let svgContent = cacheDir ? await loadSvgFromCache(cacheDir, cacheKey) : null;\r\n\r\n if (!svgContent) {\r\n svgContent = await fetchSvg(url);\r\n if (!svgContent) continue;\r\n\r\n if (cacheDir) {\r\n await saveSvgToCache(cacheDir, cacheKey, svgContent);\r\n }\r\n }\r\n\r\n const pathContent = parseSvgPaths(svgContent);\r\n if (!pathContent) continue;\r\n\r\n symbols.push(\r\n `<symbol id=\"${symbolId}\" viewBox=\"0 -960 960 960\" fill=\"currentColor\">${pathContent}</symbol>`,\r\n );\r\n\r\n totalFetched++;\r\n totalBytes += svgContent.length;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const iconNames = new Set<string>();\r\n for (const family of families) {\r\n const iconWeights = usages.get(family);\r\n if (iconWeights) {\r\n for (const name of iconWeights.keys()) {\r\n iconNames.add(name);\r\n }\r\n }\r\n }\r\n for (const name of [...iconNames].sort()) {\r\n iconClasses.push(`.rs-icon-${name} { --rs-icon-content: \"${name}\"; }`);\r\n }\r\n\r\n const spriteContent = `<defs>${symbols.join(\"\")}</defs>`;\r\n const fullSprite = `<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:none\" aria-hidden=\"true\">${spriteContent}</svg>`;\r\n const css = iconClasses.join(\"\\n\");\r\n\r\n const totalIcons = [...usages.values()].reduce((sum, m) => sum + m.size, 0);\r\n if (totalIcons > 0) {\r\n const summary = formatDetectedMaterialSymbols(usages);\r\n config.logger.info(\r\n `[robosophy-material-symbols] ${totalIcons} icons detected, ${totalFetched} SVG variants (${(totalBytes / 1024).toFixed(1)} KB)\\n${summary}`,\r\n );\r\n } else {\r\n config.logger.warn(\r\n \"[robosophy-material-symbols] No Material Symbols icons detected in source. Add them via the include option.\",\r\n );\r\n }\r\n\r\n return { fullSprite, spriteContent, css };\r\n}\r\n\r\nasync function ensureGeneratedAssets(\r\n config: ResolvedConfig,\r\n options: RobosophyMaterialSymbolsOptions,\r\n cacheDir: string,\r\n): Promise<GeneratedMaterialSymbolsAssets> {\r\n const usages = await collectMaterialSymbolUsages(config, options);\r\n return generateSpriteAssets(usages, cacheDir, config);\r\n}\r\n\r\nexport async function collectMaterialSymbolUsages(\r\n config: Pick<ResolvedConfig, \"root\">,\r\n options: RobosophyMaterialSymbolsOptions = {},\r\n): Promise<IconUsageMap> {\r\n const usages = createUsageMap();\r\n\r\n const manifest = await loadIconManifest();\r\n\r\n if (manifest) {\r\n for (const family of families) {\r\n for (const name of manifest[family] ?? []) {\r\n addUsage(usages, { family, name });\r\n }\r\n }\r\n } else {\r\n for (const name of internalIconNames) {\r\n for (const family of families) {\r\n addUsage(usages, { family, name });\r\n }\r\n }\r\n }\r\n\r\n for (const icon of options.include ?? []) {\r\n const resolved = typeof icon === \"string\" ? { family: defaultFamily, name: icon } : icon;\r\n if (resolved.weight !== undefined) {\r\n addUsage(usages, resolved);\r\n } else {\r\n for (const w of VALID_WEIGHTS) {\r\n addUsage(usages, { ...resolved, weight: w });\r\n }\r\n }\r\n }\r\n\r\n if (options.scan !== false) {\r\n const roots = options.roots ?? [join(config.root, \"src\")];\r\n\r\n for (const root of roots) {\r\n for (const filePath of await listSourceFiles(root)) {\r\n const source = await readFile(filePath, \"utf8\");\r\n collectFromSource(source, usages);\r\n }\r\n }\r\n }\r\n\r\n return usages;\r\n}\r\n\r\nexport function buildMaterialSymbolsCss(\r\n iconClasses: string,\r\n): HtmlTagDescriptor[] {\r\n if (!iconClasses) return [];\r\n\r\n return [\r\n {\r\n tag: \"style\",\r\n children: iconClasses,\r\n injectTo: \"head\",\r\n },\r\n ];\r\n}\r\n\r\nfunction skipStringBackward(source: string, pos: number, quote: string): number {\r\n pos--;\r\n while (pos >= 0) {\r\n if (source[pos] === \"\\\\\") {\r\n pos -= 2;\r\n continue;\r\n }\r\n if (source[pos] === quote) {\r\n let backslashCount = 0;\r\n let k = pos - 1;\r\n while (k >= 0 && source[k] === \"\\\\\") {\r\n backslashCount++;\r\n k--;\r\n }\r\n if (backslashCount % 2 === 1) {\r\n pos = pos - backslashCount - 1;\r\n continue;\r\n }\r\n return pos - 1;\r\n }\r\n pos--;\r\n }\r\n return -1;\r\n}\r\n\r\nfunction skipStringForward(source: string, pos: number, quote: string): number {\r\n pos++;\r\n while (pos < source.length) {\r\n if (source[pos] === \"\\\\\") {\r\n pos += 2;\r\n continue;\r\n }\r\n if (source[pos] === quote) {\r\n return pos + 1;\r\n }\r\n pos++;\r\n }\r\n return source.length;\r\n}\r\n\r\nfunction findEnclosingObject(\r\n source: string,\r\n fromIndex: number,\r\n): { start: number; end: number; body: string } | null {\r\n let depth = 0;\r\n let i = fromIndex;\r\n\r\n while (i >= 0) {\r\n const char = source[i];\r\n\r\n if (char === '\"' || char === \"'\" || char === \"`\") {\r\n i = skipStringBackward(source, i, char);\r\n continue;\r\n }\r\n\r\n // Line comment //\r\n if (char === \"/\" && i > 0 && source[i - 1] === \"/\") {\r\n i -= 2;\r\n while (i >= 0 && source[i] !== \"\\n\") i--;\r\n continue;\r\n }\r\n\r\n // Block comment */\r\n if (char === \"/\" && i > 0 && source[i - 1] === \"*\") {\r\n i -= 2;\r\n while (i >= 0) {\r\n if (source[i] === \"/\" && i + 1 < source.length && source[i + 1] === \"*\") {\r\n i--;\r\n break;\r\n }\r\n i--;\r\n }\r\n continue;\r\n }\r\n\r\n if (char === \"}\") {\r\n depth++;\r\n } else if (char === \"{\") {\r\n if (depth === 0) {\r\n const start = i;\r\n let j = i + 1;\r\n let innerDepth = 1;\r\n\r\n while (j < source.length) {\r\n const c = source[j];\r\n\r\n if (c === '\"' || c === \"'\" || c === \"`\") {\r\n j = skipStringForward(source, j, c);\r\n continue;\r\n }\r\n\r\n if (c === \"/\") {\r\n // Line comment //\r\n if (j + 1 < source.length && source[j + 1] === \"/\") {\r\n j += 2;\r\n while (j < source.length && source[j] !== \"\\n\") j++;\r\n continue;\r\n }\r\n // Block comment /*\r\n if (j + 1 < source.length && source[j + 1] === \"*\") {\r\n j += 2;\r\n while (j + 1 < source.length) {\r\n if (source[j] === \"*\" && source[j + 1] === \"/\") {\r\n j += 2;\r\n break;\r\n }\r\n j++;\r\n }\r\n continue;\r\n }\r\n }\r\n\r\n if (c === \"{\") innerDepth++;\r\n else if (c === \"}\") {\r\n innerDepth--;\r\n if (innerDepth === 0) {\r\n return {\r\n start,\r\n end: j,\r\n body: source.slice(start + 1, j),\r\n };\r\n }\r\n }\r\n\r\n j++;\r\n }\r\n\r\n return null;\r\n }\r\n depth--;\r\n }\r\n\r\n i--;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction collectFromSource(source: string, usages: IconUsageMap): void {\r\n const rsIconTagPattern = /<RsIcon\\b([^>]*)>/g;\r\n let tagMatch: RegExpExecArray | null;\r\n\r\n while ((tagMatch = rsIconTagPattern.exec(source))) {\r\n const attrs = parseStaticAttributes(tagMatch[1] ?? \"\");\r\n const rawName = attrs.name ?? attrs[\":name\"];\r\n const hasFamily = \"family\" in attrs || \":family\" in attrs;\r\n const rawFamily = attrs.family ?? attrs[\":family\"] ?? \"\";\r\n const rawWeight = attrs.weight ?? attrs[\":weight\"] ?? \"\";\r\n const weight = rawWeight ? parseInt(rawWeight, 10) : DEFAULT_WEIGHT;\r\n const resolvedWeight = !isNaN(weight) && weight > 0 ? weight : DEFAULT_WEIGHT;\r\n\r\n if (rawName) {\r\n const isNameDynamic = \":name\" in attrs;\r\n const familyList = resolveFamilies(rawFamily, hasFamily);\r\n const names = resolveNames(rawName, isNameDynamic);\r\n\r\n for (const family of familyList) {\r\n for (const name of names) {\r\n addUsage(usages, { family, name, weight: resolvedWeight });\r\n }\r\n }\r\n }\r\n }\r\n\r\n const primeHelperPattern =\r\n /\\brsPrimeIcon\\(\\s*[\"']([a-z0-9_]+)[\"'](?:\\s*,\\s*\\{([^)]*)\\})?/g;\r\n let helperMatch: RegExpExecArray | null;\r\n\r\n while ((helperMatch = primeHelperPattern.exec(source))) {\r\n const family = toFamily(helperMatch[2]?.match(/\\bfamily\\s*:\\s*[\"'](\\w+)[\"']/)?.[1]);\r\n addUsage(usages, {\r\n family: family ?? defaultFamily,\r\n name: helperMatch[1] ?? \"\",\r\n });\r\n }\r\n\r\n const objectIconPattern = /\\bicon\\s*:\\s*[\"']([a-z0-9_]+)[\"']/g;\r\n let objectMatch: RegExpExecArray | null;\r\n\r\n while ((objectMatch = objectIconPattern.exec(source))) {\r\n const name = objectMatch[1] ?? \"\";\r\n const obj = findEnclosingObject(source, objectMatch.index);\r\n if (obj) {\r\n const cleanBody = obj.body.replace(/\\/\\/.*/g, \"\").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\r\n const weightMatch = cleanBody.match(/\\bweight\\s*:\\s*(\\d+)/);\r\n const familyMatch = cleanBody.match(/\\bfamily\\s*:\\s*[\"'](\\w+)[\"']/);\r\n addUsage(usages, {\r\n family: familyMatch ? (familyMatch[1] as RsIconFamily) : defaultFamily,\r\n name,\r\n weight: weightMatch ? parseInt(weightMatch[1], 10) : undefined,\r\n });\r\n } else {\r\n addUsage(usages, { family: defaultFamily, name });\r\n }\r\n }\r\n\r\n // Pattern 4: magic comments @robosophy-icon\r\n // Use for icons that cannot be detected statically (props, variables, API, etc.)\r\n const magicCommentPattern = /\\/\\/\\s*@robosophy-icon:\\s*([a-z0-9_]+)/g;\r\n let magicMatch: RegExpExecArray | null;\r\n\r\n while ((magicMatch = magicCommentPattern.exec(source))) {\r\n const name = magicMatch[1] ?? \"\";\r\n const lineEnd = source.indexOf(\"\\n\", magicMatch.index);\r\n const line = lineEnd === -1 ? source.slice(magicMatch.index) : source.slice(magicMatch.index, lineEnd);\r\n const familyMatch = line.match(/\\bfamily\\s*=\\s*[\"']?(\\w+)[\"']?/);\r\n const weightMatch = line.match(/\\bweight\\s*=\\s*(\\d+)/);\r\n addUsage(usages, {\r\n family: familyMatch ? (familyMatch[1] as RsIconFamily) : defaultFamily,\r\n name,\r\n weight: weightMatch ? parseInt(weightMatch[1], 10) : undefined,\r\n });\r\n }\r\n\r\n // Pattern 5: icon arrays — detect arrays assigned to variables with \"icon\" in the name\r\n // e.g. const iconNames = [\"home\", \"search\"]\r\n const iconArrayPattern = /(?:const|let|var)\\s+(\\w*[Ii]con\\w*)\\s*=\\s*\\[/g;\r\n let arrayMatch: RegExpExecArray | null;\r\n\r\n while ((arrayMatch = iconArrayPattern.exec(source))) {\r\n const bracketStart = arrayMatch.index + arrayMatch[0].length - 1;\r\n let depth = 1;\r\n let j = bracketStart + 1;\r\n\r\n while (j < source.length) {\r\n const c = source[j];\r\n\r\n if (c === '\"' || c === \"'\" || c === \"`\") {\r\n j = skipStringForward(source, j, c);\r\n continue;\r\n }\r\n\r\n if (c === \"/\") {\r\n if (j + 1 < source.length && source[j + 1] === \"/\") {\r\n j += 2;\r\n while (j < source.length && source[j] !== \"\\n\") j++;\r\n continue;\r\n }\r\n if (j + 1 < source.length && source[j + 1] === \"*\") {\r\n j += 2;\r\n while (j + 1 < source.length) {\r\n if (source[j] === \"*\" && source[j + 1] === \"/\") {\r\n j += 2;\r\n break;\r\n }\r\n j++;\r\n }\r\n continue;\r\n }\r\n }\r\n\r\n if (c === \"[\") depth++;\r\n else if (c === \"]\") {\r\n depth--;\r\n if (depth === 0) break;\r\n }\r\n\r\n j++;\r\n }\r\n\r\n if (depth === 0) {\r\n const arrayContent = source.slice(bracketStart + 1, j);\r\n let braceDepth = 0;\r\n let k = 0;\r\n\r\n while (k < arrayContent.length) {\r\n const c = arrayContent[k];\r\n\r\n if (c === '\"' || c === \"'\" || c === \"`\") {\r\n if (braceDepth === 0) {\r\n const quote = c;\r\n let strEnd = k + 1;\r\n while (strEnd < arrayContent.length) {\r\n if (arrayContent[strEnd] === \"\\\\\") {\r\n strEnd += 2;\r\n continue;\r\n }\r\n if (arrayContent[strEnd] === quote) break;\r\n strEnd++;\r\n }\r\n const iconName = arrayContent.slice(k + 1, strEnd);\r\n if (iconNamePattern.test(iconName)) {\r\n addUsage(usages, { family: defaultFamily, name: iconName });\r\n }\r\n k = strEnd + 1;\r\n continue;\r\n } else {\r\n k = skipStringForward(arrayContent, k, c);\r\n continue;\r\n }\r\n }\r\n\r\n if (c === \"{\") braceDepth++;\r\n else if (c === \"}\") braceDepth--;\r\n\r\n k++;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction parseStaticAttributes(source: string): Record<string, string> {\r\n const attrs: Record<string, string> = {};\r\n const attrPattern = /([:@\\w-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/g;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = attrPattern.exec(source))) {\r\n attrs[match[1] ?? \"\"] = match[2] ?? match[3] ?? \"\";\r\n }\r\n\r\n return attrs;\r\n}\r\n\r\nfunction unwrapStaticValue(value: string): string {\r\n return value.replace(/^['\"`](.+)['\"`]$/, \"$1\");\r\n}\r\n\r\nconst VALID_WEIGHTS = [100, 200, 300, 400, 500, 600, 700] as const;\r\n\r\nfunction addUsage(\r\n usages: IconUsageMap,\r\n icon: { family?: RsIconFamily; name: string; weight?: number },\r\n): void {\r\n const family = icon.family ?? defaultFamily;\r\n const name = icon.name.trim();\r\n const weight = icon.weight ?? DEFAULT_WEIGHT;\r\n\r\n if (!families.includes(family) || !iconNamePattern.test(name)) {\r\n return;\r\n }\r\n\r\n if (!VALID_WEIGHTS.includes(weight as never)) return;\r\n\r\n const iconMap = usages.get(family);\r\n if (!iconMap) return;\r\n\r\n const existing = iconMap.get(name);\r\n if (existing) {\r\n existing.add(weight);\r\n } else {\r\n iconMap.set(name, new Set([weight]));\r\n }\r\n}\r\n\r\nasync function loadIconManifest(): Promise<Record<RsIconFamily, string[]> | null> {\r\n try {\r\n const dir = join(fileURLToPath(import.meta.url), \"..\");\r\n const manifestPath = join(dir, \"icon-manifest.json\");\r\n const source = await readFile(manifestPath, \"utf8\");\r\n return JSON.parse(source) as Record<RsIconFamily, string[]>;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction toFamily(value?: string): RsIconFamily | undefined {\r\n const normalized = value ? unwrapStaticValue(value) : \"\";\r\n return families.includes(normalized as RsIconFamily)\r\n ? (normalized as RsIconFamily)\r\n : undefined;\r\n}\r\n\r\nfunction resolveNames(rawName: string, isDynamic = false): string[] {\r\n const stringLiterals = /[\"'`]([a-z0-9_]+)[\"'`]/g;\r\n let strMatch: RegExpExecArray | null;\r\n const names: string[] = [];\r\n\r\n while ((strMatch = stringLiterals.exec(rawName))) {\r\n const candidate = strMatch[1] ?? \"\";\r\n if (iconNamePattern.test(candidate)) {\r\n names.push(candidate);\r\n }\r\n }\r\n\r\n if (names.length === 0) {\r\n if (isDynamic) return names;\r\n const name = unwrapStaticValue(rawName);\r\n if (iconNamePattern.test(name)) {\r\n names.push(name);\r\n }\r\n }\r\n\r\n return names;\r\n}\r\n\r\nfunction resolveFamilies(rawFamily: string, hasFamily = true): RsIconFamily[] {\r\n const family = toFamily(rawFamily);\r\n if (family) return [family];\r\n\r\n const stringLiterals = /[\"'`](\\w+)[\"'`]/g;\r\n let strMatch: RegExpExecArray | null;\r\n const found = new Set<RsIconFamily>();\r\n\r\n while ((strMatch = stringLiterals.exec(rawFamily))) {\r\n const candidate = strMatch[1] ?? \"\";\r\n const f = toFamily(candidate);\r\n if (f) {\r\n found.add(f);\r\n }\r\n }\r\n\r\n if (found.size > 0) return [...found];\r\n\r\n if (!hasFamily) return [defaultFamily];\r\n\r\n return [...families];\r\n}\r\n\r\nfunction createUsageMap(): IconUsageMap {\r\n return new Map(families.map((family) => [family, new Map<string, Set<number>>()]));\r\n}\r\n\r\nasync function listSourceFiles(root: string): Promise<string[]> {\r\n try {\r\n const entries = await readdir(root, { withFileTypes: true });\r\n const files = await Promise.all(\r\n entries.map(async (entry) => {\r\n const path = join(root, entry.name);\r\n\r\n if (entry.isDirectory()) {\r\n return skippedDirs.has(entry.name) ? [] : listSourceFiles(path);\r\n }\r\n\r\n return sourceExtensions.has(extname(entry.name)) ? [path] : [];\r\n }),\r\n );\r\n\r\n return files.flat();\r\n } catch {\r\n return [];\r\n }\r\n}\r\n\r\nexport function formatDetectedMaterialSymbols(usages: IconUsageMap): string {\r\n return families\r\n .map((family) => {\r\n const iconWeights = usages.get(family);\r\n if (!iconWeights || iconWeights.size === 0) return `${family}: (none)`;\r\n const entries = [...iconWeights.entries()]\r\n .map(([name, weights]) => `${name}[${[...weights].sort().join(\",\")}]`)\r\n .sort()\r\n .join(\", \");\r\n return `${family}: ${entries}`;\r\n })\r\n .join(\"\\n\");\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.js","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|