{"version":3,"file":"fikoyt-shared-fiko-ai-3d-dialog.component-C3_enDAG.mjs","sources":["../../../projects/shared/src/lib/service/fikoyt-ui/src/lib/fiko-three-js/IFikoThreeJS/fiko-ai-3d/fiko-comfy-api.ts","../../../projects/shared/src/lib/service/fikoyt-ui/src/lib/fiko-three-js/IFikoThreeJS/fiko-ai-3d/fiko-ai-3d-dialog.component.ts"],"sourcesContent":["/**\n * FikoComfyAPI — ComfyUI (img2-3d) istemcisi.\n *\n * AKIS: resim yukle -> workflow'u yamala -> /prompt -> WS ilerleme -> history -> GLB indir.\n *\n * NOT: fikoyt.com HTTPS/443 uzerinden yayinlandigi icin tarayicidan dogrudan\n * http://...:8188 cagrilamaz (mixed-content). Bu yuzden proxy.conf.js icindeki\n * \"/comfyapi\" yolu kullanilir -> http://127.0.0.1:8188\n * Farkli bir sunucu icin: localStorage.setItem('fikoComfyTaban','https://xxx:8188')\n */\n\nexport interface FikoComfyDosya { filename: string; subfolder: string; type: string; }\n\nexport interface FikoComfyUretimSecenek {\n /** Arka plani otomatik sil (ComfySwitchNode: \"Switch: Remove background\") */\n arkaPlanSil?: boolean;\n /** Doku cozunurlugu (PrimitiveInt: \"Texture Resolution\") — 1024 / 2048 / 4096 */\n dokuCozunurluk?: number;\n /** Her uretimde farkli sonuc icin seed'leri rastgele yap */\n rastgeleSeed?: boolean;\n /** Ilerleme geri bildirimi */\n ilerleme?: (mesaj: string, yuzde: number) => void;\n /** Iptal icin */\n iptalSinyali?: AbortSignal;\n}\n\nexport interface FikoComfySonuc { blob: Blob; ad: string; uzanti: string; }\n\nconst AKIS_YOLU = '/comfy/FikoYT-img2-3d.api.json';\nconst UC_BOYUT_UZANTILAR = ['glb', 'gltf', 'obj', 'stl', 'ply', 'fbx', 'usdz'];\n\nexport class FikoComfyAPI {\n\n /** ComfyUI kok adresi (proxy yolu veya tam URL). */\n static taban(): string {\n try {\n const t = localStorage.getItem('fikoComfyTaban');\n if (t) return t.replace(/\\/+$/, '');\n } catch { /* localStorage kapali olabilir */ }\n return '/comfyapi';\n }\n\n /**\n * Sayfa/sekme kapanirken ya da yenilenirken bile teslim garantili iptal sinyali.\n * Normal `fetch` sayfa kapanirken (beforeunload/pagehide) yarida kesilebilir;\n * `navigator.sendBeacon` tarayici tarafindan kuyruga alinip sayfa kapansa da yollanir.\n */\n static iptalBeaconGonder(): boolean {\n try {\n if (!('sendBeacon' in navigator)) return false;\n return navigator.sendBeacon(this.url('/api/interrupt'));\n } catch { return false; }\n }\n\n private static url(yol: string): string {\n return this.taban() + yol;\n }\n\n private static wsUrl(clientId: string): string {\n const t = this.taban();\n if (/^https?:\\/\\//i.test(t)) return t.replace(/^http/i, 'ws') + '/ws?clientId=' + clientId;\n const p = location.protocol === 'https:' ? 'wss://' : 'ws://';\n return p + location.host + t + '/ws?clientId=' + clientId;\n }\n\n /** Workflow'un API formatini yukler (public/comfy/...). */\n static async akisYukle(): Promise {\n const r = await fetch(AKIS_YOLU, { cache: 'no-cache' });\n if (!r.ok) throw new Error('Is akisi bulunamadi: ' + AKIS_YOLU + ' (' + r.status + ')');\n return await r.json();\n }\n\n /** ComfyUI input klasorune resim yukler. */\n static async resimYukle(dosya: File, altKlasor = 'fikoyt-3d'): Promise {\n const fd = new FormData();\n fd.append('image', dosya, dosya.name);\n fd.append('overwrite', 'true');\n fd.append('subfolder', altKlasor);\n const r = await fetch(this.url('/api/upload/image'), { method: 'POST', body: fd });\n if (!r.ok) throw new Error('Resim yuklenemedi (' + r.status + '): ' + await r.text());\n const j = await r.json();\n return { filename: j.name, subfolder: j.subfolder || '', type: j.type || 'input' };\n }\n\n /** class_type'a gore node id bulur. */\n private static nodeBul(prompt: any, sinif: string, baslik?: string): string | null {\n for (const id of Object.keys(prompt)) {\n const n = prompt[id];\n if (n?.class_type !== sinif) continue;\n if (baslik && n?._meta?.title !== baslik) continue;\n return id;\n }\n return null;\n }\n\n /** Workflow'u secilen resim ve secenekler ile yamalar. */\n private static yamala(prompt: any, resim: FikoComfyDosya, s: FikoComfyUretimSecenek): void {\n const loadId = this.nodeBul(prompt, 'LoadImage');\n if (!loadId) throw new Error('Is akisinda LoadImage node bulunamadi.');\n prompt[loadId].inputs.image =\n (resim.subfolder ? resim.subfolder + '/' : '') + resim.filename;\n\n if (s.arkaPlanSil !== undefined) {\n const sw = this.nodeBul(prompt, 'ComfySwitchNode', 'Switch: Remove background');\n if (sw) prompt[sw].inputs.switch = !!s.arkaPlanSil;\n }\n\n if (s.dokuCozunurluk) {\n const tex = this.nodeBul(prompt, 'PrimitiveInt', 'Texture Resolution');\n if (tex) prompt[tex].inputs.value = s.dokuCozunurluk;\n }\n\n if (s.rastgeleSeed) {\n for (const id of Object.keys(prompt)) {\n const inp = prompt[id]?.inputs;\n if (!inp) continue;\n if (typeof inp.seed === 'number') inp.seed = Math.floor(Math.random() * 1e15);\n if (typeof inp.noise_seed === 'number') inp.noise_seed = Math.floor(Math.random() * 1e15);\n }\n }\n }\n\n /**\n * history ciktilarindan 3D dosya referansini cikarir.\n *\n * KRITIK: Is akisinda BIRDEN FAZLA MeshToFile3D var (ham VoxelToMesh mesh'i,\n * ara adimlar, final). Bunlar ComfyUI temp klasorune \"preview3d_advanced_*.glb\"\n * olarak yazilir. FINAL dosya yalnizca Save3DAdvanced'in ciktisidir\n * (output/3d/ComfyUI_*.glb). outputs'un anahtar sirasi garanti degildir; bu yuzden\n * once oncelikli node id'lerine, sonra type='output' olanlara bakilir.\n */\n private static ciktiBul(outputs: any, oncelikliIdler: string[] = []): FikoComfyDosya | null {\n const dene = (v: any): FikoComfyDosya | null => {\n if (typeof v === 'string') {\n // \"3d/ComfyUI_00001_.glb\" veya \"3d/ComfyUI_00001_.glb [output]\"\n const m = v.match(/^(.*?)(?:\\s*\\[(\\w+)\\])?$/);\n if (!m) return null;\n const yol = (m[1] || '').trim();\n const tip = m[2] || 'output';\n const uz = yol.split('.').pop()?.toLowerCase() || '';\n if (!UC_BOYUT_UZANTILAR.includes(uz)) return null;\n const i = yol.lastIndexOf('/');\n return {\n filename: i >= 0 ? yol.slice(i + 1) : yol,\n subfolder: i >= 0 ? yol.slice(0, i) : '',\n type: tip\n };\n }\n if (v && typeof v === 'object' && typeof v.filename === 'string') {\n const uz = v.filename.split('.').pop()?.toLowerCase() || '';\n if (!UC_BOYUT_UZANTILAR.includes(uz)) return null;\n return { filename: v.filename, subfolder: v.subfolder || '', type: v.type || 'output' };\n }\n return null;\n };\n\n // Tek bir node'un ciktisindan 3D dosya cikar.\n const nodedanAl = (o: any): FikoComfyDosya | null => {\n for (const k of Object.keys(o || {})) {\n const dizi = Array.isArray(o[k]) ? o[k] : [o[k]];\n for (const v of dizi) {\n const b = dene(v);\n if (b) return b;\n }\n }\n return null;\n };\n\n // 1) Oncelikli node'lar (Save3DAdvanced ve onu besleyen node) — FINAL dosya burada.\n for (const id of oncelikliIdler) {\n if (!id || !outputs?.[id]) continue;\n const b = nodedanAl(outputs[id]);\n if (b) return b;\n }\n\n // 2) type='output' olanlar (temp'teki ara onizlemeler elenir).\n const hepsi: FikoComfyDosya[] = [];\n for (const nodeId of Object.keys(outputs || {})) {\n const b = nodedanAl(outputs[nodeId]);\n if (b) hepsi.push(b);\n }\n const kalici = hepsi.find(d => (d.type || 'output') === 'output');\n if (kalici) return kalici;\n\n // 3) Son care: ne bulduysak.\n return hepsi[0] || null;\n }\n\n /** ComfyUI output/temp klasorunden dosya indirir. */\n static async dosyaIndir(d: FikoComfyDosya): Promise {\n const q = new URLSearchParams({\n filename: d.filename, subfolder: d.subfolder || '', type: d.type || 'output'\n });\n const r = await fetch(this.url('/api/view?' + q.toString()));\n if (!r.ok) throw new Error('3D dosya indirilemedi (' + r.status + ')');\n return await r.blob();\n }\n\n /** Kuyruga atar, prompt_id doner. */\n private static async kuyrugaAt(prompt: any, clientId: string): Promise {\n const r = await fetch(this.url('/api/prompt'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ prompt, client_id: clientId })\n });\n const govde = await r.text();\n if (!r.ok) throw new Error('Is akisi reddedildi (' + r.status + '): ' + govde.slice(0, 600));\n const j = JSON.parse(govde);\n if (j.node_errors && Object.keys(j.node_errors).length) {\n throw new Error('Node hatasi: ' + JSON.stringify(j.node_errors).slice(0, 600));\n }\n return j.prompt_id;\n }\n\n private static async gecmisAl(promptId: string): Promise {\n const r = await fetch(this.url('/api/history/' + promptId));\n if (!r.ok) return null;\n const j = await r.json();\n return j?.[promptId] || null;\n }\n\n /** Calismanin bitmesini bekler (WS; kopmada polling'e duser). */\n private static bekle(promptId: string, clientId: string, s: FikoComfyUretimSecenek): Promise {\n return new Promise((resolve, reject) => {\n let bitti = false;\n let ws: WebSocket | null = null;\n let zaman: any = null;\n\n const kapat = () => {\n if (zaman) clearInterval(zaman);\n try { ws?.close(); } catch { /* yoksay */ }\n };\n const tamam = () => { if (!bitti) { bitti = true; kapat(); resolve(); } };\n const hata = (e: any) => { if (!bitti) { bitti = true; kapat(); reject(e); } };\n\n s.iptalSinyali?.addEventListener('abort', () => {\n fetch(this.url('/api/interrupt'), { method: 'POST' }).catch(() => { });\n hata(new Error('Iptal edildi'));\n });\n\n try {\n ws = new WebSocket(this.wsUrl(clientId));\n ws.onmessage = (ev) => {\n if (typeof ev.data !== 'string') return; // binary preview — yoksay\n let m: any; try { m = JSON.parse(ev.data); } catch { return; }\n const d = m?.data || {};\n if (d.prompt_id && d.prompt_id !== promptId) return;\n\n if (m.type === 'progress' && d.max) {\n const oran = Math.min(1, (d.value || 0) / d.max);\n s.ilerleme?.('Uretiliyor… (' + (d.value || 0) + '/' + d.max + ')', 15 + oran * 70);\n } else if (m.type === 'executing') {\n if (d.node) s.ilerleme?.('Isleniyor: ' + d.node, -1);\n else if (d.prompt_id === promptId) tamam(); // node=null -> bitti\n } else if (m.type === 'execution_success') {\n tamam();\n } else if (m.type === 'execution_error') {\n hata(new Error('ComfyUI hatasi: ' + (d.exception_message || d.node_type || 'bilinmiyor')));\n } else if (m.type === 'execution_interrupted') {\n hata(new Error('Uretim kesildi'));\n }\n };\n } catch { /* WS kurulamadi — polling devrede */ }\n\n // Guvenlik agi: WS kopsa/mesaj kacsa bile history'den bitisi yakala\n zaman = setInterval(async () => {\n try {\n const g = await this.gecmisAl(promptId);\n const durum = g?.status?.status_str;\n if (durum === 'error') return hata(new Error('ComfyUI: is akisi hata ile bitti'));\n if (g?.status?.completed || (g?.outputs && Object.keys(g.outputs).length)) tamam();\n } catch { /* yoksay */ }\n }, 3000);\n });\n }\n\n /**\n * FINAL ciktiyi veren node id'leri (oncelik sirasiyla):\n * 1) Save3DAdvanced (veya Save3D/SaveGLB turevi) — tam cozunurluklu son dosya\n * 2) onu besleyen model_3d node'u (son MeshToFile3D)\n * Boylece ham VoxelToMesh onizlemesi asla secilmez.\n */\n private static finalNodeIdleri(prompt: any): string[] {\n const idler: string[] = [];\n let kaydetId: string | null = null;\n for (const id of Object.keys(prompt || {})) {\n const s = prompt[id]?.class_type || '';\n if (/^Save3D/i.test(s) || /^SaveGLB/i.test(s)) { kaydetId = id; break; }\n }\n if (kaydetId) {\n idler.push(kaydetId);\n const kaynak = prompt[kaydetId]?.inputs?.model_3d;\n if (Array.isArray(kaynak) && typeof kaynak[0] === 'string') idler.push(kaynak[0]);\n }\n return idler;\n }\n\n /**\n * Resimden 3D model uretir ve dosyayi (GLB — dokulu/renkli) dondurur.\n */\n static async uret(resimDosyasi: File, secenek: FikoComfyUretimSecenek = {}): Promise {\n const s = secenek;\n s.ilerleme?.('ComfyUI is akisi yukleniyor…', 3);\n const prompt = await this.akisYukle();\n\n s.ilerleme?.('Resim gonderiliyor…', 6);\n const resim = await this.resimYukle(resimDosyasi);\n\n this.yamala(prompt, resim, s);\n\n const clientId = 'fikoyt-' + Math.random().toString(36).slice(2) + Date.now().toString(36);\n s.ilerleme?.('Kuyruga alindi…', 10);\n const promptId = await this.kuyrugaAt(prompt, clientId);\n\n await this.bekle(promptId, clientId, s);\n\n s.ilerleme?.('Model indiriliyor…', 90);\n let g = await this.gecmisAl(promptId);\n for (let i = 0; i < 10 && !g?.outputs; i++) { // history biraz gecikebilir\n await new Promise(r => setTimeout(r, 700));\n g = await this.gecmisAl(promptId);\n }\n const dosya = this.ciktiBul(g?.outputs, this.finalNodeIdleri(prompt));\n if (!dosya) throw new Error('Is akisi bitti ama 3D cikti bulunamadi (Save3DAdvanced).');\n\n const blob = await this.dosyaIndir(dosya);\n s.ilerleme?.('Hazir', 100);\n return {\n blob,\n ad: dosya.filename,\n uzanti: (dosya.filename.split('.').pop() || 'glb').toLowerCase()\n };\n }\n}\n","/**\n * FikoAi3DDialogComponent — \"Resimden 3D\" (ComfyUI / FikoYT-img2-3d is akisi).\n *\n * Kullanici resim secer -> ComfyUI'a gonderilir -> uretilen dokulu GLB\n * dogrudan aktif sahneye renkli olarak eklenir.\n */\nimport { Component, Input, ChangeDetectorRef, HostListener, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FikoComfyAPI } from './fiko-comfy-api';\nimport { fikoAi3DSahneyeEkle } from './fiko-ai-3d-yukleyici';\nimport { fikoGlbBlobundanStl, fikoStlAdi, fikoDosyaIndir } from '../FikoThreeCam/FikoSTLDisaAktar';\nimport { fikoObjeyiStepIndir, FikoStepModu } from '../FikoThreeCam/FikoSTEPDisaAktar';\n\n@Component({\n selector: 'fikoyt-fiko-ai-3d',\n standalone: true,\n imports: [CommonModule, FormsModule],\n styles: [`\n .fa3-kok { padding: 10px; width: 330px; font-size: 12px; color: #e8eef5; }\n .fa3-sec { border: 1px dashed #4a6f9a; border-radius: 8px; padding: 14px; text-align: center;\n cursor: pointer; background: rgba(255,255,255,.04); }\n .fa3-sec:hover { background: rgba(255,255,255,.09); }\n .fa3-onizleme { width: 100%; max-height: 170px; object-fit: contain; border-radius: 8px;\n background: #0e1420; margin-top: 8px; }\n .fa3-satir { display:flex; align-items:center; justify-content:space-between; margin-top: 8px; gap: 8px; }\n .fa3-satir label { opacity: .9; }\n .fa3-satir select, .fa3-satir input[type=number] { width: 110px; }\n .fa3-bar { height: 6px; border-radius: 4px; background: #24313f; overflow: hidden; margin-top: 10px; }\n .fa3-bar > i { display:block; height:100%; background: linear-gradient(90deg,#0ea5e9,#22d3ee); transition: width .25s; }\n .fa3-durum { margin-top: 6px; min-height: 16px; opacity: .85; }\n .fa3-hata { margin-top: 6px; color: #ff8a8a; word-break: break-word; }\n .fa3-dugmeler { display:flex; gap:6px; margin-top: 12px; }\n .fa3-not { margin-top: 10px; font-size: 11px; opacity: .6; line-height: 1.4; }\n .fa3-ayirac { height: 1px; background: rgba(255,255,255,.12); margin: 12px 0 4px; }\n .fa3-step-ayar { margin-top: 6px; padding: 8px; border-radius: 6px;\n background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.08); }\n .fa3-ayar-dugme { padding: 4px 7px !important; }\n .fa3-sonuc { margin-top: 12px; padding: 10px; border-radius: 8px;\n background: rgba(34,211,238,.08); border: 1px solid rgba(34,211,238,.35); }\n .fa3-sonuc-bas { font-weight: 600; margin-bottom: 2px; color: #7fe7f5; }\n .fa3-sonuc-bilgi { font-size: 11px; opacity: .75; }\n .fa3-yuzde { float: right; opacity: .7; }\n `],\n template: `\n
\n
\n \n {{ dosya ? dosya.name : 'Resim secmek icin tikla (PNG / JPG / WEBP)' }}\n
\n \"onizleme\"\n\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n\n
\n\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n \n \n \n \n
\n\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n 0 ya da bos = sinirsiz (sadelestirme yapma). B-Rep'te her ucgen ~9 STEP satiri\n uretir; yuksek deger buyuk/yavas dosyaya, dusuk deger daha az detaya yol acar.\n Tessellated'de ucgen basina 1 satir oldugu icin genelde sinirsiz birakmak guvenlidir.\n Ayarlar tarayicinda saklanir, bir dahaki acilista hatirlanir.\n
\n
\n\n
0\">
\n
\n 0\">%{{ yuzde }}\n {{ durum }}\n
\n
{{ hata }}
\n\n
\n \n \n
\n\n
\n
Sonuc hazir
\n
{{ sonucBilgi }}
\n\n
\n \n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n Is akisi dokulu GLB uretir. STL secersen model tarayicida STL'e\n cevrilir — renk/doku tasimaz ama her CAD/dilimleyici acar. Sahneye eklenen ve\n indirilen STL, hedef boyuta (mm) olceklenmis ve tabana oturtulmus haldedir.\n STEP indirmek icin model once sahneye eklenmis olmali (mesh uzerinden uretilir);\n \"Sahneye eklenecek\" secenegini \"Ekleme\" birakirsan STEP butonlari pasif kalir.\n Agactaki ogeye sag tiklayip sonradan da \"STL / STEP olarak indir\" diyebilirsin.\n
\n
\n `\n})\nexport class FikoAi3DDialogComponent implements OnDestroy {\n\n /** FikoThreeJsComponent (DialogFiko.ac -> parametreler.anaGosterim) */\n @Input() anaGosterim: any;\n\n dosya: File | null = null;\n onizlemeUrl: string | null = null;\n\n arkaPlanSil = true;\n dokuCozunurluk = 2048;\n hedefBoyutMm = 100;\n rastgeleSeed = true;\n\n /** Sahneye hangi format eklensin: 'glb' (renkli) | 'stl' (renksiz) | 'yok' */\n sahneFormat: 'glb' | 'stl' | 'yok' = 'stl';\n /** Uretim bitince dosyayi diske indir */\n stlIndir = true;\n glbIndir = false;\n stepIndir = false;\n stepModu: FikoStepModu = 'brep';\n stepCalisiyor = false;\n stepAyarlarAcik = false;\n /** 0 = sinirsiz (sadelestirme yapma). */\n stepHedefUcgenBrep = 25000;\n /** 0 = sinirsiz. */\n stepHedefUcgenTessellated = 0;\n stepKaynakTolerans = 0.001;\n private static readonly STEP_AYAR_ANAHTARI = 'fikoStepAyarlari';\n\n calisiyor = false;\n yuzde = 0;\n durum = '';\n hata = '';\n\n /** Uretim sonrasi elde tutulan sonuc (butonlar bunlari kullanir) */\n glbBlob: Blob | null = null;\n stlBlob: Blob | null = null;\n glbAd = '';\n stlAd = '';\n sonucBilgi = '';\n eklenenCizim: any = null;\n eklemeCalisiyor = false;\n acmaCalisiyor = false;\n\n get sonucVar(): boolean { return !!(this.glbBlob || this.stlBlob); }\n get eklendiMi(): boolean { return !!this.eklenenCizim; }\n\n private kontrol: AbortController | null = null;\n\n constructor(private cd: ChangeDetectorRef) {\n this.stepAyarlariYukle();\n }\n\n private stepAyarlariYukle(): void {\n try {\n const ham = localStorage.getItem(FikoAi3DDialogComponent.STEP_AYAR_ANAHTARI);\n if (!ham) return;\n const a = JSON.parse(ham);\n if (typeof a?.hedefUcgenBrep === 'number' && a.hedefUcgenBrep >= 0) this.stepHedefUcgenBrep = a.hedefUcgenBrep;\n if (typeof a?.hedefUcgenTessellated === 'number' && a.hedefUcgenTessellated >= 0) this.stepHedefUcgenTessellated = a.hedefUcgenTessellated;\n if (typeof a?.kaynakTolerans === 'number' && a.kaynakTolerans > 0) this.stepKaynakTolerans = a.kaynakTolerans;\n } catch { /* localStorage kapali olabilir / bozuk veri */ }\n }\n\n /** STEP ayarlarini tarayici localStorage'ina yazar (bir dahaki acilista hatirlanir). */\n stepAyarlariKaydet(): void {\n try {\n localStorage.setItem(FikoAi3DDialogComponent.STEP_AYAR_ANAHTARI, JSON.stringify({\n hedefUcgenBrep: this.stepHedefUcgenBrep,\n hedefUcgenTessellated: this.stepHedefUcgenTessellated,\n kaynakTolerans: this.stepKaynakTolerans\n }));\n } catch { /* yoksay */ }\n }\n\n ngOnDestroy(): void {\n // sendBeacon: normal fetch (kontrol.abort() ile tetiklenen) dialog kapanirken\n // component yok edilme sirasina gore yarida kalabilir; beacon garanti teslim eder.\n if (this.calisiyor) FikoComfyAPI.iptalBeaconGonder();\n this.kontrol?.abort();\n if (this.onizlemeUrl) URL.revokeObjectURL(this.onizlemeUrl);\n }\n\n /**\n * Sekme/pencere kapanirken ya da yenilenirken calisan bir uretim varsa ComfyUI'a\n * iptal sinyali yollar. `sendBeacon` kullanir cunku normal `fetch` (kontrol.abort()\n * ile tetiklenen) sayfa kapanirken yarida kesilebilir; `ngOnDestroy` de her zaman\n * garanti calismaz (sekme/pencere kapatma bir Angular yasam dongusu degildir).\n */\n @HostListener('window:beforeunload')\n @HostListener('window:pagehide')\n sayfaKapaniyor(): void {\n if (this.calisiyor) FikoComfyAPI.iptalBeaconGonder();\n }\n\n dosyaSec(): void {\n if (this.calisiyor) return;\n const inp = document.createElement('input');\n inp.type = 'file';\n inp.accept = 'image/png,image/jpeg,image/webp';\n inp.onchange = (e: any) => {\n const f: File = e.target?.files?.[0];\n if (!f) return;\n if (this.onizlemeUrl) URL.revokeObjectURL(this.onizlemeUrl);\n this.dosya = f;\n this.onizlemeUrl = URL.createObjectURL(f);\n this.hata = '';\n this.durum = '';\n this.yuzde = 0;\n this.cd.detectChanges();\n };\n inp.click();\n }\n\n iptal(): void {\n this.kontrol?.abort();\n }\n\n /** Buton/sahne icin hangi dosya kullanilacak (sahne formatina gore). */\n private secilenSonuc(): { blob: Blob; ad: string } | null {\n if (this.sahneFormat === 'glb' && this.glbBlob) return { blob: this.glbBlob, ad: this.glbAd };\n if (this.stlBlob) return { blob: this.stlBlob, ad: this.stlAd };\n if (this.glbBlob) return { blob: this.glbBlob, ad: this.glbAd };\n return null;\n }\n\n private dosyaBoyutu(b: Blob): string {\n const mb = b.size / (1024 * 1024);\n return mb >= 1 ? mb.toFixed(1) + ' MB' : Math.round(b.size / 1024) + ' KB';\n }\n\n /** Sonucu aktif sahneye ekler. */\n async sahneyeEkle(): Promise {\n const s = this.secilenSonuc();\n if (!s || this.eklemeCalisiyor) return;\n this.eklemeCalisiyor = true;\n this.cd.detectChanges();\n try {\n this.eklenenCizim = await fikoAi3DSahneyeEkle(\n this.anaGosterim, s.blob, s.ad, this.hedefBoyutMm\n );\n this.hata = '';\n } catch (e: any) {\n this.hata = e?.message || String(e);\n } finally {\n this.eklemeCalisiyor = false;\n this.cd.detectChanges();\n }\n }\n\n /** Eklenen modeli ekrana sigdirir. */\n ekranaSigdir(): void {\n try {\n const sahne = this.anaGosterim?.sahneler?.[0];\n sahne?.ekranaSigdir?.(sahne);\n this.anaGosterim?.ciz?.();\n } catch { /* yoksay */ }\n }\n\n /**\n * Sonucu 3D goruntuleyicide (/🧩/🌌) YENI SEKMEDE acar.\n * Model yerel kasaya (IndexedDB) yazilir, yeni sekmeye sadece anahtar gider.\n */\n async yeniSekmedeAc(): Promise {\n const s = this.secilenSonuc();\n if (!s || this.acmaCalisiyor) return;\n this.acmaCalisiyor = true;\n this.durum = 'Goruntuleyici icin hazirlaniyor…';\n this.cd.detectChanges();\n try {\n const kasa = await import('./fiko-ai-3d-kasa');\n const anahtar = await kasa.fikoAi3DKasayaKoy(s.blob, s.ad, this.hedefBoyutMm);\n window.open(kasa.fikoAi3DGoruntuleyiciAdres(anahtar), '_blank');\n this.durum = 'Yeni sekmede aciliyor: ' + s.ad;\n } catch (e: any) {\n this.hata = 'Yeni sekmede acilamadi: ' + (e?.message || e);\n } finally {\n this.acmaCalisiyor = false;\n this.cd.detectChanges();\n }\n }\n\n indirStl(): void { if (this.stlBlob) fikoDosyaIndir(this.stlBlob, this.stlAd); }\n indirGlb(): void { if (this.glbBlob) fikoDosyaIndir(this.glbBlob, this.glbAd); }\n\n /** Sahneye eklenmis objeyi STEP olarak disa aktarir (mesh'ten uretilir, bu yuzden once eklenmis olmasi sart). */\n async indirStep(mod: FikoStepModu): Promise {\n if (!this.eklenenCizim || this.stepCalisiyor) return;\n this.stepCalisiyor = true;\n this.hata = '';\n this.durum = 'STEP hazirlaniyor (' + (mod === 'brep' ? 'B-Rep' : 'Tessellated') + ')…';\n this.cd.detectChanges();\n try {\n const hedefUcgenAyari = mod === 'brep' ? this.stepHedefUcgenBrep : this.stepHedefUcgenTessellated;\n await fikoObjeyiStepIndir(this.eklenenCizim, mod, this.eklenenCizim.name, {\n // 0/bos = kullanicinin \"sinirsiz\" secimi — undefined gecince modulun kendi\n // varsayilani (B-Rep icin 25000) da devre disi kalir, tam mesh gider.\n hedefUcgen: hedefUcgenAyari > 0 ? hedefUcgenAyari : undefined,\n kaynakTolerans: this.stepKaynakTolerans > 0 ? this.stepKaynakTolerans : undefined,\n ilerleme: (mesaj: string, yuzde: number) => {\n this.durum = mesaj + '…';\n this.yuzde = yuzde;\n this.cd.detectChanges();\n }\n });\n } catch (e: any) {\n this.hata = 'STEP olarak aktarilamadi: ' + (e?.message || e);\n } finally {\n this.stepCalisiyor = false;\n this.durum = '';\n this.cd.detectChanges();\n }\n }\n\n async uret(): Promise {\n if (!this.dosya || this.calisiyor) return;\n\n this.calisiyor = true;\n this.hata = '';\n this.yuzde = 1;\n this.durum = 'Baslatiliyor…';\n this.glbBlob = null;\n this.stlBlob = null;\n this.glbAd = '';\n this.stlAd = '';\n this.sonucBilgi = '';\n this.eklenenCizim = null;\n this.kontrol = new AbortController();\n this.cd.detectChanges();\n\n try {\n const sonuc = await FikoComfyAPI.uret(this.dosya, {\n arkaPlanSil: this.arkaPlanSil,\n dokuCozunurluk: this.dokuCozunurluk,\n rastgeleSeed: this.rastgeleSeed,\n iptalSinyali: this.kontrol.signal,\n ilerleme: (mesaj, y) => {\n this.durum = mesaj;\n if (y >= 0) this.yuzde = Math.round(y);\n this.cd.detectChanges();\n }\n });\n\n const glbMi = sonuc.uzanti !== 'stl';\n const stlAdi = fikoStlAdi(sonuc.ad);\n\n // STL gerekiyorsa (sahneye eklemek, indirmek veya buton icin) burada uretilir.\n this.durum = 'STL üretiliyor…';\n this.cd.detectChanges();\n const stlBlob = glbMi\n ? await fikoGlbBlobundanStl(sonuc.blob, this.hedefBoyutMm)\n : sonuc.blob;\n\n this.glbBlob = glbMi ? sonuc.blob : null;\n this.glbAd = glbMi ? sonuc.ad : '';\n this.stlBlob = stlBlob;\n this.stlAd = stlAdi;\n this.sonucBilgi = this.dosyaBoyutu(stlBlob) + ' STL'\n + (this.glbBlob ? ' · ' + this.dosyaBoyutu(this.glbBlob) + ' GLB' : '')\n + ' · hedef ' + this.hedefBoyutMm + ' mm';\n\n if (this.sahneFormat !== 'yok') {\n this.durum = 'Sahneye ekleniyor…';\n this.cd.detectChanges();\n await this.sahneyeEkle();\n }\n\n if (this.stlIndir) fikoDosyaIndir(stlBlob, stlAdi);\n if (this.glbIndir && this.glbBlob) fikoDosyaIndir(this.glbBlob, this.glbAd);\n if (this.stepIndir && this.eklenenCizim) await this.indirStep(this.stepModu);\n\n this.yuzde = 100;\n this.durum = this.eklendiMi\n ? 'Eklendi: ' + (this.eklenenCizim?.name || stlAdi)\n : 'Hazir: ' + stlAdi;\n } catch (e: any) {\n this.hata = e?.message || String(e);\n this.durum = '';\n } finally {\n this.calisiyor = false;\n this.kontrol = null;\n this.cd.detectChanges();\n }\n }\n}\n"],"names":["i2"],"mappings":"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"}