@buoy-gg/shared-ui 7.0.55 → 7.0.57

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 (73) hide show
  1. package/README.md +2 -0
  2. package/lib/commonjs/JsModal.web.js +1 -1
  3. package/lib/commonjs/env/EnvironmentSelectorInline.web.js +1 -1
  4. package/lib/commonjs/storage/capacitorAppStorage.js +1 -0
  5. package/lib/commonjs/storage/devToolsStorageKeys.js +1 -1
  6. package/lib/commonjs/storage/index.js +1 -1
  7. package/lib/commonjs/ui/components/ModalHeader.js +1 -1
  8. package/lib/commonjs/ui/components/SearchBar.js +1 -1
  9. package/lib/commonjs/ui/components/WindowControls.js +1 -1
  10. package/lib/commonjs/ui/components/index.js +1 -1
  11. package/lib/commonjs/ui/components/windowControlsSetting.js +1 -0
  12. package/lib/commonjs/ui/floating/FloatingTool.web.js +1 -1
  13. package/lib/commonjs/utils/asyncStorageNative.js +1 -0
  14. package/lib/commonjs/utils/browserNavigation.js +1 -1
  15. package/lib/commonjs/utils/persistentStorage.js +1 -1
  16. package/lib/commonjs/utils/realAppState.js +1 -1
  17. package/lib/module/JsModal.web.js +1 -1
  18. package/lib/module/env/EnvironmentSelectorInline.web.js +1 -1
  19. package/lib/module/storage/capacitorAppStorage.js +1 -0
  20. package/lib/module/storage/devToolsStorageKeys.js +1 -1
  21. package/lib/module/storage/index.js +1 -1
  22. package/lib/module/ui/components/ModalHeader.js +1 -1
  23. package/lib/module/ui/components/SearchBar.js +1 -1
  24. package/lib/module/ui/components/WindowControls.js +1 -1
  25. package/lib/module/ui/components/index.js +1 -1
  26. package/lib/module/ui/components/windowControlsSetting.js +1 -0
  27. package/lib/module/ui/floating/FloatingTool.web.js +1 -1
  28. package/lib/module/utils/asyncStorageNative.js +1 -0
  29. package/lib/module/utils/browserNavigation.js +1 -1
  30. package/lib/module/utils/persistentStorage.js +1 -1
  31. package/lib/module/utils/realAppState.js +1 -1
  32. package/lib/typescript/commonjs/JsModal.web.d.ts +2 -1
  33. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  34. package/lib/typescript/commonjs/storage/capacitorAppStorage.d.ts +15 -0
  35. package/lib/typescript/commonjs/storage/index.d.ts +2 -0
  36. package/lib/typescript/commonjs/ui/components/WindowControls.d.ts +1 -6
  37. package/lib/typescript/commonjs/ui/components/index.d.ts +1 -0
  38. package/lib/typescript/commonjs/ui/components/windowControlsSetting.d.ts +14 -0
  39. package/lib/typescript/commonjs/utils/asyncStorageNative.d.ts +2 -0
  40. package/lib/typescript/module/JsModal.web.d.ts +2 -1
  41. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  42. package/lib/typescript/module/storage/capacitorAppStorage.d.ts +15 -0
  43. package/lib/typescript/module/storage/index.d.ts +2 -0
  44. package/lib/typescript/module/ui/components/WindowControls.d.ts +1 -6
  45. package/lib/typescript/module/ui/components/index.d.ts +1 -0
  46. package/lib/typescript/module/ui/components/windowControlsSetting.d.ts +14 -0
  47. package/lib/typescript/module/utils/asyncStorageNative.d.ts +2 -0
  48. package/lib/web/asyncStorage.mjs +1 -1
  49. package/lib/web/chunks/chunk-4IM4VIMP.mjs +1 -0
  50. package/lib/web/chunks/chunk-ASHW3TI7.mjs +1 -0
  51. package/lib/web/chunks/{chunk-T7RZZG4A.mjs → chunk-E2MI3FII.mjs} +1 -1
  52. package/lib/web/chunks/{chunk-DEEKIG2L.mjs → chunk-FP44YK4E.mjs} +1 -1
  53. package/lib/web/chunks/chunk-L63X3LPR.mjs +1 -0
  54. package/lib/web/chunks/{chunk-T3WLUEET.mjs → chunk-NVD5LLXD.mjs} +1 -1
  55. package/lib/web/chunks/chunk-PXAINEZK.mjs +14 -0
  56. package/lib/web/chunks/chunk-QNLAFQET.mjs +1 -0
  57. package/lib/web/chunks/persistentStorage.web-3QA77BIL.mjs +1 -0
  58. package/lib/web/colors.mjs +1 -1
  59. package/lib/web/dataViewer.mjs +1 -1
  60. package/lib/web/floating.mjs +1 -1
  61. package/lib/web/history.mjs +1 -1
  62. package/lib/web/hooks.mjs +1 -1
  63. package/lib/web/index.mjs +3 -3
  64. package/lib/web/native.mjs +1 -1
  65. package/lib/web/ui.mjs +1 -1
  66. package/lib/web/utils.mjs +1 -1
  67. package/package.json +5 -5
  68. package/lib/web/chunks/chunk-3S2CBY6A.mjs +0 -14
  69. package/lib/web/chunks/chunk-46TKOKMV.mjs +0 -1
  70. package/lib/web/chunks/chunk-5NZOQR6Q.mjs +0 -1
  71. package/lib/web/chunks/chunk-T6KN54NS.mjs +0 -1
  72. package/lib/web/chunks/chunk-XYUAUO57.mjs +0 -1
  73. package/lib/web/chunks/persistentStorage.web-56ENKXFJ.mjs +0 -1
