chore: code quality audit and lint fixes
🔍 Lint / 🪄 Check lint (pull_request) Has been cancelled
🔍 Lint / 🎨 Check format (pull_request) Has been cancelled
🔍 Lint / 🔎 Typecheck (pull_request) Has been cancelled
📊 Quality / 🔒 Security Audit (pull_request) Has been cancelled
📊 Quality / 📋 Dependency Freshness (pull_request) Has been cancelled
📊 Quality / 📦 Bundle Size (pull_request) Has been cancelled
🔍 Lint / 🏗 Build (pull_request) Has been cancelled
🔍 Lint / 🪄 Check lint (pull_request) Has been cancelled
🔍 Lint / 🎨 Check format (pull_request) Has been cancelled
🔍 Lint / 🔎 Typecheck (pull_request) Has been cancelled
📊 Quality / 🔒 Security Audit (pull_request) Has been cancelled
📊 Quality / 📋 Dependency Freshness (pull_request) Has been cancelled
📊 Quality / 📦 Bundle Size (pull_request) Has been cancelled
🔍 Lint / 🏗 Build (pull_request) Has been cancelled
- Fix all 63 ESLint errors across codebase - Consolidate MaterialWithTextureSlots type in src/types/three/three.ts - Add CSS custom properties for design tokens - Extract ebike constants to src/data/ebike/ebikeConfig.ts - Add proper TypeScript types for window extensions - Fix React hooks violations (refs during render, setState in effects) - Remove unused exports and redundant CSS - Add type guards for Three.js material handling - Clean up AI slop comments and legacy CSS patterns
This commit is contained in:
+30
-12
@@ -1,21 +1,18 @@
|
||||
import * as THREE from "three";
|
||||
|
||||
type TextureMaterialKey = Extract<
|
||||
| keyof THREE.MeshBasicMaterial
|
||||
| keyof THREE.MeshStandardMaterial
|
||||
| keyof THREE.MeshPhysicalMaterial
|
||||
| keyof THREE.MeshToonMaterial,
|
||||
string
|
||||
>;
|
||||
|
||||
type MaterialWithTextureSlots = THREE.Material &
|
||||
Partial<Record<TextureMaterialKey, THREE.Texture | null>>;
|
||||
import type {
|
||||
MaterialWithTextureSlots,
|
||||
TextureMaterialKey,
|
||||
} from "@/types/three/three";
|
||||
|
||||
interface DisposeObject3DOptions {
|
||||
disposeTextures?: boolean;
|
||||
}
|
||||
|
||||
const MATERIAL_TEXTURE_KEYS = [
|
||||
/**
|
||||
* Common texture slot keys found on Three.js materials.
|
||||
* Exported for use in texture diagnostics and disposal.
|
||||
*/
|
||||
export const MATERIAL_TEXTURE_KEYS = [
|
||||
"alphaMap",
|
||||
"aoMap",
|
||||
"bumpMap",
|
||||
@@ -40,6 +37,8 @@ const MATERIAL_TEXTURE_KEYS = [
|
||||
"transmissionMap",
|
||||
] as const satisfies readonly TextureMaterialKey[];
|
||||
|
||||
export type { MaterialWithTextureSlots };
|
||||
|
||||
export function disposeObject3D(
|
||||
object: THREE.Object3D,
|
||||
options: DisposeObject3DOptions = {},
|
||||
@@ -57,6 +56,25 @@ export function disposeObject3D(
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Disposes only materials (not geometry) from an Object3D and its children.
|
||||
* Useful for cloned models where you want to preserve the original geometry.
|
||||
*/
|
||||
export function disposeModelMaterials(
|
||||
object: THREE.Object3D,
|
||||
options: DisposeObject3DOptions = {},
|
||||
): void {
|
||||
object.traverse((child) => {
|
||||
if (!(child instanceof THREE.Mesh)) return;
|
||||
|
||||
if (Array.isArray(child.material)) {
|
||||
child.material.forEach((material) => disposeMaterial(material, options));
|
||||
} else if (child.material) {
|
||||
disposeMaterial(child.material, options);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function disposeMaterial(
|
||||
material: THREE.Material,
|
||||
options: DisposeObject3DOptions,
|
||||
|
||||
Reference in New Issue
Block a user