@buoy-gg/images 7.0.39 → 7.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +6 -0
  2. package/lib/commonjs/autoCapture.js +4 -0
  3. package/lib/commonjs/autoCapture.js.map +1 -0
  4. package/lib/commonjs/autoCapture.web.js +6 -0
  5. package/lib/commonjs/autoCapture.web.js.map +1 -0
  6. package/lib/commonjs/capture/actions.js +4 -3
  7. package/lib/commonjs/capture/actions.js.map +1 -1
  8. package/lib/commonjs/capture/install.web.js +250 -0
  9. package/lib/commonjs/capture/install.web.js.map +1 -0
  10. package/lib/commonjs/capture/installRnImage.js +5 -1
  11. package/lib/commonjs/capture/installRnImage.js.map +1 -1
  12. package/lib/commonjs/capture/nativeImageModules.js +30 -0
  13. package/lib/commonjs/capture/nativeImageModules.js.map +1 -0
  14. package/lib/commonjs/capture/nativeImageModules.web.js +18 -0
  15. package/lib/commonjs/capture/nativeImageModules.web.js.map +1 -0
  16. package/lib/commonjs/capture/rnDecoratorEarly.js +55 -0
  17. package/lib/commonjs/capture/rnDecoratorEarly.js.map +1 -0
  18. package/lib/commonjs/capture/savings.web.js +71 -0
  19. package/lib/commonjs/capture/savings.web.js.map +1 -0
  20. package/lib/commonjs/components/ImageDetail.js +3 -2
  21. package/lib/commonjs/components/ImageDetail.js.map +1 -1
  22. package/lib/commonjs/components/ImageRow.js +1 -1
  23. package/lib/commonjs/components/ImageRow.js.map +1 -1
  24. package/lib/commonjs/components/ImagesModal.js +1 -1
  25. package/lib/commonjs/components/ImagesModal.js.map +1 -1
  26. package/lib/commonjs/components/ImagesRoot.web.js +13 -0
  27. package/lib/commonjs/components/ImagesRoot.web.js.map +1 -0
  28. package/lib/commonjs/index.js +1 -1
  29. package/lib/commonjs/registerEarly.js +14 -0
  30. package/lib/commonjs/registerEarly.js.map +1 -0
  31. package/lib/commonjs/sync/imagesSyncAdapter.js +2 -1
  32. package/lib/commonjs/sync/imagesSyncAdapter.js.map +1 -1
  33. package/lib/module/autoCapture.js +4 -0
  34. package/lib/module/autoCapture.js.map +1 -0
  35. package/lib/module/autoCapture.web.js +5 -0
  36. package/lib/module/autoCapture.web.js.map +1 -0
  37. package/lib/module/capture/actions.js +4 -3
  38. package/lib/module/capture/actions.js.map +1 -1
  39. package/lib/module/capture/install.web.js +243 -0
  40. package/lib/module/capture/install.web.js.map +1 -0
  41. package/lib/module/capture/installRnImage.js +5 -2
  42. package/lib/module/capture/installRnImage.js.map +1 -1
  43. package/lib/module/capture/nativeImageModules.js +24 -0
  44. package/lib/module/capture/nativeImageModules.js.map +1 -0
  45. package/lib/module/capture/nativeImageModules.web.js +12 -0
  46. package/lib/module/capture/nativeImageModules.web.js.map +1 -0
  47. package/lib/module/capture/rnDecoratorEarly.js +50 -0
  48. package/lib/module/capture/rnDecoratorEarly.js.map +1 -0
  49. package/lib/module/capture/savings.web.js +67 -0
  50. package/lib/module/capture/savings.web.js.map +1 -0
  51. package/lib/module/components/ImageDetail.js +3 -2
  52. package/lib/module/components/ImageDetail.js.map +1 -1
  53. package/lib/module/components/ImageRow.js +1 -1
  54. package/lib/module/components/ImageRow.js.map +1 -1
  55. package/lib/module/components/ImagesModal.js +1 -1
  56. package/lib/module/components/ImagesModal.js.map +1 -1
  57. package/lib/module/components/ImagesRoot.web.js +9 -0
  58. package/lib/module/components/ImagesRoot.web.js.map +1 -0
  59. package/lib/module/index.js +1 -1
  60. package/lib/module/index.js.map +1 -1
  61. package/lib/module/registerEarly.js +14 -0
  62. package/lib/module/registerEarly.js.map +1 -0
  63. package/lib/module/sync/imagesSyncAdapter.js +2 -1
  64. package/lib/module/sync/imagesSyncAdapter.js.map +1 -1
  65. package/lib/typescript/autoCapture.d.ts +2 -0
  66. package/lib/typescript/autoCapture.d.ts.map +1 -0
  67. package/lib/typescript/autoCapture.web.d.ts +2 -0
  68. package/lib/typescript/autoCapture.web.d.ts.map +1 -0
  69. package/lib/typescript/capture/actions.d.ts +0 -17
  70. package/lib/typescript/capture/actions.d.ts.map +1 -1
  71. package/lib/typescript/capture/install.web.d.ts +6 -0
  72. package/lib/typescript/capture/install.web.d.ts.map +1 -0
  73. package/lib/typescript/capture/installRnImage.d.ts +5 -0
  74. package/lib/typescript/capture/installRnImage.d.ts.map +1 -1
  75. package/lib/typescript/capture/nativeImageModules.d.ts +4 -0
  76. package/lib/typescript/capture/nativeImageModules.d.ts.map +1 -0
  77. package/lib/typescript/capture/nativeImageModules.web.d.ts +4 -0
  78. package/lib/typescript/capture/nativeImageModules.web.d.ts.map +1 -0
  79. package/lib/typescript/capture/rnDecoratorEarly.d.ts +18 -0
  80. package/lib/typescript/capture/rnDecoratorEarly.d.ts.map +1 -0
  81. package/lib/typescript/capture/savings.web.d.ts +5 -0
  82. package/lib/typescript/capture/savings.web.d.ts.map +1 -0
  83. package/lib/typescript/components/ImageDetail.d.ts +0 -6
  84. package/lib/typescript/components/ImageDetail.d.ts.map +1 -1
  85. package/lib/typescript/components/ImagesRoot.web.d.ts +2 -0
  86. package/lib/typescript/components/ImagesRoot.web.d.ts.map +1 -0
  87. package/lib/typescript/index.d.ts +1 -1
  88. package/lib/typescript/index.d.ts.map +1 -1
  89. package/lib/typescript/registerEarly.d.ts +10 -0
  90. package/lib/typescript/registerEarly.d.ts.map +1 -0
  91. package/lib/typescript/sync/imagesSyncAdapter.d.ts +0 -9
  92. package/lib/typescript/sync/imagesSyncAdapter.d.ts.map +1 -1
  93. package/lib/typescript/types.d.ts +2 -1
  94. package/lib/typescript/types.d.ts.map +1 -1
  95. package/lib/web/chunks/chunk-7CWLRQ2L.mjs +2 -0
  96. package/lib/web/chunks/chunk-B5A6CYSS.mjs +2 -0
  97. package/lib/web/chunks/chunk-LKTR6X2V.mjs +2 -0
  98. package/lib/web/chunks/chunk-TTS5EH4R.mjs +2 -0
  99. package/lib/web/index.mjs +4 -0
  100. package/lib/web/register.mjs +2 -0
  101. package/package.json +52 -6
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var C=Object.defineProperty;var oe=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.prototype.hasOwnProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var _=(e,t)=>{for(var o in t)C(e,o,{get:t[o],enumerable:!0})},T=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of re(t))!se.call(e,r)&&r!==o&&C(e,r,{get:()=>t[r],enumerable:!(s=oe(t,r))||s.enumerable});return e},p=(e,t,o)=>(T(e,t,"default"),o&&T(o,t,"default"));var kt=e=>T(C({},"__esModule",{value:!0}),e);var g=S(()=>{"use strict";typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis)});function i(){let e=globalThis;return e[O]||(e[O]={records:[],byId:new Map,nextId:1,listeners:new Set,snapshot:[],emitScheduled:!1,captureInstalled:!1,rnInstalled:!1,expoInstalled:!1,decoratorRegistered:!1,decoratorInvoked:!1,attachSeen:0,expoAvailable:!1,expoPatched:!1,reloadRequests:new Map,actionListeners:new Set,expoInstances:new Map,overrides:new Map,flashUntil:new Map,recordVersions:new Map,globalVersion:0,versionCounter:0,globalModes:{network:"normal",blank:!1},captureDisabled:!1,remoteDispatch:null,mirrorPixelRatio:null,mirrorCaptureStatus:null}),e[O]}var O,R=S(()=>{"use strict";g();O=Symbol.for("buoy.images.globalState.v1")});function Ct(e){i().remoteDispatch=e}function y(){return i().remoteDispatch}async function Ot(e){try{let t=await e;return{ok:!!t?.ok,message:String(t?.message??"")}}catch(t){return{ok:!1,message:String(t?.message??t)}}}var D=S(()=>{"use strict";g();R()});var u={};_(u,{AccessibilityInfo:()=>ke,ActivityIndicator:()=>ye,Alert:()=>Se,Animated:()=>Ae,AppRegistry:()=>Me,AppState:()=>Le,Appearance:()=>Ie,BackHandler:()=>Te,Button:()=>ve,CheckBox:()=>je,Clipboard:()=>Ce,DeviceEventEmitter:()=>dt,Dimensions:()=>Oe,Easing:()=>De,FlatList:()=>Ge,I18nManager:()=>Ee,Image:()=>$e,ImageBackground:()=>qe,Input:()=>nt,InteractionManager:()=>Ue,Keyboard:()=>Pe,KeyboardAvoidingView:()=>Ye,LayoutAnimation:()=>We,Linking:()=>Be,LogBox:()=>at,Modal:()=>ge,NativeEventEmitter:()=>Ve,NativeModules:()=>Re,PanResponder:()=>Ne,Picker:()=>Xe,PixelRatio:()=>E,Platform:()=>_e,Pressable:()=>be,ProgressBar:()=>Ze,RefreshControl:()=>Je,SafeAreaView:()=>Qe,ScrollView:()=>me,SectionList:()=>et,Share:()=>Fe,StatusBar:()=>tt,StyleSheet:()=>He,Switch:()=>he,Text:()=>le,TextInput:()=>ce,Touchable:()=>ot,TouchableHighlight:()=>pe,TouchableNativeFeedback:()=>rt,TouchableOpacity:()=>ue,TouchableWithoutFeedback:()=>fe,UIManager:()=>ze,Vibration:()=>Ke,View:()=>de,VirtualizedList:()=>st,YellowBox:()=>it,findNodeHandle:()=>xe,unstable_createElement:()=>we,useColorScheme:()=>lt,useLocaleContext:()=>ct,useWindowDimensions:()=>ut});import*as Wt from"react-native-web";import{unstable_createElement as we,NativeModules as Re,AccessibilityInfo as ke,Animated as Ae,Appearance as Ie,AppRegistry as Me,AppState as Le,BackHandler as Te,Clipboard as Ce,Dimensions as Oe,Easing as De,I18nManager as Ee,Keyboard as Pe,InteractionManager as Ue,LayoutAnimation as We,Linking as Be,NativeEventEmitter as Ve,PanResponder as Ne,PixelRatio as E,Platform as _e,Share as Fe,StyleSheet as He,UIManager as ze,Vibration as Ke,CheckBox as je,FlatList as Ge,Image as $e,ImageBackground as qe,KeyboardAvoidingView as Ye,Picker as Xe,ProgressBar as Ze,RefreshControl as Je,SafeAreaView as Qe,SectionList as et,StatusBar as tt,Input as nt,Touchable as ot,TouchableNativeFeedback as rt,VirtualizedList as st,YellowBox as it,LogBox as at,DeviceEventEmitter as dt,useColorScheme as lt,useLocaleContext as ct,useWindowDimensions as ut}from"react-native-web";import*as l from"react-native-web";import{createElement as ie,forwardRef as ae}from"react";function h(e){let t=ae((o,s)=>{let{accessibilityState:r,accessibilityValue:n,...a}=o;for(let d of["busy","checked","disabled","expanded","selected"])r?.[d]!==void 0&&a[`aria-${d}`]===void 0&&(a[`aria-${d}`]=r[d]);for(let[d,b]of Object.entries({min:"valuemin",max:"valuemax",now:"valuenow",text:"valuetext"}))n?.[d]!==void 0&&a[`aria-${b}`]===void 0&&(a[`aria-${b}`]=n[d]);return ie(e,{...a,ref:s})});return t.displayName=e.displayName??e.name??"NativeWebView",t}var de,le,ce,ue,pe,fe,be,me,ge,he,ye,ve,xe,Se,F=S(()=>{g();p(u,Wt);de=h(l.View),le=h(l.Text),ce=h(l.TextInput),ue=h(l.TouchableOpacity),pe=h(l.TouchableHighlight),fe=h(l.TouchableWithoutFeedback),be=h(l.Pressable),me=h(l.ScrollView),ge=h(l.Modal),he=h(l.Switch),ye=h(l.ActivityIndicator),ve=h(l.Button),xe=l.findNodeHandle,Se={alert(e,t,o,s){if(typeof document>"u")return;let r=document.createElement("dialog");r.dataset.buoyRoot="",r.setAttribute("aria-label",e),r.style.cssText="position:fixed;inset:0;margin:auto;width:min(440px,90vw);padding:24px;border:1px solid #475569;border-radius:14px;background:#17212e;color:#f1f5f9;font:14px system-ui;box-shadow:0 20px 80px #0008;z-index:2147483647";let n=document.createElement("h2");if(n.textContent=e,n.style.cssText="font-size:18px;margin:0 0 12px",r.appendChild(n),t){let c=document.createElement("p");c.textContent=t,c.style.cssText="line-height:1.5;white-space:pre-wrap;margin:0 0 20px",r.appendChild(c)}let a=document.createElement("div");a.style.cssText="display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px";let d=o?.length?o:[{text:"OK"}],b=()=>{r.close?.(),r.remove()};for(let c of d){let f=document.createElement("button");f.type="button",f.textContent=c.text??"OK",f.style.cssText=`padding:9px 14px;border:1px solid #64748b;border-radius:7px;color:white;background:${c.style==="destructive"?"#a52b38":"#283a4d"};cursor:pointer;font:inherit`,f.onclick=()=>{b(),c.onPress?.()},a.appendChild(f)}r.addEventListener("cancel",c=>{c.preventDefault(),s?.cancelable!==!1&&(b(),s?.onDismiss?.())}),r.appendChild(a),document.body.appendChild(r),r.showModal?r.showModal():r.setAttribute("open","")}}});var vt={};_(vt,{clearRecords:()=>bt,computeStats:()=>yt,createRecord:()=>P,disableImagesCapture:()=>mt,effectivePixelRatio:()=>z,estDecodedBytes:()=>K,estWastedBytes:()=>j,getRecord:()=>I,getSnapshot:()=>k,neededPixels:()=>U,oversizeFactor:()=>ht,replaceImagesFromSnapshot:()=>gt,subscribe:()=>ft,updateRecord:()=>m});function pt(){let e=i();e.emitScheduled||(e.emitScheduled=!0,requestAnimationFrame(()=>{e.emitScheduled=!1;for(let t of e.listeners)t()}))}function A(){let e=i();e.snapshot=[...e.records],pt()}function P(e){let t=i(),o={...e,id:t.nextId++,createdAt:Date.now(),status:"pending",mounted:!0,loadCount:0};if(t.records.push(o),t.byId.set(o.id,o),t.records.length>H){let s=t.records.splice(0,t.records.length-H);for(let r of s)t.byId.delete(r.id)}return A(),o}function m(e,t){let s=i().byId.get(e);if(s)return Object.assign(s,t),A(),s}function I(e){return i().byId.get(e)}function k(){return i().snapshot}function ft(e){return i().listeners.add(e),()=>i().listeners.delete(e)}function bt(){y()?.("clearRecords");let e=i();e.records=e.records.filter(t=>t.mounted&&t.status!=="loaded"&&t.status!=="error"),e.byId=new Map(e.records.map(t=>[t.id,t])),A()}function mt(){i().captureDisabled=!0}function gt(e){let t=i(),o=e.records??[],s=0;for(let n of o)n.layout&&n.neededPx&&n.layout.width>s&&(s=n.layout.width,t.mirrorPixelRatio=n.neededPx.width/n.layout.width);let r=Date.now();t.records=[...o].reverse().map(n=>({id:n.id,lib:n.lib,uri:n.uri,sourceKind:n.kind,status:n.status,mounted:n.mounted,createdAt:r-n.ageMs,durationMs:n.ms??void 0,intrinsic:n.intrinsic??void 0,layout:n.layout??void 0,cacheVerdict:n.cache??void 0,cacheVerdictSource:n.cacheSource??void 0,progressSeen:n.progressSeen,bytesLoaded:n.status==="loaded"?n.bytesTotal??void 0:void 0,bytesTotal:n.bytesTotal??void 0,error:n.error??void 0,errorCode:n.errorCode??void 0,loadCount:n.loadCount,overrideLabel:n.overrideLabel??void 0,hasAltText:n.hasAltText??void 0,layoutShifts:n.layoutShifts})),t.byId=new Map(t.records.map(n=>[n.id,n])),e.globalModes&&(t.globalModes={...e.globalModes}),e.captureStatus&&(t.mirrorCaptureStatus=e.captureStatus),A();for(let n of t.actionListeners)n()}function z(){return i().mirrorPixelRatio??E.get()}function U(e){if(!e.layout||e.layout.width<=0||e.layout.height<=0)return null;let t=z();return{width:Math.round(e.layout.width*t),height:Math.round(e.layout.height*t)}}function ht(e){let t=U(e);if(!t||!e.intrinsic)return null;let o=t.width*t.height,s=e.intrinsic.width*e.intrinsic.height;return o<=0||s<=0?null:Math.sqrt(s/o)}function K(e){return e.intrinsic?e.intrinsic.width*e.intrinsic.height*4:0}function j(e){let t=U(e);if(!t||!e.intrinsic)return 0;let o=(e.intrinsic.width*e.intrinsic.height-t.width*t.height)*4;return Math.max(0,o)}function yt(e){let t={total:e.length,loading:0,loaded:0,errors:0,networkLoads:0,estDecodedBytes:0,estWastedBytes:0};for(let o of e)(o.status==="loading"||o.status==="pending")&&o.mounted&&t.loading++,o.status==="loaded"&&t.loaded++,o.status==="error"&&t.errors++,(o.progressSeen||o.cacheVerdict==="none")&&t.networkLoads++,o.mounted&&o.status==="loaded"&&(t.estDecodedBytes+=K(o),t.estWastedBytes+=j(o));return t}var H,W=S(()=>{"use strict";g();F();D();R();H=500});g();D();R();W();function G(){for(let e of i().actionListeners)e()}function $(e){let t=i();if(e!=null){t.expoInstances.get(e)?.forceUpdate?.();return}for(let o of t.expoInstances.values())o?.forceUpdate?.()}function M(e){let t=i();t.recordVersions.set(e,++t.versionCounter),G(),$(e)}function q(){let e=i();e.globalVersion=++e.versionCounter,G(),$()}function xt(e,t){return t.type==="url"?{id:e,kind:"url",uri:t.uri}:{id:e,kind:t.type}}function Y(e,t){i().overrides.set(e,t),m(e,{overrideLabel:t.label}),M(e)}function jt(e,t){t.source&&y()?.("setOverride",xt(e,t.source)),Y(e,t)}function X(e){i().overrides.delete(e),m(e,{overrideLabel:void 0}),M(e)}function Gt(e){y()?.("clearOverride",{id:e}),X(e)}function B(e){if(e!=null)return i().overrides.get(e)}function St(e){return e.type==="hang"?"loading":e.type}function $t(e,t){y()?.("massAction",{kind:St(e)});let o=0;for(let s of k())s.mounted&&(Y(s.id,{source:e,label:t}),o++);return o}function qt(){y()?.("massAction",{kind:"restore"});let e=new Set(i().overrides.keys());for(let t of k())t.overrideLabel!=null&&e.add(t.id);for(let t of e)X(t);return e.size}function Yt(e=2500){y()?.("massAction",{kind:"flash"});let t=0;for(let o of k())o.mounted&&(Z(o.id,e),t++);return t}function Z(e,t=2500){i().flashUntil.set(e,Date.now()+t),M(e),setTimeout(()=>{i().flashUntil.delete(e),M(e)},t+50)}function Xt(e,t=2500){y()?.("flash",{id:e}),Z(e,t)}function Zt(e){y()?.("setNetworkMode",{mode:e}),i().globalModes.network=e,q()}function Jt(e){y()?.("setBlankImages",{enabled:e}),i().globalModes.blank=e,q()}function V(){return i().globalModes}g();R();W();var v=new Map,x,J=0,Q="data:image/png;base64,";function N(e){let t=I(e.id);if(!t)return;let o=i(),s=B(e.id),r=V(),n=e.source;if(r.network==="offline"&&t.sourceKind==="network"&&(n=Q),s?.source){let f=s.source;f.type==="url"?n=f.uri:f.type==="error"?n=Q:n=null,f.type==="hang"&&m(e.id,{status:"loading"})}let a=o.reloadRequests.get(e.id),d=a&&a.nonce!==e.nonce;if(d){if(e.nonce=a.nonce,a.bust&&n&&/^https?:/.test(new URL(n,document.baseURI).href)){let f=new URL(n,document.baseURI);f.searchParams.set("__buoy_reload",String(Date.now())),n=f.href}e.image.removeAttribute("src"),m(e.id,{status:"loading",startedAt:Date.now(),loadCount:t.loadCount+1})}if(r.network==="cold"&&n&&/^https?:/.test(new URL(n,document.baseURI).href)){if(e.coldSource!==n||!e.coldURL||d){e.coldSource=n;let f=new URL(n,document.baseURI);f.searchParams.set("__buoy_reload",`${Date.now()}-${e.nonce}`),e.coldURL=f.href}n=e.coldURL}else e.coldSource=void 0,e.coldURL=void 0;e.appliedSource=n,e.appliedSrcset=n!==e.source?null:e.srcset,e.appliedSrcset===null?e.image.removeAttribute("srcset"):e.image.getAttribute("srcset")!==e.appliedSrcset&&e.image.setAttribute("srcset",e.appliedSrcset),n===null?e.image.removeAttribute("src"):e.image.getAttribute("src")!==n&&e.image.setAttribute("src",n);let b=document.createElement("span").style;b.cssText=e.style??"";let c=s?.extraProps?.contentFit??s?.extraProps?.resizeMode;typeof c=="string"&&(b.objectFit={stretch:"fill",center:"none"}[c]??c),(r.blank||s?.source?.type==="blank")&&(b.opacity="0");for(let[f,L]of Object.entries(s?.style??{})){let te=f.replace(/[A-Z]/g,ne=>`-${ne.toLowerCase()}`);b.setProperty(te,typeof L=="number"&&!["opacity","zIndex","flex","flexGrow","flexShrink"].includes(f)?`${L}px`:String(L))}(o.flashUntil.get(e.id)??0)>Date.now()&&(b.outline="3px solid #ff453a"),e.appliedStyle=b.cssText||null,e.image.getAttribute("style")!==e.appliedStyle&&(e.appliedStyle===null?e.image.removeAttribute("style"):e.image.setAttribute("style",e.appliedStyle))}function wt(e){if(v.has(e)||e.closest("[data-buoy-root]"))return;let t=e.currentSrc||e.src;if(!t)return;let o=P({lib:"web",uri:t,sourceKind:t.startsWith("data:")?"data":t.startsWith("blob:")?"file":"network",hasAltText:e.hasAttribute("alt")||e.hasAttribute("aria-label")}),s={id:o.id,image:e,source:e.getAttribute("src"),srcset:e.getAttribute("srcset"),style:e.getAttribute("style"),appliedSource:e.getAttribute("src"),appliedSrcset:e.getAttribute("srcset"),appliedStyle:e.getAttribute("style"),nonce:0,dispose(){}},r=()=>{let b=e.getBoundingClientRect(),c=o.layout,f=o.status==="loaded"&&c&&(c.width!==b.width||c.height!==b.height);m(o.id,{layout:{width:b.width,height:b.height},layoutShifts:(o.layoutShifts??0)+(f?1:0)})},n=()=>{let b=performance.getEntriesByName(e.currentSrc||e.src),c=b[b.length-1];m(o.id,{status:"loaded",loadedAt:Date.now(),intrinsic:{width:e.naturalWidth,height:e.naturalHeight},...!B(o.id)?.source&&V().network==="normal"?{uri:e.currentSrc||e.src}:{},durationMs:c?.duration,bytesTotal:c&&c.encodedBodySize>0?c.encodedBodySize:void 0,cacheVerdict:c&&c.transferSize>0?"none":void 0,cacheVerdictSource:c?"event":void 0}),r()},a=()=>m(o.id,{status:"error",erroredAt:Date.now(),error:"The browser could not load this image."});e.addEventListener("load",n),e.addEventListener("error",a);let d=typeof ResizeObserver>"u"?void 0:new ResizeObserver(r);d?.observe(e),s.dispose=()=>{d?.disconnect(),e.removeEventListener("load",n),e.removeEventListener("error",a)},v.set(e,s),r(),m(o.id,{status:"loading",startedAt:Date.now(),loadCount:1}),e.complete&&(e.naturalWidth>0?n():a()),N(s)}function Rt(){let e=i();if(typeof document>"u"||e.captureDisabled||x)return;e.captureInstalled=!0;let t=()=>{for(let[r,n]of v)r.isConnected||(n.dispose(),v.delete(r),m(n.id,{mounted:!1}));document.querySelectorAll("img").forEach(wt)},o=new MutationObserver(r=>{if(i().captureDisabled){ee();return}for(let n of r){let a=n.target,d=v.get(a);!d||n.type!=="attributes"||(n.attributeName==="src"&&a.getAttribute("src")!==d.appliedSource||n.attributeName==="srcset"&&a.getAttribute("srcset")!==d.appliedSrcset?(d.dispose(),v.delete(a),m(d.id,{mounted:!1})):n.attributeName==="style"&&a.getAttribute("style")!==d.appliedStyle&&(d.style=a.getAttribute("style"),N(d)))}t()});o.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcset","style","alt"]});let s=()=>{for(let r of v.values())N(r)};e.actionListeners.add(s),x=()=>{o.disconnect(),e.actionListeners.delete(s);for(let r of v.values()){r.dispose();for(let[n,a,d]of[["src",r.source,r.appliedSource],["srcset",r.srcset,r.appliedSrcset],["style",r.style,r.appliedStyle]])r.image.getAttribute(n)===d&&(a===null?r.image.removeAttribute(n):r.image.setAttribute(n,a));m(r.id,{mounted:!1})}v.clear(),e.captureInstalled=!1},t()}function ee(){x?.(),x=void 0}function rn(){if(typeof document>"u")return()=>{};J++===0&&Rt();let e=!1;return()=>{e||(e=!0,--J===0&&ee())}}function sn(){return i().mirrorCaptureStatus??{installed:!!x,rnDecoratorActive:!1,rnDecoratorTooLate:!1,expoPatched:!1,expoAvailable:!1,browserObserverActive:!!x}}export{kt as a,g as b,de as c,le as d,ce as e,ue as f,me as g,E as h,He as i,Ge as j,$e as k,F as l,i as m,R as n,Ct as o,y as p,Ot as q,D as r,m as s,I as t,k as u,ft as v,bt as w,mt as x,gt as y,z,U as A,ht as B,K as C,j as D,yt as E,vt as F,W as G,M as H,jt as I,Gt as J,B as K,$t as L,qt as M,Yt as N,Xt as O,Zt as P,Jt as Q,V as R,Rt as S,rn as T,sn as U};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var C=Object.defineProperty;var oe=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.prototype.hasOwnProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var _=(e,t)=>{for(var o in t)C(e,o,{get:t[o],enumerable:!0})},L=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of re(t))!se.call(e,r)&&r!==o&&C(e,r,{get:()=>t[r],enumerable:!(s=oe(t,r))||s.enumerable});return e},f=(e,t,o)=>(L(e,t,"default"),o&&L(o,t,"default"));var Rt=e=>L(C({},"__esModule",{value:!0}),e);var g=S(()=>{"use strict";typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis)});function i(){let e=globalThis;return e[O]||(e[O]={records:[],byId:new Map,nextId:1,listeners:new Set,snapshot:[],emitScheduled:!1,captureInstalled:!1,rnInstalled:!1,expoInstalled:!1,decoratorRegistered:!1,decoratorInvoked:!1,attachSeen:0,expoAvailable:!1,expoPatched:!1,reloadRequests:new Map,actionListeners:new Set,expoInstances:new Map,overrides:new Map,flashUntil:new Map,recordVersions:new Map,globalVersion:0,versionCounter:0,globalModes:{network:"normal",blank:!1},captureDisabled:!1,remoteDispatch:null,mirrorPixelRatio:null,mirrorCaptureStatus:null}),e[O]}var O,R=S(()=>{"use strict";g();O=Symbol.for("buoy.images.globalState.v1")});function Lt(e){i().remoteDispatch=e}function y(){return i().remoteDispatch}async function Ct(e){try{let t=await e;return{ok:!!t?.ok,message:String(t?.message??"")}}catch(t){return{ok:!1,message:String(t?.message??t)}}}var D=S(()=>{"use strict";g();R()});var p={};_(p,{AccessibilityInfo:()=>ke,ActivityIndicator:()=>ye,Alert:()=>Se,Animated:()=>Ae,AppRegistry:()=>Me,AppState:()=>Te,Appearance:()=>Ie,BackHandler:()=>Le,Button:()=>ve,CheckBox:()=>Ke,Clipboard:()=>Ce,DeviceEventEmitter:()=>at,Dimensions:()=>Oe,Easing:()=>De,FlatList:()=>Ge,I18nManager:()=>Pe,Image:()=>$e,ImageBackground:()=>qe,InteractionManager:()=>Ee,Keyboard:()=>We,KeyboardAvoidingView:()=>Ye,LayoutAnimation:()=>Ue,Linking:()=>Ve,LogBox:()=>it,Modal:()=>ge,NativeEventEmitter:()=>Be,NativeModules:()=>Re,PanResponder:()=>Ne,Picker:()=>Xe,PixelRatio:()=>P,Platform:()=>_e,Pressable:()=>be,ProgressBar:()=>Ze,RefreshControl:()=>Je,SafeAreaView:()=>Qe,ScrollView:()=>me,SectionList:()=>et,Share:()=>Fe,StatusBar:()=>tt,StyleSheet:()=>He,Switch:()=>he,Text:()=>de,TextInput:()=>ce,Touchable:()=>nt,TouchableHighlight:()=>pe,TouchableNativeFeedback:()=>ot,TouchableOpacity:()=>ue,TouchableWithoutFeedback:()=>fe,UIManager:()=>ze,Vibration:()=>je,View:()=>le,VirtualizedList:()=>rt,YellowBox:()=>st,findNodeHandle:()=>xe,unstable_createElement:()=>we,useColorScheme:()=>lt,useLocaleContext:()=>dt,useWindowDimensions:()=>ct});import*as Et from"react-native-web";import{unstable_createElement as we,NativeModules as Re,AccessibilityInfo as ke,Animated as Ae,Appearance as Ie,AppRegistry as Me,AppState as Te,BackHandler as Le,Clipboard as Ce,Dimensions as Oe,Easing as De,I18nManager as Pe,Keyboard as We,InteractionManager as Ee,LayoutAnimation as Ue,Linking as Ve,NativeEventEmitter as Be,PanResponder as Ne,PixelRatio as P,Platform as _e,Share as Fe,StyleSheet as He,UIManager as ze,Vibration as je,CheckBox as Ke,FlatList as Ge,Image as $e,ImageBackground as qe,KeyboardAvoidingView as Ye,Picker as Xe,ProgressBar as Ze,RefreshControl as Je,SafeAreaView as Qe,SectionList as et,StatusBar as tt,Touchable as nt,TouchableNativeFeedback as ot,VirtualizedList as rt,YellowBox as st,LogBox as it,DeviceEventEmitter as at,useColorScheme as lt,useLocaleContext as dt,useWindowDimensions as ct}from"react-native-web";import*as l from"react-native-web";import{createElement as ie,forwardRef as ae}from"react";function h(e){let t=ae((s,r)=>{let{accessibilityState:n,accessibilityValue:d,...u}=s;for(let c of["busy","checked","disabled","expanded","selected"])n?.[c]!==void 0&&u[`aria-${c}`]===void 0&&(u[`aria-${c}`]=n[c]);for(let[c,a]of Object.entries({min:"valuemin",max:"valuemax",now:"valuenow",text:"valuetext"}))d?.[c]!==void 0&&u[`aria-${a}`]===void 0&&(u[`aria-${a}`]=d[c]);return ie(e,{...u,ref:r})}),o=e.State;return o&&Object.assign(t,{State:o}),t.displayName=e.displayName??e.name??"NativeWebView",t}var le,de,ce,ue,pe,fe,be,me,ge,he,ye,ve,xe,Se,F=S(()=>{g();f(p,Et);le=h(l.View),de=h(l.Text),ce=h(l.TextInput),ue=h(l.TouchableOpacity),pe=h(l.TouchableHighlight),fe=h(l.TouchableWithoutFeedback),be=h(l.Pressable),me=h(l.ScrollView),ge=h(l.Modal),he=h(l.Switch),ye=h(l.ActivityIndicator),ve=h(l.Button),xe=l.findNodeHandle,Se={alert(e,t,o,s){if(typeof document>"u")return;let r=document.createElement("dialog");r.dataset.buoyRoot="",r.setAttribute("aria-label",e),r.style.cssText="position:fixed;inset:0;margin:auto;width:min(440px,90vw);padding:24px;border:1px solid #475569;border-radius:14px;background:#17212e;color:#f1f5f9;font:14px system-ui;box-shadow:0 20px 80px #0008;z-index:2147483647";let n=document.createElement("h2");if(n.textContent=e,n.style.cssText="font-size:18px;margin:0 0 12px",r.appendChild(n),t){let a=document.createElement("p");a.textContent=t,a.style.cssText="line-height:1.5;white-space:pre-wrap;margin:0 0 20px",r.appendChild(a)}let d=document.createElement("div");d.style.cssText="display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px";let u=o?.length?o:[{text:"OK"}],c=()=>{r.close?.(),r.remove()};for(let a of u){let b=document.createElement("button");b.type="button",b.textContent=a.text??"OK",b.style.cssText=`padding:9px 14px;border:1px solid #64748b;border-radius:7px;color:white;background:${a.style==="destructive"?"#a52b38":"#283a4d"};cursor:pointer;font:inherit`,b.onclick=()=>{c(),a.onPress?.()},d.appendChild(b)}r.addEventListener("cancel",a=>{a.preventDefault(),s?.cancelable!==!1&&(c(),s?.onDismiss?.())}),r.appendChild(d),document.body.appendChild(r),r.showModal?r.showModal():r.setAttribute("open","")}}});var yt={};_(yt,{clearRecords:()=>ft,computeStats:()=>ht,createRecord:()=>W,disableImagesCapture:()=>bt,effectivePixelRatio:()=>z,estDecodedBytes:()=>j,estWastedBytes:()=>K,getRecord:()=>I,getSnapshot:()=>k,neededPixels:()=>E,oversizeFactor:()=>gt,replaceImagesFromSnapshot:()=>mt,subscribe:()=>pt,updateRecord:()=>m});function ut(){let e=i();e.emitScheduled||(e.emitScheduled=!0,requestAnimationFrame(()=>{e.emitScheduled=!1;for(let t of e.listeners)t()}))}function A(){let e=i();e.snapshot=[...e.records],ut()}function W(e){let t=i(),o={...e,id:t.nextId++,createdAt:Date.now(),status:"pending",mounted:!0,loadCount:0};if(t.records.push(o),t.byId.set(o.id,o),t.records.length>H){let s=t.records.splice(0,t.records.length-H);for(let r of s)t.byId.delete(r.id)}return A(),o}function m(e,t){let s=i().byId.get(e);if(s)return Object.assign(s,t),A(),s}function I(e){return i().byId.get(e)}function k(){return i().snapshot}function pt(e){return i().listeners.add(e),()=>i().listeners.delete(e)}function ft(){y()?.("clearRecords");let e=i();e.records=e.records.filter(t=>t.mounted&&t.status!=="loaded"&&t.status!=="error"),e.byId=new Map(e.records.map(t=>[t.id,t])),A()}function bt(){i().captureDisabled=!0}function mt(e){let t=i(),o=e.records??[],s=0;for(let n of o)n.layout&&n.neededPx&&n.layout.width>s&&(s=n.layout.width,t.mirrorPixelRatio=n.neededPx.width/n.layout.width);let r=Date.now();t.records=[...o].reverse().map(n=>({id:n.id,lib:n.lib,uri:n.uri,sourceKind:n.kind,status:n.status,mounted:n.mounted,createdAt:r-n.ageMs,durationMs:n.ms??void 0,intrinsic:n.intrinsic??void 0,layout:n.layout??void 0,cacheVerdict:n.cache??void 0,cacheVerdictSource:n.cacheSource??void 0,progressSeen:n.progressSeen,bytesLoaded:n.status==="loaded"?n.bytesTotal??void 0:void 0,bytesTotal:n.bytesTotal??void 0,error:n.error??void 0,errorCode:n.errorCode??void 0,loadCount:n.loadCount,overrideLabel:n.overrideLabel??void 0,hasAltText:n.hasAltText??void 0,layoutShifts:n.layoutShifts})),t.byId=new Map(t.records.map(n=>[n.id,n])),e.globalModes&&(t.globalModes={...e.globalModes}),e.captureStatus&&(t.mirrorCaptureStatus=e.captureStatus),A();for(let n of t.actionListeners)n()}function z(){return i().mirrorPixelRatio??P.get()}function E(e){if(!e.layout||e.layout.width<=0||e.layout.height<=0)return null;let t=z();return{width:Math.round(e.layout.width*t),height:Math.round(e.layout.height*t)}}function gt(e){let t=E(e);if(!t||!e.intrinsic)return null;let o=t.width*t.height,s=e.intrinsic.width*e.intrinsic.height;return o<=0||s<=0?null:Math.sqrt(s/o)}function j(e){return e.intrinsic?e.intrinsic.width*e.intrinsic.height*4:0}function K(e){let t=E(e);if(!t||!e.intrinsic)return 0;let o=(e.intrinsic.width*e.intrinsic.height-t.width*t.height)*4;return Math.max(0,o)}function ht(e){let t={total:e.length,loading:0,loaded:0,errors:0,networkLoads:0,estDecodedBytes:0,estWastedBytes:0};for(let o of e)(o.status==="loading"||o.status==="pending")&&o.mounted&&t.loading++,o.status==="loaded"&&t.loaded++,o.status==="error"&&t.errors++,(o.progressSeen||o.cacheVerdict==="none")&&t.networkLoads++,o.mounted&&o.status==="loaded"&&(t.estDecodedBytes+=j(o),t.estWastedBytes+=K(o));return t}var H,U=S(()=>{"use strict";g();F();D();R();H=500});g();D();R();U();function G(){for(let e of i().actionListeners)e()}function $(e){let t=i();if(e!=null){t.expoInstances.get(e)?.forceUpdate?.();return}for(let o of t.expoInstances.values())o?.forceUpdate?.()}function M(e){let t=i();t.recordVersions.set(e,++t.versionCounter),G(),$(e)}function q(){let e=i();e.globalVersion=++e.versionCounter,G(),$()}function vt(e,t){return t.type==="url"?{id:e,kind:"url",uri:t.uri}:{id:e,kind:t.type}}function Y(e,t){i().overrides.set(e,t),m(e,{overrideLabel:t.label}),M(e)}function jt(e,t){t.source&&y()?.("setOverride",vt(e,t.source)),Y(e,t)}function X(e){i().overrides.delete(e),m(e,{overrideLabel:void 0}),M(e)}function Kt(e){y()?.("clearOverride",{id:e}),X(e)}function V(e){if(e!=null)return i().overrides.get(e)}function xt(e){return e.type==="hang"?"loading":e.type}function Gt(e,t){y()?.("massAction",{kind:xt(e)});let o=0;for(let s of k())s.mounted&&(Y(s.id,{source:e,label:t}),o++);return o}function $t(){y()?.("massAction",{kind:"restore"});let e=new Set(i().overrides.keys());for(let t of k())t.overrideLabel!=null&&e.add(t.id);for(let t of e)X(t);return e.size}function qt(e=2500){y()?.("massAction",{kind:"flash"});let t=0;for(let o of k())o.mounted&&(Z(o.id,e),t++);return t}function Z(e,t=2500){i().flashUntil.set(e,Date.now()+t),M(e),setTimeout(()=>{i().flashUntil.delete(e),M(e)},t+50)}function Yt(e,t=2500){y()?.("flash",{id:e}),Z(e,t)}function Xt(e){y()?.("setNetworkMode",{mode:e}),i().globalModes.network=e,q()}function Zt(e){y()?.("setBlankImages",{enabled:e}),i().globalModes.blank=e,q()}function B(){return i().globalModes}g();R();U();var v=new Map,x,J=0,Q="data:image/png;base64,";function N(e){let t=I(e.id);if(!t)return;let o=i(),s=V(e.id),r=B(),n=e.source;if(r.network==="offline"&&t.sourceKind==="network"&&(n=Q),s?.source){let b=s.source;b.type==="url"?n=b.uri:b.type==="error"?n=Q:n=null,b.type==="hang"&&m(e.id,{status:"loading"})}let d=o.reloadRequests.get(e.id),u=d&&d.nonce!==e.nonce;if(u){if(e.nonce=d.nonce,d.bust&&n&&/^https?:/.test(new URL(n,document.baseURI).href)){let b=new URL(n,document.baseURI);b.searchParams.set("__buoy_reload",String(Date.now())),n=b.href}e.image.removeAttribute("src"),m(e.id,{status:"loading",startedAt:Date.now(),loadCount:t.loadCount+1})}if(r.network==="cold"&&n&&/^https?:/.test(new URL(n,document.baseURI).href)){if(e.coldSource!==n||!e.coldURL||u){e.coldSource=n;let b=new URL(n,document.baseURI);b.searchParams.set("__buoy_reload",`${Date.now()}-${e.nonce}`),e.coldURL=b.href}n=e.coldURL}else e.coldSource=void 0,e.coldURL=void 0;e.appliedSource=n,e.appliedSrcset=n!==e.source?null:e.srcset,e.appliedSrcset===null?e.image.removeAttribute("srcset"):e.image.getAttribute("srcset")!==e.appliedSrcset&&e.image.setAttribute("srcset",e.appliedSrcset),n===null?e.image.removeAttribute("src"):e.image.getAttribute("src")!==n&&e.image.setAttribute("src",n);let c=document.createElement("span").style;c.cssText=e.style??"";let a=s?.extraProps?.contentFit??s?.extraProps?.resizeMode;typeof a=="string"&&(c.objectFit={stretch:"fill",center:"none"}[a]??a),(r.blank||s?.source?.type==="blank")&&(c.opacity="0");for(let[b,T]of Object.entries(s?.style??{})){let te=b.replace(/[A-Z]/g,ne=>`-${ne.toLowerCase()}`);c.setProperty(te,typeof T=="number"&&!["opacity","zIndex","flex","flexGrow","flexShrink"].includes(b)?`${T}px`:String(T))}(o.flashUntil.get(e.id)??0)>Date.now()&&(c.outline="3px solid #ff453a"),e.appliedStyle=c.cssText||null,e.image.getAttribute("style")!==e.appliedStyle&&(e.appliedStyle===null?e.image.removeAttribute("style"):e.image.setAttribute("style",e.appliedStyle))}function St(e){if(v.has(e)||e.closest("[data-buoy-root]"))return;let t=e.currentSrc||e.src;if(!t)return;let o=W({lib:"web",uri:t,sourceKind:t.startsWith("data:")?"data":t.startsWith("blob:")?"file":"network",hasAltText:e.hasAttribute("alt")||e.hasAttribute("aria-label")}),s={id:o.id,image:e,source:e.getAttribute("src"),srcset:e.getAttribute("srcset"),style:e.getAttribute("style"),appliedSource:e.getAttribute("src"),appliedSrcset:e.getAttribute("srcset"),appliedStyle:e.getAttribute("style"),nonce:0,dispose(){}},r=()=>{let c=e.getBoundingClientRect(),a=o.layout,b=o.status==="loaded"&&a&&(a.width!==c.width||a.height!==c.height);m(o.id,{layout:{width:c.width,height:c.height},layoutShifts:(o.layoutShifts??0)+(b?1:0)})},n=()=>{let c=performance.getEntriesByName(e.currentSrc||e.src),a=c[c.length-1];m(o.id,{status:"loaded",loadedAt:Date.now(),intrinsic:{width:e.naturalWidth,height:e.naturalHeight},...!V(o.id)?.source&&B().network==="normal"?{uri:e.currentSrc||e.src}:{},durationMs:a?.duration,bytesTotal:a&&a.encodedBodySize>0?a.encodedBodySize:void 0,cacheVerdict:a&&a.transferSize>0?"none":void 0,cacheVerdictSource:a?"event":void 0}),r()},d=()=>m(o.id,{status:"error",erroredAt:Date.now(),error:"The browser could not load this image."});e.addEventListener("load",n),e.addEventListener("error",d);let u=typeof ResizeObserver>"u"?void 0:new ResizeObserver(r);u?.observe(e),s.dispose=()=>{u?.disconnect(),e.removeEventListener("load",n),e.removeEventListener("error",d)},v.set(e,s),r(),m(o.id,{status:"loading",startedAt:Date.now(),loadCount:1}),e.complete&&(e.naturalWidth>0?n():d()),N(s)}function wt(){let e=i();if(typeof document>"u"||e.captureDisabled||x)return;e.captureInstalled=!0;let t=()=>{for(let[r,n]of v)r.isConnected||(n.dispose(),v.delete(r),m(n.id,{mounted:!1}));document.querySelectorAll("img").forEach(St)},o=new MutationObserver(r=>{if(i().captureDisabled){ee();return}for(let n of r){let d=n.target,u=v.get(d);!u||n.type!=="attributes"||(n.attributeName==="src"&&d.getAttribute("src")!==u.appliedSource||n.attributeName==="srcset"&&d.getAttribute("srcset")!==u.appliedSrcset?(u.dispose(),v.delete(d),m(u.id,{mounted:!1})):n.attributeName==="style"&&d.getAttribute("style")!==u.appliedStyle&&(u.style=d.getAttribute("style"),N(u)))}t()});o.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcset","style","alt"]});let s=()=>{for(let r of v.values())N(r)};e.actionListeners.add(s),x=()=>{o.disconnect(),e.actionListeners.delete(s);for(let r of v.values()){r.dispose();for(let[n,d,u]of[["src",r.source,r.appliedSource],["srcset",r.srcset,r.appliedSrcset],["style",r.style,r.appliedStyle]])r.image.getAttribute(n)===u&&(d===null?r.image.removeAttribute(n):r.image.setAttribute(n,d));m(r.id,{mounted:!1})}v.clear(),e.captureInstalled=!1},t()}function ee(){x?.(),x=void 0}function on(){if(typeof document>"u")return()=>{};J++===0&&wt();let e=!1;return()=>{e||(e=!0,--J===0&&ee())}}function rn(){return i().mirrorCaptureStatus??{installed:!!x,rnDecoratorActive:!1,rnDecoratorTooLate:!1,expoPatched:!1,expoAvailable:!1,browserObserverActive:!!x}}export{Rt as a,g as b,le as c,de as d,ce as e,ue as f,me as g,P as h,He as i,Ge as j,$e as k,F as l,i as m,R as n,Lt as o,y as p,Ct as q,D as r,m as s,I as t,k as u,pt as v,ft as w,bt as x,mt as y,z,E as A,gt as B,j as C,K as D,ht as E,yt as F,U as G,M as H,jt as I,Kt as J,V as K,Gt as L,$t as M,qt as N,Yt as O,Xt as P,Zt as Q,B as R,wt as S,on as T,rn as U};
@@ -0,0 +1,4 @@
1
+ "use client";
2
+ import{A as L,B as me,C as K,D as _,E as ge,F as Lt,G as P,H as lt,I as D,J as q,K as Et,L as G,M as pe,N as fe,O as he,P as ye,Q as De,R as F,S as Fe,T as ct,U as j,a as At,b as c,c as p,d as g,e as ot,f as R,g as rt,h as nt,i as b,j as it,k as $e,l as U,m as le,n as Pt,o as zt,p as A,q as Te,r as ce,s as at,t as Ce,u as te,v as ue,w as de,x as Dt,y as Ft,z as st}from"./chunks/chunk-TTS5EH4R.mjs";c();c();c();c();import{ImagesIcon as Le,IMAGES_ICON_COLOR as Ee}from"@buoy-gg/shared-ui/web";c();U();import{useEffect as so,useState as lo}from"react";import{JsModal as co,macOSColors as uo,night as Be,windowDragProps as mo,ToolEmptyState as go}from"@buoy-gg/shared-ui/web";c();U();P();c();function oe(e){let t=new Map,o=[],r=[],n=0,l=0;for(let a of e)a.mounted&&a.uri&&t.set(a.uri,(t.get(a.uri)??0)+1),a.loadCount>=5&&o.push({id:a.id,uri:a.uri,loadCount:a.loadCount}),(a.layoutShifts??0)>0&&r.push({id:a.id,uri:a.uri,shifts:a.layoutShifts??0}),a.mounted&&a.hasAltText===!1&&n++,a.lib==="rn"&&a.mounted&&a.status==="loading"&&l++;return{duplicates:[...t.entries()].filter(([,a])=>a>1).map(([a,m])=>({uri:a,count:m})).sort((a,m)=>m.count-a.count),retryStorms:o.sort((a,m)=>m.loadCount-a.loadCount),queueSaturated:l>4,missingAlt:n,layoutShifters:r}}function be(e){let t=[];if(e.duplicates.length>0){let o=e.duplicates.reduce((r,n)=>r+n.count-1,0);t.push(`${e.duplicates.length} duplicate URL${e.duplicates.length>1?"s":""} (${o} redundant loads)`)}return e.retryStorms.length>0&&t.push(`${e.retryStorms.length} retry storm${e.retryStorms.length>1?"s":""}`),e.queueSaturated&&t.push("iOS image queue saturated (>4 loading)"),e.missingAlt>0&&t.push(`${e.missingAlt} missing alt text`),e.layoutShifters.length>0&&t.push(`${e.layoutShifters.length} layout-shifting image${e.layoutShifters.length>1?"s":""}`),t}c();P();import{macOSColors as z,night as Ve}from"@buoy-gg/shared-ui/web";function v(e){return e<=0?"0 B":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function E(e){return e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`}function ve(e){if(!e)return"(no source)";let t=e.match(/[?&]unstable_path=([^&?]+)/),o=t?decodeURIComponent(t[1]):e,n=(o.split("?")[0]??o).split("/").filter(Boolean);return n[n.length-1]??o}function J(e){let t=me(e);return t==null?{label:"",color:Ve.color.textTertiary,factor:t}:t<.9?{label:`${t.toFixed(1)}\xD7 upscaled`,color:z.semantic.info,factor:t}:t<=1.1?{label:"right-sized",color:z.semantic.success,factor:t}:t<=1.5?{label:`${t.toFixed(1)}\xD7 oversized`,color:z.semantic.warning,factor:t}:{label:`${t.toFixed(1)}\xD7 oversized`,color:z.semantic.error,factor:t}}function ut(e){switch(e.status){case"loaded":return z.semantic.success;case"error":return z.semantic.error;case"loading":return z.semantic.warning;default:return Ve.color.textTertiary}}function Q(e){let t=e.cacheVerdict;return t==="memory"||t==="disk/memory"?{label:t.toUpperCase(),color:z.semantic.success}:t==="disk"?{label:"DISK",color:z.semantic.warning}:t==="none"||e.progressSeen?{label:"NETWORK",color:z.semantic.error}:{label:"?",color:Ve.color.textTertiary}}function Ne(e){let t=J(e),o=Q(e),r=L(e),n=K(e),l=_(e),i=[];return i.push(`## Image report \u2014 ${ve(e.uri)}`),i.push(""),i.push(`- URI: ${e.uri||"(none)"}`),i.push(`- Library: ${e.lib==="expo"?"expo-image":"RN <Image>"} \xB7 kind: ${e.sourceKind} \xB7 mounted: ${e.mounted?"yes":"no"}`),i.push(`- Status: ${e.status}${e.errorCode?` (HTTP ${e.errorCode})`:""} \xB7 load cycles: ${e.loadCount}`),i.push(`- Cache: ${o.label}${e.cacheVerdictSource?` (via ${e.cacheVerdictSource==="event"?"expo onLoad":"Image.queryCache"})`:""}`),i.push(`- Load time: ${E(e.durationMs)}${e.displayedAt&&e.loadedAt?` \xB7 decode\u2192display ${E(Math.max(0,e.displayedAt-e.loadedAt))}`:""}`),e.intrinsic&&i.push(`- Decoded: ${e.intrinsic.width}\xD7${e.intrinsic.height}px${e.mediaType?` (${e.mediaType})`:""}${e.isAnimated?" animated":""} \u2248 ${v(n)} decoded memory`),e.layout&&i.push(`- Displayed: ${Math.round(e.layout.width)}\xD7${Math.round(e.layout.height)}dp @${nt.get()}x (needs ${r?`${r.width}\xD7${r.height}px`:"?"})`),t.label&&i.push(`- Size verdict: ${t.label}${l>0&&r?` \u2014 wasting \u2248${v(l)}; serve ${r.width}\xD7${r.height}`:""}`),e.progressSeen&&i.push(`- Network transfer: ${e.bytesTotal?v(e.bytesTotal):"observed"}`),e.hasAltText===!1&&i.push("- Accessibility: MISSING alt/accessibilityLabel"),(e.layoutShifts??0)>0&&i.push(`- Layout shifts after load: ${e.layoutShifts} (reserve explicit dimensions)`),e.error&&(i.push(`- Error: ${e.error}`),e.errorHeaders&&i.push(`- Response headers: ${JSON.stringify(e.errorHeaders)}`)),e.overrideLabel&&i.push(`- Simulation active: ${e.overrideLabel}`),i.join(`
3
+ `)}function We(e,t,o,r,n){let l=[];l.push(`## Buoy Images registry (${t.total} records)`),l.push(""),l.push(`${t.loaded} loaded \xB7 ${t.errors} failed \xB7 ${t.loading} in flight \xB7 \u2248${v(t.estDecodedBytes)} decoded`+(t.estWastedBytes>0?` \xB7 ${v(t.estWastedBytes)} wasted on oversized sources`:""));let i=be(o);i.length>0&&l.push(`Insights: ${i.join(" \xB7 ")}`),(n.network!=="normal"||n.blank)&&l.push(`Simulation active: network=${n.network}${n.blank?", blank images":""}`),r.rnDecoratorTooLate&&l.push("\u26A0 RN <Image> capture inactive (register import too late)"),l.push(""),l.push("| image | lib | status | cache | ms | decoded px | shown dp | verdict | notes |"),l.push("|---|---|---|---|---|---|---|---|---|");for(let a of e){let m=J(a),T=Q(a),f=a.intrinsic?`${a.intrinsic.width}\xD7${a.intrinsic.height}`:"\u2013",k=a.layout?`${Math.round(a.layout.width)}\xD7${Math.round(a.layout.height)}`:"\u2013",h=[a.error?`error: ${a.error}`:null,a.overrideLabel?`sim: ${a.overrideLabel}`:null,a.hasAltText===!1?"no alt":null,(a.layoutShifts??0)>0?`${a.layoutShifts} layout shifts`:null,a.mounted?null:"unmounted"].filter(Boolean).join("; ");l.push(`| ${ve(a.uri)} | ${a.lib} | ${a.status} | ${T.label} | ${a.durationMs!=null?Math.round(a.durationMs):"\u2013"} | ${f} | ${k} | ${m.label||"\u2013"} | ${h||"\u2013"} |`)}return l.join(`
4
+ `)}c();P();import{useMemo as Vt,useSyncExternalStore as Nt}from"react";function He(){let e=Nt(ue,te,te);return Vt(()=>({records:[...e].reverse(),stats:ge(e)}),[e])}ce();P();c();c();function re(){return null}function dt(){return null}function mt(){return null}U();import{useState as Ue}from"react";import{macOSColors as C,night as w,monoFont as Wt}from"@buoy-gg/shared-ui/web";c();ce();P();var we=new Map;async function xe(e){let t=A();if(t)return await t("proveSavings",{id:e.id});let o=L(e);if(!o)return{ok:!1,message:"Measure the displayed image before optimizing it."};try{let r=await fetch(e.uri);if(!r.ok)throw new Error(`Image download returned HTTP ${r.status}.`);let n=await r.blob(),l=await createImageBitmap(n),i=document.createElement("canvas");i.width=Math.max(1,Math.min(l.width,Math.round(o.width))),i.height=Math.max(1,Math.min(l.height,Math.round(o.height)));let a=i.getContext("2d");if(!a)throw l.close(),new Error("Canvas is unavailable.");a.drawImage(l,0,0,i.width,i.height),l.close();let m=await new Promise((h,ee)=>i.toBlob(ke=>ke?h(ke):ee(new Error("Image encoding failed.")),"image/webp",.8));if(m.type!=="image/webp")return{ok:!1,message:"This browser cannot encode WebP images."};let T=we.get(e.id);T&&URL.revokeObjectURL(T);let f=URL.createObjectURL(m);for(we.set(e.id,f);we.size>30;){let[h,ee]=we.entries().next().value;URL.revokeObjectURL(ee),we.delete(h)}let k=n.size-m.size;return{ok:!0,message:"WebP preview created.",originalBytes:n.size,originalBytesSource:"download",optimizedBytes:m.size,optimizedUri:f,optimizedDims:{width:i.width,height:i.height},savedBytes:k,savedPct:n.size?k/n.size*100:0}}catch(r){return{ok:!1,message:`Image optimization failed: ${r instanceof Error?r.message:String(r)}`}}}ce();P();import{Fragment as Kt,jsx as s,jsxs as I}from"react/jsx-runtime";function Y({title:e,children:t}){return I(p,{style:u.section,children:[s(g,{style:u.sectionTitle,children:e}),s(p,{style:u.sectionBody,children:t})]})}function d({label:e,value:t,color:o}){return I(p,{style:u.kvRow,children:[s(g,{style:u.kvLabel,children:e}),s(g,{style:[u.kvValue,o?{color:o}:null],selectable:!0,children:t})]})}function gt(e){let t=A();if(t){t("clearExpoCaches",{memory:e==="memory",disk:e==="disk"});return}try{let o=re();e==="memory"?o.Image.clearMemoryCache():o.Image.clearDiskCache()}catch{}}function Ht({record:e}){let[t,o]=Ue(e.uri),r=t.trim(),n=e.mounted&&r.length>0&&r!==e.uri;return I(Y,{title:"SWAP SOURCE URL",children:[s(ot,{style:u.urlInput,value:t,onChangeText:o,placeholder:"https://\u2026",placeholderTextColor:w.color.placeholder,autoCapitalize:"none",autoCorrect:!1,multiline:!0}),I(p,{style:u.actionsRow,children:[s(R,{style:[u.actionButton,!n&&u.actionDisabled],disabled:!n,onPress:()=>D(e.id,{source:{type:"url",uri:r},label:"URL swapped"}),children:s(g,{style:u.actionText,children:"Apply"})}),s(R,{style:u.actionButton,onPress:()=>o(e.uri),children:s(g,{style:u.actionText,children:"Reset field"})})]})]})}function Ut({record:e}){let[t,o]=Ue(!1),[r,n]=Ue(null),l=()=>{o(!0),xe(e).then(n).catch(i=>n({ok:!1,message:String(i?.message??i)})).finally(()=>o(!1))};return s(Y,{title:"PROVE SAVINGS (re-encode on device)",children:r==null?s(p,{style:u.actionsRow,children:s(R,{style:u.actionButton,onPress:l,disabled:t,children:s(g,{style:u.actionText,children:t?"Re-encoding\u2026":"Re-encode at displayed size (WebP)"})})}):I(Kt,{children:[s(d,{label:"Result",value:r.message||(r.ok?"done":"failed"),color:r.ok?C.semantic.success:C.semantic.error}),r.originalBytes!=null?s(d,{label:"Original",value:`${v(r.originalBytes)} (${r.originalBytesSource})`}):null,r.optimizedBytes!=null?s(d,{label:"Optimized",value:`${v(r.optimizedBytes)} \u2014 ${r.optimizedDims?.width}\xD7${r.optimizedDims?.height} WebP`,color:C.semantic.success}):null,r.savedBytes!=null?s(d,{label:"Saved",value:`${v(r.savedBytes)} (${r.savedPct}%)`,color:C.semantic.success}):null,I(p,{style:u.actionsRow,children:[r.ok&&r.optimizedUri&&e.mounted?s(R,{style:u.actionButton,onPress:()=>D(e.id,{source:{type:"url",uri:r.optimizedUri},label:"Optimized preview"}),children:s(g,{style:u.actionText,children:"Preview in place"})}):null,s(R,{style:u.actionButton,onPress:l,disabled:t,children:s(g,{style:u.actionText,children:t?"Re-encoding\u2026":"Re-run"})})]})]})})}function pt({record:e}){let t=J(e),o=Q(e),r=L(e),n=K(e),l=_(e);return I(rt,{style:u.container,contentContainerStyle:u.content,children:[e.overrideLabel?I(p,{style:u.overrideBanner,children:[I(g,{style:u.overrideText,children:["Simulation active: ",e.overrideLabel," \u2014 stats below describe the override, not the original source."]}),s(R,{onPress:()=>q(e.id),children:s(g,{style:u.overrideRestore,children:"RESTORE"})})]}):null,e.uri&&e.sourceKind!=="data"?s(p,{style:u.previewBox,children:s($e,{testID:"buoy-internal-images-preview",source:{uri:e.uri},style:u.preview,resizeMode:"contain"})}):null,I(Y,{title:"SOURCE",children:[s(d,{label:"URI",value:e.uri||"(none)"}),s(d,{label:"Kind",value:e.sourceKind}),s(d,{label:"Library",value:e.lib==="web"?"Browser <img>":e.lib==="expo"?"expo-image":"RN <Image>"}),e.hasAltText===!1?s(d,{label:"Alt text",value:"missing \u2014 add alt/accessibilityLabel",color:C.semantic.warning}):null,e.mediaType!=null?s(d,{label:"Media type",value:String(e.mediaType)}):null,e.isAnimated!=null?s(d,{label:"Animated",value:e.isAnimated?"yes":"no"}):null]}),I(Y,{title:"LOAD",children:[s(d,{label:"Status",value:e.status,color:e.status==="error"?C.semantic.error:e.status==="loaded"?C.semantic.success:C.semantic.warning}),s(d,{label:"Duration",value:E(e.durationMs)}),e.displayedAt&&e.loadedAt?s(d,{label:"Decode \u2192 display",value:E(Math.max(0,e.displayedAt-e.loadedAt))}):null,s(d,{label:"Cache",value:`${o.label}`,color:o.color}),e.cacheVerdictSource?s(d,{label:"Cache source",value:e.cacheVerdictSource==="event"?"reported by expo-image onLoad":"Image.queryCache after load"}):null,e.progressSeen?s(d,{label:"Downloaded",value:e.bytesTotal?`${v(e.bytesLoaded??0)} / ${v(e.bytesTotal)}`:"network transfer observed"}):null,s(d,{label:"Load cycles",value:String(e.loadCount)}),s(d,{label:"Still mounted",value:e.mounted?"yes":"no"})]}),I(Y,{title:"DIMENSIONS",children:[e.intrinsic?s(d,{label:"Decoded",value:`${e.intrinsic.width}\xD7${e.intrinsic.height} px`}):s(d,{label:"Decoded",value:"unknown"}),e.layout?s(d,{label:"Displayed",value:`${Math.round(e.layout.width)}\xD7${Math.round(e.layout.height)} dp (needs ${r?`${r.width}\xD7${r.height}`:"?"} px @${Math.round(st()*100)/100}x)`}):s(d,{label:"Displayed",value:"no layout yet"}),t.label?s(d,{label:"Verdict",value:t.label,color:t.color}):null,n>0?s(d,{label:"Est. decoded memory",value:v(n)}):null,l>0?s(d,{label:"Est. wasted",value:`${v(l)} \u2014 resize the source to ${r?`${r.width}\xD7${r.height}`:"the displayed size"}`,color:C.semantic.warning}):null,(e.layoutShifts??0)>0?s(d,{label:"Layout shifts",value:`${e.layoutShifts} \u2014 box resized after load; reserve explicit width/height`,color:C.semantic.warning}):null]}),e.sourceKind==="network"||e.sourceKind==="asset"?s(Ut,{record:e},`savings-${e.id}`):null,e.status==="error"?I(Y,{title:"ERROR",children:[s(d,{label:"Message",value:e.error??"unknown",color:C.semantic.error}),e.errorCode!=null?s(d,{label:"HTTP status",value:String(e.errorCode)}):null,e.errorHeaders?Object.entries(e.errorHeaders).map(([i,a])=>s(d,{label:i,value:String(a)},i)):null]}):null,e.sourceKind==="network"&&e.mounted?s(Ht,{record:e},e.id):null,e.lib==="expo"?s(Y,{title:"CACHE ACTIONS (expo-image, global)",children:I(p,{style:u.actionsRow,children:[s(R,{style:u.actionButton,onPress:()=>gt("memory"),children:s(g,{style:u.actionText,children:"Clear memory cache"})}),s(R,{style:u.actionButton,onPress:()=>gt("disk"),children:s(g,{style:u.actionText,children:"Clear disk cache"})})]})}):null]})}var u=b.create({container:{flex:1},content:{padding:12,gap:12},previewBox:{height:140,borderRadius:8,backgroundColor:w.color.bg,overflow:"hidden"},preview:{width:"100%",height:"100%"},section:{gap:6},sectionTitle:{color:w.color.textTertiary,fontSize:10,fontWeight:"700",letterSpacing:.8},sectionBody:{backgroundColor:w.color.surface,borderRadius:8,borderWidth:b.hairlineWidth,borderColor:w.color.border,paddingHorizontal:10,paddingVertical:4},kvRow:{flexDirection:"row",paddingVertical:5,gap:12},kvLabel:{color:w.color.textSecondary,fontSize:11,width:110},kvValue:{color:w.color.text,fontSize:11,flex:1},actionsRow:{flexDirection:"row",gap:8,paddingVertical:8},actionButton:{backgroundColor:w.color.surfaceElevated,borderRadius:6,paddingHorizontal:10,paddingVertical:6,borderWidth:b.hairlineWidth,borderColor:w.color.border},actionText:{color:w.color.text,fontSize:11,fontWeight:"600"},actionDisabled:{opacity:.4},urlInput:{color:w.color.text,fontSize:11,fontFamily:Wt,backgroundColor:w.color.surfaceElevated,borderRadius:6,borderWidth:b.hairlineWidth,borderColor:w.color.border,paddingHorizontal:8,paddingVertical:6,marginTop:8},overrideBanner:{flexDirection:"row",alignItems:"center",gap:10,padding:10,borderRadius:8,backgroundColor:w.color.warningSoft},overrideText:{flex:1,color:w.color.warning,fontSize:11,lineHeight:15},overrideRestore:{color:w.color.warning,fontSize:11,fontWeight:"700",letterSpacing:.5}});c();U();import{useState as qt}from"react";import{ChevronLeft as Gt,ChevronRight as jt,FooterButton as _e,FooterMessage as bt,FooterRow as vt,RefreshCw as Jt,ToolFooter as Qt,night as Z}from"@buoy-gg/shared-ui/web";c();ce();Pt();function ft(e){return le().actionListeners.add(e),()=>le().actionListeners.delete(e)}function ht(e,t){let o=le(),r=o.reloadRequests.get(e);o.reloadRequests.set(e,{nonce:(r?.nonce??0)+1,bust:t}),lt(e)}function yt(){try{return re().Image??null}catch{return null}}function _t(){try{let e=dt(),t=e?.default||e;if(t?.deleteAsync)return t}catch{}try{let e=mt(),t=e?.default||e;if(t?.deleteAsync)return t}catch{}return null}async function Me(e){let t=yt(),o=_t();if(!t?.getCachePathAsync||!o?.deleteAsync||!e.uri)return!1;try{let r=await t.getCachePathAsync(e.uri);if(!r)return!1;let n=r.startsWith("file://")?r:`file://${r}`;return await o.deleteAsync(n,{idempotent:!0}),!0}catch{return!1}}async function X(e){let t=A();if(t)return Te(t("retry",{id:e.id}));if(!e.mounted)return{ok:!1,message:"Instance unmounted \u2014 cannot reload"};if(e.lib==="expo"){let o=le().expoInstances.get(e.id);return o?.reloadAsync?(await o.reloadAsync(),{ok:!0,message:"Reload requested"}):{ok:!1,message:"Live instance not reachable"}}return ht(e.id,!1),{ok:!0,message:"Remounting image"}}async function Se(){let e=A();if(e)return Te(e("massAction",{kind:"reload"}));let{getSnapshot:t}=(P(),At(Lt)),o=0;for(let r of t()){if(!r.mounted)continue;(await ne(r)).ok&&o++}return{ok:o>0,message:`Hard-reloading ${o} mounted image${o===1?"":"s"}`}}async function ne(e){let t=A();if(t)return Te(t("hardReload",{id:e.id}));if(!e.mounted)return{ok:!1,message:"Instance unmounted \u2014 cannot reload"};if(e.sourceKind!=="network")return X(e);if(e.lib==="expo"){let o=await Me(e);await yt()?.clearMemoryCache?.().catch?.(()=>!1);let n=await X(e);return n.ok?{ok:!0,message:o?"Disk entry evicted, memory cache cleared, refetching":"Memory cache cleared, refetching (no disk entry found)"}:n}return ht(e.id,!0),{ok:!0,message:"Refetching with cache bypassed"}}import{jsx as x,jsxs as Ke}from"react/jsx-runtime";function wt({record:e,hasPrevious:t,hasNext:o,onPrevious:r,onNext:n}){let[l,i]=qt(null),a=k=>{i("\u2026"),k().then(h=>i(h.message)).catch(h=>i(String(h?.message??h)))},m=!e.mounted,T=e.overrideLabel!=null,f=(k,h)=>{D(e.id,{source:k,label:h}),i(`${h} \u2014 Restore to undo`)};return Ke(Qt,{children:[l?x(bt,{children:l}):m?x(bt,{tone:"muted",children:"Instance unmounted \u2014 reload actions need the image on screen."}):null,Ke(vt,{style:{gap:8},children:[x(R,{onPress:r,disabled:!t,style:[Oe.navButton,!t&&Oe.disabled],activeOpacity:.7,accessibilityLabel:"Previous image",children:x(Gt,{size:20,color:t?Z.color.accent:Z.color.textTertiary})}),x(_e,{label:"Hard reload",size:"md",disabled:m,icon:x(Jt,{size:13,color:m?Z.color.textTertiary:Z.color.info}),onPress:()=>a(()=>ne(e))}),x(_e,{label:e.status==="error"?"Retry":"Reload",size:"md",disabled:m,onPress:()=>a(()=>X(e))}),x(R,{onPress:n,disabled:!o,style:[Oe.navButton,!o&&Oe.disabled],activeOpacity:.7,accessibilityLabel:"Next image",children:x(jt,{size:20,color:o?Z.color.accent:Z.color.textTertiary})})]}),Ke(vt,{style:{gap:8},children:[x(Re,{label:"Error",disabled:m,onPress:()=>f({type:"error"},"Forced error")}),x(Re,{label:"Loading",disabled:m,onPress:()=>f({type:"hang"},"Forced loading")}),x(Re,{label:"Blank",disabled:m,onPress:()=>f({type:"blank"},"Blanked")}),x(Re,{label:"Find",disabled:m,onPress:()=>{he(e.id),i("Flashing a red border on the image (2.5s)")}}),x(Re,{label:"Restore",accent:!0,disabled:!T,onPress:()=>{q(e.id),i("Override removed \u2014 original source restored")}})]})]})}function Re({label:e,onPress:t,disabled:o,accent:r}){return x(_e,{label:e,onPress:t,disabled:o,accent:r,style:{paddingVertical:7}})}var Oe=b.create({navButton:{paddingHorizontal:10,paddingVertical:8,borderRadius:6,backgroundColor:Z.color.button,alignItems:"center",justifyContent:"center"},disabled:{opacity:.4}});c();U();import{macOSColors as Yt,night as V,Pill as qe}from"@buoy-gg/shared-ui/web";import{jsx as M,jsxs as Ie}from"react/jsx-runtime";function xt({record:e,onPress:t}){let o=J(e),r=Q(e),n=e.sourceKind==="network"||e.sourceKind==="asset"||e.sourceKind==="file";return Ie(R,{style:$.row,testID:`buoy-image-row-${e.id}`,onPress:()=>t(e.id),children:[Ie(p,{style:$.thumbBox,children:[n&&e.uri?M($e,{testID:"buoy-internal-images-thumb",source:{uri:e.uri},style:$.thumb,resizeMode:"cover"}):M(g,{style:$.thumbFallback,children:"?"}),M(p,{style:[$.statusDot,{backgroundColor:ut(e)}]})]}),Ie(p,{style:$.main,children:[M(g,{style:$.name,numberOfLines:1,children:ve(e.uri)}),Ie(p,{style:$.metaRow,children:[M(qe,{variant:"text",label:e.lib==="web"?"WEB":e.lib==="expo"?"EXPO":"RN",color:V.color.textTertiary}),M(qe,{variant:"text",label:r.label,color:r.color}),e.overrideLabel?M(qe,{variant:"text",label:"SIM",color:V.color.warning}):null,M(g,{style:$.meta,children:E(e.durationMs)}),e.intrinsic?Ie(g,{style:$.meta,children:[e.intrinsic.width,"\xD7",e.intrinsic.height]}):null]})]}),M(p,{style:$.right,children:e.status==="error"?M(g,{style:[$.verdict,{color:Yt.semantic.error}],children:"FAILED"}):o.label?M(g,{style:[$.verdict,{color:o.color}],children:o.label}):null})]})}var $=b.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:12,paddingVertical:8,borderBottomWidth:b.hairlineWidth,borderBottomColor:V.color.border,gap:10},thumbBox:{width:40,height:40,borderRadius:6,backgroundColor:V.color.bg,alignItems:"center",justifyContent:"center",overflow:"hidden"},thumb:{width:40,height:40},thumbFallback:{color:V.color.textTertiary,fontSize:16,fontWeight:"700"},statusDot:{position:"absolute",right:2,bottom:2,width:8,height:8,borderRadius:4,borderWidth:1,borderColor:V.color.bg},main:{flex:1,gap:2},name:{color:V.color.text,fontSize:12,fontWeight:"600"},metaRow:{flexDirection:"row",alignItems:"center",gap:8},meta:{color:V.color.textSecondary,fontSize:10,fontVariant:["tabular-nums"]},right:{alignItems:"flex-end"},verdict:{fontSize:10,fontWeight:"700"}});c();import{ModalHeader as N,ToolbarClearButton as Xt,ToolbarCopyButton as St}from"@buoy-gg/shared-ui/web";import{jsx as W,jsxs as Ge}from"react/jsx-runtime";function Rt({stats:e,detailOpen:t,detailIndex:o=-1,detailTotal:r=0,onCloseDetail:n,onClear:l,getReport:i,onBack:a}){if(t){let T=o>=0&&r>0?`${o+1} of ${r}`:void 0;return Ge(N,{children:[W(N.Navigation,{onBack:n}),W(N.Content,{title:"Image detail",subtitle:T}),W(N.Actions,{children:W(St,{value:i})})]})}let m=[`${e.total} images`,`${e.errors} failed`,`\u2248${v(e.estDecodedBytes)} decoded`];return e.estWastedBytes>0&&m.push(`${v(e.estWastedBytes)} wasted`),Ge(N,{children:[a?W(N.Navigation,{onBack:a}):null,W(N.Content,{title:"Images",subtitle:m.join(" \xB7 ")}),Ge(N.Actions,{children:[W(St,{value:i}),W(Xt,{onPress:l})]})]})}c();U();import{useState as Zt,useSyncExternalStore as eo}from"react";import{FooterButton as kt,FooterCaption as to,FooterMessage as oo,FooterRow as It,ToolFooter as ro,night as no}from"@buoy-gg/shared-ui/web";import{jsx as O,jsxs as je}from"react/jsx-runtime";var io=[{key:"normal",label:"Normal"},{key:"offline",label:"Offline"},{key:"cold",label:"Cold"}];function $t(){let[e,t]=Zt(null),o=eo(ft,()=>F().network),r=(n,l)=>{let i=G(n,l);t(i>0?`${l} on ${i} image${i===1?"":"s"} \u2014 Restore all to undo`:"No mounted images")};return je(ro,{paddingBottom:10,style:{paddingTop:8},children:[e?O(oo,{children:e}):O(to,{children:"MASS ACTIONS \u2014 every image on screen"}),je(It,{children:[O(ie,{label:"Error",onPress:()=>r({type:"error"},"Forced error")}),O(ie,{label:"Loading",onPress:()=>r({type:"hang"},"Forced loading")}),O(ie,{label:"Blank",onPress:()=>r({type:"blank"},"Blanked")}),O(ie,{label:"Reload",onPress:()=>{t("\u2026"),Se().then(n=>t(n.message))}}),O(ie,{label:"Find",onPress:()=>{let n=fe();t(`Flashing ${n} image${n===1?"":"s"} (2.5s)`)}}),O(ie,{label:"Restore",accent:!0,onPress:()=>{let n=pe();t(n>0?`Restored ${n} image${n===1?"":"s"}`:"No overrides active")}})]}),je(It,{children:[O(g,{style:ao.netLabel,children:"NET"}),io.map(n=>{let l=o===n.key;return O(kt,{label:n.label,active:l,style:{paddingVertical:6},onPress:()=>{ye(n.key),t(n.key==="normal"?"Network simulation off \u2014 tap RELOAD to load normally again":n.key==="offline"?"Offline: network images FAIL (bundled assets still load) \u2014 tap RELOAD to apply to on-screen images":"Cold (bypass caches) \u2014 tap RELOAD: everything refetches like first launch")}},n.key)})]})]})}function ie({label:e,onPress:t,accent:o}){return O(kt,{label:e,onPress:t,accent:o})}var ao=b.create({netLabel:{color:no.color.textTertiary,fontSize:9,fontWeight:"700",letterSpacing:.8,alignSelf:"center",marginRight:2}});c();U();import{night as Je}from"@buoy-gg/shared-ui/web";import{jsx as Ye}from"react/jsx-runtime";function Tt({insights:e}){let t=be(e);return t.length===0?null:Ye(p,{style:Qe.bar,children:t.map(o=>Ye(p,{style:Qe.chip,children:Ye(g,{style:Qe.chipText,children:o})},o))})}var Qe=b.create({bar:{flexDirection:"row",flexWrap:"wrap",gap:6,paddingHorizontal:10,paddingVertical:8,borderBottomWidth:b.hairlineWidth,borderBottomColor:Je.color.border},chip:{backgroundColor:Je.color.warningSoft,borderRadius:999,paddingHorizontal:10,paddingVertical:5},chipText:{color:Je.color.warning,fontSize:10,fontWeight:"600",lineHeight:13}});import{jsx as S,jsxs as Xe}from"react/jsx-runtime";function po(){let e=j(),t=[];return e.rnDecoratorTooLate&&t.push('RN <Image> instrumentation missed the module-load race \u2014 add `import "@buoy-gg/images/register"` as the FIRST import of your entry file.'),!e.browserObserverActive&&!e.expoAvailable&&!e.rnDecoratorActive&&!e.rnDecoratorTooLate&&t.push("Waiting for images\u2026 render some <Image> components to populate the list."),t.length===0?null:S(p,{style:ae.notice,children:t.map(o=>S(g,{style:ae.noticeText,children:o},o))})}function fo(){return S(go,{testID:"buoy-images-empty",otto:"listening",title:"No images captured yet",message:"Every RN <Image> and expo-image load is recorded here with cache verdicts, timings, and oversize checks."})}function Ae({visible:e,onClose:t,onBack:o,onMinimize:r,persistenceKey:n,inline:l=!1}){Fe();let{records:i,stats:a}=He(),[m,T]=lo(null),f=m!=null?Ce(m):void 0,k=f?.status==="error"&&f.errorHeaders==null?f.id:null;so(()=>{let B=A();if(k==null||!B)return;let se=!1;return B("getDetail",{id:k}).then(Ot=>{if(se)return;let Bt=Ot?.errorHeaders;at(k,{errorHeaders:Bt??{}})}).catch(()=>{}),()=>{se=!0}},[k]);let h=f?i.findIndex(B=>B.id===f.id):-1,ee=B=>{let se=i[B];se&&T(se.id)},ke=()=>f?Ne(f):We(i,a,oe(i),j(),F()),et=S(Rt,{stats:a,detailOpen:f!=null,detailIndex:h,detailTotal:i.length,onCloseDetail:()=>T(null),onClear:de,getReport:ke,onBack:o}),tt=f?Xe(p,{style:ae.detailContainer,children:[S(pt,{record:f}),S(wt,{record:f,hasPrevious:h>0,hasNext:h>=0&&h<i.length-1,onPrevious:()=>ee(h-1),onNext:()=>ee(h+1)},f.id)]}):Xe(p,{style:ae.listContainer,children:[S(Tt,{insights:oe(i)}),S(po,{}),S(it,{data:i,keyExtractor:B=>String(B.id),renderItem:({item:B})=>S(xt,{record:B,onPress:T}),ListEmptyComponent:S(fo,{})}),S($t,{})]});return l?Xe(p,{style:ae.inlineRoot,children:[S(p,{style:ae.inlineHeader,...mo,children:et}),tt]}):S(co,{visible:e,onClose:t,onMinimize:r,persistenceKey:n,header:{showToggleButton:!0,customContent:et},enablePersistence:!0,initialMode:"bottomSheet",disableScrollWrapper:!0,children:tt})}function ho(e={}){return S(Ae,{...e,inline:!0,visible:!0,onClose:()=>{}})}var ae=b.create({inlineRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},inlineHeader:{paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:uo.border.default,backgroundColor:"transparent"},listContainer:{flex:1},detailContainer:{flex:1},notice:{margin:10,padding:10,borderRadius:8,backgroundColor:Be.color.warningSoft,gap:4},noticeText:{color:Be.color.warning,fontSize:11},empty:{alignItems:"center",padding:32,gap:8},emptyTitle:{color:Be.color.text,fontSize:13,fontWeight:"600"},emptyText:{color:Be.color.textSecondary,fontSize:11,textAlign:"center",lineHeight:16}});import{createToolFactory as yo,defineToolPreset as bo}from"@buoy-gg/shared-ui/web";import{jsx as wo}from"react/jsx-runtime";var Ct=bo({id:"images",name:"IMAGES",description:"Image loads, caching, failures, and oversize checks",slot:"both",icon:({size:e,color:t})=>wo(Le,{size:e,color:t||Ee}),component:Ae}),vo=yo(Ct);c();import{useEffect as xo}from"react";function So(){return xo(ct,[]),null}c();P();var Pe=2*1024;function ze(e){if(!e)return e;if(e.startsWith("data:")){let t=e.indexOf(","),o=t>=0?e.slice(0,Math.min(t+1,64)):"data:",r=t>=0?e.slice(t+1):e,n=r.length>16?`${r.slice(0,8)}\u2026${r.slice(-8)}`:r;return`${o}[${e.length} chars ${n}]`}return e.length<=Pe?e:`${e.slice(0,Pe)}\u2026 [${e.length-Pe} more]`}function Ro(e,t=Pe){return e?e.length<=t?e:`${e.slice(0,t)}\u2026 [${e.length-t} more]`:null}function Io(e){return{...e,duplicates:e.duplicates.map(t=>({...t,uri:ze(t.uri)})),retryStorms:e.retryStorms.map(t=>({...t,uri:ze(t.uri)})),layoutShifters:e.layoutShifters.map(t=>({...t,uri:ze(t.uri)}))}}function Ze(e){let t=me(e);return{id:e.id,lib:e.lib,uri:ze(e.uri),kind:e.sourceKind,status:e.status,mounted:e.mounted,cache:e.cacheVerdict??null,cacheSource:e.cacheVerdictSource??null,ms:e.durationMs!=null?Math.round(e.durationMs):null,intrinsic:e.intrinsic??null,layout:e.layout?{width:Math.round(e.layout.width),height:Math.round(e.layout.height)}:null,neededPx:L(e),oversizeFactor:t!=null?Math.round(t*100)/100:null,decodedKB:Math.round(K(e)/1024),wastedKB:Math.round(_(e)/1024),progressSeen:e.progressSeen===!0,bytesTotal:e.bytesTotal??null,error:Ro(e.error),errorCode:e.errorCode??null,loadCount:e.loadCount,overrideLabel:e.overrideLabel??null,hasAltText:e.hasAltText??null,layoutShifts:e.layoutShifts??0,ageMs:Date.now()-e.createdAt}}function H(e){let t=e?.id;if(typeof t!="number")throw new Error("Missing numeric `id` param");let o=Ce(t);if(!o)throw new Error(`Image record ${t} not found (cleared or evicted) \u2014 re-run the list action for current ids.`);return o}function Mt(){let e=te();return{stats:ge(e),captureStatus:j(),globalModes:F(),insights:Io(oe(e)),records:[...e].reverse()}}var ko={version:1,getSnapshot:()=>{let{records:e,...t}=Mt();return{...t,records:e.slice(0,100).map(Ze)}},subscribe:e=>ue(e),actions:{list:e=>{let t=e??{},o=Math.min(Math.max(t.limit??50,1),200),{records:r,...n}=Mt(),l=t.status?r.filter(i=>i.status===t.status):r;return{...n,total:l.length,records:l.slice(0,o).map(Ze)}},getDetail:e=>{let t=H(e);return{...Ze(t),errorHeaders:t.errorHeaders??null}},hardReload:e=>ne(H(e)),proveSavings:e=>xe(H(e)),retry:e=>X(H(e)),evictDisk:async e=>{let t=H(e),o=await Me(t);return{ok:o,message:o?"Disk cache entry deleted":"No disk entry found (expo-image + expo-file-system required)"}},flash:e=>(he(H(e).id),{ok:!0,message:"Flashing for 2.5s"}),setOverride:e=>{let t=H(e),o=e,r={error:{source:{type:"error"},label:"Forced error"},hang:{source:{type:"hang"},label:"Forced loading"},blank:{source:{type:"blank"},label:"Blanked"}};if(o.kind==="url"){if(!o.uri)throw new Error("kind 'url' requires a `uri` param");return D(t.id,{source:{type:"url",uri:o.uri},label:"URL swapped"}),{ok:!0,message:`Source overridden to ${o.uri}`}}let n=o.kind?r[o.kind]:void 0;if(!n)throw new Error(`Unknown override kind: ${String(o.kind)}`);return t.mounted?(D(t.id,n),{ok:!0,message:`${n.label} applied`}):{ok:!1,message:"Instance unmounted \u2014 overrides need the image on screen"}},clearOverride:e=>(q(H(e).id),{ok:!0,message:"Override removed \u2014 original source restored"}),massAction:async e=>{let t=e?.kind;switch(t){case"error":{let o=G({type:"error"},"Forced error");return{ok:o>0,message:`Forced error on ${o} images`}}case"loading":{let o=G({type:"hang"},"Forced loading");return{ok:o>0,message:`Forced loading on ${o} images`}}case"blank":{let o=G({type:"blank"},"Blanked");return{ok:o>0,message:`Blanked ${o} images`}}case"reload":return Se();case"flash":{let o=fe();return{ok:o>0,message:`Flashing ${o} images`}}case"restore":return{ok:!0,message:`Restored ${pe()} images`};default:throw new Error(`Unknown mass kind: ${String(t)}`)}},setNetworkMode:e=>{let t=e?.mode;if(t!=="normal"&&t!=="offline"&&t!=="cold")throw new Error("mode must be 'normal' | 'offline' | 'cold'");return ye(t),{ok:!0,modes:F()}},setBlankImages:e=>(De(e?.enabled===!0),{ok:!0,modes:F()}),clearRecords:()=>(de(),{ok:!0,message:"Registry cleared"}),clearExpoCaches:async e=>{let t=e??{},o=t.memory!==!1,r=t.disk!==!1;try{let n=re(),l=[];return o&&(await n.Image.clearMemoryCache(),l.push("memory")),r&&(await n.Image.clearDiskCache(),l.push("disk")),{ok:!0,message:`Cleared expo-image ${l.join(" + ")} cache`}}catch{return{ok:!1,message:"expo-image not installed"}}},getCaptureStatus:()=>j()}};P();ce();P();export{Ee as IMAGES_ICON_COLOR,Le as ImagesIcon,Ae as ImagesModal,So as ImagesRoot,ho as ImagesToolView,pe as clearAllOverrides,q as clearOverride,de as clearRecords,oe as computeInsights,ge as computeStats,vo as createImagesTool,Dt as disableImagesCapture,K as estDecodedBytes,_ as estWastedBytes,Me as evictExpoDiskEntry,fe as flashAllMounted,he as flashRecord,Ne as formatRecordMarkdown,We as formatRegistryMarkdown,j as getCaptureStatus,F as getGlobalModes,te as getImageRecords,Et as getOverride,Se as hardReloadAllMounted,ne as hardReloadRecord,ko as imagesSyncAdapter,Ct as imagesToolPreset,be as insightChips,Fe as installImageCapture,me as oversizeFactor,xe as proveSavings,Ft as replaceImagesFromSnapshot,X as retryRecord,De as setBlankImages,ye as setNetworkMode,D as setOverride,G as setOverrideForAllMounted,zt as setRemoteImagesHandler,ue as subscribeImageRecords,He as useImageRecords};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{S as m,b as a}from"./chunks/chunk-TTS5EH4R.mjs";a();m();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/images",
3
- "version": "7.0.39",
3
+ "version": "7.0.41",
4
4
  "description": "Inspect instrumented React Native Image and expo-image loads, available cache and timing data, failures, and image-size estimates.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -14,19 +14,32 @@
14
14
  ],
15
15
  "sideEffects": [
16
16
  "**/register.*",
17
- "**/index.*"
17
+ "**/index.*",
18
+ "./lib/web/**/*.mjs",
19
+ "**/autoCapture.*"
18
20
  ],
19
21
  "dependencies": {
20
- "@buoy-gg/shared-ui": "^7.0.39"
22
+ "@buoy-gg/shared-ui": "^7.0.41"
21
23
  },
22
24
  "peerDependencies": {
23
25
  "expo-image": "*",
24
26
  "react": "*",
25
- "react-native": "*"
27
+ "react-native": "*",
28
+ "react-native-web": "^0.21.0",
29
+ "react-dom": ">=18"
26
30
  },
27
31
  "peerDependenciesMeta": {
28
32
  "expo-image": {
29
33
  "optional": true
34
+ },
35
+ "react-native": {
36
+ "optional": true
37
+ },
38
+ "react-native-web": {
39
+ "optional": true
40
+ },
41
+ "react-dom": {
42
+ "optional": true
30
43
  }
31
44
  },
32
45
  "devDependencies": {
@@ -61,11 +74,44 @@
61
74
  "access": "public",
62
75
  "tag": "latest"
63
76
  },
77
+ "exports": {
78
+ ".": {
79
+ "browser": {
80
+ "types": "./lib/typescript/index.d.ts",
81
+ "default": "./lib/web/index.mjs"
82
+ },
83
+ "import": {
84
+ "types": "./lib/typescript/index.d.ts",
85
+ "default": "./lib/module/index.js"
86
+ },
87
+ "require": {
88
+ "types": "./lib/typescript/index.d.ts",
89
+ "default": "./lib/commonjs/index.js"
90
+ }
91
+ },
92
+ "./web": {
93
+ "types": "./lib/typescript/index.d.ts",
94
+ "default": "./lib/web/index.mjs"
95
+ },
96
+ "./register": {
97
+ "browser": {
98
+ "types": "./register.d.ts",
99
+ "default": "./lib/web/register.mjs"
100
+ },
101
+ "types": "./register.d.ts",
102
+ "default": "./register.js"
103
+ },
104
+ "./web/register": {
105
+ "types": "./register.d.ts",
106
+ "default": "./lib/web/register.mjs"
107
+ }
108
+ },
64
109
  "scripts": {
65
- "build": "bob build",
110
+ "build": "bob build && pnpm run build:web",
66
111
  "typecheck": "tsc --noEmit",
67
112
  "clean": "rimraf lib",
68
113
  "test": "pnpm run typecheck",
69
- "postinstall": "echo \"Run pnpm build to compile this package\""
114
+ "postinstall": "echo \"Run pnpm build to compile this package\"",
115
+ "build:web": "node ../../scripts/build-web.mjs images"
70
116
  }
71
117
  }