@@ -1 +1 @@
1
- "use strict";import{getUseAccountAccess as ye}from"./license/licenseModule.js";import{AccountSetup as be}from"./license/AccountSetup";import{useState as A,useRef as b,useEffect as P,useLayoutEffect as we,useCallback as y,memo as bt,isValidElement as ve,cloneElement as Ce}from"react";import{persistentStorage as Ut}from"./utils/persistentStorage";import{ModalStorage as wt}from"./utils/modalStorage.js";import{devToolsStorageKeys as Nt}from"./storage/devToolsStorageKeys.js";import{useHintsDisabled as ke}from"./context/index.js";import{ToolBackground as Jt}from"./ui/backgrounds/ToolBackground.js";import{night as C}from"./ui/night/nightTheme.js";import{jsx as o,jsxs as k}from"react/jsx-runtime";const p={base:"#121212",card:"#1A1A1A",border:"#333333",textMuted:"#888888",primary:"#20C997"};const m={primary:"#F5F5F7",primaryLight:"#F5F5F7",secondary:"#A1A1A6",muted:"#8E8E93",success:"#34C759",info:"#00B8E6"};const Re=100;const Se=400;const Vt=500;const Q=80;const ct=()=>typeof window!=="undefined"?window.innerWidth:0;const Y=()=>typeof window!=="undefined"?window.innerHeight:0;const Zt=n=>1-Math.pow(1-n,3);const K=n=>n<.5?2*n*n:1-Math.pow(-2*n+2,2)/2;function j(n,r,s,h){let g=0;let f=false;const H=performance.now();const B=Dt=>{if(f)return;const lt=Math.min((Dt-H)/n,1);s(r(lt));if(lt<1){g=requestAnimationFrame(B)}else{h?.()}};g=requestAnimationFrame(B);return()=>{f=true;cancelAnimationFrame(g)}}function De(){if(typeof document==="undefined"){return{top:0,left:0,right:0,bottom:0}}const n=document.createElement("div");n.style.cssText="position:fixed;top:env(safe-area-inset-top);left:env(safe-area-inset-left);right:env(safe-area-inset-right);bottom:env(safe-area-inset-bottom);visibility:hidden;pointer-events:none";document.body.appendChild(n);const r=n.getBoundingClientRect();document.body.removeChild(n);return{top:Math.max(0,r.top),left:Math.max(0,r.left),right:Math.max(0,window.innerWidth-r.right),bottom:Math.max(0,window.innerHeight-r.bottom)}}function vt(n,r){const s=Math.max(Q,window.innerWidth-r.left-r.right);const h=Math.max(Q,window.innerHeight-r.top-r.bottom);const g=Math.min(n.width,s);const f=Math.min(n.height,h);return{width:g,height:f,left:Math.max(r.left,Math.min(n.left,window.innerWidth-r.right-g)),top:Math.max(r.top,Math.min(n.top,window.innerHeight-r.bottom-f))}}const Me=({size:n=24,color:r="currentColor",strokeWidth:s=2})=>k("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",children:[o("line",{x1:18,y1:6,x2:6,y2:18,stroke:r,strokeWidth:s,strokeLinecap:"round"}),o("line",{x1:6,y1:6,x2:18,y2:18,stroke:r,strokeWidth:s,strokeLinecap:"round"})]});const He=({size:n=24,color:r="currentColor",strokeWidth:s=2})=>o("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",children:o("line",{x1:5,y1:12,x2:19,y2:12,stroke:r,strokeWidth:s,strokeLinecap:"round"})});const Ie=({size:n=24,color:r="currentColor",strokeWidth:s=2})=>k("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",children:[o("rect",{x:3,y:3,width:18,height:18,rx:2,stroke:r,strokeWidth:s}),o("rect",{x:3,y:14,width:18,height:7,fill:r})]});const $e=({size:n=24,color:r="currentColor",strokeWidth:s=2})=>k("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",children:[o("rect",{x:3,y:3,width:14,height:14,rx:2,stroke:r,strokeWidth:s}),o("line",{x1:7,y1:17,x2:7,y2:21,stroke:r,strokeWidth:s}),o("line",{x1:7,y1:21,x2:21,y2:21,stroke:r,strokeWidth:s}),o("line",{x1:21,y1:21,x2:21,y2:7,stroke:r,strokeWidth:s}),o("line",{x1:17,y1:7,x2:21,y2:7,stroke:r,strokeWidth:s})]});const Ct={close:"#FF5F57",minimize:"#FEBC2E",toggleMode:"#28C840"};const kt=24;const Te=2;const Rt=8;const St=n=>({width:kt,height:kt,borderRadius:kt/2,display:"flex",alignItems:"center",justifyContent:"center",background:`radial-gradient(circle, ${n} 6px, transparent 6px)`,border:"none",padding:0,cursor:"pointer",flexShrink:0});function Ae({onClose:n,onMinimize:r,onToggleMode:s,mode:h}){const g=h==="floating"?Ie:$e;const f=h==="floating"?"Dock to bottom sheet":"Make floating window";return k("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",gap:Te},children:[r&&o("button",{type:"button",onClick:r,style:St(Ct.minimize),"aria-label":"Minimize modal",children:o(He,{size:Rt,color:"#7A5A00",strokeWidth:1.5})}),s&&o("button",{type:"button",onClick:s,style:St(Ct.toggleMode),"aria-label":f,children:o(g,{size:Rt,color:"#004A1A",strokeWidth:1.5})}),o("button",{type:"button",onClick:n,style:St(Ct.close),"aria-label":"Close modal",children:o(Me,{size:Rt,color:"#4A0000",strokeWidth:1.5})})]})}const qt=bt(function n({isResizing:r,mode:s,hasCustomContent:h=false,variant:g="default"}){const f=s==="floating";const H=g==="night";return k("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",position:"relative",justifyContent:h?"center":void 0,minHeight:h?32:void 0,paddingTop:h?0:8,paddingBottom:h?0:8,backgroundColor:"transparent"},children:[o("div",{style:{width:H?36:r?40:f?50:40,height:H?5:f?5:3,backgroundColor:H?C.color.placeholder:r?p.primary:f?p.textMuted:p.primary,borderRadius:H?2.5:2,boxShadow:H?"none":`0 0 4px ${p.primary}99`}}),r&&s==="bottomSheet"&&o("div",{style:{position:"absolute",display:"flex",flexDirection:"row",gap:2,marginTop:12},children:[0,1,2].map(B=>o("div",{style:{width:12,height:1,backgroundColor:m.success,opacity:.6}},B))})]})});const Pe=bt(function n({onAcknowledge:r}){return o("div",{style:{backgroundColor:`${m.info}15`,borderLeft:`3px solid ${m.info}`,borderRadius:8,margin:"8px 12px 4px",overflow:"hidden",boxShadow:`0 0 8px ${m.info}4D`,flexShrink:0},children:k("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",padding:12,gap:12},children:[k("div",{style:{width:32,height:32,position:"relative",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:[o("div",{style:{position:"absolute",width:20,height:20,borderRadius:10,border:`2px solid ${m.info}`,opacity:.6,transform:"scale(0.8)",boxSizing:"border-box"}}),o("div",{style:{position:"absolute",width:20,height:20,borderRadius:10,border:`2px solid ${m.info}`,boxSizing:"border-box"}})]}),k("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:2},children:[o("span",{style:{fontSize:13,fontWeight:600,color:m.info,letterSpacing:.3},children:"\u{1F4A1} Pro Tip"}),o("span",{style:{fontSize:12,color:m.primaryLight,lineHeight:"16px"},children:"Double-tap the header to transform this into a floating modal"})]}),o("button",{type:"button",onClick:r,style:{backgroundColor:`${m.info}30`,padding:"6px 12px",borderRadius:6,border:`1px solid ${m.info}50`,fontSize:12,fontWeight:600,color:m.info,cursor:"pointer",fontFamily:"inherit",flexShrink:0},children:"Got it!"})]})})});function Qt({header:n,isResizing:r,mode:s,onMinimize:h,variant:g="default"}){if(n?.customContent){let f=n.customContent;if(ve(n.customContent)&&h){f=Ce(n.customContent,{onMinimize:h})}return k("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",minWidth:0},children:[o(qt,{isResizing:r,mode:s,hasCustomContent:true,variant:g}),f]})}return k("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",position:"relative",minWidth:0},children:[o(qt,{isResizing:r,mode:s,variant:g}),k("div",{style:{padding:"0 16px",display:"flex",flexDirection:"column",alignItems:"center"},children:[n?.title&&o("span",{style:{fontSize:16,fontWeight:600,color:m.primary},children:n.title}),n?.subtitle&&o("span",{style:{fontSize:12,color:m.secondary,paddingTop:4},children:n.subtitle})]}),o("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"none"},children:o("span",{style:{fontSize:10,color:m.muted,fontStyle:"italic"},children:"Double tap: Toggle \u2022 Triple tap: Close"})})]})}const Ye=({visible:n,onClose:r,children:s,header:h,styles:g={},minHeight:f=Re,maxHeight:H,initialHeight:B=Se,animatedHeight:Dt,benchMotion:lt,initialMode:Kt="bottomSheet",onModeChange:Mt,persistenceKey:I,enablePersistence:L=true,initialFloatingPosition:Ht,footer:It,footerHeight:$t=0,onBack:Be,onMinimize:R,minimizeRequest:tt=0,minimizeTargetPosition:dt,initialModalState:x,zIndex:Tt,disableScrollWrapper:te=false,background:At=true,variant:ut="night"})=>{const[S]=A(De);const[Pt,Yt]=A(!L);const[u,ft]=A(Kt);const et=b(Mt);et.current=Mt;const[O,W]=A(false);const[ht,G]=A(false);const[ee,pt]=A(B);const[$,U]=A(()=>vt({width:ct(),height:Vt,top:Ht?.y??(Y()-Vt)/2,left:Ht?.x??0},S));const[ne,nt]=A(false);const[oe,Bt]=A(false);const re=ke();const z=b(B);const D=b($);const w=b({x:$.left,y:$.top});const ot=b(null);const gt=b(null);const T=b(null);const E=b([]);const M=y(()=>{E.current.forEach(t=>t());E.current=[]},[]);P(()=>{D.current=$},[$]);P(()=>M,[M]);const Lt=H||Y()-S.top;P(()=>{if(!L||!I){Yt(true);return}let t=true;const e=async()=>{const i=await wt.load(I);if(t&&i){if(i.mode){ft(i.mode);et.current?.(i.mode)}if(i.panelHeight){pt(i.panelHeight);z.current=i.panelHeight}if(i.dimensions){const a=vt(i.dimensions,S);U(a);w.current={x:a.left,y:a.top}}}if(t)Yt(true)};e();return()=>{t=false}},[I,L]);P(()=>{if(!L||!I||!Pt)return;const t=setTimeout(()=>{wt.save(I,{mode:u,panelHeight:z.current,dimensions:$,isVisible:n})},500);return()=>clearTimeout(t)},[u,ee,$,n,I,L,Pt]);P(()=>{let t=true;const e=async()=>{try{const i=Nt.modal.hintAcknowledged();const a=await Ut.getItem(i);if(t){nt(a!=="true");Bt(true)}}catch{if(t){nt(true);Bt(true)}}};e();return()=>{t=false}},[]);const ie=y(async()=>{try{const t=Nt.modal.hintAcknowledged();await Ut.setItem(t,"true");nt(false)}catch{nt(false)}},[]);const mt=y(()=>{G(false);W(false);const t=u==="bottomSheet"?"floating":"bottomSheet";ft(t);et.current?.(t)},[u]);P(()=>{G(false);W(false)},[u]);const F=y(()=>{if(!R)return;const t={mode:u,panelHeight:z.current,floatingPosition:{x:D.current.left,y:D.current.top},floatingDimensions:{width:D.current.width,height:D.current.height}};if(L&&I)void wt.saveMinimized(I,t);const e=dt?.x??ct()-50;const i=dt?.y??Y()-150;M();if(u==="bottomSheet"){const a=ot.current;if(!a){R(t);return}const c=Y();E.current.push(j(300,K,d=>{a.style.opacity=String(1-d);a.style.transform=`translateY(${d*c}px)`},()=>R(t)))}else{const a=T.current;if(!a){R(t);return}const c={...w.current};E.current.push(j(300,K,d=>{a.style.opacity=String(1-d);const V=c.x+(e-c.x)*d;const _=c.y+(i-c.y)*d;a.style.transform=`translate(${V}px, ${_}px)`},()=>R(t)))}},[u,R,dt,M,L,I]);const Wt=b(tt);P(()=>{if(Wt.current===tt)return;Wt.current=tt;F()},[tt,F]);P(()=>{if(!x)return;if(x.mode){ft(x.mode);et.current?.(x.mode)}if(x.panelHeight){pt(x.panelHeight);z.current=x.panelHeight}if(x.floatingDimensions&&x.floatingPosition){const t={width:x.floatingDimensions.width,height:x.floatingDimensions.height,top:x.floatingPosition.y,left:x.floatingPosition.x};U(t);w.current={x:x.floatingPosition.x,y:x.floatingPosition.y}}},[x]);we(()=>{if(!n)return;M();if(u==="bottomSheet"){const t=ot.current;if(!t)return;const e=Y();t.style.transform=`translateY(${e}px)`;t.style.opacity="0";E.current.push(j(300,Zt,i=>{t.style.transform=`translateY(${(1-i)*e}px)`}),j(200,K,i=>{t.style.opacity=String(i)}))}else{const t=T.current;if(!t)return;w.current={x:D.current.left,y:D.current.top};t.style.transform=`translate(${w.current.x}px, ${w.current.y}px)`;t.style.opacity="0";E.current.push(j(200,K,e=>{t.style.opacity=String(e)}))}},[n,u,M]);const zt=b(0);const N=b(0);const J=b(null);const rt=y(()=>{const t=Date.now();if(t-zt.current>500){N.current=0}N.current++;zt.current=t;if(J.current)clearTimeout(J.current);J.current=setTimeout(()=>{if(N.current===2){mt()}else if(N.current>=3){if(R)F()}N.current=0},300)},[mt,R,F]);P(()=>{return()=>{if(J.current)clearTimeout(J.current)}},[]);const it=b({active:false,resizing:false,startY:0,headerOffsetY:0,samples:[]});const se=y(t=>{if(u!=="bottomSheet")return;if(t.button!==0||t.target.closest('button, a, input, textarea, select, [role="button"], [role="tab"], [role="switch"], [contenteditable="true"], [tabindex]'))return;const e=it.current;e.active=true;e.resizing=false;e.startY=t.clientY;const i=t.currentTarget.getBoundingClientRect();e.headerOffsetY=t.clientY-i.top;e.samples=[{t:performance.now(),y:t.clientY}];t.currentTarget.setPointerCapture(t.pointerId)},[u]);const ae=y(t=>{const e=it.current;if(!e.active)return;const i=t.clientY-e.startY;if(!e.resizing&&Math.abs(i)>3){e.resizing=true;M();W(true)}if(!e.resizing)return;const a=t.clientY-e.headerOffsetY;let c=Y()-a;c=Math.max(f,Math.min(c,Lt));z.current=c;if(gt.current)gt.current.style.height=`${c}px`;const d=performance.now();e.samples.push({t:d,y:t.clientY});while(e.samples.length>2&&d-e.samples[0].t>100)e.samples.shift()},[f,Lt,M]);const ce=y(t=>{const e=it.current;if(!e.active)return;e.active=false;if(!e.resizing){rt();return}W(false);const i=z.current;const a=t.clientY-e.startY;const c=e.samples[0];const d=e.samples[e.samples.length-1];const V=d&&c&&d.t>c.t?(d.y-c.y)/(d.t-c.t):0;const _=V>.8&&a>50||a>150&&i<=f;if(_){const v=ot.current;M();if(v){const Z=Y();E.current.push(j(200,K,X=>{v.style.opacity=String(1-X)}),j(300,Zt,X=>{v.style.transform=`translateY(${X*Z}px)`},()=>r()))}else{r()}return}pt(i)},[f,r,rt,M]);const le=y(()=>{const t=it.current;if(!t.active)return;t.active=false;t.resizing=false;W(false)},[]);const st=b({active:false,dragging:false,startX:0,startY:0,startPos:{x:0,y:0}});const de=y(t=>{if(u!=="floating"||O)return;if(t.button!==0||t.target.closest('button, a, input, textarea, select, [role="button"], [role="tab"], [role="switch"], [contenteditable="true"], [tabindex]'))return;const e=st.current;e.active=true;e.dragging=false;e.startX=t.clientX;e.startY=t.clientY;e.startPos={...w.current};t.currentTarget.setPointerCapture(t.pointerId)},[u,O]);const ue=y(t=>{const e=st.current;if(!e.active)return;const i=t.clientX-e.startX;const a=t.clientY-e.startY;if(!e.dragging&&Math.abs(i)+Math.abs(a)>5){e.dragging=true;G(true)}if(!e.dragging)return;const c=e.startPos.x+i;const d=e.startPos.y+a;w.current={x:c,y:d};if(T.current){T.current.style.transform=`translate(${c}px, ${d}px)`}},[]);const fe=y(()=>{const t=st.current;if(!t.active)return;t.active=false;if(!t.dragging){rt();return}G(false);const e=D.current;const i=vt({...e,left:w.current.x,top:w.current.y},S);const a=i.left;const c=i.top;w.current={x:a,y:c};if(T.current){T.current.style.transform=`translate(${a}px, ${c}px)`}U(d=>({...d,left:a,top:c}))},[S,rt]);const he=y(()=>{const t=st.current;if(!t.active)return;t.active=false;t.dragging=false;G(false)},[]);const xt=b({active:false,corner:"bottomRight",startX:0,startY:0,start:{width:0,height:0,top:0,left:0}});const pe=y(t=>e=>{if(u!=="floating")return;e.stopPropagation();const i=xt.current;i.active=true;i.corner=t;i.startX=e.clientX;i.startY=e.clientY;i.start={...D.current};W(true);e.currentTarget.setPointerCapture(e.pointerId)},[u]);const ge=y(t=>{const e=xt.current;if(!e.active)return;const i=t.clientX-e.startX;const a=t.clientY-e.startY;if(Math.abs(i)<.5&&Math.abs(a)<.5)return;const c=Math.max(0,S.left);const d=Y()-Math.max(0,S.bottom);const V=ct()-Math.max(0,S.right);const _=ct()*.25;const v=e.start;const Z=v.left+v.width;const X=v.top+v.height;let q=v.left;const at=v.top;let Ot=Z;let yt=X;if(e.corner==="bottomLeft"){q=Math.max(c,Math.min(v.left+i,Z-_));yt=Math.min(d,Math.max(X+a,v.top+Q))}else{Ot=Math.min(V,Math.max(Z+i,v.left+_));yt=Math.min(d,Math.max(X+a,v.top+Q))}const me=Math.max(_,Ot-q);const xe=Math.max(Q,yt-at);const Gt={width:me,height:xe,left:q,top:at};D.current=Gt;w.current={x:q,y:at};U(Gt);if(T.current){T.current.style.transform=`translate(${q}px, ${at}px)`}},[S.left,S.right,S.bottom]);const Et=y(()=>{const t=xt.current;if(!t.active)return;t.active=false;W(false);U(D.current)},[]);if(!n){return o("div",{style:{display:"none"},"aria-hidden":true,children:s},"hidden")}const Ft=h?.title||"Dev tool panel";const l=ut==="night";const _t=At&&l?o("div",{style:{position:"absolute",inset:0,pointerEvents:"none"},"aria-hidden":true,children:o(Jt,{})}):null;const Xt=k("div",{style:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column",backgroundColor:l?"transparent":p.base,borderBottomLeftRadius:16,borderBottomRightRadius:16,overflow:"hidden",...g.content},children:[At&&!l?o(Jt,{}):null,te?o("div",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",paddingBottom:$t},children:s}):o("div",{style:{flex:1,minHeight:0,overflowY:"auto",paddingBottom:$t},children:s}),It?o("div",{style:{position:"absolute",left:0,right:0,bottom:0,backgroundColor:p.base,borderBottomLeftRadius:16,borderBottomRightRadius:16},children:It}):null]});const jt=o("div",{style:{position:"absolute",top:4,right:4,zIndex:10},children:o(Ae,{onClose:r,onMinimize:R?F:void 0,onToggleMode:mt,mode:u})});if(u==="floating"){const t=ht||O;return k("div",{ref:T,role:"dialog","aria-label":Ft,style:{position:"fixed",left:0,top:0,width:$.width,height:$.height,transform:`translate(${w.current.x}px, ${w.current.y}px)`,display:"flex",flexDirection:"column",backgroundColor:l?C.color.bg:p.card,borderRadius:l?C.radius.sheet:6,border:l?`1px solid ${C.color.accent}55`:t?`2px solid ${p.primary}`:`1px solid ${p.border}`,boxShadow:l?`0 0 14px ${C.color.accent}38`:t?`0 0 12px ${p.primary}7A`:`0 0 20px ${p.primary}4D`,...l?{overflow:"hidden"}:null,boxSizing:"border-box",zIndex:Tt??1e3,...g.container},children:[_t,o("div",{onPointerDown:de,onPointerMove:ue,onPointerUp:fe,onPointerCancel:he,style:{borderTopLeftRadius:l?C.radius.sheet:6,borderTopRightRadius:l?C.radius.sheet:6,backgroundColor:l?"transparent":p.card,minHeight:56,border:l?"none":`1px solid ${p.border}`,boxSizing:"border-box",display:"flex",flexDirection:"column",justifyContent:"center",flexShrink:0,touchAction:"none",userSelect:"none",cursor:ht?"grabbing":"grab",position:"relative"},children:o(Qt,{header:h,isResizing:ht||O,mode:u,onMinimize:R?F:void 0,variant:ut})}),jt,Xt,["bottomLeft","bottomRight"].map(e=>o("div",{onPointerDown:pe(e),onPointerMove:ge,onPointerUp:Et,onPointerCancel:Et,style:{position:"absolute",width:30,height:30,bottom:4,...e==="bottomLeft"?{left:4}:{right:4},zIndex:1e3,touchAction:"none",cursor:e==="bottomLeft"?"nesw-resize":"nwse-resize"},children:o("div",{style:{width:20,height:20,borderRadius:10,boxSizing:"border-box",backgroundColor:t?`${m.success}1A`:"transparent",border:t?`2px solid ${m.success}`:"none",boxShadow:t?`0 0 8px ${m.success}99`:"none"}})},e))]},"floating")}return o("div",{style:{position:"fixed",inset:0,zIndex:Tt??1e3,pointerEvents:"none"},children:o("div",{ref:ot,style:{position:"absolute",bottom:0,left:0,right:0,pointerEvents:"auto"},children:k("div",{ref:gt,role:"dialog","aria-label":Ft,style:{height:z.current,display:"flex",flexDirection:"column",backgroundColor:l?C.color.bg:p.card,borderTopLeftRadius:l?C.radius.sheet:6,borderTopRightRadius:l?C.radius.sheet:6,border:l?`1px solid ${C.color.accent}55`:`1px solid ${p.border}`,boxShadow:l?`0 -4px 10px ${C.color.accent}38`:`0 -4px 12px ${p.primary}33`,...l?{overflow:"hidden"}:null,boxSizing:"border-box",position:"relative",...g.container},children:[_t,o("div",{onPointerDown:se,onPointerMove:ae,onPointerUp:ce,onPointerCancel:le,style:{borderTopLeftRadius:l?C.radius.sheet:6,borderTopRightRadius:l?C.radius.sheet:6,backgroundColor:l?"transparent":p.card,minHeight:56,border:l?"none":`1px solid ${p.border}`,boxSizing:"border-box",display:"flex",flexDirection:"column",justifyContent:"center",flexShrink:0,touchAction:"none",userSelect:"none",cursor:"ns-resize",position:"relative"},children:o(Qt,{header:h,isResizing:O,mode:u,onMinimize:R?F:void 0,variant:ut})}),jt,oe&&ne&&!re&&o(Pe,{onAcknowledge:ie}),Xt]})})},"bottomSheet")};export const JsModal=bt(n=>{const r=ye()();if(r.status!=="admitted")return n.visible?o(be,{}):null;return o(Ye,{...n})});
1
+ "use strict";import{getUseAccountAccess as We}from"./license/licenseModule.js";import{AccountSetup as He}from"./license/AccountSetup";import{useState as T,useRef as b,useEffect as W,useLayoutEffect as Pe,useCallback as m,memo as $t,isValidElement as Ee,cloneElement as _e}from"react";import{persistentStorage as ie}from"./utils/persistentStorage";import{ModalStorage as Wt}from"./utils/modalStorage.js";import{devToolsStorageKeys as se}from"./storage/devToolsStorageKeys.js";import{useHintsDisabled as ze}from"./context/index.js";import{ToolBackground as ae}from"./ui/backgrounds/ToolBackground.js";import{night as d}from"./ui/night/nightTheme.js";import{expandableWindowControlsSupported as Be,isExpandableWindowControlsEnabled as Ye}from"./ui/components/windowControlsSetting.js";import{jsx as n,jsxs as y,Fragment as Le}from"react/jsx-runtime";const g={base:"#121212",card:"#1A1A1A",border:"#333333",textMuted:"#888888",primary:"#20C997"};const w={primary:"#F5F5F7",primaryLight:"#F5F5F7",secondary:"#A1A1A6",muted:"#8E8E93",success:"#34C759",info:"#00B8E6"};const Fe=100;const Ne=400;const le=500;const J=80;const wt=()=>typeof window!=="undefined"?window.innerWidth:0;const B=()=>typeof window!=="undefined"?window.innerHeight:0;const ce=o=>1-Math.pow(1-o,3);const at=o=>o<.5?2*o*o:1-Math.pow(-2*o+2,2)/2;function G(o,r,s,u){let x=0;let l=false;const C=performance.now();const M=Q=>{if(l)return;const U=Math.min((Q-C)/o,1);s(r(U));if(U<1){x=requestAnimationFrame(M)}else{u?.()}};x=requestAnimationFrame(M);return()=>{l=true;cancelAnimationFrame(x)}}function Oe(){if(typeof document==="undefined"){return{top:0,left:0,right:0,bottom:0}}const o=document.createElement("div");o.style.cssText="position:fixed;top:env(safe-area-inset-top);left:env(safe-area-inset-left);right:env(safe-area-inset-right);bottom:env(safe-area-inset-bottom);visibility:hidden;pointer-events:none";document.body.appendChild(o);const r=o.getBoundingClientRect();document.body.removeChild(o);return{top:Math.max(0,r.top),left:Math.max(0,r.left),right:Math.max(0,window.innerWidth-r.right),bottom:Math.max(0,window.innerHeight-r.bottom)}}function Ht(o,r,s=false){const u=Math.max(J,window.innerWidth-r.left-r.right);const x=Math.max(J,window.innerHeight-r.top-r.bottom);const l=Math.min(o.width,u);const C=Math.min(o.height,x);return{width:l,height:C,left:Math.max(r.left,Math.min(o.left,window.innerWidth-r.right-l)),top:Math.max(r.top,Math.min(o.top,window.innerHeight-r.bottom-(s?J:C)))}}const Pt=({size:o=24,color:r="currentColor",strokeWidth:s=2})=>y("svg",{width:o,height:o,viewBox:"0 0 24 24",fill:"none",children:[n("line",{x1:18,y1:6,x2:6,y2:18,stroke:r,strokeWidth:s,strokeLinecap:"round"}),n("line",{x1:6,y1:6,x2:18,y2:18,stroke:r,strokeWidth:s,strokeLinecap:"round"})]});const Et=({size:o=24,color:r="currentColor",strokeWidth:s=2})=>n("svg",{width:o,height:o,viewBox:"0 0 24 24",fill:"none",children:n("line",{x1:5,y1:12,x2:19,y2:12,stroke:r,strokeWidth:s,strokeLinecap:"round"})});const de=({size:o=24,color:r="currentColor",strokeWidth:s=2})=>y("svg",{width:o,height:o,viewBox:"0 0 24 24",fill:"none",children:[n("rect",{x:3,y:3,width:18,height:18,rx:2,stroke:r,strokeWidth:s}),n("rect",{x:3,y:14,width:18,height:7,fill:r})]});const ue=({size:o=24,color:r="currentColor",strokeWidth:s=2})=>y("svg",{width:o,height:o,viewBox:"0 0 24 24",fill:"none",children:[n("rect",{x:3,y:3,width:14,height:14,rx:2,stroke:r,strokeWidth:s}),n("line",{x1:7,y1:17,x2:7,y2:21,stroke:r,strokeWidth:s}),n("line",{x1:7,y1:21,x2:21,y2:21,stroke:r,strokeWidth:s}),n("line",{x1:21,y1:21,x2:21,y2:7,stroke:r,strokeWidth:s}),n("line",{x1:17,y1:7,x2:21,y2:7,stroke:r,strokeWidth:s})]});const z={close:"#FF5F57",minimize:"#FEBC2E",toggleMode:"#28C840"};const _t=24;const Xe=2;const V=8;const zt=o=>({width:_t,height:_t,borderRadius:_t/2,display:"flex",alignItems:"center",justifyContent:"center",background:`radial-gradient(circle, ${o} 6px, transparent 6px)`,border:"none",padding:0,cursor:"pointer",flexShrink:0});function je(o){if(Ye()&&Be(true)){return n(Je,{...o})}return n(Ge,{...o})}function Ge({onClose:o,onMinimize:r,onToggleMode:s,mode:u}){const x=u==="floating"?de:ue;const l=u==="floating"?"Dock to bottom sheet":"Make floating window";return y("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",gap:Xe},children:[r&&n("button",{type:"button",onClick:r,style:zt(z.minimize),"aria-label":"Minimize modal",children:n(Et,{size:V,color:"#7A5A00",strokeWidth:1.5})}),s&&n("button",{type:"button",onClick:s,style:zt(z.toggleMode),"aria-label":l,children:n(x,{size:V,color:"#004A1A",strokeWidth:1.5})}),n("button",{type:"button",onClick:o,style:zt(z.close),"aria-label":"Close modal",children:n(Pt,{size:V,color:"#4A0000",strokeWidth:1.5})})]})}const Bt=12;const Ue=8;const vt=36;const Ze=12;const Yt=16;const Ct=8;const qe=3e3;const Lt=150;const Ft=o=>({width:Bt,height:Bt,borderRadius:Bt/2,backgroundColor:o,display:"flex",alignItems:"center",justifyContent:"center"});const Nt=(o,r,s,u)=>({width:vt,height:vt,borderRadius:vt/2,display:"flex",alignItems:"center",justifyContent:"center",padding:0,cursor:"pointer",flexShrink:0,backgroundColor:o?s:r,border:o?`1px solid ${u}`:"none"});function Je({onClose:o,onMinimize:r,onToggleMode:s,mode:u,variant:x="night"}){const l=x==="night";const[C,M]=T(false);const[Q,U]=T(false);const Z=b(null);const Y=b(null);const A=u==="floating"?de:ue;const H=u==="floating"?"Dock to bottom sheet":"Make floating window";const P=m(()=>{if(Z.current)clearTimeout(Z.current);if(Y.current)clearTimeout(Y.current);Z.current=null;Y.current=null},[]);const q=m(()=>{P();U(false);Y.current=setTimeout(()=>M(false),Lt)},[P]);const lt=m(()=>{P();M(true);requestAnimationFrame(()=>requestAnimationFrame(()=>U(true)));Z.current=setTimeout(q,qe)},[P,q]);W(()=>P,[P]);const ct=D=>{q();D()};return y(Le,{children:[y("button",{type:"button",onClick:lt,"aria-label":"Open window controls","data-testid":"tool-window-controls",style:{padding:10,margin:-8,border:"none",background:"transparent",cursor:"pointer",display:"flex",flexDirection:"row",alignItems:"center",gap:Ue},children:[r&&n("span",{style:Ft(z.minimize),children:n(Et,{size:V,color:"#7A5A00",strokeWidth:1.5})}),s&&n("span",{style:Ft(z.toggleMode),children:n(A,{size:V,color:"#004A1A",strokeWidth:1.5})}),n("span",{style:Ft(z.close),children:n(Pt,{size:V,color:"#4A0000",strokeWidth:1.5})})]}),C&&n("div",{style:{position:"absolute",top:-Ct,right:-Ct,zIndex:9999,transform:`scale(${Q?1:.3})`,opacity:Q?1:0,transition:`transform ${Lt}ms ease-out, opacity ${Lt}ms ease-out`},children:y("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",gap:Ze,padding:Ct,borderRadius:(vt+Ct*2)/2,backgroundColor:l?d.color.surface:g.card,border:`1px solid ${l?d.color.border:g.border}`,boxShadow:"0 4px 12px rgba(0,0,0,0.4)"},children:[r&&n("button",{type:"button",onClick:()=>ct(r),"aria-label":"Minimize modal","data-testid":"tool-window-minimize",style:Nt(l,z.minimize,d.color.warningSoft,d.color.warning+"59"),children:n(Et,{size:Yt,color:l?d.color.warning:"#7A5A00",strokeWidth:2})}),s&&n("button",{type:"button",onClick:()=>ct(s),"aria-label":H,"data-testid":"tool-window-mode",style:Nt(l,z.toggleMode,d.color.accentSoft,d.color.accentBorderStrong),children:n(A,{size:Yt,color:l?d.color.accent:"#004A1A",strokeWidth:2})}),n("button",{type:"button",onClick:()=>ct(o),"aria-label":"Close modal","data-testid":"tool-window-close",style:Nt(l,z.close,d.color.dangerSoft,d.color.danger+"59"),children:n(Pt,{size:Yt,color:l?d.color.danger:"#4A0000",strokeWidth:2})})]})})]})}const fe=$t(function o({isResizing:r,mode:s,hasCustomContent:u=false,variant:x="default"}){const l=s==="floating";const C=x==="night";return y("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",position:"relative",justifyContent:u?"center":void 0,minHeight:u?32:void 0,paddingTop:u?0:8,paddingBottom:u?0:8,backgroundColor:"transparent"},children:[n("div",{style:{width:C?36:r?40:l?50:40,height:C?5:l?5:3,backgroundColor:C?d.color.placeholder:r?g.primary:l?g.textMuted:g.primary,borderRadius:C?2.5:2,boxShadow:C?"none":`0 0 4px ${g.primary}99`}}),r&&s==="bottomSheet"&&n("div",{style:{position:"absolute",display:"flex",flexDirection:"row",gap:2,marginTop:12},children:[0,1,2].map(M=>n("div",{style:{width:12,height:1,backgroundColor:w.success,opacity:.6}},M))})]})});const Ve=$t(function o({onAcknowledge:r}){return n("div",{style:{backgroundColor:`${w.info}15`,borderLeft:`3px solid ${w.info}`,borderRadius:8,margin:"8px 12px 4px",overflow:"hidden",boxShadow:`0 0 8px ${w.info}4D`,flexShrink:0},children:y("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",padding:12,gap:12},children:[y("div",{style:{width:32,height:32,position:"relative",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:[n("div",{style:{position:"absolute",width:20,height:20,borderRadius:10,border:`2px solid ${w.info}`,opacity:.6,transform:"scale(0.8)",boxSizing:"border-box"}}),n("div",{style:{position:"absolute",width:20,height:20,borderRadius:10,border:`2px solid ${w.info}`,boxSizing:"border-box"}})]}),y("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:2},children:[n("span",{style:{fontSize:13,fontWeight:600,color:w.info,letterSpacing:.3},children:"\u{1F4A1} Pro Tip"}),n("span",{style:{fontSize:12,color:w.primaryLight,lineHeight:"16px"},children:"Double-tap the header to transform this into a floating modal"})]}),n("button",{type:"button",onClick:r,style:{backgroundColor:`${w.info}30`,padding:"6px 12px",borderRadius:6,border:`1px solid ${w.info}50`,fontSize:12,fontWeight:600,color:w.info,cursor:"pointer",fontFamily:"inherit",flexShrink:0},children:"Got it!"})]})})});function he({header:o,isResizing:r,mode:s,onMinimize:u,variant:x="default"}){if(o?.customContent){let l=o.customContent;if(Ee(o.customContent)&&u){l=_e(o.customContent,{onMinimize:u})}return y("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",minWidth:0},children:[n(fe,{isResizing:r,mode:s,hasCustomContent:true,variant:x}),l]})}return y("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",position:"relative",minWidth:0},children:[n(fe,{isResizing:r,mode:s,variant:x}),y("div",{style:{padding:"0 16px",display:"flex",flexDirection:"column",alignItems:"center"},children:[o?.title&&n("span",{style:{fontSize:16,fontWeight:600,color:w.primary},children:o.title}),o?.subtitle&&n("span",{style:{fontSize:12,color:w.secondary,paddingTop:4},children:o.subtitle})]}),n("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"none"},children:n("span",{style:{fontSize:10,color:w.muted,fontStyle:"italic"},children:"Double tap: Toggle \u2022 Triple tap: Close"})})]})}const Qe=({visible:o,onClose:r,children:s,header:u,styles:x={},minHeight:l=Fe,maxHeight:C,initialHeight:M=Ne,animatedHeight:Q,benchMotion:U,initialMode:Z="bottomSheet",onModeChange:Y,persistenceKey:A,enablePersistence:H=true,initialFloatingPosition:P,footer:q,footerHeight:lt=0,onBack:ct,onMinimize:D,minimizeRequest:dt=0,minimizeTargetPosition:kt,initialModalState:v,zIndex:Ot,disableScrollWrapper:pe=false,background:Xt=true,variant:ut="night"})=>{const[I]=T(Oe);const[jt,Gt]=T(!H);const[p,St]=T(Z);const ft=b(Y);ft.current=Y;const[K,L]=T(false);const[Dt,tt]=T(false);const[ge,At]=T(M);const[E,et]=T(()=>Ht({width:wt(),height:le,top:P?.y??(B()-le)/2,left:P?.x??0},I));const[me,ht]=T(false);const[xe,Ut]=T(false);const be=ze();const F=b(M);const R=b(E);const k=b({x:E.left,y:E.top});const pt=b(null);const It=b(null);const _=b(null);const N=b([]);const $=m(()=>{N.current.forEach(t=>t());N.current=[]},[]);W(()=>{R.current=E},[E]);W(()=>$,[$]);const Zt=C||B()-I.top;W(()=>{if(!H||!A){Gt(true);return}let t=true;const e=async()=>{const i=await Wt.load(A);if(t&&i){if(i.mode){St(i.mode);ft.current?.(i.mode)}if(i.panelHeight){At(i.panelHeight);F.current=i.panelHeight}if(i.dimensions){const a=Ht(i.dimensions,I,true);et(a);k.current={x:a.left,y:a.top}}}if(t)Gt(true)};e();return()=>{t=false}},[A,H]);W(()=>{if(!H||!A||!jt)return;const t=setTimeout(()=>{Wt.save(A,{mode:p,panelHeight:F.current,dimensions:E,isVisible:o})},500);return()=>clearTimeout(t)},[p,ge,E,o,A,H,jt]);W(()=>{let t=true;const e=async()=>{try{const i=se.modal.hintAcknowledged();const a=await ie.getItem(i);if(t){ht(a!=="true");Ut(true)}}catch{if(t){ht(true);Ut(true)}}};e();return()=>{t=false}},[]);const ye=m(async()=>{try{const t=se.modal.hintAcknowledged();await ie.setItem(t,"true");ht(false)}catch{ht(false)}},[]);const Rt=m(()=>{tt(false);L(false);const t=p==="bottomSheet"?"floating":"bottomSheet";St(t);ft.current?.(t)},[p]);W(()=>{tt(false);L(false)},[p]);const O=m(()=>{if(!D)return;const t={mode:p,panelHeight:F.current,floatingPosition:{x:R.current.left,y:R.current.top},floatingDimensions:{width:R.current.width,height:R.current.height}};if(H&&A)void Wt.saveMinimized(A,t);const e=kt?.x??wt()-50;const i=kt?.y??B()-150;$();if(p==="bottomSheet"){const a=pt.current;if(!a){D(t);return}const c=B();N.current.push(G(300,at,h=>{a.style.opacity=String(1-h);a.style.transform=`translateY(${h*c}px)`},()=>D(t)))}else{const a=_.current;if(!a){D(t);return}const c={...k.current};N.current.push(G(300,at,h=>{a.style.opacity=String(1-h);const rt=c.x+(e-c.x)*h;const X=c.y+(i-c.y)*h;a.style.transform=`translate(${rt}px, ${X}px)`},()=>D(t)))}},[p,D,kt,$,H,A]);const qt=b(dt);W(()=>{if(qt.current===dt)return;qt.current=dt;O()},[dt,O]);W(()=>{if(!v)return;if(v.mode){St(v.mode);ft.current?.(v.mode)}if(v.panelHeight){At(v.panelHeight);F.current=v.panelHeight}if(v.floatingDimensions&&v.floatingPosition){const t={width:v.floatingDimensions.width,height:v.floatingDimensions.height,top:v.floatingPosition.y,left:v.floatingPosition.x};et(t);k.current={x:v.floatingPosition.x,y:v.floatingPosition.y}}},[v]);Pe(()=>{if(!o)return;$();if(p==="bottomSheet"){const t=pt.current;if(!t)return;const e=B();t.style.transform=`translateY(${e}px)`;t.style.opacity="0";N.current.push(G(300,ce,i=>{t.style.transform=`translateY(${(1-i)*e}px)`}),G(200,at,i=>{t.style.opacity=String(i)}))}else{const t=_.current;if(!t)return;k.current={x:R.current.left,y:R.current.top};t.style.transform=`translate(${k.current.x}px, ${k.current.y}px)`;t.style.opacity="0";N.current.push(G(200,at,e=>{t.style.opacity=String(e)}))}},[o,p,$]);const Jt=b(0);const nt=b(0);const ot=b(null);const gt=m(()=>{const t=Date.now();if(t-Jt.current>500){nt.current=0}nt.current++;Jt.current=t;if(ot.current)clearTimeout(ot.current);ot.current=setTimeout(()=>{if(nt.current===2){Rt()}else if(nt.current>=3){if(D)O()}nt.current=0},300)},[Rt,D,O]);W(()=>{return()=>{if(ot.current)clearTimeout(ot.current)}},[]);const mt=b({active:false,resizing:false,startY:0,headerOffsetY:0,samples:[]});const we=m(t=>{if(p!=="bottomSheet")return;if(t.button!==0||t.target.closest('button, a, input, textarea, select, [role="button"], [role="tab"], [role="switch"], [contenteditable="true"], [tabindex]'))return;const e=mt.current;e.active=true;e.resizing=false;e.startY=t.clientY;const i=t.currentTarget.getBoundingClientRect();e.headerOffsetY=t.clientY-i.top;e.samples=[{t:performance.now(),y:t.clientY}];t.currentTarget.setPointerCapture(t.pointerId)},[p]);const ve=m(t=>{const e=mt.current;if(!e.active)return;const i=t.clientY-e.startY;if(!e.resizing&&Math.abs(i)>3){e.resizing=true;$();L(true)}if(!e.resizing)return;const a=t.clientY-e.headerOffsetY;let c=B()-a;c=Math.max(l,Math.min(c,Zt));F.current=c;if(It.current)It.current.style.height=`${c}px`;const h=performance.now();e.samples.push({t:h,y:t.clientY});while(e.samples.length>2&&h-e.samples[0].t>100)e.samples.shift()},[l,Zt,$]);const Ce=m(t=>{const e=mt.current;if(!e.active)return;e.active=false;if(!e.resizing){gt();return}L(false);const i=F.current;const a=t.clientY-e.startY;const c=e.samples[0];const h=e.samples[e.samples.length-1];const rt=h&&c&&h.t>c.t?(h.y-c.y)/(h.t-c.t):0;const X=rt>.8&&a>50||a>150&&i<=l;if(X){const S=pt.current;$();if(S){const it=B();N.current.push(G(200,at,j=>{S.style.opacity=String(1-j)}),G(300,ce,j=>{S.style.transform=`translateY(${j*it}px)`},()=>r()))}else{r()}return}At(i)},[l,r,gt,$]);const ke=m(()=>{const t=mt.current;if(!t.active)return;t.active=false;t.resizing=false;L(false)},[]);const xt=b({active:false,dragging:false,startX:0,startY:0,startPos:{x:0,y:0}});const Se=m(t=>{if(p!=="floating"||K)return;if(t.button!==0||t.target.closest('button, a, input, textarea, select, [role="button"], [role="tab"], [role="switch"], [contenteditable="true"], [tabindex]'))return;const e=xt.current;e.active=true;e.dragging=false;e.startX=t.clientX;e.startY=t.clientY;e.startPos={...k.current};t.currentTarget.setPointerCapture(t.pointerId)},[p,K]);const De=m(t=>{const e=xt.current;if(!e.active)return;const i=t.clientX-e.startX;const a=t.clientY-e.startY;if(!e.dragging&&Math.abs(i)+Math.abs(a)>5){e.dragging=true;tt(true)}if(!e.dragging)return;const c=e.startPos.x+i;const h=e.startPos.y+a;k.current={x:c,y:h};if(_.current){_.current.style.transform=`translate(${c}px, ${h}px)`}},[]);const Ae=m(()=>{const t=xt.current;if(!t.active)return;t.active=false;if(!t.dragging){gt();return}tt(false);const e=R.current;const i=Ht({...e,left:k.current.x,top:k.current.y},I);const a=i.left;const c=i.top;k.current={x:a,y:c};if(_.current){_.current.style.transform=`translate(${a}px, ${c}px)`}et(h=>({...h,left:a,top:c}))},[I,gt]);const Ie=m(()=>{const t=xt.current;if(!t.active)return;t.active=false;t.dragging=false;tt(false)},[]);const Tt=b({active:false,corner:"bottomRight",startX:0,startY:0,start:{width:0,height:0,top:0,left:0}});const Re=m(t=>e=>{if(p!=="floating")return;e.stopPropagation();const i=Tt.current;i.active=true;i.corner=t;i.startX=e.clientX;i.startY=e.clientY;i.start={...R.current};L(true);e.currentTarget.setPointerCapture(e.pointerId)},[p]);const Te=m(t=>{const e=Tt.current;if(!e.active)return;const i=t.clientX-e.startX;const a=t.clientY-e.startY;if(Math.abs(i)<.5&&Math.abs(a)<.5)return;const c=Math.max(0,I.left);const h=B()-Math.max(0,I.bottom);const rt=wt()-Math.max(0,I.right);const X=wt()*.25;const S=e.start;const it=S.left+S.width;const j=S.top+S.height;let st=S.left;const yt=S.top;let oe=it;let Mt=j;if(e.corner==="bottomLeft"){st=Math.max(c,Math.min(S.left+i,it-X));Mt=Math.min(h,Math.max(j+a,S.top+J))}else{oe=Math.min(rt,Math.max(it+i,S.left+X));Mt=Math.min(h,Math.max(j+a,S.top+J))}const Me=Math.max(X,oe-st);const $e=Math.max(J,Mt-yt);const re={width:Me,height:$e,left:st,top:yt};R.current=re;k.current={x:st,y:yt};et(re);if(_.current){_.current.style.transform=`translate(${st}px, ${yt}px)`}},[I.left,I.right,I.bottom]);const Vt=m(()=>{const t=Tt.current;if(!t.active)return;t.active=false;L(false);et(R.current)},[]);const bt=!o;const Qt=bt?{left:-9999,top:-9999,opacity:0,visibility:"hidden",pointerEvents:"none"}:{};const Kt=u?.title||"Dev tool panel";const f=ut==="night";const te=Xt&&f?n("div",{style:{position:"absolute",inset:0,pointerEvents:"none"},"aria-hidden":true,children:n(ae,{})}):null;const ee=y("div",{style:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column",backgroundColor:f?"transparent":g.base,borderBottomLeftRadius:16,borderBottomRightRadius:16,overflow:"hidden",...x.content},children:[Xt&&!f?n(ae,{}):null,pe?n("div",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",paddingBottom:lt},children:s}):n("div",{style:{flex:1,minHeight:0,overflowY:"auto",paddingBottom:lt},children:s}),q?n("div",{style:{position:"absolute",left:0,right:0,bottom:0,backgroundColor:g.base,borderBottomLeftRadius:16,borderBottomRightRadius:16},children:q}):null]});const ne=n("div",{style:{position:"absolute",top:4,right:4,zIndex:10},children:n(je,{onClose:r,onMinimize:D?O:void 0,onToggleMode:Rt,mode:p,variant:ut})});if(p==="floating"){const t=Dt||K;return y("div",{ref:_,role:"dialog","aria-label":Kt,"aria-hidden":bt||void 0,style:{position:"fixed",pointerEvents:"auto",left:0,top:0,width:E.width,height:E.height,transform:`translate(${k.current.x}px, ${k.current.y}px)`,display:"flex",flexDirection:"column",backgroundColor:f?d.color.bg:g.card,borderRadius:f?d.radius.sheet:6,border:f?`1px solid ${d.color.accent}55`:t?`2px solid ${g.primary}`:`1px solid ${g.border}`,boxShadow:f?`0 0 14px ${d.color.accent}38`:t?`0 0 12px ${g.primary}7A`:`0 0 20px ${g.primary}4D`,...f?{overflow:"hidden"}:null,boxSizing:"border-box",zIndex:Ot??1e3,...x.container,...Qt},children:[te,n("div",{onPointerDown:Se,onPointerMove:De,onPointerUp:Ae,onPointerCancel:Ie,style:{borderTopLeftRadius:f?d.radius.sheet:6,borderTopRightRadius:f?d.radius.sheet:6,backgroundColor:f?"transparent":g.card,minHeight:56,border:f?"none":`1px solid ${g.border}`,boxSizing:"border-box",display:"flex",flexDirection:"column",justifyContent:"center",flexShrink:0,touchAction:"none",userSelect:"none",cursor:Dt?"grabbing":"grab",position:"relative"},children:n(he,{header:u,isResizing:Dt||K,mode:p,onMinimize:D?O:void 0,variant:ut})}),ne,ee,["bottomLeft","bottomRight"].map(e=>n("div",{onPointerDown:Re(e),onPointerMove:Te,onPointerUp:Vt,onPointerCancel:Vt,style:{position:"absolute",width:30,height:30,bottom:4,...e==="bottomLeft"?{left:4}:{right:4},zIndex:1e3,touchAction:"none",cursor:e==="bottomLeft"?"nesw-resize":"nwse-resize"},children:n("div",{style:{width:20,height:20,borderRadius:10,boxSizing:"border-box",backgroundColor:t?`${w.success}1A`:"transparent",border:t?`2px solid ${w.success}`:"none",boxShadow:t?`0 0 8px ${w.success}99`:"none"}})},e))]},"floating")}return n("div",{"aria-hidden":bt||void 0,style:{position:"fixed",inset:0,zIndex:Ot??1e3,pointerEvents:"none",...bt?{...Qt,inset:"auto",width:"100vw",height:"100vh"}:null},children:n("div",{ref:pt,style:{position:"absolute",bottom:0,left:0,right:0,pointerEvents:"auto"},children:y("div",{ref:It,role:"dialog","aria-label":Kt,style:{height:F.current,display:"flex",flexDirection:"column",backgroundColor:f?d.color.bg:g.card,borderTopLeftRadius:f?d.radius.sheet:6,borderTopRightRadius:f?d.radius.sheet:6,border:f?`1px solid ${d.color.accent}55`:`1px solid ${g.border}`,boxShadow:f?`0 -4px 10px ${d.color.accent}38`:`0 -4px 12px ${g.primary}33`,...f?{overflow:"hidden"}:null,boxSizing:"border-box",position:"relative",...x.container},children:[te,n("div",{onPointerDown:we,onPointerMove:ve,onPointerUp:Ce,onPointerCancel:ke,style:{borderTopLeftRadius:f?d.radius.sheet:6,borderTopRightRadius:f?d.radius.sheet:6,backgroundColor:f?"transparent":g.card,minHeight:56,border:f?"none":`1px solid ${g.border}`,boxSizing:"border-box",display:"flex",flexDirection:"column",justifyContent:"center",flexShrink:0,touchAction:"none",userSelect:"none",cursor:"ns-resize",position:"relative"},children:n(he,{header:u,isResizing:K,mode:p,onMinimize:D?O:void 0,variant:ut})}),ne,xe&&me&&!be&&n(Ve,{onAcknowledge:ye}),ee]})})},"bottomSheet")};export const JsModal=$t(o=>{const r=We()();if(r.status!=="admitted")return o.visible?n(He,{}):null;return n(Qe,{...o})});
@@ -1 +1 @@
1
- "use strict";import{useState as p}from"react";import{gameUIColors as g}from"../ui/gameUI/constants/gameUIColors.js";import{getEnvironmentConfig as c}from"./EnvironmentIndicator.web.js";import{jsx as e,jsxs as s}from"react/jsx-runtime";const u=36;function m({color:r,flipped:n}){return e("svg",{width:10,height:10,viewBox:"0 0 24 24","aria-hidden":"true",style:{transform:n?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease"},children:e("path",{d:"M18 15l-6-6-6 6",fill:"none",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function k(){return e("svg",{width:12,height:12,viewBox:"0 0 24 24","aria-hidden":"true",children:e("path",{d:"M20 6L9 17l-5-5",fill:"none",stroke:"#4AFF9F",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"})})}export function EnvironmentSelectorInline({currentEnvironment:r,availableEnvironments:n,onSelect:b}){const[t,a]=p(false);const[f,d]=p(null);const i=c(r);const x=n.length*u;return s("div",{style:{position:"relative",zIndex:1e3,flexShrink:0},children:[e("div",{style:{position:"absolute",bottom:"100%",left:0,right:0,height:t?x:0,opacity:t?1:0,overflow:"hidden",transition:"height 200ms ease, opacity 200ms ease",backgroundColor:"rgba(8,12,21,0.95)",border:"1px solid #00B8E666",borderBottomWidth:0,borderTopLeftRadius:6,borderTopRightRadius:6,boxShadow:"0 -4px 8px rgba(0,0,0,0.3)"},children:n.map(o=>{const l=c(o);const h=String(o).toLowerCase()===String(r).toLowerCase();return s("button",{onClick:()=>{a(false);b(o)},onMouseEnter:()=>d(String(o)),onMouseLeave:()=>d(null),style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",height:u,padding:"0 10px",background:h?"rgba(128,128,128,0.1)":f===String(o)?"rgba(128,128,128,0.2)":"none",border:"none",cursor:"pointer"},children:[s("span",{style:{display:"flex",alignItems:"center"},children:[e("span",{style:{width:6,height:6,borderRadius:3,backgroundColor:l.backgroundColor,marginRight:8}}),e("span",{style:{fontSize:10,fontWeight:600,color:g.primaryLight,letterSpacing:.5},children:l.label})]}),h&&e(k,{})]},String(o))})}),s("button",{onClick:()=>a(o=>!o),"aria-expanded":t,"aria-label":`Environment: ${i.label}. Click to switch.`,style:{display:"flex",alignItems:"center",gap:6,padding:"6px 6px 6px 8px",borderRadius:6,borderTopLeftRadius:t?0:6,borderTopRightRadius:t?0:6,backgroundColor:t?"rgba(8,12,21,0.95)":"transparent",border:"none",cursor:"pointer"},children:[e("span",{style:{width:8,height:8,borderRadius:4,backgroundColor:i.backgroundColor,boxShadow:`0 0 4px ${i.backgroundColor}99`}}),e("span",{style:{fontSize:11,fontWeight:600,color:g.primaryLight,letterSpacing:.5},children:i.label}),e(m,{color:"#7A8599",flipped:t})]})]})}
1
+ "use strict";import{useState as h}from"react";import{gameUIColors as g}from"../ui/gameUI/constants/gameUIColors.js";import{getEnvironmentConfig as c}from"./EnvironmentIndicator.web.js";import{jsx as e,jsxs as a}from"react/jsx-runtime";const u=36;function k({color:r,flipped:n}){return e("svg",{width:10,height:10,viewBox:"0 0 24 24","aria-hidden":"true",style:{transform:n?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease"},children:e("path",{d:"M18 15l-6-6-6 6",fill:"none",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function y(){return e("svg",{width:12,height:12,viewBox:"0 0 24 24","aria-hidden":"true",children:e("path",{d:"M20 6L9 17l-5-5",fill:"none",stroke:"#4AFF9F",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"})})}export function EnvironmentSelectorInline({currentEnvironment:r,availableEnvironments:n,onSelect:b}){const[t,s]=h(false);const[f,d]=h(null);const i=c(r);const x=n.length*u;return a("div",{style:{position:"relative",zIndex:1e3,flexShrink:0},children:[e("div",{style:{position:"absolute",bottom:"100%",left:0,right:0,height:t?x:0,opacity:t?1:0,overflow:"hidden",transition:"height 200ms ease, opacity 200ms ease",backgroundColor:"rgba(8,12,21,0.95)",border:"1px solid #00B8E666",borderBottomWidth:0,borderTopLeftRadius:6,borderTopRightRadius:6,boxShadow:"0 -4px 8px rgba(0,0,0,0.3)"},children:n.map(o=>{const l=c(o);const p=String(o).toLowerCase()===String(r).toLowerCase();return a("button",{onClick:()=>{s(false);b(o)},onPointerEnter:m=>m.pointerType==="mouse"&&d(String(o)),onPointerLeave:()=>d(null),style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",height:u,padding:"0 10px",background:p?"rgba(128,128,128,0.1)":f===String(o)?"rgba(128,128,128,0.2)":"none",border:"none",cursor:"pointer"},children:[a("span",{style:{display:"flex",alignItems:"center"},children:[e("span",{style:{width:6,height:6,borderRadius:3,backgroundColor:l.backgroundColor,marginRight:8}}),e("span",{style:{fontSize:10,fontWeight:600,color:g.primaryLight,letterSpacing:.5},children:l.label})]}),p&&e(y,{})]},String(o))})}),a("button",{onClick:()=>s(o=>!o),"aria-expanded":t,"aria-label":`Environment: ${i.label}. Click to switch.`,style:{display:"flex",alignItems:"center",gap:6,padding:"6px 6px 6px 8px",borderRadius:6,borderTopLeftRadius:t?0:6,borderTopRightRadius:t?0:6,backgroundColor:t?"rgba(8,12,21,0.95)":"transparent",border:"none",cursor:"pointer"},children:[e("span",{style:{width:8,height:8,borderRadius:4,backgroundColor:i.backgroundColor,boxShadow:`0 0 4px ${i.backgroundColor}99`}}),e("span",{style:{fontSize:11,fontWeight:600,color:g.primaryLight,letterSpacing:.5},children:i.label}),e(k,{color:"#7A8599",flipped:t})]})]})}
@@ -0,0 +1 @@
1
+ "use strict";import{callCapacitorNative as r,hasCapacitorPlugin as t,isCapacitorNative as i}from"@buoy-gg/license";export function getCapacitorAppStorage(){if(!i()||!t("Preferences"))return null;return{async getAllKeys(){const{keys:e}=await r("Preferences","keys");return Array.isArray(e)?e:[]},async multiRemove(e){await Promise.all(e.map(a=>r("Preferences","remove",{key:a})))}}}
@@ -1 +1 @@
1
- "use strict";export const devToolsStorageKeys={base:"@react_buoy",bubble:{root:()=>`${devToolsStorageKeys.base}_bubble`,settings:()=>`${devToolsStorageKeys.bubble.root()}_settings`,userPreferences:()=>`${devToolsStorageKeys.bubble.root()}_user_preferences`,position:()=>`${devToolsStorageKeys.bubble.root()}_position`},modal:{root:()=>`${devToolsStorageKeys.base}_modal`,state:()=>`${devToolsStorageKeys.modal.root()}_state`,position:()=>`${devToolsStorageKeys.modal.root()}_position`,dimensions:()=>`${devToolsStorageKeys.modal.root()}_dimensions`,hintAcknowledged:()=>`${devToolsStorageKeys.modal.root()}_hint_acknowledged`},custom:e=>{const o=`${devToolsStorageKeys.base}_custom_${e}`;return{root:()=>o,modal:()=>`${o}_modal`,settings:()=>`${o}_settings`,key:t=>`${o}_${t}`}},settings:{root:()=>`${devToolsStorageKeys.base}_settings`,theme:()=>`${devToolsStorageKeys.settings.root()}_theme`,preferences:()=>`${devToolsStorageKeys.settings.root()}_preferences`,wifiEnabled:()=>`${devToolsStorageKeys.settings.root()}_wifi_enabled`,global:()=>`${devToolsStorageKeys.settings.root()}_global`,activeTab:()=>`${devToolsStorageKeys.settings.root()}_active_tab`,modalOpen:()=>`${devToolsStorageKeys.settings.root()}_modal_open`},dial:{root:()=>`${devToolsStorageKeys.base}_dial`,isOpen:()=>`${devToolsStorageKeys.dial.root()}_is_open`,usage:()=>`${devToolsStorageKeys.dial.root()}_usage`},clipboard:{root:()=>`${devToolsStorageKeys.base}_clipboard`,hintAcknowledged:()=>`${devToolsStorageKeys.clipboard.root()}_hint_acknowledged`},env:{root:()=>`${devToolsStorageKeys.base}_env`,modal:()=>`${devToolsStorageKeys.env.root()}_modal`,currentEnv:()=>`${devToolsStorageKeys.env.root()}_current`,overrides:()=>`${devToolsStorageKeys.env.root()}_overrides`},sentry:{root:()=>`${devToolsStorageKeys.base}_sentry`,modal:()=>`${devToolsStorageKeys.sentry.root()}_modal`,filters:()=>`${devToolsStorageKeys.sentry.root()}_filters`,preferences:()=>`${devToolsStorageKeys.sentry.root()}_preferences`},storage:{root:()=>`${devToolsStorageKeys.base}_storage`,modal:()=>`${devToolsStorageKeys.storage.root()}_modal`,eventsModal:()=>`${devToolsStorageKeys.storage.root()}_events_modal`,filters:()=>`${devToolsStorageKeys.storage.root()}_filters`,eventFilters:()=>`${devToolsStorageKeys.storage.root()}_event_filters`,keyFilters:()=>`${devToolsStorageKeys.storage.root()}_key_filters`,pinnedKeys:()=>`${devToolsStorageKeys.storage.root()}_pinned_keys`,preferences:()=>`${devToolsStorageKeys.storage.root()}_preferences`,activeTab:()=>`${devToolsStorageKeys.storage.root()}_active_tab`,isMonitoring:()=>`${devToolsStorageKeys.storage.root()}_is_monitoring`,diffViewerMode:()=>`${devToolsStorageKeys.storage.root()}_diff_viewer_mode`},clock:{root:()=>`${devToolsStorageKeys.base}_clock`,state:()=>`${devToolsStorageKeys.clock.root()}_state`},permissions:{root:()=>`${devToolsStorageKeys.base}_permissions`,state:()=>`${devToolsStorageKeys.permissions.root()}_state`},lifecycle:{root:()=>`${devToolsStorageKeys.base}_lifecycle`,state:()=>`${devToolsStorageKeys.lifecycle.root()}_state`},location:{root:()=>`${devToolsStorageKeys.base}_location`,state:()=>`${devToolsStorageKeys.location.root()}_state`},timeMachine:{root:()=>`${devToolsStorageKeys.base}_time_machine`,diffViewerMode:()=>`${devToolsStorageKeys.timeMachine.root()}_diff_viewer_mode`,armedPoint:()=>`${devToolsStorageKeys.timeMachine.root()}_armed_point`,barReloadMode:()=>`${devToolsStorageKeys.timeMachine.root()}_bar_reload_mode`,disabledSources:()=>`${devToolsStorageKeys.timeMachine.root()}_disabled_sources`},scenarios:{root:()=>`${devToolsStorageKeys.base}_scenarios`,modal:()=>`${devToolsStorageKeys.scenarios.root()}_modal`,library:()=>`${devToolsStorageKeys.scenarios.root()}_library`,active:()=>`${devToolsStorageKeys.scenarios.root()}_active`},reactQuery:{root:()=>`${devToolsStorageKeys.base}_rq`,modal:()=>`${devToolsStorageKeys.reactQuery.root()}_modal`,browserModal:()=>`${devToolsStorageKeys.reactQuery.root()}_browser_modal`,mutationModal:()=>`${devToolsStorageKeys.reactQuery.root()}_mutation_modal`,filters:()=>`${devToolsStorageKeys.reactQuery.root()}_filters`,ignoredPatterns:()=>`${devToolsStorageKeys.reactQuery.root()}_ignored_patterns`,includedPatterns:()=>`${devToolsStorageKeys.reactQuery.root()}_included_patterns`,preferences:()=>`${devToolsStorageKeys.reactQuery.root()}_preferences`},network:{root:()=>`${devToolsStorageKeys.base}_network`,modal:()=>`${devToolsStorageKeys.network.root()}_modal`,copyModal:()=>`${devToolsStorageKeys.network.root()}_copy_modal`,filters:()=>`${devToolsStorageKeys.network.root()}_filters`,ignoredDomains:()=>`${devToolsStorageKeys.network.root()}_ignored_domains`,ignoredUrls:()=>`${devToolsStorageKeys.network.root()}_ignored_urls`,preferences:()=>`${devToolsStorageKeys.network.root()}_preferences`,copyOptions:()=>`${devToolsStorageKeys.network.root()}_copy_options`,saved:()=>`${devToolsStorageKeys.network.root()}_saved`,overrides:()=>`${devToolsStorageKeys.network.root()}_overrides`},routeEvents:{root:()=>`${devToolsStorageKeys.base}_route_events`,modal:()=>`${devToolsStorageKeys.routeEvents.root()}_modal`,eventFilters:()=>`${devToolsStorageKeys.routeEvents.root()}_event_filters`,activeTab:()=>`${devToolsStorageKeys.routeEvents.root()}_active_tab`,isMonitoring:()=>`${devToolsStorageKeys.routeEvents.root()}_is_monitoring`,detailView:()=>`${devToolsStorageKeys.routeEvents.root()}_detail_view`,diffViewerMode:()=>`${devToolsStorageKeys.routeEvents.root()}_diff_viewer_mode`},highlightUpdates:{root:()=>`${devToolsStorageKeys.base}_highlight_updates`,modal:()=>`${devToolsStorageKeys.highlightUpdates.root()}_modal`,isTracking:()=>`${devToolsStorageKeys.highlightUpdates.root()}_is_tracking`,filters:()=>`${devToolsStorageKeys.highlightUpdates.root()}_filters`,settings:()=>`${devToolsStorageKeys.highlightUpdates.root()}_settings`,copySettings:()=>`${devToolsStorageKeys.highlightUpdates.root()}_copy_settings`},benchmark:{root:()=>`${devToolsStorageKeys.base}_benchmark`,modal:()=>`${devToolsStorageKeys.benchmark.root()}_modal`,isRecording:()=>`${devToolsStorageKeys.benchmark.root()}_is_recording`,activeTab:()=>`${devToolsStorageKeys.benchmark.root()}_active_tab`,settings:()=>`${devToolsStorageKeys.benchmark.root()}_settings`,selectedReports:()=>`${devToolsStorageKeys.benchmark.root()}_selected_reports`},debugBorders:{root:()=>`${devToolsStorageKeys.base}_debug_borders`,infoModal:()=>`${devToolsStorageKeys.debugBorders.root()}_info_modal`},events:{root:()=>`${devToolsStorageKeys.base}_events`,modal:()=>`${devToolsStorageKeys.events.root()}_modal`,enabledSources:()=>`${devToolsStorageKeys.events.root()}_enabled_sources`,isCapturing:()=>`${devToolsStorageKeys.events.root()}_is_capturing`,pausedAt:()=>`${devToolsStorageKeys.events.root()}_paused_at`,copySettings:()=>`${devToolsStorageKeys.events.root()}_copy_settings`},sync:{root:()=>`${devToolsStorageKeys.base}_sync`,deviceId:()=>`${devToolsStorageKeys.sync.root()}_device_id`}};const r=["@devtools","@dev_tools_","@modal_state_","@react_query_browser_modal","@react_query_modal","@react_query_mutation_modal","@sentry_logs_modal","@floating_rn_better_dev_tools_","@floating_tools_","@apphost_","@bubble_settings_","@env_vars_modal","@storage_modal","@floating_@devtools_","dev_last_route"];export function isDevToolsStorageKey(e){if(!e)return false;if(e.startsWith(devToolsStorageKeys.base)){return true}if(e.startsWith("buoy-")){return true}if(e.startsWith("@buoy")){return true}for(const o of r){if(e.startsWith(o)){return true}}return false}export function filterOutDevToolsKeys(e){return e.filter(o=>!isDevToolsStorageKey(o))}export function getAllDevToolsStorageKeys(){const e=[];e.push(devToolsStorageKeys.bubble.settings());e.push(devToolsStorageKeys.bubble.userPreferences());e.push(devToolsStorageKeys.bubble.position());e.push(devToolsStorageKeys.modal.state());e.push(devToolsStorageKeys.modal.position());e.push(devToolsStorageKeys.modal.dimensions());e.push(devToolsStorageKeys.settings.theme());e.push(devToolsStorageKeys.settings.preferences());e.push(devToolsStorageKeys.env.currentEnv());e.push(devToolsStorageKeys.env.overrides());e.push(devToolsStorageKeys.sentry.filters());e.push(devToolsStorageKeys.sentry.preferences());e.push(devToolsStorageKeys.storage.filters());e.push(devToolsStorageKeys.storage.preferences());e.push(devToolsStorageKeys.reactQuery.filters());e.push(devToolsStorageKeys.reactQuery.preferences());return e}
1
+ "use strict";export const devToolsStorageKeys={base:"@react_buoy",bubble:{root:()=>`${devToolsStorageKeys.base}_bubble`,settings:()=>`${devToolsStorageKeys.bubble.root()}_settings`,userPreferences:()=>`${devToolsStorageKeys.bubble.root()}_user_preferences`,position:()=>`${devToolsStorageKeys.bubble.root()}_position`},modal:{root:()=>`${devToolsStorageKeys.base}_modal`,state:()=>`${devToolsStorageKeys.modal.root()}_state`,position:()=>`${devToolsStorageKeys.modal.root()}_position`,dimensions:()=>`${devToolsStorageKeys.modal.root()}_dimensions`,hintAcknowledged:()=>`${devToolsStorageKeys.modal.root()}_hint_acknowledged`},custom:e=>{const o=`${devToolsStorageKeys.base}_custom_${e}`;return{root:()=>o,modal:()=>`${o}_modal`,settings:()=>`${o}_settings`,key:t=>`${o}_${t}`}},settings:{root:()=>`${devToolsStorageKeys.base}_settings`,theme:()=>`${devToolsStorageKeys.settings.root()}_theme`,preferences:()=>`${devToolsStorageKeys.settings.root()}_preferences`,wifiEnabled:()=>`${devToolsStorageKeys.settings.root()}_wifi_enabled`,global:()=>`${devToolsStorageKeys.settings.root()}_global`,activeTab:()=>`${devToolsStorageKeys.settings.root()}_active_tab`,modalOpen:()=>`${devToolsStorageKeys.settings.root()}_modal_open`},dial:{root:()=>`${devToolsStorageKeys.base}_dial`,isOpen:()=>`${devToolsStorageKeys.dial.root()}_is_open`,usage:()=>`${devToolsStorageKeys.dial.root()}_usage`},clipboard:{root:()=>`${devToolsStorageKeys.base}_clipboard`,hintAcknowledged:()=>`${devToolsStorageKeys.clipboard.root()}_hint_acknowledged`},env:{root:()=>`${devToolsStorageKeys.base}_env`,modal:()=>`${devToolsStorageKeys.env.root()}_modal`,currentEnv:()=>`${devToolsStorageKeys.env.root()}_current`,overrides:()=>`${devToolsStorageKeys.env.root()}_overrides`},sentry:{root:()=>`${devToolsStorageKeys.base}_sentry`,modal:()=>`${devToolsStorageKeys.sentry.root()}_modal`,filters:()=>`${devToolsStorageKeys.sentry.root()}_filters`,preferences:()=>`${devToolsStorageKeys.sentry.root()}_preferences`},storage:{root:()=>`${devToolsStorageKeys.base}_storage`,modal:()=>`${devToolsStorageKeys.storage.root()}_modal`,eventsModal:()=>`${devToolsStorageKeys.storage.root()}_events_modal`,filters:()=>`${devToolsStorageKeys.storage.root()}_filters`,eventFilters:()=>`${devToolsStorageKeys.storage.root()}_event_filters`,keyFilters:()=>`${devToolsStorageKeys.storage.root()}_key_filters`,pinnedKeys:()=>`${devToolsStorageKeys.storage.root()}_pinned_keys`,preferences:()=>`${devToolsStorageKeys.storage.root()}_preferences`,activeTab:()=>`${devToolsStorageKeys.storage.root()}_active_tab`,isMonitoring:()=>`${devToolsStorageKeys.storage.root()}_is_monitoring`,diffViewerMode:()=>`${devToolsStorageKeys.storage.root()}_diff_viewer_mode`},clock:{root:()=>`${devToolsStorageKeys.base}_clock`,state:()=>`${devToolsStorageKeys.clock.root()}_state`},permissions:{root:()=>`${devToolsStorageKeys.base}_permissions`,state:()=>`${devToolsStorageKeys.permissions.root()}_state`},lifecycle:{root:()=>`${devToolsStorageKeys.base}_lifecycle`,state:()=>`${devToolsStorageKeys.lifecycle.root()}_state`},location:{root:()=>`${devToolsStorageKeys.base}_location`,state:()=>`${devToolsStorageKeys.location.root()}_state`},timeMachine:{root:()=>`${devToolsStorageKeys.base}_time_machine`,diffViewerMode:()=>`${devToolsStorageKeys.timeMachine.root()}_diff_viewer_mode`,armedPoint:()=>`${devToolsStorageKeys.timeMachine.root()}_armed_point`,barReloadMode:()=>`${devToolsStorageKeys.timeMachine.root()}_bar_reload_mode`,disabledSources:()=>`${devToolsStorageKeys.timeMachine.root()}_disabled_sources`},scenarios:{root:()=>`${devToolsStorageKeys.base}_scenarios`,modal:()=>`${devToolsStorageKeys.scenarios.root()}_modal`,library:()=>`${devToolsStorageKeys.scenarios.root()}_library`,active:()=>`${devToolsStorageKeys.scenarios.root()}_active`},reactQuery:{root:()=>`${devToolsStorageKeys.base}_rq`,modal:()=>`${devToolsStorageKeys.reactQuery.root()}_modal`,browserModal:()=>`${devToolsStorageKeys.reactQuery.root()}_browser_modal`,mutationModal:()=>`${devToolsStorageKeys.reactQuery.root()}_mutation_modal`,filters:()=>`${devToolsStorageKeys.reactQuery.root()}_filters`,ignoredPatterns:()=>`${devToolsStorageKeys.reactQuery.root()}_ignored_patterns`,includedPatterns:()=>`${devToolsStorageKeys.reactQuery.root()}_included_patterns`,preferences:()=>`${devToolsStorageKeys.reactQuery.root()}_preferences`},network:{root:()=>`${devToolsStorageKeys.base}_network`,modal:()=>`${devToolsStorageKeys.network.root()}_modal`,copyModal:()=>`${devToolsStorageKeys.network.root()}_copy_modal`,filters:()=>`${devToolsStorageKeys.network.root()}_filters`,ignoredDomains:()=>`${devToolsStorageKeys.network.root()}_ignored_domains`,ignoredUrls:()=>`${devToolsStorageKeys.network.root()}_ignored_urls`,preferences:()=>`${devToolsStorageKeys.network.root()}_preferences`,copyOptions:()=>`${devToolsStorageKeys.network.root()}_copy_options`,saved:()=>`${devToolsStorageKeys.network.root()}_saved`,overrides:()=>`${devToolsStorageKeys.network.root()}_overrides`},routeEvents:{root:()=>`${devToolsStorageKeys.base}_route_events`,modal:()=>`${devToolsStorageKeys.routeEvents.root()}_modal`,eventFilters:()=>`${devToolsStorageKeys.routeEvents.root()}_event_filters`,activeTab:()=>`${devToolsStorageKeys.routeEvents.root()}_active_tab`,isMonitoring:()=>`${devToolsStorageKeys.routeEvents.root()}_is_monitoring`,detailView:()=>`${devToolsStorageKeys.routeEvents.root()}_detail_view`,diffViewerMode:()=>`${devToolsStorageKeys.routeEvents.root()}_diff_viewer_mode`},highlightUpdates:{root:()=>`${devToolsStorageKeys.base}_highlight_updates`,modal:()=>`${devToolsStorageKeys.highlightUpdates.root()}_modal`,isTracking:()=>`${devToolsStorageKeys.highlightUpdates.root()}_is_tracking`,filters:()=>`${devToolsStorageKeys.highlightUpdates.root()}_filters`,settings:()=>`${devToolsStorageKeys.highlightUpdates.root()}_settings`,copySettings:()=>`${devToolsStorageKeys.highlightUpdates.root()}_copy_settings`},benchmark:{root:()=>`${devToolsStorageKeys.base}_benchmark`,modal:()=>`${devToolsStorageKeys.benchmark.root()}_modal`,isRecording:()=>`${devToolsStorageKeys.benchmark.root()}_is_recording`,activeTab:()=>`${devToolsStorageKeys.benchmark.root()}_active_tab`,settings:()=>`${devToolsStorageKeys.benchmark.root()}_settings`,selectedReports:()=>`${devToolsStorageKeys.benchmark.root()}_selected_reports`},debugBorders:{root:()=>`${devToolsStorageKeys.base}_debug_borders`,infoModal:()=>`${devToolsStorageKeys.debugBorders.root()}_info_modal`},events:{root:()=>`${devToolsStorageKeys.base}_events`,modal:()=>`${devToolsStorageKeys.events.root()}_modal`,enabledSources:()=>`${devToolsStorageKeys.events.root()}_enabled_sources`,isCapturing:()=>`${devToolsStorageKeys.events.root()}_is_capturing`,pausedAt:()=>`${devToolsStorageKeys.events.root()}_paused_at`,copySettings:()=>`${devToolsStorageKeys.events.root()}_copy_settings`},sync:{root:()=>`${devToolsStorageKeys.base}_sync`,deviceId:()=>`${devToolsStorageKeys.sync.root()}_device_id`}};const r=["@devtools","@dev_tools_","@modal_state_","@react_query_browser_modal","@react_query_modal","@react_query_mutation_modal","@sentry_logs_modal","@floating_rn_better_dev_tools_","@floating_tools_","@apphost_","@bubble_settings_","@env_vars_modal","@storage_modal","@floating_@devtools_","dev_last_route"];export function isDevToolsStorageKey(e){if(!e)return false;if(e.startsWith(devToolsStorageKeys.base)){return true}if(e.startsWith("buoy-")){return true}if(e.startsWith("@buoy")){return true}if(e.startsWith("buoy.notifications.")){return true}for(const o of r){if(e.startsWith(o)){return true}}return false}export function filterOutDevToolsKeys(e){return e.filter(o=>!isDevToolsStorageKey(o))}export function getAllDevToolsStorageKeys(){const e=[];e.push(devToolsStorageKeys.bubble.settings());e.push(devToolsStorageKeys.bubble.userPreferences());e.push(devToolsStorageKeys.bubble.position());e.push(devToolsStorageKeys.modal.state());e.push(devToolsStorageKeys.modal.position());e.push(devToolsStorageKeys.modal.dimensions());e.push(devToolsStorageKeys.settings.theme());e.push(devToolsStorageKeys.settings.preferences());e.push(devToolsStorageKeys.env.currentEnv());e.push(devToolsStorageKeys.env.overrides());e.push(devToolsStorageKeys.sentry.filters());e.push(devToolsStorageKeys.sentry.preferences());e.push(devToolsStorageKeys.storage.filters());e.push(devToolsStorageKeys.storage.preferences());e.push(devToolsStorageKeys.reactQuery.filters());e.push(devToolsStorageKeys.reactQuery.preferences());return e}
@@ -1 +1 @@
1
- "use strict";export{devToolsStorageKeys,isDevToolsStorageKey}from"./devToolsStorageKeys.js";export{definePersistedSetting}from"./definePersistedSetting.js";
1
+ "use strict";export{devToolsStorageKeys,isDevToolsStorageKey}from"./devToolsStorageKeys.js";export{definePersistedSetting}from"./definePersistedSetting.js";export{getCapacitorAppStorage}from"./capacitorAppStorage.js";export{callCapacitorNative,hasCapacitorPlugin,isCapacitorNative}from"@buoy-gg/license";
@@ -1 +1 @@
1
- "use strict";import{View as c,Text as b,TextInput as H,TouchableOpacity as d,StyleSheet as w}from"react-native";import{useEffect as A,useRef as m}from"react";import{ChevronLeft as x,Search as j,X as p}from"../../icons/index.js";import{night as n}from"../night/nightTheme.js";import{windowDragProps as B}from"./windowDrag.js";import{jsx as e,Fragment as N,jsxs as f}from"react/jsx-runtime";export function ModalHeader({children:r}){return e(c,{style:t.headerContainer,...B,children:r})}export function Navigation({onBack:r,onClose:o,backIcon:i,closeIcon:a}){if(!r&&o){return f(N,{children:[e(c,{style:{flex:1}}),e(d,{onPress:o,style:t.navigationButton,testID:"tool-close",accessibilityLabel:"Close",accessibilityRole:"button",children:a||e(p,{size:20,color:n.color.textSecondary})})]})}if(r&&!o){return e(d,{onPress:r,style:t.navigationButton,testID:"tool-back",accessibilityLabel:"Back",accessibilityRole:"button",children:i||e(x,{size:20,color:n.color.textSecondary})})}if(r&&o){return e(d,{onPress:r,style:t.navigationButton,testID:"tool-back",accessibilityLabel:"Back",accessibilityRole:"button",children:i||e(x,{size:20,color:n.color.textSecondary})})}return null}export function Content({title:r,subtitle:o,children:i,centered:a,noMargin:s,testID:l}){if(i){return e(c,{style:[t.headerContent,s&&t.headerContentNoMargin],children:i})}return f(c,{style:[t.headerContent,a&&t.headerContentCentered],children:[r&&e(b,{style:[t.headerTitle,a&&t.headerTitleCentered],numberOfLines:1,testID:l,children:r}),o&&e(b,{style:[t.headerSubtitle,a&&t.headerSubtitleCentered],numberOfLines:1,testID:l?`${l}-subtitle`:void 0,children:o})]})}export function Actions({children:r}){return e(c,{style:t.headerActions,children:r})}Actions.displayName="ModalHeaderActions";export function HeaderSearch({value:r,onChangeText:o,onCancel:i,placeholder:a="Search...",autoFocus:s=true,testID:l,containerTestID:C,clearTestID:S,accessibilityLabel:z,onBlur:L,iconSize:I=12,dismissOnBlur:g=false,onDismiss:T,clearOnlyWhenText:R=false,inputProps:v,containerNativeID:D}){const h=m(null);const u=m(false);A(()=>{if(s)h.current?.focus()},[s]);const y=T??i;const P=!R||r.length>0;return f(c,{style:t.searchContainer,testID:C,nativeID:D,children:[e(j,{size:I,color:n.color.textSecondary}),e(H,{ref:h,style:t.searchInput,placeholder:a,placeholderTextColor:n.color.placeholder,value:r,onChangeText:o,onSubmitEditing:()=>g?y():h.current?.blur(),onBlur:()=>{if(g&&!u.current)y();L?.()},autoCorrect:false,autoCapitalize:"none",returnKeyType:"search",testID:l,accessibilityLabel:z??a,...v}),P?e(d,{onPress:i,delayPressIn:0,onPressIn:()=>{u.current=true},onPressOut:()=>{u.current=false},style:t.searchCancelButton,accessibilityRole:"button",accessibilityLabel:"Clear search",testID:S??(l?`${l}-clear`:void 0),children:e(p,{size:12,color:n.color.textSecondary})}):null]})}ModalHeader.Navigation=Navigation;ModalHeader.Content=Content;ModalHeader.Actions=Actions;ModalHeader.Search=HeaderSearch;const t=w.create({headerContainer:{flexDirection:"row",alignItems:"center",flex:1,gap:8,minHeight:32,paddingLeft:4},navigationButton:{padding:4},closeButtonOnly:{marginLeft:"auto",marginRight:4},headerContent:{flex:1,marginHorizontal:8},headerContentCentered:{justifyContent:"center"},headerTitle:{color:n.color.text,fontSize:14,fontWeight:"500"},headerTitleCentered:{textAlign:"center"},headerSubtitle:{fontSize:12,color:n.color.textSecondary,marginTop:2},headerSubtitleCentered:{textAlign:"center"},headerActions:{flexDirection:"row",gap:6,marginLeft:"auto",marginRight:4,flexShrink:0},headerContentNoMargin:{marginHorizontal:0},searchContainer:{flexDirection:"row",alignItems:"center",flex:1,backgroundColor:n.color.surfaceElevated,borderRadius:10,paddingHorizontal:10,paddingVertical:4,marginHorizontal:12,marginVertical:4,height:32,borderWidth:1,borderColor:n.color.border},searchInput:{flex:1,marginLeft:8,fontSize:13,color:n.color.text,padding:0,height:"100%"},searchCancelButton:{padding:4,marginLeft:4}});
1
+ "use strict";import{View as c,Text as b,TextInput as O,TouchableOpacity as u,StyleSheet as A,Platform as m}from"react-native";import{useEffect as N,useRef as p}from"react";import{ChevronLeft as x,Search as B,X as C}from"../../icons/index.js";import{night as n}from"../night/nightTheme.js";import{windowDragProps as _}from"./windowDrag.js";import{jsx as e,Fragment as j,jsxs as f}from"react/jsx-runtime";export function ModalHeader({children:r}){return e(c,{style:t.headerContainer,..._,children:r})}export function Navigation({onBack:r,onClose:o,backIcon:i,closeIcon:a}){if(!r&&o){return f(j,{children:[e(c,{style:{flex:1}}),e(u,{onPress:o,style:t.navigationButton,testID:"tool-close",accessibilityLabel:"Close",accessibilityRole:"button",children:a||e(C,{size:20,color:n.color.textSecondary})})]})}if(r&&!o){return e(u,{onPress:r,style:t.navigationButton,testID:"tool-back",accessibilityLabel:"Back",accessibilityRole:"button",children:i||e(x,{size:20,color:n.color.textSecondary})})}if(r&&o){return e(u,{onPress:r,style:t.navigationButton,testID:"tool-back",accessibilityLabel:"Back",accessibilityRole:"button",children:i||e(x,{size:20,color:n.color.textSecondary})})}return null}export function Content({title:r,subtitle:o,children:i,centered:a,noMargin:s,testID:l}){if(i){return e(c,{style:[t.headerContent,s&&t.headerContentNoMargin],children:i})}return f(c,{style:[t.headerContent,a&&t.headerContentCentered],children:[r&&e(b,{style:[t.headerTitle,a&&t.headerTitleCentered],numberOfLines:1,testID:l,children:r}),o&&e(b,{style:[t.headerSubtitle,a&&t.headerSubtitleCentered],numberOfLines:1,testID:l?`${l}-subtitle`:void 0,children:o})]})}export function Actions({children:r}){return e(c,{style:t.headerActions,children:r})}Actions.displayName="ModalHeaderActions";export function HeaderSearch({value:r,onChangeText:o,onCancel:i,placeholder:a="Search...",autoFocus:s=true,testID:l,containerTestID:S,clearTestID:z,accessibilityLabel:I,onBlur:L,iconSize:T=12,dismissOnBlur:g=false,onDismiss:D,clearOnlyWhenText:R=false,inputProps:v,containerNativeID:w}){const h=p(null);const d=p(false);N(()=>{if(s)h.current?.focus()},[s]);const y=D??i;const P=!R||r.length>0;return f(c,{style:t.searchContainer,testID:S,nativeID:w,children:[e(B,{size:T,color:n.color.textSecondary}),e(O,{ref:h,style:[t.searchInput,M],placeholder:a,placeholderTextColor:n.color.placeholder,value:r,onChangeText:o,onSubmitEditing:()=>g?y():h.current?.blur(),onBlur:()=>{if(g&&!d.current)y();L?.()},autoCorrect:false,autoCapitalize:"none",returnKeyType:"search",testID:l,accessibilityLabel:I??a,...v}),P?e(u,{onPress:i,...m.OS==="web"?{onTouchStart:()=>{d.current=true},onMouseDown:H=>H.preventDefault()}:{},delayPressIn:0,onPressIn:()=>{d.current=true},onPressOut:()=>{d.current=false},style:t.searchCancelButton,accessibilityRole:"button",accessibilityLabel:"Clear search",testID:z??(l?`${l}-clear`:void 0),children:e(C,{size:12,color:n.color.textSecondary})}):null]})}ModalHeader.Navigation=Navigation;ModalHeader.Content=Content;ModalHeader.Actions=Actions;ModalHeader.Search=HeaderSearch;const M=m.OS==="web"?{outlineStyle:"none"}:null;const t=A.create({headerContainer:{flexDirection:"row",alignItems:"center",flex:1,gap:8,minHeight:32,paddingLeft:4},navigationButton:{padding:4},closeButtonOnly:{marginLeft:"auto",marginRight:4},headerContent:{flex:1,marginHorizontal:8},headerContentCentered:{justifyContent:"center"},headerTitle:{color:n.color.text,fontSize:14,fontWeight:"500"},headerTitleCentered:{textAlign:"center"},headerSubtitle:{fontSize:12,color:n.color.textSecondary,marginTop:2},headerSubtitleCentered:{textAlign:"center"},headerActions:{flexDirection:"row",gap:6,marginLeft:"auto",marginRight:4,flexShrink:0},headerContentNoMargin:{marginHorizontal:0},searchContainer:{flexDirection:"row",alignItems:"center",flex:1,backgroundColor:n.color.surfaceElevated,borderRadius:10,paddingHorizontal:10,paddingVertical:4,marginHorizontal:12,marginVertical:4,height:32,borderWidth:1,borderColor:n.color.border},searchInput:{flex:1,minWidth:0,marginLeft:8,fontSize:13,color:n.color.text,padding:0,height:"100%"},searchCancelButton:{padding:4,marginLeft:4}});
@@ -1 +1 @@
1
- "use strict";import{useState as p}from"react";import{View as l,TextInput as C,TouchableOpacity as y,Text as S,StyleSheet as z}from"react-native";import{Search as T,X as k,Filter as I}from"../../icons/index.js";import{gameUIColors as r}from"../gameUI/index.js";import{jsx as e,jsxs as f}from"react/jsx-runtime";export function SearchBar({value:a,onChange:o,onClear:i,placeholder:c="Search...",showFilters:n=false,onFilterPress:s,style:d,containerStyle:g,autoFocus:m=false,onSubmitEditing:b,testID:u,returnKeyType:F}){const[x,h]=p(false);const B=()=>{o("");i?.()};return e(l,{style:[t.container,g],children:f(l,{style:[t.searchBar,x&&t.searchBarFocused],children:[e(T,{size:16,color:r.secondary}),e(C,{style:[t.input,d],placeholder:c,placeholderTextColor:r.tertiary,value:a,onChangeText:o,onFocus:()=>h(true),onBlur:()=>h(false),autoFocus:m,autoCapitalize:"none",autoCorrect:false,onSubmitEditing:b,returnKeyType:F,testID:u}),a.length>0&&e(y,{onPress:B,style:t.clearButton,testID:u?`${u}-clear`:void 0,accessibilityLabel:"Clear search",accessibilityRole:"button",children:e(k,{size:14,color:r.secondary})}),n&&e(y,{onPress:s,style:t.filterButton,children:e(I,{size:14,color:r.primary})})]})})}SearchBar.Quick=function a({onSearch:o,placeholder:i="Quick search...",style:c}){const[n,s]=p("");const d=()=>{if(n.trim()){o(n.trim());s("")}};return e(SearchBar,{value:n,onChange:s,placeholder:i,onSubmitEditing:d,returnKeyType:"search",style:c})};SearchBar.WithFilters=function a({filterCount:o,...i}){return f(l,{style:t.withFiltersContainer,children:[e(SearchBar,{...i,showFilters:true}),o!==void 0&&o>0&&e(l,{style:t.filterBadge,children:e(S,{style:t.filterBadgeText,children:o})})]})};const t=z.create({container:{position:"relative",zIndex:100},searchBar:{flexDirection:"row",alignItems:"center",backgroundColor:r.panel,borderRadius:8,paddingHorizontal:12,paddingVertical:8,gap:8,borderWidth:1,borderColor:"transparent"},searchBarFocused:{borderColor:r.primary+"40"},input:{flex:1,fontSize:14,color:r.text,padding:0},clearButton:{padding:4},filterButton:{padding:4,borderRadius:4,backgroundColor:r.primary+"20"},withFiltersContainer:{position:"relative"},filterBadge:{position:"absolute",top:-4,right:-4,backgroundColor:r.error,borderRadius:10,minWidth:18,height:18,justifyContent:"center",alignItems:"center",paddingHorizontal:4},filterBadgeText:{fontSize:10,fontWeight:"700",color:"#FFFFFF"}});
1
+ "use strict";import{useState as p}from"react";import{View as s,TextInput as S,Platform as C,TouchableOpacity as y,Text as z,StyleSheet as T}from"react-native";import{Search as I,X as W,Filter as k}from"../../icons/index.js";import{gameUIColors as r}from"../gameUI/index.js";import{jsx as e,jsxs as f}from"react/jsx-runtime";export function SearchBar({value:a,onChange:o,onClear:i,placeholder:c="Search...",showFilters:n=false,onFilterPress:l,style:d,containerStyle:g,autoFocus:m=false,onSubmitEditing:b,testID:u,returnKeyType:F}){const[x,h]=p(false);const B=()=>{o("");i?.()};return e(s,{style:[t.container,g],children:f(s,{style:[t.searchBar,x&&t.searchBarFocused],children:[e(I,{size:16,color:r.secondary}),e(S,{style:[t.input,w,d],placeholder:c,placeholderTextColor:r.tertiary,value:a,onChangeText:o,onFocus:()=>h(true),onBlur:()=>h(false),autoFocus:m,autoCapitalize:"none",autoCorrect:false,onSubmitEditing:b,returnKeyType:F,testID:u}),a.length>0&&e(y,{onPress:B,style:t.clearButton,testID:u?`${u}-clear`:void 0,accessibilityLabel:"Clear search",accessibilityRole:"button",children:e(W,{size:14,color:r.secondary})}),n&&e(y,{onPress:l,style:t.filterButton,children:e(k,{size:14,color:r.primary})})]})})}SearchBar.Quick=function a({onSearch:o,placeholder:i="Quick search...",style:c}){const[n,l]=p("");const d=()=>{if(n.trim()){o(n.trim());l("")}};return e(SearchBar,{value:n,onChange:l,placeholder:i,onSubmitEditing:d,returnKeyType:"search",style:c})};SearchBar.WithFilters=function a({filterCount:o,...i}){return f(s,{style:t.withFiltersContainer,children:[e(SearchBar,{...i,showFilters:true}),o!==void 0&&o>0&&e(s,{style:t.filterBadge,children:e(z,{style:t.filterBadgeText,children:o})})]})};const w=C.OS==="web"?{outlineStyle:"none"}:null;const t=T.create({container:{position:"relative",zIndex:100},searchBar:{flexDirection:"row",alignItems:"center",backgroundColor:r.panel,borderRadius:8,paddingHorizontal:12,paddingVertical:8,gap:8,borderWidth:1,borderColor:"transparent"},searchBarFocused:{borderColor:r.primary+"40"},input:{flex:1,minWidth:0,fontSize:14,color:r.text,padding:0},clearButton:{padding:4},filterButton:{padding:4,borderRadius:4,backgroundColor:r.primary+"20"},withFiltersContainer:{position:"relative"},filterBadge:{position:"absolute",top:-4,right:-4,backgroundColor:r.error,borderRadius:10,minWidth:18,height:18,justifyContent:"center",alignItems:"center",paddingHorizontal:4},filterBadgeText:{fontSize:10,fontWeight:"700",color:"#FFFFFF"}});
@@ -1 +1 @@
1
- "use strict";import{useState as j,useRef as P,useCallback as f,useEffect as U}from"react";import{View as u,TouchableOpacity as s,StyleSheet as V,Animated as C,Platform as X}from"react-native";import{X as k,Minus as I,DockBottom as R,FloatWindow as N}from"../../icons/index.js";import{buoyColors as W}from"../gameUI/constants/gameUIColors.js";import{night as e}from"../night/nightTheme.js";import{jsx as t,jsxs as x,Fragment as Z}from"react/jsx-runtime";const G=X.OS!=="web";let _=true;export function setExpandableWindowControls(l){_=l}const g={close:"#FF5F57",minimize:"#FEBC2E",toggleMode:"#28C840"};const B=12;const H=8;const b=8;const w=36;const q=12;const O=16;const p=8;const J=3e3;export function WindowControls({onClose:l,onMinimize:i,onToggleMode:r,mode:a,variant:D="night",defaultExpanded:h}){const n=a==="floating"?R:N;const E=a==="floating"?"Dock to bottom sheet":"Make floating window";if(!_||!G){return x(u,{style:o.container,children:[i&&t(s,{onPress:i,style:[o.dot,o.minimizeDot],activeOpacity:.8,accessibilityLabel:"Minimize modal",accessibilityRole:"button",children:t(I,{size:b,color:"#7A5A00",strokeWidth:1.5})}),r&&t(s,{onPress:r,style:[o.dot,o.expandDot],activeOpacity:.8,accessibilityLabel:E,accessibilityRole:"button",children:t(n,{size:b,color:"#004A1A",strokeWidth:1.5})}),t(s,{onPress:l,style:[o.dot,o.closeDot],activeOpacity:.8,accessibilityLabel:"Close modal",testID:"tool-window-close",accessibilityRole:"button",children:t(k,{size:b,color:"#4A0000",strokeWidth:1.5})})]})}return t(K,{onClose:l,onMinimize:i,onToggleMode:r,mode:a,variant:D,defaultExpanded:h})}function K({onClose:l,onMinimize:i,onToggleMode:r,mode:a,variant:D="night",defaultExpanded:h=false}){const n=D==="night";const[E,z]=j(h);const c=P(new C.Value(h?1:0)).current;const m=P(null);const S=a==="floating"?R:N;const T=a==="floating"?"Dock to bottom sheet":"Make floating window";const d=f(()=>{if(m.current){clearTimeout(m.current);m.current=null}},[]);const y=f(()=>{d();C.spring(c,{toValue:0,tension:200,friction:20,useNativeDriver:false}).start(()=>{z(false)})},[c,d]);const v=f(()=>{z(true);C.spring(c,{toValue:1,tension:180,friction:18,useNativeDriver:false}).start();d();m.current=setTimeout(y,J)},[c,y,d]);U(()=>{return d},[d]);const A=f(F=>{y();F()},[y]);const L=c.interpolate({inputRange:[0,1],outputRange:[.3,1]});const M=c.interpolate({inputRange:[0,.5,1],outputRange:[0,.8,1]});return x(Z,{children:[t(s,{onPress:v,activeOpacity:.7,accessibilityLabel:"Open window controls",testID:"tool-window-controls",accessibilityRole:"button",style:o.trigger,hitSlop:{top:8,bottom:8,left:8,right:8},children:x(u,{style:o.container,children:[i&&t(u,{style:[o.dot,o.minimizeDot],children:t(I,{size:b,color:"#7A5A00",strokeWidth:1.5})}),r&&t(u,{style:[o.dot,o.expandDot],children:t(S,{size:b,color:"#004A1A",strokeWidth:1.5})}),t(u,{style:[o.dot,o.closeDot],children:t(k,{size:b,color:"#4A0000",strokeWidth:1.5})})]})}),E&&t(C.View,{style:[o.expandedPanelInline,{transform:[{scale:L}],opacity:M}],children:x(u,{style:[o.expandedContainer,n&&o.nightExpandedContainer],children:[i&&t(s,{onPress:()=>A(i),style:[o.expandedButton,n?o.nightMinimizeButton:o.minimizeButtonExpanded],activeOpacity:.7,accessibilityLabel:"Minimize modal",testID:"tool-window-minimize",accessibilityRole:"button",children:t(I,{size:O,color:n?e.color.warning:"#7A5A00",strokeWidth:2})}),r&&t(s,{onPress:()=>A(r),style:[o.expandedButton,n?o.nightToggleButton:o.expandButtonExpanded],activeOpacity:.7,accessibilityLabel:T,testID:"tool-window-mode",accessibilityRole:"button",children:t(S,{size:O,color:n?e.color.accent:"#004A1A",strokeWidth:2})}),t(s,{onPress:()=>A(l),style:[o.expandedButton,n?o.nightCloseButton:o.closeButtonExpanded],activeOpacity:.7,accessibilityLabel:"Close modal",testID:"tool-window-close",accessibilityRole:"button",children:t(k,{size:O,color:n?e.color.danger:"#4A0000",strokeWidth:2})})]})})]})}const o=V.create({trigger:{padding:2},container:{flexDirection:"row",alignItems:"center",gap:H},dot:{width:B,height:B,borderRadius:B/2,alignItems:"center",justifyContent:"center"},closeDot:{backgroundColor:g.close},minimizeDot:{backgroundColor:g.minimize},expandDot:{backgroundColor:g.toggleMode},expandedPanelInline:{position:"absolute",top:-p,right:-p,zIndex:9999},expandedContainer:{flexDirection:"row",alignItems:"center",gap:q,backgroundColor:W.card,borderRadius:(w+p*2)/2,paddingHorizontal:p,paddingVertical:p,borderWidth:1,borderColor:W.border,shadowColor:"#000",shadowOffset:{width:0,height:4},shadowOpacity:.4,shadowRadius:12,elevation:30},expandedButton:{width:w,height:w,borderRadius:w/2,alignItems:"center",justifyContent:"center"},closeButtonExpanded:{backgroundColor:g.close},minimizeButtonExpanded:{backgroundColor:g.minimize},expandButtonExpanded:{backgroundColor:g.toggleMode},nightExpandedContainer:{backgroundColor:e.color.surface,borderColor:e.color.border},nightMinimizeButton:{backgroundColor:e.color.warningSoft,borderWidth:1,borderColor:e.color.warning+"59"},nightToggleButton:{backgroundColor:e.color.accentSoft,borderWidth:1,borderColor:e.color.accentBorderStrong},nightCloseButton:{backgroundColor:e.color.dangerSoft,borderWidth:1,borderColor:e.color.danger+"59"}});
1
+ "use strict";import{useState as F,useRef as W,useCallback as C,useEffect as j}from"react";import{View as d,TouchableOpacity as s,StyleSheet as V,Animated as f,Platform as U}from"react-native";import{X as A,Minus as I,DockBottom as P,FloatWindow as R}from"../../icons/index.js";import{buoyColors as N}from"../gameUI/constants/gameUIColors.js";import{night as e}from"../night/nightTheme.js";import{expandableWindowControlsSupported as X,isExpandableWindowControlsEnabled as Z}from"./windowControlsSetting.js";import{jsx as t,jsxs as w,Fragment as G}from"react/jsx-runtime";export{setExpandableWindowControls}from"./windowControlsSetting.js";const u={close:"#FF5F57",minimize:"#FEBC2E",toggleMode:"#28C840"};const B=12;const H=8;const g=8;const x=36;const q=12;const z=16;const p=8;const J=3e3;export function WindowControls({onClose:b,onMinimize:i,onToggleMode:r,mode:l,variant:D="night",defaultExpanded:h}){const n=l==="floating"?P:R;const E=l==="floating"?"Dock to bottom sheet":"Make floating window";if(!Z()||!X(U.OS==="web")){return w(d,{style:o.container,children:[i&&t(s,{onPress:i,style:[o.dot,o.minimizeDot],activeOpacity:.8,accessibilityLabel:"Minimize modal",accessibilityRole:"button",children:t(I,{size:g,color:"#7A5A00",strokeWidth:1.5})}),r&&t(s,{onPress:r,style:[o.dot,o.expandDot],activeOpacity:.8,accessibilityLabel:E,accessibilityRole:"button",children:t(n,{size:g,color:"#004A1A",strokeWidth:1.5})}),t(s,{onPress:b,style:[o.dot,o.closeDot],activeOpacity:.8,accessibilityLabel:"Close modal",testID:"tool-window-close",accessibilityRole:"button",children:t(A,{size:g,color:"#4A0000",strokeWidth:1.5})})]})}return t(K,{onClose:b,onMinimize:i,onToggleMode:r,mode:l,variant:D,defaultExpanded:h})}function K({onClose:b,onMinimize:i,onToggleMode:r,mode:l,variant:D="night",defaultExpanded:h=false}){const n=D==="night";const[E,O]=F(h);const a=W(new f.Value(h?1:0)).current;const m=W(null);const S=l==="floating"?P:R;const T=l==="floating"?"Dock to bottom sheet":"Make floating window";const c=C(()=>{if(m.current){clearTimeout(m.current);m.current=null}},[]);const y=C(()=>{c();f.spring(a,{toValue:0,tension:200,friction:20,useNativeDriver:false}).start(()=>{O(false)})},[a,c]);const _=C(()=>{O(true);f.spring(a,{toValue:1,tension:180,friction:18,useNativeDriver:false}).start();c();m.current=setTimeout(y,J)},[a,y,c]);j(()=>{return c},[c]);const k=C(M=>{y();M()},[y]);const v=a.interpolate({inputRange:[0,1],outputRange:[.3,1]});const L=a.interpolate({inputRange:[0,.5,1],outputRange:[0,.8,1]});return w(G,{children:[t(s,{onPress:_,activeOpacity:.7,accessibilityLabel:"Open window controls",testID:"tool-window-controls",accessibilityRole:"button",style:o.trigger,hitSlop:{top:8,bottom:8,left:8,right:8},children:w(d,{style:o.container,children:[i&&t(d,{style:[o.dot,o.minimizeDot],children:t(I,{size:g,color:"#7A5A00",strokeWidth:1.5})}),r&&t(d,{style:[o.dot,o.expandDot],children:t(S,{size:g,color:"#004A1A",strokeWidth:1.5})}),t(d,{style:[o.dot,o.closeDot],children:t(A,{size:g,color:"#4A0000",strokeWidth:1.5})})]})}),E&&t(f.View,{style:[o.expandedPanelInline,{transform:[{scale:v}],opacity:L}],children:w(d,{style:[o.expandedContainer,n&&o.nightExpandedContainer],children:[i&&t(s,{onPress:()=>k(i),style:[o.expandedButton,n?o.nightMinimizeButton:o.minimizeButtonExpanded],activeOpacity:.7,accessibilityLabel:"Minimize modal",testID:"tool-window-minimize",accessibilityRole:"button",children:t(I,{size:z,color:n?e.color.warning:"#7A5A00",strokeWidth:2})}),r&&t(s,{onPress:()=>k(r),style:[o.expandedButton,n?o.nightToggleButton:o.expandButtonExpanded],activeOpacity:.7,accessibilityLabel:T,testID:"tool-window-mode",accessibilityRole:"button",children:t(S,{size:z,color:n?e.color.accent:"#004A1A",strokeWidth:2})}),t(s,{onPress:()=>k(b),style:[o.expandedButton,n?o.nightCloseButton:o.closeButtonExpanded],activeOpacity:.7,accessibilityLabel:"Close modal",testID:"tool-window-close",accessibilityRole:"button",children:t(A,{size:z,color:n?e.color.danger:"#4A0000",strokeWidth:2})})]})})]})}const o=V.create({trigger:{padding:2},container:{flexDirection:"row",alignItems:"center",gap:H},dot:{width:B,height:B,borderRadius:B/2,alignItems:"center",justifyContent:"center"},closeDot:{backgroundColor:u.close},minimizeDot:{backgroundColor:u.minimize},expandDot:{backgroundColor:u.toggleMode},expandedPanelInline:{position:"absolute",top:-p,right:-p,zIndex:9999},expandedContainer:{flexDirection:"row",alignItems:"center",gap:q,backgroundColor:N.card,borderRadius:(x+p*2)/2,paddingHorizontal:p,paddingVertical:p,borderWidth:1,borderColor:N.border,shadowColor:"#000",shadowOffset:{width:0,height:4},shadowOpacity:.4,shadowRadius:12,elevation:30},expandedButton:{width:x,height:x,borderRadius:x/2,alignItems:"center",justifyContent:"center"},closeButtonExpanded:{backgroundColor:u.close},minimizeButtonExpanded:{backgroundColor:u.minimize},expandButtonExpanded:{backgroundColor:u.toggleMode},nightExpandedContainer:{backgroundColor:e.color.surface,borderColor:e.color.border},nightMinimizeButton:{backgroundColor:e.color.warningSoft,borderWidth:1,borderColor:e.color.warning+"59"},nightToggleButton:{backgroundColor:e.color.accentSoft,borderWidth:1,borderColor:e.color.accentBorderStrong},nightCloseButton:{backgroundColor:e.color.dangerSoft,borderWidth:1,borderColor:e.color.danger+"59"}});
@@ -1 +1 @@
1
- "use strict";export{BackButton}from"./BackButton.js";export{ValueTypeBadge}from"./ValueTypeBadge.js";export{StorageTypeBadge}from"./StorageTypeBadge.js";export{CopyButton,InlineCopyButton,ToolbarCopyButton,ActionCopyButton,ToolbarClearButton}from"./CopyButton.js";export{ModalHeader}from"./ModalHeader.js";export{windowDragProps,noWindowDragProps}from"./windowDrag.js";export{ModalHintBanner}from"./ModalHintBanner.js";export{ClipboardHintBanner}from"./ClipboardHintBanner.js";export{SectionHeader}from"./SectionHeader.js";export{ListItem}from"./ListItem.js";export{FilterSection,FilterBadge,AddFilterInput,AddFilterButton,FilterList}from"./FilterComponents.js";export{CompactFilterChips}from"./CompactFilterChips.js";export{Badge,StatusBadge,CountBadge,TypeBadge,MethodBadge}from"./Badge.js";export{TabSelector}from"./TabSelector.js";export{ToolButton}from"./ToolButton.js";export{EventListItem}from"./EventListItem.js";export{StatsCard}from"./StatsCard.js";export{CompactRow}from"./CompactRow.js";export{DevToolsCard,DEVTOOLS_CARD_CONSTANTS}from"./DevToolsCard.js";export{HeaderSearchButton}from"./HeaderSearchButton.js";export{EmptyState,NoDataEmptyState,NoResultsEmptyState,NoSearchResultsEmptyState}from"./EmptyState.js";export{ToolEmptyState,resolveListEmptyState}from"./ToolEmptyState.js";export{StatusIndicator}from"./StatusIndicator.js";export{TimeDisplay}from"./TimeDisplay.js";export{DetailView}from"./DetailView.js";export{DraggableHeader}from"./DraggableHeader.js";export{GripVerticalIcon}from"./GripVerticalIcon.js";export{CollapsibleSection}from"./CollapsibleSection.js";export{DataInspector}from"./DataInspector.js";export{SearchBar}from"./SearchBar.js";export{DynamicFilterView}from"./DynamicFilterView.js";export{WindowControls,setExpandableWindowControls}from"./WindowControls.js";export{EventStepperFooter}from"./EventStepperFooter.js";export{ExpandablePopover}from"./ExpandablePopover.js";export{PowerToggleButton}from"./PowerToggleButton.js";export{ExpandedInfoRow,PillBadge}from"./ExpandedInfoRow.js";export{EventHistoryViewer,ViewToggleCards,DiffModeTabs,CompareBar,EventPickerModal}from"./EventHistoryViewer/index.js";export{InfoRow}from"./InfoRow.js";export{DetailViewToggle}from"./DetailViewToggle.js";export{ChangeRow}from"./ChangeRow.js";export{Pill}from"./Pill.js";export{ToolFooter,FooterRow,FooterCaption,FooterMessage,FooterButton}from"./ToolFooter.js";export{EntityFilterView}from"./EntityFilterView.js";export{ToggleRow}from"./ToggleRow.js";export{ChipStrip,useChipTap}from"./ChipStrip.js";export{ExportPreview,sizeWarningLevel}from"./ExportPreview.js";
1
+ "use strict";export{BackButton}from"./BackButton.js";export{ValueTypeBadge}from"./ValueTypeBadge.js";export{StorageTypeBadge}from"./StorageTypeBadge.js";export{CopyButton,InlineCopyButton,ToolbarCopyButton,ActionCopyButton,ToolbarClearButton}from"./CopyButton.js";export{ModalHeader}from"./ModalHeader.js";export{windowDragProps,noWindowDragProps}from"./windowDrag.js";export{ModalHintBanner}from"./ModalHintBanner.js";export{ClipboardHintBanner}from"./ClipboardHintBanner.js";export{SectionHeader}from"./SectionHeader.js";export{ListItem}from"./ListItem.js";export{FilterSection,FilterBadge,AddFilterInput,AddFilterButton,FilterList}from"./FilterComponents.js";export{CompactFilterChips}from"./CompactFilterChips.js";export{Badge,StatusBadge,CountBadge,TypeBadge,MethodBadge}from"./Badge.js";export{TabSelector}from"./TabSelector.js";export{ToolButton}from"./ToolButton.js";export{EventListItem}from"./EventListItem.js";export{StatsCard}from"./StatsCard.js";export{CompactRow}from"./CompactRow.js";export{DevToolsCard,DEVTOOLS_CARD_CONSTANTS}from"./DevToolsCard.js";export{HeaderSearchButton}from"./HeaderSearchButton.js";export{EmptyState,NoDataEmptyState,NoResultsEmptyState,NoSearchResultsEmptyState}from"./EmptyState.js";export{ToolEmptyState,resolveListEmptyState}from"./ToolEmptyState.js";export{StatusIndicator}from"./StatusIndicator.js";export{TimeDisplay}from"./TimeDisplay.js";export{DetailView}from"./DetailView.js";export{DraggableHeader}from"./DraggableHeader.js";export{GripVerticalIcon}from"./GripVerticalIcon.js";export{CollapsibleSection}from"./CollapsibleSection.js";export{DataInspector}from"./DataInspector.js";export{SearchBar}from"./SearchBar.js";export{DynamicFilterView}from"./DynamicFilterView.js";export{WindowControls,setExpandableWindowControls}from"./WindowControls.js";export{expandableWindowControlsSupported}from"./windowControlsSetting.js";export{EventStepperFooter}from"./EventStepperFooter.js";export{ExpandablePopover}from"./ExpandablePopover.js";export{PowerToggleButton}from"./PowerToggleButton.js";export{ExpandedInfoRow,PillBadge}from"./ExpandedInfoRow.js";export{EventHistoryViewer,ViewToggleCards,DiffModeTabs,CompareBar,EventPickerModal}from"./EventHistoryViewer/index.js";export{InfoRow}from"./InfoRow.js";export{DetailViewToggle}from"./DetailViewToggle.js";export{ChangeRow}from"./ChangeRow.js";export{Pill}from"./Pill.js";export{ToolFooter,FooterRow,FooterCaption,FooterMessage,FooterButton}from"./ToolFooter.js";export{EntityFilterView}from"./EntityFilterView.js";export{ToggleRow}from"./ToggleRow.js";export{ChipStrip,useChipTap}from"./ChipStrip.js";export{ExportPreview,sizeWarningLevel}from"./ExportPreview.js";
@@ -0,0 +1 @@
1
+ "use strict";import{isCapacitorNative as o}from"@buoy-gg/license";let t=true;export function setExpandableWindowControls(e){t=e}export function isExpandableWindowControlsEnabled(){return t}export function expandableWindowControlsSupported(e){if(!e||o())return true;const n=globalThis;return n.matchMedia?.("(pointer: coarse)").matches??false}
@@ -1 +1 @@
1
- "use strict";import{night as T}from"../night/nightTheme.js";import{useState as O,useRef as x,useCallback as L,useEffect as p,useMemo as V,Children as q}from"react";import{calculateTargetPosition as nt}from"./onboardingConstants.web.js";import{useFloatingTools as it,FloatingToolsProvider as rt,useFloatingToolsContext as st,interleaveWithDividers as at,floatingToolsColors as u,withAlpha as D,getUserStatusConfig as lt,getGripIconLayout as ct,interpolatePosition as dt,easing as ut,VISIBLE_HANDLE_WIDTH as K,ANIMATION_DURATION as gt}from"@buoy-gg/floating-tools-react/floating";import{jsx as a,jsxs as Y}from"react/jsx-runtime";const j={getItem:e=>localStorage.getItem(e),setItem:(e,s)=>localStorage.setItem(e,s)};const J="#A0A0A0";function ft({size:e=24,color:s=D(J,"CC")}){const r=ct(e);return a("div",{style:{width:e,height:e,display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"center"},children:[0,1].map(l=>a("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",marginLeft:r.columnGap/2,marginRight:r.columnGap/2},children:[0,1,2].map(m=>a("div",{style:{width:r.dotSize,height:r.dotSize,borderRadius:r.dotSize/2,backgroundColor:s,marginTop:r.rowGap/2,marginBottom:r.rowGap/2}},m))},l))})}export function Divider(){return a("div",{style:{width:1,height:12,backgroundColor:D(u.muted,"66"),flexShrink:0}})}const pt={success:u.success,optional:u.optional,muted:u.muted,secondary:J};export function UserStatus({userRole:e,onPress:s}){const{isDragging:r}=st();const l=lt(e,pt);const m=h=>{if(!r&&s){h.stopPropagation();h.currentTarget.focus();s()}};return Y("button",{role:"button","aria-label":`User status: ${l.label}`,onClick:m,style:{display:"flex",flexDirection:"row",alignItems:"center",paddingTop:6,paddingBottom:6,paddingLeft:8,paddingRight:8,flexShrink:0,cursor:s&&!r?"pointer":"default",background:"none",border:"none",margin:0},children:[a("div",{style:{width:6,height:6,borderRadius:3,backgroundColor:l.dotColor,marginRight:4}}),a("span",{style:{fontSize:10,fontWeight:500,color:l.textColor,letterSpacing:.3,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',lineHeight:"normal"},children:l.label})]})}function ht(){const e=x(null);const[s,r]=O({x:0,y:0});const l=L((m,h,k)=>{if(e.current){cancelAnimationFrame(e.current)}const z=performance.now();const y=v=>{const M=v-z;const R=Math.min(M/gt,1);const A=dt(m,h,R,ut.easeOutCubic);r(A);if(R<1){e.current=requestAnimationFrame(y)}else{r(h);k?.()}};e.current=requestAnimationFrame(y)},[]);p(()=>{return()=>{if(e.current){cancelAnimationFrame(e.current)}}},[]);return{position:s,setPosition:r,animateTo:l}}let Q=null;export function getBubbleAnchorPosition(){return Q}export function FloatingTool({id:e,revealToken:s,variant:r="bubble",dragFromSurface:l=false,accessibilityLabel:m="Drag handle",accessory:h,handleAdornment:k,enablePositionPersistence:z=true,children:y,pushToSide:v=false,suspendPointerEvents:M=false,centerOnboarding:R=false,minimizedStack:A,hasMinimizedStack:G=false}){const b=x(null);const Z=V(()=>e?{getItem:t=>j.getItem(`@buoy/floating-tool/${e}/${t}`),setItem:(t,n)=>j.setItem(`@buoy/floating-tool/${e}/${t}`,n)}:j,[e]);const{state:o,actions:i,isInitialized:c}=it({screenSize:{width:window.innerWidth,height:window.innerHeight},enablePositionPersistence:z,storage:Z});const{position:w,setPosition:I,animateTo:g}=ht();p(()=>{if(c){I(o.position)}},[c,o.position,I]);p(()=>{if(!e)Q={x:w.x,y:w.y}},[w,e]);p(()=>{if(!c)return;const t=()=>{const d=b.current?.getBoundingClientRect();if(d&&d.width>0&&d.height>0)i.setBubbleSize({width:d.width,height:d.height})};const n=()=>{i.setScreenSize(window.innerWidth,window.innerHeight);t()};t();const f=typeof ResizeObserver!=="undefined"?new ResizeObserver(t):null;if(b.current)f?.observe(b.current);window.addEventListener("resize",n);return()=>{f?.disconnect();window.removeEventListener("resize",n)}},[i,c]);p(()=>{const t=document.createElement("div");t.style.cssText="position:fixed;top:env(safe-area-inset-top);left:env(safe-area-inset-left);visibility:hidden;pointer-events:none";document.body.appendChild(t);const n=t.getBoundingClientRect();document.body.removeChild(t);if(n.top>0||n.left>0){i.setMinPosition({x:Math.max(n.left,10),y:Math.max(n.top,10)})}},[i]);const[X,_]=O(false);const N=L(t=>{t.stopPropagation();t.preventDefault();_(true);i.handleDragStart({clientX:t.clientX,clientY:t.clientY})},[i]);const W=x(false);const tt=t=>{if(t.button!==0||!(t.target instanceof Element))return;if(t.target.closest('button, a, input, select, textarea, [role="button"], [role="switch"], [role="slider"], [role="checkbox"], [role="radio"], [contenteditable="true"], [data-floating-accessory]'))return;W.current=true;N(t)};const F=L(t=>{const n=i.handleDragMove({clientX:t.clientX,clientY:t.clientY});if(n.isDragging){I(n.position)}},[i,I]);const C=L(t=>{_(false);const n=i.handleDragEnd({clientX:t.clientX,clientY:t.clientY});const f=W.current;W.current=false;if(n.wasTap&&!f){const d=i.toggleHideShow();g(o.position,d.targetPosition,()=>{i.commitPosition(d.targetPosition)})}else if(n.shouldHide){g(o.position,n.position,()=>{i.commitPosition(n.position)})}},[i,g,o.position]);p(()=>{if(X){window.addEventListener("pointermove",F);window.addEventListener("pointerup",C);window.addEventListener("pointercancel",C);return()=>{window.removeEventListener("pointermove",F);window.removeEventListener("pointerup",C);window.removeEventListener("pointercancel",C)}}},[X,F,C]);const S=x(o.position);S.current=o.position;const $=x(o.isHidden);$.current=o.isHidden;const H=x(false);p(()=>{if(!c)return;if(v&&!H.current){if($.current)return;H.current=true;const{targetPosition:t}=i.forceHide();g(S.current,t,()=>{})}else if(!v&&H.current){H.current=false;if(!$.current)return;const{targetPosition:t}=i.forceShow();const n=b.current?.getBoundingClientRect().width??100;const f={x:Math.max(10,Math.min(t.x,window.innerWidth-n-10)),y:t.y};g(S.current,f,()=>{i.commitPosition(f)})}},[v,c]);p(()=>{if(!R||!c)return;const t=b.current?.getBoundingClientRect().width??100;const n=b.current?.getBoundingClientRect().height??32;const f=nt();const d={x:(window.innerWidth-t)/2,y:window.innerHeight-f-n};g(S.current,d,()=>{})},[R,c]);const U=x(void 0);p(()=>{if(!c||U.current===s)return;U.current=s;if(s!==void 0&&s>0&&o.isHidden){const{targetPosition:t}=i.forceShow();g(o.position,t,()=>i.commitPosition(t))}},[s,c,o.isHidden,o.position,i,g]);const et=V(()=>r==="strip"?q.toArray(y):at(q.toArray(y),t=>a(Divider,{},t)),[y,r]);if(!c){return null}const P=Math.max(0,w.y-8);const E=Math.max(0,window.innerHeight-w.y-o.bubbleSize.height-8);const ot=P>E;const B=P>=48||P>=E;return Y("div",{ref:b,"data-testid":e??"buoy-floating-tool",role:"toolbar","aria-label":"Floating Tools",onPointerDown:l?tt:void 0,style:{position:"fixed",left:w.x,top:w.y,zIndex:v?8999:9999,display:"flex",flexDirection:"row",alignItems:"center",backgroundColor:u.panel,borderTopLeftRadius:G?0:6,borderTopRightRadius:6,borderBottomLeftRadius:6,borderBottomRightRadius:6,borderWidth:o.isDragging?2:1,borderTopWidth:o.isDragging?2:G?0:1,borderStyle:"solid",borderColor:o.isDragging?u.dragActive:D(u.muted,"66"),boxShadow:o.isDragging?`0 6px 12px ${D(u.dragActive,.36)}`:"0 4px 8px rgba(0, 0, 0, 0.3)",cursor:l?o.isDragging?"grabbing":"grab":void 0,userSelect:"none",touchAction:"none",pointerEvents:M?"none":"auto",...r==="strip"?{borderRadius:T.radius.card,minHeight:48,backgroundColor:T.color.surface,borderColor:o.isDragging?T.color.accentBorderStrong:T.color.separator,boxShadow:"0 4px 16px rgba(0, 0, 0, 0.24)"}:{}},children:[A&&a("div",{style:{position:"absolute",...B?{bottom:"100%"}:{top:"100%"},"--buoy-stack-bottom":B?"0px":"auto","--buoy-stack-top":B?"auto":"0px","--buoy-stack-space":`${B?P:E}px`,left:-1,width:K,overflow:"visible",zIndex:1001},children:A}),Y("div",{role:"button","aria-label":m,"data-testid":e?`${e}-grip`:"buoy-floating-grip",tabIndex:0,onPointerDown:N,onKeyDown:t=>{if(t.key!=="Enter"&&t.key!==" ")return;t.preventDefault();const n=i.toggleHideShow();g(o.position,n.targetPosition,()=>i.commitPosition(n.targetPosition))},style:{touchAction:"none",paddingLeft:6,paddingRight:6,paddingTop:6,paddingBottom:6,backgroundColor:D(u.muted,"1A"),display:"flex",alignItems:"center",justifyContent:"center",width:K,boxSizing:"border-box",borderRight:`1px solid ${D(u.muted,"66")}`,cursor:o.isDragging?"grabbing":"grab",...r==="strip"?{minHeight:48,backgroundColor:"transparent",borderRight:"none",flexDirection:"column"}:{}},children:[a(ft,{size:r==="strip"?20:12}),k]}),a(rt,{value:{isDragging:o.isDragging,isHidden:o.isHidden},children:a("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",gap:6,paddingRight:8},children:et})}),!o.isHidden&&h&&a("div",{"data-floating-accessory":true,style:{position:"absolute",...ot?{bottom:"100%"}:{top:"100%"},left:0,width:"100%",maxHeight:Math.max(P,E),overflowY:"auto",zIndex:1002},children:h})]})}
1
+ "use strict";import{createPortal as at}from"react-dom";import{night as L}from"../night/nightTheme.js";import{useState as N,useRef as y,useCallback as B,useEffect as m,useMemo as q,Children as K}from"react";import{calculateTargetPosition as lt}from"./onboardingConstants.web.js";import{useFloatingTools as dt,FloatingToolsProvider as ct,useFloatingToolsContext as ut,interleaveWithDividers as gt,floatingToolsColors as p,withAlpha as D,getUserStatusConfig as pt,getGripIconLayout as ft,interpolatePosition as mt,easing as bt,VISIBLE_HANDLE_WIDTH as J,ANIMATION_DURATION as ht}from"@buoy-gg/floating-tools-react/floating";import{jsx as d,jsxs as Y}from"react/jsx-runtime";const k=10;const wt=20;function Q(){if(typeof document==="undefined"||!document.body)return{top:0,left:0,bottom:0};const e=document.createElement("div");e.style.cssText="position:fixed;top:0;left:0;visibility:hidden;pointer-events:none;padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-bottom:env(safe-area-inset-bottom)";document.body.appendChild(e);const s=getComputedStyle(e);const r={top:parseFloat(s.paddingTop)||0,left:parseFloat(s.paddingLeft)||0,bottom:parseFloat(s.paddingBottom)||0};document.body.removeChild(e);return r}const $={getItem:e=>localStorage.getItem(e),setItem:(e,s)=>localStorage.setItem(e,s)};const Z="#A0A0A0";function yt({size:e=24,color:s=D(Z,"CC")}){const r=ft(e);return d("div",{style:{width:e,height:e,display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"center"},children:[0,1].map(c=>d("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",marginLeft:r.columnGap/2,marginRight:r.columnGap/2},children:[0,1,2].map(h=>d("div",{style:{width:r.dotSize,height:r.dotSize,borderRadius:r.dotSize/2,backgroundColor:s,marginTop:r.rowGap/2,marginBottom:r.rowGap/2}},h))},c))})}export function Divider(){return d("div",{style:{width:1,height:12,backgroundColor:D(p.muted,"66"),flexShrink:0}})}const xt={success:p.success,optional:p.optional,muted:p.muted,secondary:Z};export function UserStatus({userRole:e,onPress:s}){const{isDragging:r}=ut();const c=pt(e,xt);const h=b=>{if(!r&&s){b.stopPropagation();b.currentTarget.focus();s()}};return Y("button",{role:"button","aria-label":s?"Open Dev Tools Menu":`User status: ${c.label}`,"data-testid":s?"open-dev-tools-button":void 0,onClick:h,style:{display:"flex",flexDirection:"row",alignItems:"center",paddingTop:6,paddingBottom:6,paddingLeft:8,paddingRight:8,flexShrink:0,cursor:s&&!r?"pointer":"default",background:"none",border:"none",margin:0},children:[d("div",{style:{width:6,height:6,borderRadius:3,backgroundColor:c.dotColor,marginRight:4}}),d("span",{style:{fontSize:10,fontWeight:500,color:c.textColor,letterSpacing:.3,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',lineHeight:"normal"},children:c.label})]})}function vt(){const e=y(null);const[s,r]=N({x:0,y:0});const c=B((h,b,F)=>{if(e.current){cancelAnimationFrame(e.current)}const M=performance.now();const x=v=>{const R=v-M;const S=Math.min(R/ht,1);const P=mt(h,b,S,bt.easeOutCubic);r(P);if(S<1){e.current=requestAnimationFrame(x)}else{r(b);F?.()}};e.current=requestAnimationFrame(x)},[]);m(()=>{return()=>{if(e.current){cancelAnimationFrame(e.current)}}},[]);return{position:s,setPosition:r,animateTo:c}}let tt=null;export function getBubbleAnchorPosition(){return tt}export function FloatingTool({id:e,revealToken:s,variant:r="bubble",dragFromSurface:c=false,accessibilityLabel:h="Drag handle",accessory:b,handleAdornment:F,enablePositionPersistence:M=true,children:x,pushToSide:v=false,suspendPointerEvents:R=false,centerOnboarding:S=false,minimizedStack:P,hasMinimizedStack:j=false}){const w=y(null);const et=q(()=>e?{getItem:t=>$.getItem(`@buoy/floating-tool/${e}/${t}`),setItem:(t,i)=>$.setItem(`@buoy/floating-tool/${e}/${t}`,i)}:$,[e]);const{state:o,actions:n,isInitialized:u}=dt({screenSize:{width:window.innerWidth,height:window.innerHeight},enablePositionPersistence:M,storage:et});const{position:g,setPosition:H,animateTo:f}=vt();m(()=>{if(u){H(o.position)}},[u,o.position,H]);m(()=>{if(!e)tt={x:g.x,y:g.y}},[g,e]);m(()=>{if(!u)return;const t=()=>{const l=w.current?.getBoundingClientRect();if(l&&l.width>0&&l.height>0)n.setBubbleSize({width:l.width,height:l.height})};const i=()=>{const l=Q().bottom;n.setScreenSize(window.innerWidth,window.innerHeight-(l>0?l-k:0));t()};t();const a=typeof ResizeObserver!=="undefined"?new ResizeObserver(t):null;if(w.current)a?.observe(w.current);window.addEventListener("resize",i);return()=>{a?.disconnect();window.removeEventListener("resize",i)}},[n,u]);const[ot,nt]=N(0);m(()=>{let t=false;const i=()=>{const a=Q();nt(a.top);if(a.top>0||a.left>0||a.bottom>0){t=true;n.setMinPosition({x:a.left,y:a.top+wt});n.setScreenSize(window.innerWidth,window.innerHeight-(a.bottom>0?a.bottom-k:0))}else if(t){t=false;n.setMinPosition({x:k,y:k});n.setScreenSize(window.innerWidth,window.innerHeight)}};i();window.addEventListener("resize",i);return()=>window.removeEventListener("resize",i)},[n]);const[O,X]=N(false);const U=B(t=>{t.stopPropagation();t.preventDefault();X(true);n.handleDragStart({clientX:t.clientX,clientY:t.clientY})},[n]);const W=y(false);const it=t=>{if(t.button!==0||!(t.target instanceof Element))return;if(t.target.closest('button, a, input, select, textarea, [role="button"], [role="switch"], [role="slider"], [role="checkbox"], [role="radio"], [contenteditable="true"], [data-floating-accessory]'))return;W.current=true;U(t)};const G=B(t=>{const i=n.handleDragMove({clientX:t.clientX,clientY:t.clientY});if(i.isDragging){H(i.position)}},[n,H]);const A=B(t=>{X(false);const i=n.handleDragEnd({clientX:t.clientX,clientY:t.clientY});const a=W.current;W.current=false;if(i.wasTap&&!a){const l=n.toggleHideShow();f(o.position,l.targetPosition,()=>{n.commitPosition(l.targetPosition)})}else if(i.shouldHide){f(o.position,i.position,()=>{n.commitPosition(i.position)})}},[n,f,o.position]);m(()=>{if(O){window.addEventListener("pointermove",G);window.addEventListener("pointerup",A);window.addEventListener("pointercancel",A);return()=>{window.removeEventListener("pointermove",G);window.removeEventListener("pointerup",A);window.removeEventListener("pointercancel",A)}}},[O,G,A]);const E=y(o.position);E.current=o.position;const _=y(o.isHidden);_.current=o.isHidden;const T=y(false);m(()=>{if(!u)return;if(v&&!T.current){if(_.current)return;T.current=true;const{targetPosition:t}=n.forceHide();f(E.current,t,()=>{})}else if(!v&&T.current){T.current=false;if(!_.current)return;const{targetPosition:t}=n.forceShow();const i=w.current?.getBoundingClientRect().width??100;const a={x:Math.max(10,Math.min(t.x,window.innerWidth-i-10)),y:t.y};f(E.current,a,()=>{n.commitPosition(a)})}},[v,u]);m(()=>{if(!S||!u)return;const t=w.current?.getBoundingClientRect().width??100;const i=w.current?.getBoundingClientRect().height??32;const a=lt();const l={x:(window.innerWidth-t)/2,y:window.innerHeight-a-i};f(E.current,l,()=>{})},[S,u]);const V=y(void 0);m(()=>{if(!u||V.current===s)return;V.current=s;if(s!==void 0&&s>0&&o.isHidden){const{targetPosition:t}=n.forceShow();f(o.position,t,()=>n.commitPosition(t))}},[s,u,o.isHidden,o.position,n,f]);const rt=q(()=>r==="strip"?K.toArray(x):gt(K.toArray(x),t=>d(Divider,{},t)),[x,r]);if(!u){return null}const C=Math.max(0,g.y-ot-8);const z=Math.max(0,window.innerHeight-g.y-o.bubbleSize.height-8);const st=C>z;const I=C>=48||C>=z;return Y("div",{ref:w,"data-testid":e??"buoy-floating-tool",role:"toolbar","aria-label":"Floating Tools",onPointerDown:c?it:void 0,style:{position:"fixed",left:g.x,top:g.y,zIndex:v?8999:9999,display:"flex",flexDirection:"row",alignItems:"center",backgroundColor:p.panel,borderTopLeftRadius:j?0:6,borderTopRightRadius:6,borderBottomLeftRadius:6,borderBottomRightRadius:6,borderWidth:o.isDragging?2:1,borderTopWidth:o.isDragging?2:j?0:1,borderStyle:"solid",borderColor:o.isDragging?p.dragActive:D(p.muted,"66"),boxShadow:o.isDragging?`0 6px 12px ${D(p.dragActive,.36)}`:"0 4px 8px rgba(0, 0, 0, 0.3)",cursor:c?o.isDragging?"grabbing":"grab":void 0,userSelect:"none",touchAction:"none",pointerEvents:R?"none":"auto",...r==="strip"?{borderRadius:L.radius.card,minHeight:48,backgroundColor:L.color.surface,borderColor:o.isDragging?L.color.accentBorderStrong:L.color.separator,boxShadow:"0 4px 16px rgba(0, 0, 0, 0.24)"}:{}},children:[P&&at(d("div",{style:{position:"fixed",top:I?g.y:g.y+o.bubbleSize.height,transform:I?"translateY(-100%)":void 0,"--buoy-stack-bottom":I?"0px":"auto","--buoy-stack-top":I?"auto":"0px","--buoy-stack-space":`${I?C:z}px`,left:g.x-1,width:J,overflow:"visible",zIndex:1e4,pointerEvents:R?"none":"auto"},children:P}),document.body),Y("div",{role:"button","aria-label":h,"data-testid":e?`${e}-grip`:"buoy-floating-grip",tabIndex:0,onPointerDown:U,onKeyDown:t=>{if(t.key!=="Enter"&&t.key!==" ")return;t.preventDefault();const i=n.toggleHideShow();f(o.position,i.targetPosition,()=>n.commitPosition(i.targetPosition))},style:{touchAction:"none",paddingLeft:6,paddingRight:6,paddingTop:6,paddingBottom:6,backgroundColor:D(p.muted,"1A"),display:"flex",alignItems:"center",justifyContent:"center",width:J,boxSizing:"border-box",borderRight:`1px solid ${D(p.muted,"66")}`,cursor:o.isDragging?"grabbing":"grab",...r==="strip"?{minHeight:48,backgroundColor:"transparent",borderRight:"none",flexDirection:"column"}:{}},children:[d(yt,{size:r==="strip"?20:12}),F]}),d(ct,{value:{isDragging:o.isDragging,isHidden:o.isHidden},children:d("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",gap:6,paddingRight:8},children:rt})}),!o.isHidden&&b&&d("div",{"data-floating-accessory":true,style:{position:"absolute",...st?{bottom:"100%"}:{top:"100%"},left:0,width:"100%",maxHeight:Math.max(C,z),overflowY:"auto",zIndex:1002},children:b})]})}
@@ -0,0 +1 @@
1
+ "use strict";const r=["RNCAsyncStorage","RNC_AsyncSQLiteDBStorage","PlatformLocalStorage","AsyncSQLiteDBStorage","AsyncLocalStorage"];export function hasAsyncStorageNative(){let t;try{t=require("react-native")}catch{return true}if(!t?.Platform||t.Platform.OS==="web")return true;try{return r.some(e=>!!t.TurboModuleRegistry?.get?.(e)||!!t.NativeModules?.[e])}catch{return false}}
@@ -1 +1 @@
1
- "use strict";let n;const a=new Set;let h;export function registerBrowserRouter(t){n=t;return()=>{if(n===t)n=void 0}}export function getBrowserHref(){return typeof location==="undefined"?"/":location.href}export function getBrowserRouteURL(t=getBrowserHref()){const e=new URL(t,"http://localhost");return e.hash.startsWith("#/")?new URL(e.hash.slice(1),e.origin):e}export function subscribeBrowserNavigation(t){if(!a.size&&typeof window!=="undefined"){const e=window.history;const o=e.pushState;const c=e.replaceState;const r=s=>{for(const i of[...a]){try{i({href:getBrowserHref(),kind:s})}catch{}}};const w=function(...s){const i=Reflect.apply(o,this,s);r("push");return i};const d=function(...s){const i=Reflect.apply(c,this,s);r("replace");return i};e.pushState=w;e.replaceState=d;const p=()=>r("pop");window.addEventListener("popstate",p);window.addEventListener("hashchange",p);h=()=>{if(e.pushState===w)e.pushState=o;if(e.replaceState===d)e.replaceState=c;window.removeEventListener("popstate",p);window.removeEventListener("hashchange",p);h=void 0}}a.add(t);return()=>{a.delete(t);if(!a.size)h?.()}}function u(t){const e=typeof t==="string"?t:t.pathname;const o=new URL(e,getBrowserHref());if(o.origin!==window.location.origin)throw new Error("Tool navigation must stay on the current origin.");if(typeof t!=="string")for(const[c,r]of Object.entries(t.params??{}))o.searchParams.set(c,String(r));return`${o.pathname}${o.search}${o.hash}`}export const browserRouter={push(t){const e=u(t);if(n)return n.push(e);window.history.pushState(null,"",window.location.hash.startsWith("#/")?`#${e}`:e);window.dispatchEvent(new PopStateEvent("popstate",{state:window.history.state}))},replace(t){const e=u(t);if(n)return n.replace(e);window.history.replaceState(window.history.state,"",window.location.hash.startsWith("#/")?`#${e}`:e);window.dispatchEvent(new PopStateEvent("popstate",{state:window.history.state}))},back(){if(n)n.back();else window.history.back()},canGoBack(){return n?.canGoBack?.()??(typeof window!=="undefined"&&window.history.length>1)},navigate(t){browserRouter.push(t)},setParams(t){browserRouter.replace({pathname:getBrowserHref(),params:t})},dismiss(t=1){window.history.go(-t)},dismissAll(){throw new Error("Use the captured browser history to select a destination.")}};
1
+ "use strict";let o;const c=new Set;let u;let f;export function registerBrowserRouter(t){o=t;return()=>{if(o===t)o=void 0}}export function getBrowserHref(){return typeof location==="undefined"?"/":location.href}export function getBrowserRouteURL(t=getBrowserHref()){const e=new URL(t,"http://localhost");const n=e.hash.startsWith("#/")?new URL(e.hash.slice(1),e.origin):e;if(!n.pathname)n.pathname="/";return n}let a;export function subscribeBrowserNavigation(t){if(!c.size&&typeof window!=="undefined"){const e=window.history;const n=r=>{for(const i of[...c]){try{i({href:getBrowserHref(),kind:r})}catch{}}};if(a)a.active=true;else{const r=e.pushState;const i=e.replaceState;const p={push:r,replace:i,active:true};const d=function(...h){const w=Reflect.apply(r,this,h);if(p.active)n("push");return w};const l=function(...h){const w=Reflect.apply(i,this,h);if(p.active)n("replace");return w};e.pushState=d;e.replaceState=l;a=p;f=()=>{if(e.pushState!==d||e.replaceState!==l)return;e.pushState=r;e.replaceState=i;a=void 0}}const s=()=>n("pop");window.addEventListener("popstate",s);window.addEventListener("hashchange",s);u=()=>{if(a)a.active=false;f?.();window.removeEventListener("popstate",s);window.removeEventListener("hashchange",s);u=void 0}}c.add(t);return()=>{c.delete(t);if(!c.size)u?.()}}function y(t){const e=typeof t==="string"?t:t.pathname;const n=new URL(e,getBrowserHref());if(n.origin!==window.location.origin)throw new Error("Tool navigation must stay on the current origin.");if(typeof t!=="string")for(const[s,r]of Object.entries(t.params??{}))n.searchParams.set(s,String(r));return`${n.pathname}${n.search}${n.hash}`}export const browserRouter={push(t){const e=y(t);if(o)return o.push(e);window.history.pushState(null,"",window.location.hash.startsWith("#/")?`#${e}`:e);window.dispatchEvent(new PopStateEvent("popstate",{state:window.history.state}))},replace(t){const e=y(t);if(o)return o.replace(e);window.history.replaceState(window.history.state,"",window.location.hash.startsWith("#/")?`#${e}`:e);window.dispatchEvent(new PopStateEvent("popstate",{state:window.history.state}))},back(){if(o)o.back();else window.history.back()},canGoBack(){return o?.canGoBack?.()??(typeof window!=="undefined"&&window.history.length>1)},navigate(t){browserRouter.push(t)},setParams(t){browserRouter.replace({pathname:getBrowserHref(),params:t})},dismiss(t=1){window.history.go(-t)},dismissAll(){throw new Error("Use the captured browser history to select a destination.")}};
@@ -1 +1 @@
1
- "use strict";import{devToolsStorageKeys as h}from"../storage/devToolsStorageKeys.js";import{notifyStorageWrite as v}from"./storageWrites.js";let i=null;let I=null;let w=false;let o=null;let y=null;const n=new Map;function m(){return typeof window!=="undefined"&&window?.localStorage!==void 0}const K="react-buoy";const R=".health-check";function d(){if(!o?.documentDirectory)return null;return`${o.documentDirectory}${K}/`}function D(t){return encodeURIComponent(t.replace(/~/g,"~0").replace(/\//g,"~1"))}function F(t){return decodeURIComponent(t).replace(/~1/g,"/").replace(/~0/g,"~")}function A(t){const e=d();if(!e)return null;return`${e}${D(t)}.json`}function g(){if(o)return o;try{const t=require("expo-file-system/legacy");o=t?.default||t;if(o&&o.documentDirectory){return o}o=null}catch{}try{const t=require("expo-file-system");o=t?.default||t;if(o&&o.documentDirectory){return o}o=null}catch{}return null}function l(){if(y)return y;try{const t=require("@react-native-async-storage/async-storage");y=t?.default||t;if(y&&typeof y.getItem==="function"){return y}y=null}catch{}return null}async function x(){const t=g();if(!t||!t.documentDirectory){return false}const e=d();if(!e)return false;const r=`${e}${R}`;try{const a=await t.getInfoAsync(e);if(!a.exists){await t.makeDirectoryAsync(e,{intermediates:true})}const s=`health-check-${Date.now()}`;await t.writeAsStringAsync(r,s);const c=await t.readAsStringAsync(r);if(c!==s){return false}await t.deleteAsync(r,{idempotent:true});return true}catch(a){console.warn("[React Buoy] FileSystem health check failed:",a);return false}}async function b(){const t=l();if(!t)return;try{const e=await t.getAllKeys();const r=e.filter(c=>c.startsWith(h.base));if(r.length===0){return}const a=await t.multiGet(r);let s=0;for(const[c,p]of a){if(p!==null){await S.setItem(c,p);s++}}void s}catch(e){console.warn("[React Buoy] Migration failed:",e)}}const S={async getItem(t){const e=g();if(!e)return null;const r=A(t);if(!r)return null;try{const a=await e.getInfoAsync(r);if(!a.exists){return null}const s=await e.readAsStringAsync(r);return s}catch{return null}},async setItem(t,e){const r=g();if(!r)return;const a=d();const s=A(t);if(!a||!s)return;try{const c=await r.getInfoAsync(a);if(!c.exists){await r.makeDirectoryAsync(a,{intermediates:true})}await r.writeAsStringAsync(s,e)}catch(c){console.warn("[React Buoy] FileSystem write failed:",c)}},async removeItem(t){const e=g();if(!e)return;const r=A(t);if(!r)return;try{await e.deleteAsync(r,{idempotent:true})}catch{}},async getAllKeys(){const t=g();if(!t)return[];const e=d();if(!e)return[];try{const r=await t.getInfoAsync(e);if(!r.exists)return[];const a=await t.readDirectoryAsync(e);return a.filter(s=>s.endsWith(".json")).map(s=>F(s.replace(".json","")))}catch{return[]}},async multiGet(t){const e=[];for(const r of t){const a=await this.getItem(r);e.push([r,a])}return e},async multiRemove(t){for(const e of t){await this.removeItem(e)}},async clear(){const t=g();if(!t)return;const e=d();if(!e)return;try{await t.deleteAsync(e,{idempotent:true})}catch{}}};const E={async getItem(t){const e=l();if(!e)return n.get(t)??null;try{return await e.getItem(t)}catch{return n.get(t)??null}},async setItem(t,e){const r=l();if(!r){n.set(t,e);return}try{await r.setItem(t,e)}catch{n.set(t,e)}},async removeItem(t){const e=l();n.delete(t);if(!e)return;try{await e.removeItem(t)}catch{}},async getAllKeys(){const t=l();if(!t)return Array.from(n.keys());try{const e=await t.getAllKeys();return e.filter(r=>r.startsWith(h.base))}catch{return Array.from(n.keys())}},async multiGet(t){const e=l();if(!e){return t.map(r=>[r,n.get(r)??null])}try{const r=await e.multiGet(t);return r}catch{return t.map(r=>[r,n.get(r)??null])}},async multiRemove(t){t.forEach(r=>n.delete(r));const e=l();if(!e)return;try{await e.multiRemove(t)}catch{}},async clear(){n.clear();const t=l();if(!t)return;try{const e=await t.getAllKeys();const r=e.filter(a=>a.startsWith(h.base));if(r.length>0){await t.multiRemove(r)}}catch{}}};const G={async getItem(t){if(!m())return n.get(t)??null;try{return window.localStorage.getItem(t)}catch{return n.get(t)??null}},async setItem(t,e){if(!m()){n.set(t,e);return}try{window.localStorage.setItem(t,e)}catch{n.set(t,e)}},async removeItem(t){n.delete(t);if(!m())return;try{window.localStorage.removeItem(t)}catch{}},async getAllKeys(){if(!m())return Array.from(n.keys());try{const t=[];const e=window.localStorage;for(let r=0;r<e.length;r++){const a=e.key(r);if(a&&a.startsWith(h.base)){t.push(a)}}return t}catch{return Array.from(n.keys())}},async multiGet(t){const e=[];for(const r of t){const a=await this.getItem(r);e.push([r,a])}return e},async multiRemove(t){for(const e of t){await this.removeItem(e)}},async clear(){n.clear();if(!m())return;try{const t=await this.getAllKeys();const e=window.localStorage;for(const r of t){e.removeItem(r)}}catch{}}};const W={async getItem(t){return n.get(t)??null},async setItem(t,e){n.set(t,e)},async removeItem(t){n.delete(t)},async getAllKeys(){return Array.from(n.keys())},async multiGet(t){return t.map(e=>[e,n.get(e)??null])},async multiRemove(t){t.forEach(e=>n.delete(e))},async clear(){n.clear()}};async function k(){if(i!==null)return;const t=await x();if(t){const e=await S.getAllKeys();if(e.length===0){await b()}i="filesystem"}else if(m()){i="localstorage"}else{const e=l();if(e){i="asyncstorage";if(!w){w=true;console.warn("[React Buoy] Using AsyncStorage fallback. Settings may be lost if AsyncStorage is cleared. Install expo-file-system for persistent storage.")}}else{i="memory";if(!w){w=true;console.warn("[React Buoy] Using in-memory storage. Settings will be lost on app restart.")}}}}function u(){if(!I){I=k()}return I}function f(){switch(i){case"filesystem":return S;case"asyncstorage":return E;case"localstorage":return G;case"memory":default:return W}}export const persistentStorage={async getItem(t){await u();return f().getItem(t)},async setItem(t,e){await u();await f().setItem(t,e);v(t,e)},async removeItem(t){await u();await f().removeItem(t);v(t,null)},async getAllKeys(){await u();return f().getAllKeys()},async multiGet(t){await u();return f().multiGet(t)},async multiRemove(t){await u();return f().multiRemove(t)},async clear(){await u();return f().clear()}};export async function isUsingPersistentStorage(){await u();return i==="filesystem"}export async function getStorageBackendType(){await u();return i??"memory"}export function resetStorageInit(){i=null;I=null;w=false}
1
+ "use strict";import{devToolsStorageKeys as h}from"../storage/devToolsStorageKeys.js";import{notifyStorageWrite as v}from"./storageWrites.js";import{hasAsyncStorageNative as K}from"./asyncStorageNative.js";let i=null;let A=null;let w=false;let o=null;let y=null;const n=new Map;function m(){return typeof window!=="undefined"&&window?.localStorage!==void 0}const R="react-buoy";const D=".health-check";function d(){if(!o?.documentDirectory)return null;return`${o.documentDirectory}${R}/`}function F(t){return encodeURIComponent(t.replace(/~/g,"~0").replace(/\//g,"~1"))}function x(t){return decodeURIComponent(t).replace(/~1/g,"/").replace(/~0/g,"~")}function I(t){const e=d();if(!e)return null;return`${e}${F(t)}.json`}function g(){if(o)return o;try{const t=require("expo-file-system/legacy");o=t?.default||t;if(o&&o.documentDirectory){return o}o=null}catch{}try{const t=require("expo-file-system");o=t?.default||t;if(o&&o.documentDirectory){return o}o=null}catch{}return null}function l(){if(y)return y;if(!K())return null;try{const t=require("@react-native-async-storage/async-storage");y=t?.default||t;if(y&&typeof y.getItem==="function"){return y}y=null}catch{}return null}async function b(){const t=g();if(!t||!t.documentDirectory){return false}const e=d();if(!e)return false;const r=`${e}${D}`;try{const a=await t.getInfoAsync(e);if(!a.exists){await t.makeDirectoryAsync(e,{intermediates:true})}const s=`health-check-${Date.now()}`;await t.writeAsStringAsync(r,s);const c=await t.readAsStringAsync(r);if(c!==s){return false}await t.deleteAsync(r,{idempotent:true});return true}catch(a){console.warn("[React Buoy] FileSystem health check failed:",a);return false}}async function E(){const t=l();if(!t)return;try{const e=await t.getAllKeys();const r=e.filter(c=>c.startsWith(h.base));if(r.length===0){return}const a=await t.multiGet(r);let s=0;for(const[c,p]of a){if(p!==null){await S.setItem(c,p);s++}}void s}catch(e){console.warn("[React Buoy] Migration failed:",e)}}const S={async getItem(t){const e=g();if(!e)return null;const r=I(t);if(!r)return null;try{const a=await e.getInfoAsync(r);if(!a.exists){return null}const s=await e.readAsStringAsync(r);return s}catch{return null}},async setItem(t,e){const r=g();if(!r)return;const a=d();const s=I(t);if(!a||!s)return;try{const c=await r.getInfoAsync(a);if(!c.exists){await r.makeDirectoryAsync(a,{intermediates:true})}await r.writeAsStringAsync(s,e)}catch(c){console.warn("[React Buoy] FileSystem write failed:",c)}},async removeItem(t){const e=g();if(!e)return;const r=I(t);if(!r)return;try{await e.deleteAsync(r,{idempotent:true})}catch{}},async getAllKeys(){const t=g();if(!t)return[];const e=d();if(!e)return[];try{const r=await t.getInfoAsync(e);if(!r.exists)return[];const a=await t.readDirectoryAsync(e);return a.filter(s=>s.endsWith(".json")).map(s=>x(s.replace(".json","")))}catch{return[]}},async multiGet(t){const e=[];for(const r of t){const a=await this.getItem(r);e.push([r,a])}return e},async multiRemove(t){for(const e of t){await this.removeItem(e)}},async clear(){const t=g();if(!t)return;const e=d();if(!e)return;try{await t.deleteAsync(e,{idempotent:true})}catch{}}};const G={async getItem(t){const e=l();if(!e)return n.get(t)??null;try{return await e.getItem(t)}catch{return n.get(t)??null}},async setItem(t,e){const r=l();if(!r){n.set(t,e);return}try{await r.setItem(t,e)}catch{n.set(t,e)}},async removeItem(t){const e=l();n.delete(t);if(!e)return;try{await e.removeItem(t)}catch{}},async getAllKeys(){const t=l();if(!t)return Array.from(n.keys());try{const e=await t.getAllKeys();return e.filter(r=>r.startsWith(h.base))}catch{return Array.from(n.keys())}},async multiGet(t){const e=l();if(!e){return t.map(r=>[r,n.get(r)??null])}try{const r=await e.multiGet(t);return r}catch{return t.map(r=>[r,n.get(r)??null])}},async multiRemove(t){t.forEach(r=>n.delete(r));const e=l();if(!e)return;try{await e.multiRemove(t)}catch{}},async clear(){n.clear();const t=l();if(!t)return;try{const e=await t.getAllKeys();const r=e.filter(a=>a.startsWith(h.base));if(r.length>0){await t.multiRemove(r)}}catch{}}};const W={async getItem(t){if(!m())return n.get(t)??null;try{return window.localStorage.getItem(t)}catch{return n.get(t)??null}},async setItem(t,e){if(!m()){n.set(t,e);return}try{window.localStorage.setItem(t,e)}catch{n.set(t,e)}},async removeItem(t){n.delete(t);if(!m())return;try{window.localStorage.removeItem(t)}catch{}},async getAllKeys(){if(!m())return Array.from(n.keys());try{const t=[];const e=window.localStorage;for(let r=0;r<e.length;r++){const a=e.key(r);if(a&&a.startsWith(h.base)){t.push(a)}}return t}catch{return Array.from(n.keys())}},async multiGet(t){const e=[];for(const r of t){const a=await this.getItem(r);e.push([r,a])}return e},async multiRemove(t){for(const e of t){await this.removeItem(e)}},async clear(){n.clear();if(!m())return;try{const t=await this.getAllKeys();const e=window.localStorage;for(const r of t){e.removeItem(r)}}catch{}}};const k={async getItem(t){return n.get(t)??null},async setItem(t,e){n.set(t,e)},async removeItem(t){n.delete(t)},async getAllKeys(){return Array.from(n.keys())},async multiGet(t){return t.map(e=>[e,n.get(e)??null])},async multiRemove(t){t.forEach(e=>n.delete(e))},async clear(){n.clear()}};async function B(){if(i!==null)return;const t=await b();if(t){const e=await S.getAllKeys();if(e.length===0){await E()}i="filesystem"}else if(m()){i="localstorage"}else{const e=l();if(e){i="asyncstorage";if(!w){w=true;console.warn("[React Buoy] Using AsyncStorage fallback. Settings may be lost if AsyncStorage is cleared. Install expo-file-system for persistent storage.")}}else{i="memory";if(!w){w=true;console.warn("[React Buoy] Using in-memory storage. Settings will be lost on app restart.")}}}}function u(){if(!A){A=B()}return A}function f(){switch(i){case"filesystem":return S;case"asyncstorage":return G;case"localstorage":return W;case"memory":default:return k}}export const persistentStorage={async getItem(t){await u();return f().getItem(t)},async setItem(t,e){await u();await f().setItem(t,e);v(t,e)},async removeItem(t){await u();await f().removeItem(t);v(t,null)},async getAllKeys(){await u();return f().getAllKeys()},async multiGet(t){await u();return f().multiGet(t)},async multiRemove(t){await u();return f().multiRemove(t)},async clear(){await u();return f().clear()}};export async function isUsingPersistentStorage(){await u();return i==="filesystem"}export async function getStorageBackendType(){await u();return i??"memory"}export function resetStorageInit(){i=null;A=null;w=false}
@@ -1 +1 @@
1
- "use strict";import{AppState as o,DeviceEventEmitter as p,Platform as S}from"react-native";export const BUOY_SYNTHETIC_MARK="__buoySynthetic";export function countBuoyListener(t,n){const f=globalThis;const i=f.__buoyOwnDeviceListeners??={};i[t]=Math.max(0,(i[t]??0)+n)}const r=new Set;let e="unknown";let u=false;function a(){try{return o?.currentState??"unknown"}catch{return"unknown"}}function c(t){if(t===e)return;e=t;for(const n of Array.from(r)){try{n(t)}catch{}}}function s(){if(u)return;u=true;e=a();try{if(S.OS==="web"){o.addEventListener("change",t=>c(t));return}countBuoyListener("appStateDidChange",1);p.addListener("appStateDidChange",t=>{if(!t||t[BUOY_SYNTHETIC_MARK])return;if(t.app_state)c(t.app_state)})}catch{}}export function getRealAppState(){s();if(e==="unknown")e=a();return e}export function subscribeRealAppState(t){s();r.add(t);return{remove:()=>r.delete(t)}}
1
+ "use strict";import{AppState as a,DeviceEventEmitter as d,Platform as s}from"react-native";export const BUOY_SYNTHETIC_MARK="__buoySynthetic";export function countBuoyListener(t,e){const n=globalThis;const u=n.__buoyOwnDeviceListeners??={};u[t]=Math.max(0,(u[t]??0)+e)}const i=new Set;let r="unknown";let f=false;function l(){const t=globalThis.document;return t&&typeof t.addEventListener==="function"?t:null}function o(){try{const t=l();const e=globalThis.Document?.prototype;const n=e&&Object.getOwnPropertyDescriptor(e,"visibilityState")?.get;if(!t||!n)return null;return n.call(t)==="visible"?"active":"background"}catch{return null}}function p(){if(s.OS==="web"){const t=o();if(t)return t}try{return a?.currentState??"unknown"}catch{return"unknown"}}function c(t){if(t===r)return;r=t;for(const e of Array.from(i)){try{e(t)}catch{}}}function b(){if(f)return;f=true;r=p();try{if(s.OS==="web"){const t=l();if(t&&o()){t.addEventListener("visibilitychange",e=>{if(e?.[BUOY_SYNTHETIC_MARK])return;const n=o();if(n)c(n)});return}a.addEventListener("change",e=>c(e));return}countBuoyListener("appStateDidChange",1);d.addListener("appStateDidChange",t=>{if(!t||t[BUOY_SYNTHETIC_MARK])return;if(t.app_state)c(t.app_state)})}catch{}}export function getRealAppState(){b();if(r==="unknown")r=p();return r}export function subscribeRealAppState(t){b();i.add(t);return{remove:()=>i.delete(t)}}
@@ -47,7 +47,8 @@
47
47
  * Some tool components do not forward `initialModalState`.
48
48
  * - `JsModalProps` is additionally exported (native keeps it private) so web
49
49
  * consumers can type wrappers without redeclaring the contract.
50
- * - `visible={false}` hides the content in a `display:none` container.
50
+ * - `visible={false}` parks the same tree off-screen (native parity), so a
51
+ * minimized tool keeps its state.
51
52
  * Tool state that must survive shell changes belongs above this component.
52
53
  * - The hidden/floating/bottomSheet root branches carry distinct React keys:
53
54
  * the rAF animations write opacity/transform straight to the DOM, and DOM
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Auto-generated safe area implementation
3
3
  * Detected: none
4
- * Generated at: 2026-10-05T19:53:16.502Z
4
+ * Generated at: 2026-10-06T03:04:30.801Z
5
5
  *
6
6
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
7
7
  *
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The app's own key-value store in a Capacitor app: @capacitor/preferences,
3
+ * what AsyncStorage is to a React Native app. Read straight through Buoy's
4
+ * bridge hook, so the app's Preferences calls are untouched. Null outside a
5
+ * Capacitor shell or without the plugin.
6
+ *
7
+ * The Storage tool has its own fuller adapter (storage/capacitorPreferences);
8
+ * this is the small shape tools like Impersonate need to clear app data.
9
+ */
10
+ export interface CapacitorAppStorage {
11
+ getAllKeys(): Promise<string[]>;
12
+ multiRemove(keys: readonly string[]): Promise<void>;
13
+ }
14
+ export declare function getCapacitorAppStorage(): CapacitorAppStorage | null;
15
+ //# sourceMappingURL=capacitorAppStorage.d.ts.map
@@ -1,3 +1,5 @@
1
1
  export { devToolsStorageKeys, isDevToolsStorageKey } from './devToolsStorageKeys';
2
2
  export { definePersistedSetting, type PersistedSetting, type PersistedSettingOptions, } from "./definePersistedSetting";
3
+ export { getCapacitorAppStorage, type CapacitorAppStorage } from "./capacitorAppStorage";
4
+ export { callCapacitorNative, hasCapacitorPlugin, isCapacitorNative } from "@buoy-gg/license";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,9 +1,5 @@
1
1
  import type { ModalMode, ModalVariant } from "../../JsModal";
2
- /**
3
- * Set whether window controls use the expandable iPad-style behavior.
4
- * Called by the floating-tools settings system when the setting changes.
5
- */
6
- export declare function setExpandableWindowControls(enabled: boolean): void;
2
+ export { setExpandableWindowControls } from "./windowControlsSetting";
7
3
  interface WindowControlsProps {
8
4
  /** Handler for close button */
9
5
  onClose: () => void;
@@ -28,5 +24,4 @@ interface WindowControlsProps {
28
24
  * large, easy-to-press buttons. Auto-dismisses after timeout or tap outside.
29
25
  */
30
26
  export declare function WindowControls({ onClose, onMinimize, onToggleMode, mode, variant, defaultExpanded, }: WindowControlsProps): import("react").JSX.Element;
31
- export {};
32
27
  //# sourceMappingURL=WindowControls.d.ts.map
@@ -37,6 +37,7 @@ export { SearchBar } from "./SearchBar";
37
37
  export { DynamicFilterView, } from "./DynamicFilterView";
38
38
  export type { DynamicFilterConfig, } from "./DynamicFilterView";
39
39
  export { WindowControls, setExpandableWindowControls } from "./WindowControls";
40
+ export { expandableWindowControlsSupported } from "./windowControlsSetting";
40
41
  export { EventStepperFooter } from "./EventStepperFooter";
41
42
  export type { EventStepperFooterProps } from "./EventStepperFooter";
42
43
  export { ExpandablePopover } from "./ExpandablePopover";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Set whether window controls use the expandable iPad-style behavior.
3
+ * Called by the floating-tools settings system when the setting changes.
4
+ */
5
+ export declare function setExpandableWindowControls(enabled: boolean): void;
6
+ export declare function isExpandableWindowControlsEnabled(): boolean;
7
+ /**
8
+ * The expandable behavior is a touch affordance (big tap targets). In a
9
+ * desktop browser a mouse clicks the small dots directly, so it's off there.
10
+ * A Capacitor app, or any page on a touch screen, is a phone: it gets the
11
+ * touch behavior like native.
12
+ */
13
+ export declare function expandableWindowControlsSupported(isWeb: boolean): boolean;
14
+ //# sourceMappingURL=windowControlsSetting.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function hasAsyncStorageNative(): boolean;
2
+ //# sourceMappingURL=asyncStorageNative.d.ts.map
@@ -47,7 +47,8 @@
47
47
  * Some tool components do not forward `initialModalState`.
48
48
  * - `JsModalProps` is additionally exported (native keeps it private) so web
49
49
  * consumers can type wrappers without redeclaring the contract.
50
- * - `visible={false}` hides the content in a `display:none` container.
50
+ * - `visible={false}` parks the same tree off-screen (native parity), so a
51
+ * minimized tool keeps its state.
51
52
  * Tool state that must survive shell changes belongs above this component.
52
53
  * - The hidden/floating/bottomSheet root branches carry distinct React keys:
53
54
  * the rAF animations write opacity/transform straight to the DOM, and DOM
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Auto-generated safe area implementation
3
3
  * Detected: none
4
- * Generated at: 2026-10-05T19:53:16.502Z
4
+ * Generated at: 2026-10-06T03:04:30.801Z
5
5
  *
6
6
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
7
7
  *
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The app's own key-value store in a Capacitor app: @capacitor/preferences,
3
+ * what AsyncStorage is to a React Native app. Read straight through Buoy's
4
+ * bridge hook, so the app's Preferences calls are untouched. Null outside a
5
+ * Capacitor shell or without the plugin.
6
+ *
7
+ * The Storage tool has its own fuller adapter (storage/capacitorPreferences);
8
+ * this is the small shape tools like Impersonate need to clear app data.
9
+ */
10
+ export interface CapacitorAppStorage {
11
+ getAllKeys(): Promise<string[]>;
12
+ multiRemove(keys: readonly string[]): Promise<void>;
13
+ }
14
+ export declare function getCapacitorAppStorage(): CapacitorAppStorage | null;
15
+ //# sourceMappingURL=capacitorAppStorage.d.ts.map
@@ -1,3 +1,5 @@
1
1
  export { devToolsStorageKeys, isDevToolsStorageKey } from './devToolsStorageKeys';
2
2
  export { definePersistedSetting, type PersistedSetting, type PersistedSettingOptions, } from "./definePersistedSetting";
3
+ export { getCapacitorAppStorage, type CapacitorAppStorage } from "./capacitorAppStorage";
4
+ export { callCapacitorNative, hasCapacitorPlugin, isCapacitorNative } from "@buoy-gg/license";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,9 +1,5 @@
1
1
  import type { ModalMode, ModalVariant } from "../../JsModal";
2
- /**
3
- * Set whether window controls use the expandable iPad-style behavior.
4
- * Called by the floating-tools settings system when the setting changes.
5
- */
6
- export declare function setExpandableWindowControls(enabled: boolean): void;
2
+ export { setExpandableWindowControls } from "./windowControlsSetting";
7
3
  interface WindowControlsProps {
8
4
  /** Handler for close button */
9
5
  onClose: () => void;
@@ -28,5 +24,4 @@ interface WindowControlsProps {
28
24
  * large, easy-to-press buttons. Auto-dismisses after timeout or tap outside.
29
25
  */
30
26
  export declare function WindowControls({ onClose, onMinimize, onToggleMode, mode, variant, defaultExpanded, }: WindowControlsProps): import("react").JSX.Element;
31
- export {};
32
27
  //# sourceMappingURL=WindowControls.d.ts.map