(null);
+ const [resetKey, setResetKey] = useState(0);
+
+ const format = detectFormat(filename);
+
+ useEffect(() => {
+ if (!format) {
+ setError("Bu dosya türü görüntüleyici tarafından desteklenmiyor.");
+ return;
+ }
+ let cancelled = false;
+ setGeometry(null);
+ setError(null);
+ loadGeometry(url, format)
+ .then((g) => {
+ if (cancelled) {
+ g.dispose();
+ return;
+ }
+ setGeometry(g);
+ })
+ .catch((e: unknown) => {
+ if (cancelled) return;
+ setError(e instanceof Error ? e.message : "Yüklenemedi.");
+ });
+ return () => {
+ cancelled = true;
+ };
+ }, [url, format]);
+
+ // Dispose old geometry when it gets replaced or the component unmounts.
+ useEffect(() => {
+ return () => {
+ geometry?.dispose();
+ };
+ }, [geometry]);
+
+ if (error) {
+ return (
+
+ {error}
+
+ );
+ }
+ if (!geometry) {
+ return (
+
+
+ Tarama yükleniyor...
+
+ );
+ }
+
+ return (
+
+
+
+
+ );
+}
+
+export default STLViewer;