- web/: Vue 3 + Vite + UnoCSS + Pinia, dark tactical theme (amber/#0d1117) - AppNav, ListingCard, SearchView with filters/sort, composables (useSnipeMode, useKonamiCode, useMotion), Pinia search store - Steal shimmer, auction countdown, Snipe Mode easter egg all native in Vue - docker/web/: nginx + multi-stage Dockerfile (node build → nginx serve) - compose.yml: api (8510) + web (8509) services - Dockerfile CMD updated to uvicorn for upcoming FastAPI layer - Clean build: 0 TS errors, 380 modules
18 lines
No EOL
628 B
JavaScript
18 lines
No EOL
628 B
JavaScript
import { defaultIconSizeCustomisations } from "./defaults.js";
|
|
|
|
/**
|
|
* Convert IconifyIconCustomisations to FullIconCustomisations, checking value types
|
|
*/
|
|
function mergeCustomisations(defaults, item) {
|
|
const result = { ...defaults };
|
|
for (const key in item) {
|
|
const value = item[key];
|
|
const valueType = typeof value;
|
|
if (key in defaultIconSizeCustomisations) {
|
|
if (value === null || value && (valueType === "string" || valueType === "number")) result[key] = value;
|
|
} else if (valueType === typeof result[key]) result[key] = key === "rotate" ? value % 4 : value;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
export { mergeCustomisations }; |