"use strict";var G=Object.create;var y=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var r in e)y(t,r,{get:e[r],enumerable:!0})},A=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of W(e))!j.call(t,o)&&o!==r&&y(t,o,{get:()=>e[o],enumerable:!(s=N(e,o))||s.enumerable});return t};var E=(t,e,r)=>(r=t!=null?G(z(t)):{},A(e||!t||!t.__esModule?y(r,"default",{value:t,enumerable:!0}):r,t)),J=t=>A(y({},"__esModule",{value:!0}),t);var ut={};H(ut,{PNG_COMPRESSION:()=>I,PNG_EXT:()=>m,clearDerivedImageCache:()=>Z,ensureMat8U:()=>O,ensurePngFile:()=>X,fileContentFingerprint:()=>S,isPngPath:()=>F,normalizePath:()=>d,pngCacheName:()=>Y,pngContentCacheKey:()=>R,prewarmPngBgrCache:()=>at,prewarmPngBgrCacheAsync:()=>it,readPngBgrBuffer:()=>_,readPngHeaderFromBase64:()=>D,resizeBgrBuffer:()=>ct,toPngFileName:()=>C,toSkiaUri:()=>L});module.exports=J(ut);var l=E(require("react-native-fs")),B=E(require("upng-js")),n=require("react-native-fast-opencv");const m=".png",I=0;function d(t){return t.startsWith("file://")?t.slice(7):t}function L(t){return t?t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:")||t.startsWith("file://")?t:`file://${d(t)}`:null}function C(t){const e=t.replace(/\.(jpe?g|webp|gif|bmp|heic|heif)$/i,"");return e.toLowerCase().endsWith(m)?e:`${e}${m}`}function F(t){return d(t).toLowerCase().endsWith(m)}function U(t){let e=5381;for(let r=0;r>>0).toString(16)}function K(t){return U(t)}async function S(t){const e=d(t),r=await l.default.stat(e);return U(`${r.size}:${r.mtime??r.ctime}`)}function q(t,e){const r=C(t).replace(/\.png$/i,"");return`${l.default.CachesDirectoryPath}/${r}_${e}${m}`}async function V(t,e){const r=C(t).replace(/\.png$/i,""),s=`${l.default.CachesDirectoryPath}/${C(t)}`,o=`${r}_`;s!==e&&await l.default.exists(s)&&await l.default.unlink(s);const c=await l.default.readDir(l.default.CachesDirectoryPath);for(const a of c)a.isFile()&&a.name.startsWith(o)&&a.name.endsWith(m)&&a.path!==e&&await l.default.unlink(a.path)}async function X(t,e){const r=d(t),s=await S(r),o=q(e,s);if(!await l.default.exists(r))throw new Error(`Image does not exist: ${r}`);if(r===o||await l.default.exists(o))return o;if(F(r))return await l.default.copyFile(r,o),await V(e,o),o;const c=await l.default.readFile(r,"base64"),a=n.OpenCV.base64ToMat(c);return n.OpenCV.saveMatToFile(a,o,"png",I),n.OpenCV.releaseBuffers([a.id]),await V(e,o),o}function Y(t,e){return`${e}_${K(d(t))}${m}`}const Q=["seg_lowfreq_","seg_highfreq_","imread_","img_","tmp_"];async function Z(){const t=await l.default.readDir(l.default.CachesDirectoryPath);let e=0;for(const r of t)!r.isFile()||!r.name.endsWith(m)||Q.some(s=>r.name.startsWith(s))&&(await l.default.unlink(r.path),e+=1);return e}const tt=7;function T(t){return t&tt}function et(t){return(t>>3)+1}function rt(t){switch(t){case 0:return 1;case 2:case 3:return 3;case 4:return 2;case 6:return 4;default:return 3}}function D(t){const e=t.slice(0,40),r=atob(e);function s(i){return(r.charCodeAt(i)<<24|r.charCodeAt(i+1)<<16|r.charCodeAt(i+2)<<8|r.charCodeAt(i+3))>>>0}const o=[137,80,78,71,13,10,26,10];for(let i=0;i<8;i++)if(r.charCodeAt(i)!==o[i])throw new Error("Invalid PNG file (signature mismatch)");const c=s(16),a=s(20),g=r.charCodeAt(24),u=r.charCodeAt(25);if(c===0||a===0)throw new Error(`Invalid PNG size: ${c}x${a}`);return{width:c,height:a,bitDepth:g,colorType:u}}function O(t,e){let r;try{r=n.OpenCV.toJSValue(t)}catch(h){if(!e)throw new Error(`OpenCV toJSValue failed (mat id=${t?.id??"unknown"}): ${h.message}`);const{width:f,height:p,bitDepth:w,colorType:b}=e,P=rt(b);if(w<=8)return{mat:t,extraReleaseIds:[]};const M=P===1?n.DataTypes.CV_8UC1:P===4?n.DataTypes.CV_8UC4:n.DataTypes.CV_8UC3,x=n.OpenCV.createObject(n.ObjectType.Mat,p,f,M),k=P>=3?1/257:255/65535;return n.OpenCV.invoke("convertTo",t,x,M,k,0),{mat:x,extraReleaseIds:[x.id]}}if(T(r.type)===n.DataTypes.CV_8U)return{mat:t,extraReleaseIds:[]};const s=r.rows,o=r.cols,c=et(r.type),a=c===1?n.DataTypes.CV_8UC1:c===4?n.DataTypes.CV_8UC4:c===2?n.DataTypes.CV_8UC2:n.DataTypes.CV_8UC3,g=n.OpenCV.createObject(n.ObjectType.Mat,s,o,a),u=T(r.type);let i=1;return u===n.DataTypes.CV_16U||u===n.DataTypes.CV_16S?i=c>=3?1/257:255/65535:(u===n.DataTypes.CV_32F||u===n.DataTypes.CV_64F)&&(i=255),n.OpenCV.invoke("convertTo",t,g,a,i,0),{mat:g,extraReleaseIds:[g.id]}}function nt(t){const e=globalThis.atob;if(!e)throw new Error("JS PNG fallback: atob unavailable");const r=e(t),s=new Uint8Array(r.length);for(let f=0;f{})}}async function it(t){await Promise.all(t.map(e=>_(d(e))))}async function R(t){const e=await l.default.stat(d(t));return`${e.size}:${e.mtime??e.ctime}`}async function _(t){const e=d(t),r=await R(e),s=v.get(r);if(s)return s;const o=$.get(r);if(o)return o;const c=(async()=>{if(!await l.default.exists(e))throw new Error(`Image file does not exist: ${e}`);const g=await l.default.stat(e);if(g.size===0)throw new Error(`Image file is empty (0 bytes): ${e}`);const u=await l.default.readFile(e,"base64");if(!u||u.length===0)throw new Error(`Read base64 is empty: ${e}`);let i;try{i=st(u)}catch(f){throw new Error(`PNG decode failed: ${e} (${g.size} bytes) - ${f.message}`)}const h={buffer:i.buffer,cols:i.cols,rows:i.rows};return v.set(r,h),h})();$.set(r,c);try{return await c}finally{$.delete(r)}}function ct(t,e,r,s,o){if(e===s&&r===o)return t;const c=new Uint8Array(s*o*3);for(let a=0;a