@robosophy/ui-vue 1.0.6 → 1.0.7
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/README.md +13 -9
- package/ai-context.md +1 -1
- package/components.md +5 -1
- package/dist/icon-manifest.json +16 -0
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +123 -109
- package/dist/vite.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -156,19 +156,21 @@ import { robosophyMaterialSymbols } from "@robosophy/ui-vue/vite";
|
|
|
156
156
|
export default defineConfig({
|
|
157
157
|
plugins: [
|
|
158
158
|
vue(),
|
|
159
|
-
robosophyMaterialSymbols(
|
|
160
|
-
include: ["home"], // agrega iconos dinamicos que el scanner no pueda detectar
|
|
161
|
-
}),
|
|
159
|
+
robosophyMaterialSymbols(),
|
|
162
160
|
],
|
|
163
161
|
});
|
|
164
162
|
```
|
|
165
163
|
|
|
166
|
-
El plugin escanea usos
|
|
167
|
-
objetos con `icon: "..."
|
|
168
|
-
|
|
169
|
-
|
|
164
|
+
El plugin escanea automaticamente usos de `<RsIcon name="..." />`, `rsPrimeIcon("...")` y
|
|
165
|
+
objetos con `icon: "..."` en el codigo fuente. No hace falta declarar iconos a mano.
|
|
166
|
+
En build emite fuentes locales subseteadas por familia, preload de esas fuentes y
|
|
167
|
+
`font-display: block` para evitar que se vea brevemente el texto del ligature antes
|
|
168
|
+
de que cargue el icono.
|
|
170
169
|
|
|
171
|
-
|
|
170
|
+
### Iconos dinamicos (opcional)
|
|
171
|
+
|
|
172
|
+
Si un icono se calcula en runtime (API, permisos, configuracion remota, etc.), declaralo
|
|
173
|
+
en `include` para que el scanner lo incluya:
|
|
172
174
|
|
|
173
175
|
```ts
|
|
174
176
|
robosophyMaterialSymbols({
|
|
@@ -179,7 +181,9 @@ robosophyMaterialSymbols({
|
|
|
179
181
|
});
|
|
180
182
|
```
|
|
181
183
|
|
|
182
|
-
|
|
184
|
+
### Estrategia de carga
|
|
185
|
+
|
|
186
|
+
Se puede ajustar la estrategia de carga si una app lo necesita:
|
|
183
187
|
|
|
184
188
|
```ts
|
|
185
189
|
robosophyMaterialSymbols({
|
package/ai-context.md
CHANGED
|
@@ -26,7 +26,7 @@ Use this package for shared Vue 3 UI components.
|
|
|
26
26
|
- Use `@robosophy/tokens` CSS variables for colors, typography, strokes, and component surfaces.
|
|
27
27
|
- Use PrimeVue only when it provides real behavior for that component; actions should use PrimeVue `Button` in PrimeVue apps.
|
|
28
28
|
- `RsSidebar` and `RsAccountSelector` use native PrimeVue controls for interactive UI; PrimeVue apps should register the Robosophy PrimeVue preset and load `@robosophy/prime-theme/prime.css` so Button/Menu states receive Robosophy styling.
|
|
29
|
-
- `RsIcon` needs `robosophyMaterialSymbols()` from `@robosophy/ui-vue/vite` in consuming Vite apps so builds ship local subset fonts. Use `rsPrimeIcon()` for PrimeVue APIs that accept icon class strings.
|
|
29
|
+
- `RsIcon` needs `robosophyMaterialSymbols()` from `@robosophy/ui-vue/vite` in consuming Vite apps so builds ship local subset fonts. The plugin auto-detects icon usage from source — no manual declaration needed for static patterns. Use `rsPrimeIcon()` for PrimeVue APIs that accept icon class strings. Add dynamic icons via `include`.
|
|
30
30
|
- Use `RsSidebar` for reusable module navigation. `item-click` stays in the consuming app; the optional `modules` dropdown can redirect with the provided `link` when `navigateOnModuleSelect` is `true`.
|
|
31
31
|
- Keep props focused on stable component API. Use slots for flexible content.
|
|
32
32
|
- Export every public component and public type from `src/index.ts`.
|
package/components.md
CHANGED
|
@@ -55,10 +55,14 @@ Enable Material Symbols subsetting in Vite apps:
|
|
|
55
55
|
import { robosophyMaterialSymbols } from "@robosophy/ui-vue/vite";
|
|
56
56
|
|
|
57
57
|
export default defineConfig({
|
|
58
|
-
plugins: [vue(), robosophyMaterialSymbols(
|
|
58
|
+
plugins: [vue(), robosophyMaterialSymbols()],
|
|
59
59
|
});
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
+
El plugin escanea automaticamente `<RsIcon name="..." />`, `rsPrimeIcon("...")` y
|
|
63
|
+
`icon: "..."` en el codigo fuente. No hace falta declarar iconos a mano. Para iconos
|
|
64
|
+
dinamicos que el scanner no pueda detectar, agregalos en `include`.
|
|
65
|
+
|
|
62
66
|
## RsIcon
|
|
63
67
|
|
|
64
68
|
Use for Material Symbols. The Vite plugin generates local subset fonts for only the detected
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,SAAS,GAAG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,KAAK,yBAAyB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC;CAC3C,CAAC;AAuCF,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAuER;AAED,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA+BF,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,+BAAoC,yBAsC9C;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,UAAU,CAAC,EAAE,EACxD,OAAO,UAAQ,EACf,WAAW,GAAE,iBAAsC,UAkEpD;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,yBAAyB,EACjC,OAAO,GAAE,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAM,GAC7D,iBAAiB,EAAE,CA6BrB;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,EACjC,OAAO,GAAE,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAM,UAS/D;AA4KD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,YAAY,UAIjE"}
|
package/dist/vite.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { createHash as M } from "node:crypto";
|
|
2
|
-
import { readFile as
|
|
3
|
-
import { join as
|
|
4
|
-
import { createRequire as
|
|
5
|
-
|
|
2
|
+
import { readFile as b, readdir as x } from "node:fs/promises";
|
|
3
|
+
import { join as y, extname as P, sep as N } from "node:path";
|
|
4
|
+
import { createRequire as _ } from "node:module";
|
|
5
|
+
import { fileURLToPath as H } from "node:url";
|
|
6
|
+
const l = ["outlined", "rounded", "sharp"], u = "outlined", k = /^[a-z0-9_]+$/, z = /* @__PURE__ */ new Set([".js", ".jsx", ".mjs", ".ts", ".tsx", ".vue"]), I = /* @__PURE__ */ new Set([".git", "dist", "node_modules", "storybook-static"]), T = [
|
|
6
7
|
"arrow_drop_down",
|
|
7
8
|
"arrow_drop_up",
|
|
8
9
|
"arrow_left",
|
|
@@ -14,41 +15,41 @@ const f = ["outlined", "rounded", "sharp"], m = "outlined", P = /^[a-z0-9_]+$/,
|
|
|
14
15
|
outlined: "Material Symbols Outlined Variable",
|
|
15
16
|
rounded: "Material Symbols Rounded Variable",
|
|
16
17
|
sharp: "Material Symbols Sharp Variable"
|
|
17
|
-
},
|
|
18
|
+
}, R = {
|
|
18
19
|
outlined: "@fontsource-variable/material-symbols-outlined",
|
|
19
20
|
rounded: "@fontsource-variable/material-symbols-rounded",
|
|
20
21
|
sharp: "@fontsource-variable/material-symbols-sharp"
|
|
21
22
|
}, D = {
|
|
22
23
|
outlined: "wght",
|
|
23
|
-
rounded: "
|
|
24
|
-
sharp: "
|
|
25
|
-
}, $ = "
|
|
26
|
-
function
|
|
24
|
+
rounded: "wght",
|
|
25
|
+
sharp: "wght"
|
|
26
|
+
}, $ = "swap", L = !1, U = _(import.meta.url);
|
|
27
|
+
function st(t = {}) {
|
|
27
28
|
let e;
|
|
28
29
|
return {
|
|
29
30
|
name: "robosophy-material-symbols",
|
|
30
|
-
async configResolved(
|
|
31
|
-
e =
|
|
31
|
+
async configResolved(s) {
|
|
32
|
+
e = s;
|
|
32
33
|
},
|
|
33
34
|
async transformIndexHtml() {
|
|
34
|
-
const
|
|
35
|
-
return
|
|
35
|
+
const s = await p(e, t);
|
|
36
|
+
return S(s, t);
|
|
36
37
|
},
|
|
37
|
-
configureServer(
|
|
38
|
-
|
|
39
|
-
if (!
|
|
38
|
+
configureServer(s) {
|
|
39
|
+
s.middlewares.use(async (o, n, a) => {
|
|
40
|
+
if (!o.url?.startsWith("/@robosophy-material-symbols/")) {
|
|
40
41
|
a();
|
|
41
42
|
return;
|
|
42
43
|
}
|
|
43
44
|
try {
|
|
44
|
-
const r = await
|
|
45
|
-
|
|
45
|
+
const r = await p(e, t), i = decodeURIComponent(
|
|
46
|
+
o.url.replace("/@robosophy-material-symbols/", "").split("?")[0] ?? ""
|
|
46
47
|
);
|
|
47
48
|
if (i === "rs-material-symbols.css") {
|
|
48
49
|
n.setHeader("Content-Type", "text/css; charset=utf-8"), n.end(r.css);
|
|
49
50
|
return;
|
|
50
51
|
}
|
|
51
|
-
const c = r.fonts.find((
|
|
52
|
+
const c = r.fonts.find((f) => f.fileName === i);
|
|
52
53
|
if (c) {
|
|
53
54
|
n.setHeader("Content-Type", "font/woff2"), n.end(c.source);
|
|
54
55
|
return;
|
|
@@ -59,8 +60,8 @@ function Z(t = {}) {
|
|
|
59
60
|
}
|
|
60
61
|
});
|
|
61
62
|
},
|
|
62
|
-
async generateBundle(
|
|
63
|
-
const n = await
|
|
63
|
+
async generateBundle(s, o) {
|
|
64
|
+
const n = await p(e, t);
|
|
64
65
|
for (const a of n.fonts)
|
|
65
66
|
this.emitFile({
|
|
66
67
|
fileName: `assets/${a.fileName}`,
|
|
@@ -74,49 +75,54 @@ function Z(t = {}) {
|
|
|
74
75
|
source: n.css,
|
|
75
76
|
type: "asset"
|
|
76
77
|
});
|
|
77
|
-
for (const a of Object.values(
|
|
78
|
-
a.type === "asset" && a.fileName.endsWith(".html") && (a.source =
|
|
78
|
+
for (const a of Object.values(o))
|
|
79
|
+
a.type === "asset" && a.fileName.endsWith(".html") && (a.source = O(String(a.source), n, t));
|
|
79
80
|
}
|
|
80
81
|
};
|
|
81
82
|
}
|
|
82
|
-
async function
|
|
83
|
-
const
|
|
83
|
+
async function p(t, e) {
|
|
84
|
+
const s = await A(t, e), o = t.command === "serve", n = await V(s, o, t.base);
|
|
84
85
|
return {
|
|
85
|
-
css:
|
|
86
|
-
o,
|
|
87
|
-
n,
|
|
86
|
+
css: C(
|
|
88
87
|
s,
|
|
88
|
+
n,
|
|
89
|
+
o,
|
|
89
90
|
e.fontDisplay ?? $
|
|
90
91
|
),
|
|
91
|
-
cssHref:
|
|
92
|
+
cssHref: o ? "/@robosophy-material-symbols/rs-material-symbols.css" : F(t.base, "assets/rs-material-symbols.css"),
|
|
92
93
|
fonts: n
|
|
93
94
|
};
|
|
94
95
|
}
|
|
95
|
-
async function
|
|
96
|
-
const o =
|
|
97
|
-
|
|
98
|
-
for (const n of
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
96
|
+
async function A(t, e = {}) {
|
|
97
|
+
const s = Q(), o = await K();
|
|
98
|
+
if (o)
|
|
99
|
+
for (const n of l)
|
|
100
|
+
for (const a of o[n] ?? [])
|
|
101
|
+
m(s, { family: n, name: a });
|
|
102
|
+
else
|
|
103
|
+
for (const n of T)
|
|
104
|
+
for (const a of l)
|
|
105
|
+
m(s, { family: a, name: n });
|
|
106
|
+
for (const n of e.include ?? [])
|
|
107
|
+
m(s, typeof n == "string" ? { family: u, name: n } : n);
|
|
102
108
|
if (e.scan !== !1) {
|
|
103
|
-
const
|
|
104
|
-
for (const
|
|
105
|
-
for (const
|
|
106
|
-
const
|
|
107
|
-
|
|
109
|
+
const n = e.roots ?? [y(t.root, "src")];
|
|
110
|
+
for (const a of n)
|
|
111
|
+
for (const r of await j(a)) {
|
|
112
|
+
const i = await b(r, "utf8");
|
|
113
|
+
E(i, s);
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
|
-
return
|
|
116
|
+
return s;
|
|
111
117
|
}
|
|
112
|
-
function
|
|
118
|
+
function C(t, e, s = !1, o = $) {
|
|
113
119
|
const n = [];
|
|
114
120
|
for (const r of e) {
|
|
115
|
-
const i =
|
|
121
|
+
const i = s ? `/@robosophy-material-symbols/${r.fileName}` : `./${r.fileName}`;
|
|
116
122
|
n.push(
|
|
117
123
|
"@font-face {",
|
|
118
124
|
` font-family: "${d[r.family]}";`,
|
|
119
|
-
` font-display: ${
|
|
125
|
+
` font-display: ${o};`,
|
|
120
126
|
" font-style: normal;",
|
|
121
127
|
" font-weight: 100 700;",
|
|
122
128
|
` src: url("${i}") format("woff2-variations");`,
|
|
@@ -156,7 +162,7 @@ function L(t, e, o = !1, s = $) {
|
|
|
156
162
|
".rs-icon--prime::before { content: var(--rs-icon-content); }"
|
|
157
163
|
);
|
|
158
164
|
const a = /* @__PURE__ */ new Set();
|
|
159
|
-
for (const r of
|
|
165
|
+
for (const r of l)
|
|
160
166
|
for (const i of t.get(r) ?? [])
|
|
161
167
|
a.add(i);
|
|
162
168
|
for (const r of [...a].sort())
|
|
@@ -165,121 +171,129 @@ function L(t, e, o = !1, s = $) {
|
|
|
165
171
|
`)}
|
|
166
172
|
`;
|
|
167
173
|
}
|
|
168
|
-
function
|
|
169
|
-
const
|
|
170
|
-
if (e.preload ??
|
|
171
|
-
for (const
|
|
172
|
-
|
|
174
|
+
function S(t, e = {}) {
|
|
175
|
+
const s = [];
|
|
176
|
+
if (e.preload ?? L)
|
|
177
|
+
for (const o of t.fonts)
|
|
178
|
+
s.push({
|
|
173
179
|
attrs: {
|
|
174
180
|
as: "font",
|
|
175
181
|
crossorigin: "",
|
|
176
|
-
href:
|
|
182
|
+
href: o.href,
|
|
177
183
|
rel: "preload",
|
|
178
184
|
type: "font/woff2"
|
|
179
185
|
},
|
|
180
186
|
tag: "link",
|
|
181
187
|
injectTo: "head"
|
|
182
188
|
});
|
|
183
|
-
return
|
|
189
|
+
return s.push({
|
|
184
190
|
attrs: {
|
|
185
191
|
href: t.cssHref,
|
|
186
192
|
rel: "stylesheet"
|
|
187
193
|
},
|
|
188
194
|
tag: "link",
|
|
189
195
|
injectTo: "head"
|
|
190
|
-
}),
|
|
196
|
+
}), s;
|
|
191
197
|
}
|
|
192
|
-
function
|
|
193
|
-
const
|
|
194
|
-
return
|
|
198
|
+
function O(t, e, s = {}) {
|
|
199
|
+
const o = S(e, s).map(G).filter((n) => !t.includes(`href="${q(n)}"`));
|
|
200
|
+
return o.length === 0 ? t : t.replace("</head>", `${o.map((n) => ` ${n}`).join(`
|
|
195
201
|
`)}
|
|
196
202
|
</head>`);
|
|
197
203
|
}
|
|
198
|
-
async function V(t, e,
|
|
199
|
-
const
|
|
200
|
-
for (const a of
|
|
204
|
+
async function V(t, e, s) {
|
|
205
|
+
const o = (await import("subset-font")).default, n = [];
|
|
206
|
+
for (const a of l) {
|
|
201
207
|
const r = [...t.get(a) ?? []].sort();
|
|
202
208
|
if (r.length === 0)
|
|
203
209
|
continue;
|
|
204
|
-
const i = B(a), c = await
|
|
210
|
+
const i = B(a), c = await b(i), f = await o(c, r.join(" "), {
|
|
205
211
|
targetFormat: "woff2"
|
|
206
|
-
}),
|
|
212
|
+
}), h = M("sha256").update(f).digest("hex").slice(0, 8), w = `rs-material-symbols-${a}-${h}.woff2`;
|
|
207
213
|
n.push({
|
|
208
214
|
family: a,
|
|
209
|
-
fileName:
|
|
210
|
-
href:
|
|
211
|
-
source:
|
|
215
|
+
fileName: w,
|
|
216
|
+
href: W(w, e, s),
|
|
217
|
+
source: f
|
|
212
218
|
});
|
|
213
219
|
}
|
|
214
220
|
return n;
|
|
215
221
|
}
|
|
216
222
|
function B(t) {
|
|
217
|
-
return
|
|
218
|
-
`${
|
|
223
|
+
return U.resolve(
|
|
224
|
+
`${R[t]}/files/material-symbols-${t}-latin-${D[t]}-normal.woff2`
|
|
219
225
|
);
|
|
220
226
|
}
|
|
221
|
-
function
|
|
222
|
-
return e ? `/@robosophy-material-symbols/${t}` : F(
|
|
227
|
+
function W(t, e, s) {
|
|
228
|
+
return e ? `/@robosophy-material-symbols/${t}` : F(s, `assets/${t}`);
|
|
223
229
|
}
|
|
224
|
-
function
|
|
225
|
-
const e = Object.entries(t.attrs ?? {}).map(([
|
|
230
|
+
function G(t) {
|
|
231
|
+
const e = Object.entries(t.attrs ?? {}).map(([s, o]) => o === "" ? s : `${s}="${o}"`).join(" ");
|
|
226
232
|
return `<${t.tag}${e ? ` ${e}` : ""}>`;
|
|
227
233
|
}
|
|
228
|
-
function
|
|
234
|
+
function q(t) {
|
|
229
235
|
return t.match(/\bhref="([^"]+)"/)?.[1] ?? "";
|
|
230
236
|
}
|
|
231
|
-
function
|
|
232
|
-
const
|
|
233
|
-
let
|
|
234
|
-
for (;
|
|
235
|
-
const c =
|
|
236
|
-
|
|
237
|
+
function E(t, e) {
|
|
238
|
+
const s = /<RsIcon\b([^>]*)>/g;
|
|
239
|
+
let o;
|
|
240
|
+
for (; o = s.exec(t); ) {
|
|
241
|
+
const c = J(o[1] ?? ""), f = c.name ?? c[":name"], h = g(c.family ?? c[":family"]);
|
|
242
|
+
f && m(e, { family: h ?? u, name: v(f) });
|
|
237
243
|
}
|
|
238
244
|
const n = /\brsPrimeIcon\(\s*["']([a-z0-9_]+)["'](?:\s*,\s*\{([^)]*)\})?/g;
|
|
239
245
|
let a;
|
|
240
246
|
for (; a = n.exec(t); ) {
|
|
241
|
-
const c =
|
|
242
|
-
|
|
243
|
-
family: c ??
|
|
247
|
+
const c = g(a[2]?.match(/\bfamily\s*:\s*["'](\w+)["']/)?.[1]);
|
|
248
|
+
m(e, {
|
|
249
|
+
family: c ?? u,
|
|
244
250
|
name: a[1] ?? ""
|
|
245
251
|
});
|
|
246
252
|
}
|
|
247
253
|
const r = /\bicon\s*:\s*["']([a-z0-9_]+)["']/g;
|
|
248
254
|
let i;
|
|
249
255
|
for (; i = r.exec(t); )
|
|
250
|
-
|
|
251
|
-
family:
|
|
256
|
+
m(e, {
|
|
257
|
+
family: u,
|
|
252
258
|
name: i[1] ?? ""
|
|
253
259
|
});
|
|
254
260
|
}
|
|
255
|
-
function
|
|
256
|
-
const e = {},
|
|
257
|
-
let
|
|
258
|
-
for (;
|
|
259
|
-
e[
|
|
261
|
+
function J(t) {
|
|
262
|
+
const e = {}, s = /([:@\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;
|
|
263
|
+
let o;
|
|
264
|
+
for (; o = s.exec(t); )
|
|
265
|
+
e[o[1] ?? ""] = o[2] ?? o[3] ?? "";
|
|
260
266
|
return e;
|
|
261
267
|
}
|
|
262
|
-
function
|
|
268
|
+
function v(t) {
|
|
263
269
|
return t.replace(/^['"](.+)['"]$/, "$1");
|
|
264
270
|
}
|
|
265
|
-
function
|
|
266
|
-
const
|
|
267
|
-
!
|
|
271
|
+
function m(t, e) {
|
|
272
|
+
const s = e.family ?? u, o = e.name.trim();
|
|
273
|
+
!l.includes(s) || !k.test(o) || t.get(s)?.add(o);
|
|
274
|
+
}
|
|
275
|
+
async function K() {
|
|
276
|
+
try {
|
|
277
|
+
const t = y(H(import.meta.url), ".."), e = y(t, "icon-manifest.json"), s = await b(e, "utf8");
|
|
278
|
+
return JSON.parse(s);
|
|
279
|
+
} catch {
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
268
282
|
}
|
|
269
|
-
function
|
|
270
|
-
const e = t ?
|
|
271
|
-
return
|
|
283
|
+
function g(t) {
|
|
284
|
+
const e = t ? v(t) : "";
|
|
285
|
+
return l.includes(e) ? e : void 0;
|
|
272
286
|
}
|
|
273
|
-
function
|
|
274
|
-
return new Map(
|
|
287
|
+
function Q() {
|
|
288
|
+
return new Map(l.map((t) => [t, /* @__PURE__ */ new Set()]));
|
|
275
289
|
}
|
|
276
290
|
async function j(t) {
|
|
277
291
|
try {
|
|
278
292
|
const e = await x(t, { withFileTypes: !0 });
|
|
279
293
|
return (await Promise.all(
|
|
280
|
-
e.map(async (
|
|
281
|
-
const n =
|
|
282
|
-
return
|
|
294
|
+
e.map(async (o) => {
|
|
295
|
+
const n = y(t, o.name);
|
|
296
|
+
return o.isDirectory() ? I.has(o.name) ? [] : j(n) : z.has(P(o.name)) ? [n] : [];
|
|
283
297
|
})
|
|
284
298
|
)).flat();
|
|
285
299
|
} catch {
|
|
@@ -287,18 +301,18 @@ async function j(t) {
|
|
|
287
301
|
}
|
|
288
302
|
}
|
|
289
303
|
function F(t, e) {
|
|
290
|
-
return `${t.endsWith("/") ? t : `${t}/`}${e}`.replaceAll(`${
|
|
304
|
+
return `${t.endsWith("/") ? t : `${t}/`}${e}`.replaceAll(`${N}`, "/");
|
|
291
305
|
}
|
|
292
|
-
function
|
|
293
|
-
return
|
|
306
|
+
function ot(t) {
|
|
307
|
+
return l.map((e) => `${e}: ${[...t.get(e) ?? []].sort().join(", ")}`).join(`
|
|
294
308
|
`);
|
|
295
309
|
}
|
|
296
310
|
export {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
311
|
+
C as buildMaterialSymbolsCss,
|
|
312
|
+
S as buildMaterialSymbolsHtmlTags,
|
|
313
|
+
A as collectMaterialSymbolUsages,
|
|
314
|
+
ot as formatDetectedMaterialSymbols,
|
|
315
|
+
O as injectMaterialSymbolsHtmlLinks,
|
|
316
|
+
st as robosophyMaterialSymbols
|
|
303
317
|
};
|
|
304
318
|
//# sourceMappingURL=vite.js.map
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sources":["../src/vite.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport { extname, join, sep } from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport type { HtmlTagDescriptor, IndexHtmlTransformResult, Plugin, ResolvedConfig } from \"vite\";\n\nimport type { RsIconFamily } from \"./components/RsIcon\";\n\ntype IconInput = string | { family?: RsIconFamily; name: string };\nexport type RsIconFontDisplay = \"block\" | \"swap\" | \"fallback\" | \"optional\";\n\nexport type RobosophyMaterialSymbolsOptions = {\n fontDisplay?: RsIconFontDisplay;\n include?: IconInput[];\n preload?: boolean;\n roots?: string[];\n scan?: boolean;\n};\n\ntype IconUsageMap = Map<RsIconFamily, Set<string>>;\ntype MaterialSymbolsLinkAssets = {\n cssHref: string;\n fonts: Pick<GeneratedFontAsset, \"href\">[];\n};\n\nconst families = [\"outlined\", \"rounded\", \"sharp\"] as const satisfies readonly RsIconFamily[];\nconst defaultFamily: RsIconFamily = \"outlined\";\nconst iconNamePattern = /^[a-z0-9_]+$/;\nconst sourceExtensions = new Set([\".js\", \".jsx\", \".mjs\", \".ts\", \".tsx\", \".vue\"]);\nconst skippedDirs = new Set([\".git\", \"dist\", \"node_modules\", \"storybook-static\"]);\nconst internalIconNames = [\n \"arrow_drop_down\",\n \"arrow_drop_up\",\n \"arrow_left\",\n \"chevron_right\",\n \"close\",\n \"login\",\n \"nest_eco_leaf\",\n];\n\nconst familyFontNames: Record<RsIconFamily, string> = {\n outlined: \"Material Symbols Outlined Variable\",\n rounded: \"Material Symbols Rounded Variable\",\n sharp: \"Material Symbols Sharp Variable\",\n};\n\nconst familyPackages: Record<RsIconFamily, string> = {\n outlined: \"@fontsource-variable/material-symbols-outlined\",\n rounded: \"@fontsource-variable/material-symbols-rounded\",\n sharp: \"@fontsource-variable/material-symbols-sharp\",\n};\n\nconst familyFontVariants: Record<RsIconFamily, string> = {\n outlined: \"wght\",\n rounded: \"full\",\n sharp: \"full\",\n};\n\nconst defaultFontDisplay: RsIconFontDisplay = \"block\";\nconst defaultPreload = true;\nconst require = createRequire(import.meta.url);\n\nexport function robosophyMaterialSymbols(\n options: RobosophyMaterialSymbolsOptions = {},\n): Plugin {\n let config: ResolvedConfig;\n return {\n name: \"robosophy-material-symbols\",\n async configResolved(resolvedConfig) {\n config = resolvedConfig;\n },\n async transformIndexHtml(): Promise<IndexHtmlTransformResult> {\n const assets = await ensureGeneratedAssets(config, options);\n\n return buildMaterialSymbolsHtmlTags(assets, options);\n },\n configureServer(server) {\n server.middlewares.use(async (request, response, next) => {\n if (!request.url?.startsWith(\"/@robosophy-material-symbols/\")) {\n next();\n return;\n }\n\n try {\n const assets = await ensureGeneratedAssets(config, options);\n const fileName = decodeURIComponent(\n request.url.replace(\"/@robosophy-material-symbols/\", \"\").split(\"?\")[0] ?? \"\",\n );\n\n if (fileName === \"rs-material-symbols.css\") {\n response.setHeader(\"Content-Type\", \"text/css; charset=utf-8\");\n response.end(assets.css);\n return;\n }\n\n const font = assets.fonts.find((asset) => asset.fileName === fileName);\n\n if (font) {\n response.setHeader(\"Content-Type\", \"font/woff2\");\n response.end(font.source);\n return;\n }\n\n next();\n } catch (error) {\n next(error);\n }\n });\n },\n async generateBundle(_outputOptions, bundle) {\n const assets = await ensureGeneratedAssets(config, options);\n\n for (const font of assets.fonts) {\n this.emitFile({\n fileName: `assets/${font.fileName}`,\n name: font.fileName,\n source: font.source,\n type: \"asset\",\n });\n }\n\n this.emitFile({\n fileName: \"assets/rs-material-symbols.css\",\n name: \"rs-material-symbols.css\",\n source: assets.css,\n type: \"asset\",\n });\n\n for (const asset of Object.values(bundle)) {\n if (asset.type === \"asset\" && asset.fileName.endsWith(\".html\")) {\n asset.source = injectMaterialSymbolsHtmlLinks(String(asset.source), assets, options);\n }\n }\n },\n };\n}\n\ntype GeneratedFontAsset = {\n family: RsIconFamily;\n fileName: string;\n href: string;\n source: Buffer;\n};\n\ntype GeneratedMaterialSymbolsAssets = {\n css: string;\n cssHref: string;\n fonts: GeneratedFontAsset[];\n};\n\nasync function ensureGeneratedAssets(\n config: ResolvedConfig,\n options: RobosophyMaterialSymbolsOptions,\n) {\n const usages = await collectMaterialSymbolUsages(config, options);\n const devMode = config.command === \"serve\";\n const fonts = await generateFontAssets(usages, devMode, config.base);\n const css = buildMaterialSymbolsCss(\n usages,\n fonts,\n devMode,\n options.fontDisplay ?? defaultFontDisplay,\n );\n\n return {\n css,\n cssHref: devMode\n ? \"/@robosophy-material-symbols/rs-material-symbols.css\"\n : withBase(config.base, \"assets/rs-material-symbols.css\"),\n fonts,\n };\n}\n\nexport async function collectMaterialSymbolUsages(\n config: Pick<ResolvedConfig, \"root\">,\n options: RobosophyMaterialSymbolsOptions = {},\n) {\n const usages = createUsageMap();\n\n for (const name of internalIconNames) {\n for (const family of families) {\n addUsage(usages, { family, name });\n }\n }\n\n for (const icon of options.include ?? []) {\n addUsage(usages, typeof icon === \"string\" ? { family: defaultFamily, name: icon } : icon);\n }\n\n if (options.scan !== false) {\n const roots = options.roots ?? [join(config.root, \"src\")];\n\n for (const root of roots) {\n for (const filePath of await listSourceFiles(root)) {\n const source = await readFile(filePath, \"utf8\");\n collectFromSource(source, usages);\n }\n }\n }\n\n return usages;\n}\n\nexport function buildMaterialSymbolsCss(\n usages: IconUsageMap,\n fonts: Pick<GeneratedFontAsset, \"family\" | \"fileName\">[],\n devMode = false,\n fontDisplay: RsIconFontDisplay = defaultFontDisplay,\n) {\n const lines: string[] = [];\n\n for (const font of fonts) {\n const fontUrl = devMode\n ? `/@robosophy-material-symbols/${font.fileName}`\n : `./${font.fileName}`;\n\n lines.push(\n \"@font-face {\",\n ` font-family: \"${familyFontNames[font.family]}\";`,\n ` font-display: ${fontDisplay};`,\n \" font-style: normal;\",\n \" font-weight: 100 700;\",\n ` src: url(\"${fontUrl}\") format(\"woff2-variations\");`,\n \"}\",\n );\n }\n\n lines.push(\n \".rs-icon {\",\n \" --rs-icon-color: currentColor;\",\n \" --rs-icon-fill: 0;\",\n \" --rs-icon-grade: 0;\",\n \" --rs-icon-optical-size: 24;\",\n \" --rs-icon-size: 24px;\",\n \" --rs-icon-weight: 400;\",\n \" align-items: center;\",\n \" color: var(--rs-icon-color);\",\n \" display: inline-flex;\",\n \" flex: 0 0 auto;\",\n ` font-family: \"${familyFontNames.outlined}\";`,\n \" font-size: var(--rs-icon-size);\",\n \" font-style: normal;\",\n ' font-feature-settings: \"liga\";',\n ' -webkit-font-feature-settings: \"liga\";',\n ' font-variation-settings: \"FILL\" var(--rs-icon-fill), \"wght\" var(--rs-icon-weight), \"GRAD\" var(--rs-icon-grade), \"opsz\" var(--rs-icon-optical-size);',\n \" font-weight: 400;\",\n \" justify-content: center;\",\n \" direction: ltr;\",\n \" letter-spacing: normal;\",\n \" line-height: 1;\",\n \" text-transform: none;\",\n \" user-select: none;\",\n \" white-space: nowrap;\",\n \" word-wrap: normal;\",\n \"}\",\n `.rs-icon--rounded { font-family: \"${familyFontNames.rounded}\"; }`,\n `.rs-icon--sharp { font-family: \"${familyFontNames.sharp}\"; }`,\n \".rs-icon--prime::before { content: var(--rs-icon-content); }\",\n );\n\n const names = new Set<string>();\n\n for (const family of families) {\n for (const name of usages.get(family) ?? []) {\n names.add(name);\n }\n }\n\n for (const name of [...names].sort()) {\n lines.push(`.rs-icon-${name} { --rs-icon-content: \"${name}\"; }`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function buildMaterialSymbolsHtmlTags(\n assets: MaterialSymbolsLinkAssets,\n options: Pick<RobosophyMaterialSymbolsOptions, \"preload\"> = {},\n): HtmlTagDescriptor[] {\n const tags: HtmlTagDescriptor[] = [];\n\n if (options.preload ?? defaultPreload) {\n for (const font of assets.fonts) {\n tags.push({\n attrs: {\n as: \"font\",\n crossorigin: \"\",\n href: font.href,\n rel: \"preload\",\n type: \"font/woff2\",\n },\n tag: \"link\",\n injectTo: \"head\",\n });\n }\n }\n\n tags.push({\n attrs: {\n href: assets.cssHref,\n rel: \"stylesheet\",\n },\n tag: \"link\",\n injectTo: \"head\",\n });\n\n return tags;\n}\n\nexport function injectMaterialSymbolsHtmlLinks(\n html: string,\n assets: MaterialSymbolsLinkAssets,\n options: Pick<RobosophyMaterialSymbolsOptions, \"preload\"> = {},\n) {\n const links = buildMaterialSymbolsHtmlTags(assets, options)\n .map(formatHtmlLinkTag)\n .filter((link) => !html.includes(`href=\"${getLinkHref(link)}\"`));\n\n return links.length === 0\n ? html\n : html.replace(\"</head>\", `${links.map((link) => ` ${link}`).join(\"\\n\")}\\n</head>`);\n}\n\nasync function generateFontAssets(\n usages: IconUsageMap,\n devMode: boolean,\n base: string,\n): Promise<GeneratedFontAsset[]> {\n const subsetFont = (await import(\"subset-font\")).default;\n const fonts: GeneratedFontAsset[] = [];\n\n for (const family of families) {\n const names = [...(usages.get(family) ?? [])].sort();\n\n if (names.length === 0) {\n continue;\n }\n\n const sourcePath = resolveFontPath(family);\n const source = await readFile(sourcePath);\n const subset = await subsetFont(source, names.join(\" \"), {\n targetFormat: \"woff2\",\n });\n const hash = createHash(\"sha256\").update(subset).digest(\"hex\").slice(0, 8);\n const fileName = `rs-material-symbols-${family}-${hash}.woff2`;\n\n fonts.push({\n family,\n fileName,\n href: fontHref(fileName, devMode, base),\n source: subset,\n });\n }\n\n return fonts;\n}\n\nfunction resolveFontPath(family: RsIconFamily) {\n return require.resolve(\n `${familyPackages[family]}/files/material-symbols-${family}-latin-${familyFontVariants[family]}-normal.woff2`,\n );\n}\n\nfunction fontHref(fileName: string, devMode: boolean, base: string) {\n return devMode\n ? `/@robosophy-material-symbols/${fileName}`\n : withBase(base, `assets/${fileName}`);\n}\n\nfunction formatHtmlLinkTag(tag: HtmlTagDescriptor) {\n const attrs = Object.entries(tag.attrs ?? {})\n .map(([name, value]) => (value === \"\" ? name : `${name}=\"${value}\"`))\n .join(\" \");\n\n return `<${tag.tag}${attrs ? ` ${attrs}` : \"\"}>`;\n}\n\nfunction getLinkHref(link: string) {\n return link.match(/\\bhref=\"([^\"]+)\"/)?.[1] ?? \"\";\n}\n\nfunction collectFromSource(source: string, usages: IconUsageMap) {\n const rsIconTagPattern = /<RsIcon\\b([^>]*)>/g;\n let tagMatch: RegExpExecArray | null;\n\n while ((tagMatch = rsIconTagPattern.exec(source))) {\n const attrs = parseStaticAttributes(tagMatch[1] ?? \"\");\n const name = attrs.name ?? attrs[\":name\"];\n const family = toFamily(attrs.family ?? attrs[\":family\"]);\n\n if (name) {\n addUsage(usages, { family: family ?? defaultFamily, name: unwrapStaticValue(name) });\n }\n }\n\n const primeHelperPattern =\n /\\brsPrimeIcon\\(\\s*[\"']([a-z0-9_]+)[\"'](?:\\s*,\\s*\\{([^)]*)\\})?/g;\n let helperMatch: RegExpExecArray | null;\n\n while ((helperMatch = primeHelperPattern.exec(source))) {\n const family = toFamily(helperMatch[2]?.match(/\\bfamily\\s*:\\s*[\"'](\\w+)[\"']/)?.[1]);\n addUsage(usages, {\n family: family ?? defaultFamily,\n name: helperMatch[1] ?? \"\",\n });\n }\n\n const objectIconPattern = /\\bicon\\s*:\\s*[\"']([a-z0-9_]+)[\"']/g;\n let objectMatch: RegExpExecArray | null;\n\n while ((objectMatch = objectIconPattern.exec(source))) {\n addUsage(usages, {\n family: defaultFamily,\n name: objectMatch[1] ?? \"\",\n });\n }\n}\n\nfunction parseStaticAttributes(source: string) {\n const attrs: Record<string, string> = {};\n const attrPattern = /([:@\\w-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/g;\n let match: RegExpExecArray | null;\n\n while ((match = attrPattern.exec(source))) {\n attrs[match[1] ?? \"\"] = match[2] ?? match[3] ?? \"\";\n }\n\n return attrs;\n}\n\nfunction unwrapStaticValue(value: string) {\n return value.replace(/^['\"](.+)['\"]$/, \"$1\");\n}\n\nfunction addUsage(usages: IconUsageMap, icon: { family?: RsIconFamily; name: string }) {\n const family = icon.family ?? defaultFamily;\n const name = icon.name.trim();\n\n if (!families.includes(family) || !iconNamePattern.test(name)) {\n return;\n }\n\n usages.get(family)?.add(name);\n}\n\nfunction toFamily(value?: string): RsIconFamily | undefined {\n const normalized = value ? unwrapStaticValue(value) : \"\";\n return families.includes(normalized as RsIconFamily)\n ? (normalized as RsIconFamily)\n : undefined;\n}\n\nfunction createUsageMap(): IconUsageMap {\n return new Map(families.map((family) => [family, new Set<string>()]));\n}\n\nasync function listSourceFiles(root: string): Promise<string[]> {\n try {\n const entries = await readdir(root, { withFileTypes: true });\n const files = await Promise.all(\n entries.map(async (entry) => {\n const path = join(root, entry.name);\n\n if (entry.isDirectory()) {\n return skippedDirs.has(entry.name) ? [] : listSourceFiles(path);\n }\n\n return sourceExtensions.has(extname(entry.name)) ? [path] : [];\n }),\n );\n\n return files.flat();\n } catch {\n return [];\n }\n}\n\nfunction withBase(base: string, path: string) {\n const cleanBase = base.endsWith(\"/\") ? base : `${base}/`;\n return `${cleanBase}${path}`.replaceAll(`${sep}`, \"/\");\n}\n\nexport function formatDetectedMaterialSymbols(usages: IconUsageMap) {\n return families\n .map((family) => `${family}: ${[...(usages.get(family) ?? [])].sort().join(\", \")}`)\n .join(\"\\n\");\n}\n"],"names":["families","defaultFamily","iconNamePattern","sourceExtensions","skippedDirs","internalIconNames","familyFontNames","familyPackages","familyFontVariants","defaultFontDisplay","defaultPreload","require","createRequire","robosophyMaterialSymbols","options","config","resolvedConfig","assets","ensureGeneratedAssets","buildMaterialSymbolsHtmlTags","server","request","response","next","fileName","font","asset","error","_outputOptions","bundle","injectMaterialSymbolsHtmlLinks","usages","collectMaterialSymbolUsages","devMode","fonts","generateFontAssets","buildMaterialSymbolsCss","withBase","createUsageMap","name","family","addUsage","icon","roots","join","root","filePath","listSourceFiles","source","readFile","collectFromSource","fontDisplay","lines","fontUrl","names","tags","html","links","formatHtmlLinkTag","link","getLinkHref","base","subsetFont","sourcePath","resolveFontPath","subset","hash","createHash","fontHref","tag","attrs","value","rsIconTagPattern","tagMatch","parseStaticAttributes","toFamily","unwrapStaticValue","primeHelperPattern","helperMatch","objectIconPattern","objectMatch","attrPattern","match","normalized","entries","readdir","entry","path","extname","sep","formatDetectedMaterialSymbols"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.js","sources":["../src/vite.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport { extname, join, sep } from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { fileURLToPath } from \"node:url\";\nimport type { HtmlTagDescriptor, IndexHtmlTransformResult, Plugin, ResolvedConfig } from \"vite\";\n\nimport type { RsIconFamily } from \"./components/RsIcon\";\n\ntype IconInput = string | { family?: RsIconFamily; name: string };\nexport type RsIconFontDisplay = \"block\" | \"swap\" | \"fallback\" | \"optional\";\n\nexport type RobosophyMaterialSymbolsOptions = {\n fontDisplay?: RsIconFontDisplay;\n include?: IconInput[];\n preload?: boolean;\n roots?: string[];\n scan?: boolean;\n};\n\ntype IconUsageMap = Map<RsIconFamily, Set<string>>;\ntype MaterialSymbolsLinkAssets = {\n cssHref: string;\n fonts: Pick<GeneratedFontAsset, \"href\">[];\n};\n\nconst families = [\"outlined\", \"rounded\", \"sharp\"] as const satisfies readonly RsIconFamily[];\nconst defaultFamily: RsIconFamily = \"outlined\";\nconst iconNamePattern = /^[a-z0-9_]+$/;\nconst sourceExtensions = new Set([\".js\", \".jsx\", \".mjs\", \".ts\", \".tsx\", \".vue\"]);\nconst skippedDirs = new Set([\".git\", \"dist\", \"node_modules\", \"storybook-static\"]);\nconst internalIconNames = [\n \"arrow_drop_down\",\n \"arrow_drop_up\",\n \"arrow_left\",\n \"chevron_right\",\n \"close\",\n \"login\",\n \"nest_eco_leaf\",\n];\n\nconst familyFontNames: Record<RsIconFamily, string> = {\n outlined: \"Material Symbols Outlined Variable\",\n rounded: \"Material Symbols Rounded Variable\",\n sharp: \"Material Symbols Sharp Variable\",\n};\n\nconst familyPackages: Record<RsIconFamily, string> = {\n outlined: \"@fontsource-variable/material-symbols-outlined\",\n rounded: \"@fontsource-variable/material-symbols-rounded\",\n sharp: \"@fontsource-variable/material-symbols-sharp\",\n};\n\nconst familyFontVariants: Record<RsIconFamily, string> = {\n outlined: \"wght\",\n rounded: \"wght\",\n sharp: \"wght\",\n};\n\nconst defaultFontDisplay: RsIconFontDisplay = \"swap\";\nconst defaultPreload = false;\nconst require = createRequire(import.meta.url);\n\nexport function robosophyMaterialSymbols(\n options: RobosophyMaterialSymbolsOptions = {},\n): Plugin {\n let config: ResolvedConfig;\n return {\n name: \"robosophy-material-symbols\",\n async configResolved(resolvedConfig) {\n config = resolvedConfig;\n },\n async transformIndexHtml(): Promise<IndexHtmlTransformResult> {\n const assets = await ensureGeneratedAssets(config, options);\n\n return buildMaterialSymbolsHtmlTags(assets, options);\n },\n configureServer(server) {\n server.middlewares.use(async (request, response, next) => {\n if (!request.url?.startsWith(\"/@robosophy-material-symbols/\")) {\n next();\n return;\n }\n\n try {\n const assets = await ensureGeneratedAssets(config, options);\n const fileName = decodeURIComponent(\n request.url.replace(\"/@robosophy-material-symbols/\", \"\").split(\"?\")[0] ?? \"\",\n );\n\n if (fileName === \"rs-material-symbols.css\") {\n response.setHeader(\"Content-Type\", \"text/css; charset=utf-8\");\n response.end(assets.css);\n return;\n }\n\n const font = assets.fonts.find((asset) => asset.fileName === fileName);\n\n if (font) {\n response.setHeader(\"Content-Type\", \"font/woff2\");\n response.end(font.source);\n return;\n }\n\n next();\n } catch (error) {\n next(error);\n }\n });\n },\n async generateBundle(_outputOptions, bundle) {\n const assets = await ensureGeneratedAssets(config, options);\n\n for (const font of assets.fonts) {\n this.emitFile({\n fileName: `assets/${font.fileName}`,\n name: font.fileName,\n source: font.source,\n type: \"asset\",\n });\n }\n\n this.emitFile({\n fileName: \"assets/rs-material-symbols.css\",\n name: \"rs-material-symbols.css\",\n source: assets.css,\n type: \"asset\",\n });\n\n for (const asset of Object.values(bundle)) {\n if (asset.type === \"asset\" && asset.fileName.endsWith(\".html\")) {\n asset.source = injectMaterialSymbolsHtmlLinks(String(asset.source), assets, options);\n }\n }\n },\n };\n}\n\ntype GeneratedFontAsset = {\n family: RsIconFamily;\n fileName: string;\n href: string;\n source: Buffer;\n};\n\ntype GeneratedMaterialSymbolsAssets = {\n css: string;\n cssHref: string;\n fonts: GeneratedFontAsset[];\n};\n\nasync function ensureGeneratedAssets(\n config: ResolvedConfig,\n options: RobosophyMaterialSymbolsOptions,\n) {\n const usages = await collectMaterialSymbolUsages(config, options);\n const devMode = config.command === \"serve\";\n const fonts = await generateFontAssets(usages, devMode, config.base);\n const css = buildMaterialSymbolsCss(\n usages,\n fonts,\n devMode,\n options.fontDisplay ?? defaultFontDisplay,\n );\n\n return {\n css,\n cssHref: devMode\n ? \"/@robosophy-material-symbols/rs-material-symbols.css\"\n : withBase(config.base, \"assets/rs-material-symbols.css\"),\n fonts,\n };\n}\n\nexport async function collectMaterialSymbolUsages(\n config: Pick<ResolvedConfig, \"root\">,\n options: RobosophyMaterialSymbolsOptions = {},\n) {\n const usages = createUsageMap();\n\n // Register icons used by compiled library components.\n // Prefer the auto-generated manifest; fall back to hardcoded list for older library builds.\n const manifest = await loadIconManifest();\n\n if (manifest) {\n for (const family of families) {\n for (const name of manifest[family] ?? []) {\n addUsage(usages, { family, name });\n }\n }\n } else {\n for (const name of internalIconNames) {\n for (const family of families) {\n addUsage(usages, { family, name });\n }\n }\n }\n\n for (const icon of options.include ?? []) {\n addUsage(usages, typeof icon === \"string\" ? { family: defaultFamily, name: icon } : icon);\n }\n\n if (options.scan !== false) {\n const roots = options.roots ?? [join(config.root, \"src\")];\n\n for (const root of roots) {\n for (const filePath of await listSourceFiles(root)) {\n const source = await readFile(filePath, \"utf8\");\n collectFromSource(source, usages);\n }\n }\n }\n\n return usages;\n}\n\nexport function buildMaterialSymbolsCss(\n usages: IconUsageMap,\n fonts: Pick<GeneratedFontAsset, \"family\" | \"fileName\">[],\n devMode = false,\n fontDisplay: RsIconFontDisplay = defaultFontDisplay,\n) {\n const lines: string[] = [];\n\n for (const font of fonts) {\n const fontUrl = devMode\n ? `/@robosophy-material-symbols/${font.fileName}`\n : `./${font.fileName}`;\n\n lines.push(\n \"@font-face {\",\n ` font-family: \"${familyFontNames[font.family]}\";`,\n ` font-display: ${fontDisplay};`,\n \" font-style: normal;\",\n \" font-weight: 100 700;\",\n ` src: url(\"${fontUrl}\") format(\"woff2-variations\");`,\n \"}\",\n );\n }\n\n lines.push(\n \".rs-icon {\",\n \" --rs-icon-color: currentColor;\",\n \" --rs-icon-fill: 0;\",\n \" --rs-icon-grade: 0;\",\n \" --rs-icon-optical-size: 24;\",\n \" --rs-icon-size: 24px;\",\n \" --rs-icon-weight: 400;\",\n \" align-items: center;\",\n \" color: var(--rs-icon-color);\",\n \" display: inline-flex;\",\n \" flex: 0 0 auto;\",\n ` font-family: \"${familyFontNames.outlined}\";`,\n \" font-size: var(--rs-icon-size);\",\n \" font-style: normal;\",\n ' font-feature-settings: \"liga\";',\n ' -webkit-font-feature-settings: \"liga\";',\n ' font-variation-settings: \"FILL\" var(--rs-icon-fill), \"wght\" var(--rs-icon-weight), \"GRAD\" var(--rs-icon-grade), \"opsz\" var(--rs-icon-optical-size);',\n \" font-weight: 400;\",\n \" justify-content: center;\",\n \" direction: ltr;\",\n \" letter-spacing: normal;\",\n \" line-height: 1;\",\n \" text-transform: none;\",\n \" user-select: none;\",\n \" white-space: nowrap;\",\n \" word-wrap: normal;\",\n \"}\",\n `.rs-icon--rounded { font-family: \"${familyFontNames.rounded}\"; }`,\n `.rs-icon--sharp { font-family: \"${familyFontNames.sharp}\"; }`,\n \".rs-icon--prime::before { content: var(--rs-icon-content); }\",\n );\n\n const names = new Set<string>();\n\n for (const family of families) {\n for (const name of usages.get(family) ?? []) {\n names.add(name);\n }\n }\n\n for (const name of [...names].sort()) {\n lines.push(`.rs-icon-${name} { --rs-icon-content: \"${name}\"; }`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function buildMaterialSymbolsHtmlTags(\n assets: MaterialSymbolsLinkAssets,\n options: Pick<RobosophyMaterialSymbolsOptions, \"preload\"> = {},\n): HtmlTagDescriptor[] {\n const tags: HtmlTagDescriptor[] = [];\n\n if (options.preload ?? defaultPreload) {\n for (const font of assets.fonts) {\n tags.push({\n attrs: {\n as: \"font\",\n crossorigin: \"\",\n href: font.href,\n rel: \"preload\",\n type: \"font/woff2\",\n },\n tag: \"link\",\n injectTo: \"head\",\n });\n }\n }\n\n tags.push({\n attrs: {\n href: assets.cssHref,\n rel: \"stylesheet\",\n },\n tag: \"link\",\n injectTo: \"head\",\n });\n\n return tags;\n}\n\nexport function injectMaterialSymbolsHtmlLinks(\n html: string,\n assets: MaterialSymbolsLinkAssets,\n options: Pick<RobosophyMaterialSymbolsOptions, \"preload\"> = {},\n) {\n const links = buildMaterialSymbolsHtmlTags(assets, options)\n .map(formatHtmlLinkTag)\n .filter((link) => !html.includes(`href=\"${getLinkHref(link)}\"`));\n\n return links.length === 0\n ? html\n : html.replace(\"</head>\", `${links.map((link) => ` ${link}`).join(\"\\n\")}\\n</head>`);\n}\n\nasync function generateFontAssets(\n usages: IconUsageMap,\n devMode: boolean,\n base: string,\n): Promise<GeneratedFontAsset[]> {\n const subsetFont = (await import(\"subset-font\")).default;\n const fonts: GeneratedFontAsset[] = [];\n\n for (const family of families) {\n const names = [...(usages.get(family) ?? [])].sort();\n\n if (names.length === 0) {\n continue;\n }\n\n const sourcePath = resolveFontPath(family);\n const source = await readFile(sourcePath);\n const subset = await subsetFont(source, names.join(\" \"), {\n targetFormat: \"woff2\",\n });\n const hash = createHash(\"sha256\").update(subset).digest(\"hex\").slice(0, 8);\n const fileName = `rs-material-symbols-${family}-${hash}.woff2`;\n\n fonts.push({\n family,\n fileName,\n href: fontHref(fileName, devMode, base),\n source: subset,\n });\n }\n\n return fonts;\n}\n\nfunction resolveFontPath(family: RsIconFamily) {\n return require.resolve(\n `${familyPackages[family]}/files/material-symbols-${family}-latin-${familyFontVariants[family]}-normal.woff2`,\n );\n}\n\nfunction fontHref(fileName: string, devMode: boolean, base: string) {\n return devMode\n ? `/@robosophy-material-symbols/${fileName}`\n : withBase(base, `assets/${fileName}`);\n}\n\nfunction formatHtmlLinkTag(tag: HtmlTagDescriptor) {\n const attrs = Object.entries(tag.attrs ?? {})\n .map(([name, value]) => (value === \"\" ? name : `${name}=\"${value}\"`))\n .join(\" \");\n\n return `<${tag.tag}${attrs ? ` ${attrs}` : \"\"}>`;\n}\n\nfunction getLinkHref(link: string) {\n return link.match(/\\bhref=\"([^\"]+)\"/)?.[1] ?? \"\";\n}\n\nfunction collectFromSource(source: string, usages: IconUsageMap) {\n const rsIconTagPattern = /<RsIcon\\b([^>]*)>/g;\n let tagMatch: RegExpExecArray | null;\n\n while ((tagMatch = rsIconTagPattern.exec(source))) {\n const attrs = parseStaticAttributes(tagMatch[1] ?? \"\");\n const name = attrs.name ?? attrs[\":name\"];\n const family = toFamily(attrs.family ?? attrs[\":family\"]);\n\n if (name) {\n addUsage(usages, { family: family ?? defaultFamily, name: unwrapStaticValue(name) });\n }\n }\n\n const primeHelperPattern =\n /\\brsPrimeIcon\\(\\s*[\"']([a-z0-9_]+)[\"'](?:\\s*,\\s*\\{([^)]*)\\})?/g;\n let helperMatch: RegExpExecArray | null;\n\n while ((helperMatch = primeHelperPattern.exec(source))) {\n const family = toFamily(helperMatch[2]?.match(/\\bfamily\\s*:\\s*[\"'](\\w+)[\"']/)?.[1]);\n addUsage(usages, {\n family: family ?? defaultFamily,\n name: helperMatch[1] ?? \"\",\n });\n }\n\n const objectIconPattern = /\\bicon\\s*:\\s*[\"']([a-z0-9_]+)[\"']/g;\n let objectMatch: RegExpExecArray | null;\n\n while ((objectMatch = objectIconPattern.exec(source))) {\n addUsage(usages, {\n family: defaultFamily,\n name: objectMatch[1] ?? \"\",\n });\n }\n}\n\nfunction parseStaticAttributes(source: string) {\n const attrs: Record<string, string> = {};\n const attrPattern = /([:@\\w-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/g;\n let match: RegExpExecArray | null;\n\n while ((match = attrPattern.exec(source))) {\n attrs[match[1] ?? \"\"] = match[2] ?? match[3] ?? \"\";\n }\n\n return attrs;\n}\n\nfunction unwrapStaticValue(value: string) {\n return value.replace(/^['\"](.+)['\"]$/, \"$1\");\n}\n\nfunction addUsage(usages: IconUsageMap, icon: { family?: RsIconFamily; name: string }) {\n const family = icon.family ?? defaultFamily;\n const name = icon.name.trim();\n\n if (!families.includes(family) || !iconNamePattern.test(name)) {\n return;\n }\n\n usages.get(family)?.add(name);\n}\n\nasync function loadIconManifest(): Promise<Record<RsIconFamily, string[]> | null> {\n try {\n const dir = join(fileURLToPath(import.meta.url), \"..\");\n const manifestPath = join(dir, \"icon-manifest.json\");\n const source = await readFile(manifestPath, \"utf8\");\n return JSON.parse(source) as Record<RsIconFamily, string[]>;\n } catch {\n return null;\n }\n}\n\nfunction toFamily(value?: string): RsIconFamily | undefined {\n const normalized = value ? unwrapStaticValue(value) : \"\";\n return families.includes(normalized as RsIconFamily)\n ? (normalized as RsIconFamily)\n : undefined;\n}\n\nfunction createUsageMap(): IconUsageMap {\n return new Map(families.map((family) => [family, new Set<string>()]));\n}\n\nasync function listSourceFiles(root: string): Promise<string[]> {\n try {\n const entries = await readdir(root, { withFileTypes: true });\n const files = await Promise.all(\n entries.map(async (entry) => {\n const path = join(root, entry.name);\n\n if (entry.isDirectory()) {\n return skippedDirs.has(entry.name) ? [] : listSourceFiles(path);\n }\n\n return sourceExtensions.has(extname(entry.name)) ? [path] : [];\n }),\n );\n\n return files.flat();\n } catch {\n return [];\n }\n}\n\nfunction withBase(base: string, path: string) {\n const cleanBase = base.endsWith(\"/\") ? base : `${base}/`;\n return `${cleanBase}${path}`.replaceAll(`${sep}`, \"/\");\n}\n\nexport function formatDetectedMaterialSymbols(usages: IconUsageMap) {\n return families\n .map((family) => `${family}: ${[...(usages.get(family) ?? [])].sort().join(\", \")}`)\n .join(\"\\n\");\n}\n"],"names":["families","defaultFamily","iconNamePattern","sourceExtensions","skippedDirs","internalIconNames","familyFontNames","familyPackages","familyFontVariants","defaultFontDisplay","defaultPreload","require","createRequire","robosophyMaterialSymbols","options","config","resolvedConfig","assets","ensureGeneratedAssets","buildMaterialSymbolsHtmlTags","server","request","response","next","fileName","font","asset","error","_outputOptions","bundle","injectMaterialSymbolsHtmlLinks","usages","collectMaterialSymbolUsages","devMode","fonts","generateFontAssets","buildMaterialSymbolsCss","withBase","createUsageMap","manifest","loadIconManifest","family","name","addUsage","icon","roots","join","root","filePath","listSourceFiles","source","readFile","collectFromSource","fontDisplay","lines","fontUrl","names","tags","html","links","formatHtmlLinkTag","link","getLinkHref","base","subsetFont","sourcePath","resolveFontPath","subset","hash","createHash","fontHref","tag","attrs","value","rsIconTagPattern","tagMatch","parseStaticAttributes","toFamily","unwrapStaticValue","primeHelperPattern","helperMatch","objectIconPattern","objectMatch","attrPattern","match","dir","fileURLToPath","manifestPath","normalized","entries","readdir","entry","path","extname","sep","formatDetectedMaterialSymbols"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@robosophy/ui-vue",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"homepage": "https://robosophy.gitlab.io/robosophy-basf/robosophy-library/",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"**/*.css"
|
|
40
40
|
],
|
|
41
41
|
"scripts": {
|
|
42
|
-
"build": "vite build && node scripts/add-style-import.mjs && vue-tsc --emitDeclarationOnly && node ../../scripts/add-generated-notice.mjs dist/index.js dist/index.d.ts",
|
|
42
|
+
"build": "vite build && node scripts/generate-icon-manifest.mjs && node scripts/add-style-import.mjs && vue-tsc --emitDeclarationOnly && node ../../scripts/add-generated-notice.mjs dist/index.js dist/index.d.ts",
|
|
43
43
|
"storybook": "storybook dev -p 6006",
|
|
44
44
|
"build:storybook": "storybook build",
|
|
45
45
|
"test": "vitest run"
|