{"version":3,"file":"fikoyt-shared-fiko-ai-3d-kasa-CTS1dB44.mjs","sources":["../../../projects/shared/src/lib/service/fikoyt-ui/src/lib/fiko-three-js/IFikoThreeJS/fiko-ai-3d/fiko-ai-3d-kasa.ts"],"sourcesContent":["/**\n * FikoAi3DKasa — uretilen 3D modeli tarayicida gecici olarak saklar (IndexedDB).\n *\n * NEDEN: Uretilen GLB/STL yalnizca bellekte bir Blob. Kullanici sonucu\n * \"/🧩/🌌\" 3D goruntuleyicide YENI SEKMEDE acmak isterse blob URL'i o sekmede\n * gecersizdir. Bu yuzden model kasaya yazilir, yeni sekmeye sadece anahtar\n * gecirilir (?fikoAi3D=xxx) ve orada kasadan okunur. Sunucuya yukleme yok.\n *\n * Kayitlar 1 gun sonra otomatik temizlenir.\n */\n\nconst VT_ADI = 'fikoyt-ai3d';\nconst DEPO = 'modeller';\nconst OMUR_MS = 24 * 60 * 60 * 1000;\n\nexport interface FikoAi3DKayit {\n anahtar: string;\n ad: string;\n blob: Blob;\n hedefBoyutMm: number;\n zaman: number;\n}\n\nfunction vtAc(): Promise {\n return new Promise((cozum, hata) => {\n const istek = indexedDB.open(VT_ADI, 1);\n istek.onupgradeneeded = () => {\n const vt = istek.result;\n if (!vt.objectStoreNames.contains(DEPO)) vt.createObjectStore(DEPO, { keyPath: 'anahtar' });\n };\n istek.onsuccess = () => cozum(istek.result);\n istek.onerror = () => hata(istek.error || new Error('IndexedDB acilamadi'));\n });\n}\n\nfunction islem(mod: IDBTransactionMode, is: (depo: IDBObjectStore) => IDBRequest): Promise {\n return vtAc().then(vt => new Promise((cozum, hata) => {\n const tx = vt.transaction(DEPO, mod);\n const istek = is(tx.objectStore(DEPO));\n istek.onsuccess = () => cozum(istek.result as T);\n istek.onerror = () => hata(istek.error || new Error('Kasa islemi basarisiz'));\n tx.oncomplete = () => vt.close();\n }));\n}\n\n/** Suresi dolmus kayitlari siler (sessiz). */\nasync function temizle(): Promise {\n try {\n const hepsi = await islem('readonly', d => d.getAll());\n const simdi = Date.now();\n for (const k of hepsi || []) {\n if (simdi - (k.zaman || 0) > OMUR_MS) await fikoAi3DKasadanSil(k.anahtar);\n }\n } catch { /* kasa yoksa/kapaliysa yoksay */ }\n}\n\n/** Modeli kasaya koyar, anahtarini dondurur. */\nexport async function fikoAi3DKasayaKoy(blob: Blob, ad: string, hedefBoyutMm = 100): Promise {\n await temizle();\n const anahtar = 'm' + Date.now().toString(36) + Math.random().toString(36).slice(2, 8);\n const kayit: FikoAi3DKayit = { anahtar, ad, blob, hedefBoyutMm, zaman: Date.now() };\n await islem('readwrite', d => d.put(kayit));\n return anahtar;\n}\n\n/** Anahtara gore modeli okur (yoksa null). */\nexport async function fikoAi3DKasadanAl(anahtar: string): Promise {\n try { return (await islem('readonly', d => d.get(anahtar))) || null; }\n catch { return null; }\n}\n\nexport async function fikoAi3DKasadanSil(anahtar: string): Promise {\n try { await islem('readwrite', d => d.delete(anahtar)); } catch { /* yoksay */ }\n}\n\n/** 3D goruntuleyici adresi: /🧩/🌌?fikoAi3D= */\nexport function fikoAi3DGoruntuleyiciAdres(anahtar: string): string {\n return '/' + encodeURIComponent('🧩') + '/' + encodeURIComponent('🌌')\n + '?fikoAi3D=' + encodeURIComponent(anahtar);\n}\n"],"names":[],"mappings":"AAAA;;;;;;;;;AASG;AAEH,MAAM,MAAM,GAAG,aAAa;AAC5B,MAAM,IAAI,GAAG,UAAU;AACvB,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;AAUnC,SAAS,IAAI,GAAA;IACX,OAAO,IAAI,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,QAAA,KAAK,CAAC,eAAe,GAAG,MAAK;AAC3B,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM;YACvB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAC7F,QAAA,CAAC;AACD,QAAA,KAAK,CAAC,SAAS,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3C,QAAA,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC7E,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,KAAK,CAAI,GAAuB,EAAE,EAAwC,EAAA;AACjF,IAAA,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,OAAO,CAAI,CAAC,KAAK,EAAE,IAAI,KAAI;QACtD,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;QACpC,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,KAAK,CAAC,SAAS,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,MAAW,CAAC;AAChD,QAAA,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7E,EAAE,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC,KAAK,EAAE;IAClC,CAAC,CAAC,CAAC;AACL;AAEA;AACA,eAAe,OAAO,GAAA;AACpB,IAAA,IAAI;AACF,QAAA,MAAM,KAAK,GAAG,MAAM,KAAK,CAAkB,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACvE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE;YAC3B,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,OAAO;AAAE,gBAAA,MAAM,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E;IACF;AAAE,IAAA,MAAM,oCAAoC;AAC9C;AAEA;AACO,eAAe,iBAAiB,CAAC,IAAU,EAAE,EAAU,EAAE,YAAY,GAAG,GAAG,EAAA;IAChF,MAAM,OAAO,EAAE;AACf,IAAA,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACtF,IAAA,MAAM,KAAK,GAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;AACnF,IAAA,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAA,OAAO,OAAO;AAChB;AAEA;AACO,eAAe,iBAAiB,CAAC,OAAe,EAAA;AACrD,IAAA,IAAI;QAAE,OAAO,CAAC,MAAM,KAAK,CAAgB,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI;IAAE;AACpF,IAAA,MAAM;AAAE,QAAA,OAAO,IAAI;IAAE;AACvB;AAEO,eAAe,kBAAkB,CAAC,OAAe,EAAA;AACtD,IAAA,IAAI;AAAE,QAAA,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAAE;AAAE,IAAA,MAAM,eAAe;AACjF;AAEA;AACM,SAAU,0BAA0B,CAAC,OAAe,EAAA;AACxD,IAAA,OAAO,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,IAAI;AACjE,UAAA,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAChD;;"}