@buoy-gg/core 7.0.42 → 7.0.44

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 (39) hide show
  1. package/lib/commonjs/floatingMenu/BrowserToolRuntime.js +1 -1
  2. package/lib/commonjs/floatingMenu/FloatingDevTools.js +1 -1
  3. package/lib/commonjs/floatingMenu/FloatingMenu.js +1 -1
  4. package/lib/commonjs/floatingMenu/ToolHost.js +1 -1
  5. package/lib/commonjs/floatingMenu/autoDiscoverPresets.js +1 -1
  6. package/lib/commonjs/floatingMenu/autoExternalSync.js +1 -1
  7. package/lib/commonjs/floatingMenu/dial/DialIcon.js +1 -1
  8. package/lib/commonjs/floatingMenu/externalSyncGate.js +1 -1
  9. package/lib/commonjs/version.js +1 -1
  10. package/lib/module/floatingMenu/BrowserToolRuntime.js +1 -1
  11. package/lib/module/floatingMenu/FloatingDevTools.js +1 -1
  12. package/lib/module/floatingMenu/FloatingMenu.js +1 -1
  13. package/lib/module/floatingMenu/ToolHost.js +1 -1
  14. package/lib/module/floatingMenu/autoDiscoverPresets.js +1 -1
  15. package/lib/module/floatingMenu/autoExternalSync.js +1 -1
  16. package/lib/module/floatingMenu/dial/DialIcon.js +1 -1
  17. package/lib/module/floatingMenu/externalSyncGate.js +1 -1
  18. package/lib/module/version.js +1 -1
  19. package/lib/typescript/commonjs/floatingMenu/ToolOpenerBridge.d.ts +2 -1
  20. package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts +16 -0
  21. package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts +1 -1
  22. package/lib/typescript/commonjs/floatingMenu/externalSyncGate.d.ts +27 -0
  23. package/lib/typescript/commonjs/version.d.ts +1 -1
  24. package/lib/typescript/module/floatingMenu/ToolOpenerBridge.d.ts +2 -1
  25. package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts +16 -0
  26. package/lib/typescript/module/floatingMenu/defaultConfig.d.ts +1 -1
  27. package/lib/typescript/module/floatingMenu/externalSyncGate.d.ts +27 -0
  28. package/lib/typescript/module/version.d.ts +1 -1
  29. package/lib/web/chunks/chunk-5NZOQR6Q.mjs +1 -0
  30. package/lib/web/chunks/chunk-CGDSLLZF.mjs +1 -0
  31. package/lib/web/chunks/chunk-DCJDUSNR.mjs +1 -0
  32. package/lib/web/chunks/chunk-IDSHFS6G.mjs +1 -0
  33. package/lib/web/chunks/chunk-JOAMJGCS.mjs +1 -0
  34. package/lib/web/chunks/chunk-KYKZ2N52.mjs +1 -0
  35. package/lib/web/chunks/chunk-NGM7JGGS.mjs +1 -0
  36. package/lib/web/chunks/chunk-Z3XWDDIO.mjs +1 -0
  37. package/lib/web/chunks/chunk-ZTGQ6TTY.mjs +1 -0
  38. package/lib/web/index.mjs +2 -2
  39. package/package.json +6 -9
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.BrowserToolRuntime=BrowserToolRuntime;var _react=require("react");var _license=require("@buoy-gg/license");var _sharedUi=require("@buoy-gg/shared-ui");var _externalSyncGate=require("./externalSyncGate.js");var _deviceIdentity=require("./deviceIdentity.js");var _appSyncAdapter=require("./sync/appSyncAdapter.js");var _jsxRuntime=require("react/jsx-runtime");const roots=["ConsoleRoot","RouteTracker","ReactQueryTracker","ReduxAutoInstrument","PerfMonitorRoot","AutomationResumer","ImagesRoot"];const overlays=["DebugBordersStandaloneOverlay","HighlightUpdatesOverlay","ImageOverlayStandalone","PerfMonitorOverlay","JsTopHudOverlay","ImpersonateOverlay","ScenariosOverlay"];function BrowserToolRuntime(e){const o=(0,_react.useMemo)(()=>Object.fromEntries(Object.entries(e.modules).map(([i,u])=>[i.replace(/^@buoy-gg\//,"").replace(/\/web$/,""),u])),[e.modules]);const c=o["react-query"];return c?.useReactQuerySyncAdapter?(0,_jsxRuntime.jsx)(QueryRuntime,{...e,modules:o,query:c}):(0,_jsxRuntime.jsx)(ToolRuntime,{...e,modules:o})}function QueryRuntime(e){const o=e.query.useReactQuerySyncAdapter();return(0,_jsxRuntime.jsx)(ToolRuntime,{...e,queryAdapter:o})}function ToolRuntime({modules:e,apps:o,requiredEnvVars:c,externalSync:i,headless:u,sentryGetClient:l,queryAdapter:s}){const{isPro:y,tier:S}=(0,_license.useLicense)();const f=(0,_react.useMemo)(()=>{const n={app:_appSyncAdapter.appSyncAdapter};for(const[t,r]of Object.entries(e)){for(const[a,p]of Object.entries(r)){if(a.endsWith("SyncAdapter")&&p&&typeof p==="object")n[t]=p}}if(s)n.query=s;if(e.env?.createEnvSyncAdapter)n.env=e.env.createEnvSyncAdapter(c??[]);for(const t of o??[])if(t.sync)n[`custom:${t.id}`]=t.sync;return n},[e,o,c,s]);const d=(0,_react.useRef)(f);d.current=f;(0,_react.useEffect)(()=>(0,_sharedUi.registerToolAdapters)(()=>d.current),[]);(0,_react.useEffect)(()=>{const n=[];const t=r=>{const a=r?.();if(typeof a==="function")n.push(a)};t(e.network?.startNetworkCapture);t(e.storage?.startBrowserStorageCapture);t(e.assets?.startBrowserAssetCapture);if(e.storage?.storageSyncAdapter?.subscribe)t(()=>e.storage.storageSyncAdapter.subscribe(()=>{}));if(e["focus-inspector"]?.focusInspectorSyncAdapter?.subscribe)t(()=>e["focus-inspector"].focusInspectorSyncAdapter.subscribe(()=>{}));return()=>{for(const r of n.reverse())r()}},[e]);const v=e["external-sync"];const g=typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production";const j=(0,_externalSyncGate.shouldMountExternalSync)({isDevelopment:g,isLicensed:y,externalSync:i,isAvailable:Boolean(v)});const b=e.sentry?.SentryRoot;return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[Object.entries(e).flatMap(([n,t])=>roots.map(r=>{const a=t[r];return a?(0,_jsxRuntime.jsx)(a,{},`${n}:${r}`):null})),b&&(0,_jsxRuntime.jsx)(b,{getClient:l}),Object.entries(e).flatMap(([n,t])=>overlays.map(r=>{const a=t[r];return a&&(!u||r==="ScenariosOverlay"||r==="ImpersonateOverlay")?(0,_jsxRuntime.jsx)(a,{},`${n}:${r}`):null})),j&&(0,_jsxRuntime.jsx)(BrowserExternalSync,{module:v,tools:f,options:(0,_externalSyncGate.externalSyncOptions)(i),isPro:y,tier:S})]})}function BrowserExternalSync({module:e,tools:o,options:c,isPro:i,tier:u}){const l=(0,_deviceIdentity.useDeviceIdentity)(c,{appName:typeof document==="undefined"?null:document.title||location.hostname,hardwareName:"Browser",platform:"web"});const{socket:s}=e.useExternalSyncSocket({deviceName:l?.deviceName??"Buoy Browser",socketURL:c?.socketURL??e.getDefaultSocketURL(),persistentDeviceId:l?.deviceId??null,platform:"web",enableLogs:c?.enableLogs});(0,_react.useEffect)(()=>{if(!s)return;const y=()=>{if(s.connected&&_license.LicenseManager.hasAccountAccess())s.emit("device-license",{isPro:i?"1":"0",tier:u})};y();s.on("connect",y);return()=>{s.off("connect",y)}},[s,i,u]);e.useExternalSync({tools:o,socket:s,deviceId:l?.deviceId??null,enableLogs:c?.enableLogs});return null}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.BrowserToolRuntime=BrowserToolRuntime;var _react=require("react");var _license=require("@buoy-gg/license");var _sharedUi=require("@buoy-gg/shared-ui");var _externalSyncGate=require("./externalSyncGate.js");var _deviceIdentity=require("./deviceIdentity.js");var _appSyncAdapter=require("./sync/appSyncAdapter.js");var _jsxRuntime=require("react/jsx-runtime");const roots=["ConsoleRoot","RouteTracker","ReactQueryTracker","ReduxAutoInstrument","PerfMonitorRoot","AutomationResumer","ImagesRoot"];const overlays=["DebugBordersStandaloneOverlay","HighlightUpdatesOverlay","ImageOverlayStandalone","PerfMonitorOverlay","JsTopHudOverlay","ImpersonateOverlay","ScenariosOverlay"];function BrowserToolRuntime(e){const s=(0,_react.useMemo)(()=>Object.fromEntries(Object.entries(e.modules).map(([i,l])=>[i.replace(/^@buoy-gg\//,"").replace(/\/web$/,""),l])),[e.modules]);const o=s["react-query"];return o?.useReactQuerySyncAdapter?(0,_jsxRuntime.jsx)(QueryRuntime,{...e,modules:s,query:o}):(0,_jsxRuntime.jsx)(ToolRuntime,{...e,modules:s})}function QueryRuntime(e){const s=e.query.useReactQuerySyncAdapter();return(0,_jsxRuntime.jsx)(ToolRuntime,{...e,queryAdapter:s})}function ToolRuntime({modules:e,apps:s,requiredEnvVars:o,externalSync:i,headless:l,sentryGetClient:f,queryAdapter:u}){const{isPro:c,tier:p}=(0,_license.useLicense)();const d=(0,_react.useMemo)(()=>{const n={app:_appSyncAdapter.appSyncAdapter};for(const[t,r]of Object.entries(e)){for(const[a,b]of Object.entries(r)){if(a.endsWith("SyncAdapter")&&b&&typeof b==="object")n[t]=b}}if(u)n.query=u;if(e.env?.createEnvSyncAdapter)n.env=e.env.createEnvSyncAdapter(o??[]);for(const t of s??[])if(t.sync)n[`custom:${t.id}`]=t.sync;return n},[e,s,o,u]);const y=(0,_react.useRef)(d);y.current=d;(0,_react.useEffect)(()=>(0,_sharedUi.registerToolAdapters)(()=>y.current),[]);(0,_react.useEffect)(()=>{const n=[];const t=r=>{const a=r?.();if(typeof a==="function")n.push(a)};t(e.network?.startNetworkCapture);t(e.storage?.startBrowserStorageCapture);t(e.assets?.startBrowserAssetCapture);if(e.storage?.storageSyncAdapter?.subscribe)t(()=>e.storage.storageSyncAdapter.subscribe(()=>{}));if(e["focus-inspector"]?.focusInspectorSyncAdapter?.subscribe)t(()=>e["focus-inspector"].focusInspectorSyncAdapter.subscribe(()=>{}));return()=>{for(const r of n.reverse())r()}},[e]);const g=e["external-sync"];const S=typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production";const A=(0,_externalSyncGate.shouldMountExternalSync)({isDevelopment:S,isLicensed:c,externalSync:i,isAvailable:Boolean(g)});const v=(0,_externalSyncGate.externalSyncOptions)(i);if(!S&&v?.enableInRelease)warnOnce((0,_externalSyncGate.releaseTransportProblem)(v.socketURL,v));const R=e.sentry?.SentryRoot;return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[Object.entries(e).flatMap(([n,t])=>roots.map(r=>{const a=t[r];return a?(0,_jsxRuntime.jsx)(a,{},`${n}:${r}`):null})),R&&(0,_jsxRuntime.jsx)(R,{getClient:f}),Object.entries(e).flatMap(([n,t])=>overlays.map(r=>{const a=t[r];return a&&(!l||r==="ScenariosOverlay"||r==="ImpersonateOverlay")?(0,_jsxRuntime.jsx)(a,{},`${n}:${r}`):null})),A&&(0,_jsxRuntime.jsx)(BrowserExternalSync,{module:g,tools:d,options:v,isPro:c,tier:p,dev:S})]})}let warned=null;function warnOnce(e){if(!e||e===warned)return;warned=e;console.warn(e)}function BrowserExternalSync({module:e,tools:s,options:o,isPro:i,tier:l,dev:f}){const u=(0,_deviceIdentity.useDeviceIdentity)(o,{appName:typeof document==="undefined"?null:document.title||location.hostname,hardwareName:"Browser",platform:"web"});const{socket:c}=e.useExternalSyncSocket({deviceName:u?.deviceName??"Buoy Browser",socketURL:o?.socketURL??(f?e.getDefaultSocketURL():_externalSyncGate.RELEASE_DEFAULT_SOCKET_URL),persistentDeviceId:u?.deviceId??null,platform:"web",enableLogs:o?.enableLogs});(0,_react.useEffect)(()=>{if(!c)return;const y=()=>{if(c.connected&&_license.LicenseManager.hasAccountAccess())c.emit("device-license",{isPro:i?"1":"0",tier:l})};y();c.on("connect",y);return()=>{c.off("connect",y)}},[c,i,l]);const p=o?.releaseActions?.join(",")??"";const d=(0,_react.useMemo)(()=>(0,_externalSyncGate.applyReleaseActionPolicy)(s,f,p?p.split(","):void 0),[s,f,p]);e.useExternalSync({tools:d,socket:c,deviceId:u?.deviceId??null,enableLogs:o?.enableLogs});return null}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingDevTools=void 0;var _sharedUi=require("@buoy-gg/shared-ui");var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _AppHost=require("./AppHost");var _FloatingMenu=require("./FloatingMenu.js");var _ToolOpenerBridge=require("./ToolOpenerBridge.js");var _autoDiscoverPresets=require("./autoDiscoverPresets.js");var _installPing=require("../telemetry/installPing.js");var _Buoy=require("../Buoy.js");var _AppIcon=require("./AppIcon");var _DevToolsVisibilityContext=require("./DevToolsVisibilityContext.js");var _optionalRequire=require("./optionalRequire.js");var _MinimizedToolsContext=require("./MinimizedToolsContext.js");var _defaultConfig=require("./defaultConfig.js");var _DefaultConfigContext=require("./DefaultConfigContext.js");var _license=require("@buoy-gg/license");var _autoExternalSync=require("./autoExternalSync.js");var _externalSyncGate=require("./externalSyncGate.js");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(v,n){if("function"==typeof WeakMap)var a=new WeakMap,d=new WeakMap;return(_interopRequireWildcard=function(r,x){if(!x&&r&&r.__esModule)return r;var i,s,l={__proto__:null,default:r};if(null===r||"object"!=typeof r&&"function"!=typeof r)return l;if(i=x?d:a){if(i.has(r))return i.get(r);i.set(r,l)}for(const o in r)"default"!==o&&{}.hasOwnProperty.call(r,o)&&((s=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(r,o))&&(s.get||s.set)?i(l,o,s):l[o]=r[o]);return l})(v,n)}const FloatingDevTools=({apps:v,requiredEnvVars:n,requiredStorageKeys:a,askBuoy:d,children:r,disableHints:x=false,defaultFloatingTools:i,defaultDialTools:s,requireLicense:l,licenseKey:o,zustandStores:h,environment:V,externalSync:m=true,headless:R=false,...T})=>{const B=V??(0,_sharedUi.normalizeEnvironment)(process.env.NODE_ENV??"dev");const{isLicensed:b}=(0,_license.useProAccess)();const{licenseKey:q,isInitialized:A,tier:j,access:u}=(0,_license.useLicense)();const L=o===void 0||o.trim().toUpperCase()===(q??"");const W=L&&u.status==="admitted";(0,_react.useEffect)(()=>{if(!A||u.status==="initializing")return;void(0,_installPing.sendInstallPing)({tier:u.status==="admitted"?j:"locked",enabled:(0,_Buoy.isTelemetryEnabled)()})},[A,u.status,j]);(0,_react.useEffect)(()=>{void _license.LicenseManager.configure(o).catch(()=>{})},[o]);(0,_react.useEffect)(()=>{if(!h||u.status==="locked")return;try{const{watchStores:e}=require("@buoy-gg/zustand");return e(h)}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/zustand",e)}},[h,u.status]);const U=(0,_react.useMemo)(()=>{if(s){return(0,_defaultConfig.validateDialConfig)(s)}return s},[s]);const O=(0,_react.useMemo)(()=>{const e=[];if(n&&n.length>0){try{const{createEnvTool:t,createEnvVarConfig:M}=require("@buoy-gg/env");e.push(t({requiredEnvVars:M(n)}))}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/env",t)}}if(a&&a.length>0){try{const{createStorageTool:t}=require("@buoy-gg/storage");e.push(t({requiredStorageKeys:a}))}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/storage",t)}}if(d){try{const{createAskBuoyTool:t}=require("@buoy-gg/ask-buoy");e.push(t(d))}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/ask-buoy",t)}}return e},[n,a,d]);const _=(0,_react.useMemo)(()=>{if(!v&&O.length===0)return void 0;return[...v||[],...O]},[v,O]);const f=(0,_react.useMemo)(()=>_?(0,_autoDiscoverPresets.autoDiscoverPresetsWithCustom)(_):(0,_autoDiscoverPresets.autoDiscoverPresets)(),[_]);const E=(0,_react.useMemo)(()=>f.filter(e=>e.sync),[f]);const D=(0,_react.useMemo)(()=>{try{const{DebugBordersStandaloneOverlay:e}=require("@buoy-gg/debug-borders");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/debug-borders",e);return null}},[]);const P=(0,_react.useMemo)(()=>{try{const{HighlightUpdatesOverlay:e}=require("@buoy-gg/highlight-updates");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/highlight-updates",e);return null}},[]);const C=(0,_react.useMemo)(()=>{try{const{ImageOverlayStandalone:e}=require("@buoy-gg/image-overlay");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/image-overlay",e);return null}},[]);const I=(0,_react.useMemo)(()=>{try{const{PerfMonitorOverlay:e}=require("@buoy-gg/perf-monitor");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/perf-monitor",e);return null}},[]);const S=(0,_react.useMemo)(()=>{try{const{JsTopHudOverlay:e}=require("@buoy-gg/js-top");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/js-top",e);return null}},[]);const c=(0,_react.useMemo)(()=>{try{const{RouteTracker:e}=require("@buoy-gg/route-events");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/route-events",e);return null}},[]);const g=(0,_react.useMemo)(()=>{try{const{ReactQueryTracker:e}=require("@buoy-gg/react-query");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/react-query",e);return null}},[]);const k=(0,_react.useMemo)(()=>{try{const{ImpersonateOverlay:e}=require("@buoy-gg/impersonate");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/impersonate",e);return null}},[]);const F=(0,_react.useMemo)(()=>{try{const{ScenariosOverlay:e}=require("@buoy-gg/scenarios");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/scenarios",e);return null}},[]);const y=(0,_react.useMemo)(()=>{try{const{ReduxAutoInstrument:e}=require("@buoy-gg/redux");return e??null}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/redux",e);return null}},[]);const p=(0,_react.useMemo)(()=>{try{const{ConsoleRoot:e}=require("@buoy-gg/console");return e??null}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/console",e);return null}},[]);const N=(0,_react.useCallback)(e=>{const t=f.find(M=>M.id===e);if(!t)return null;return(0,_AppIcon.renderAppIcon)(t.icon,{slot:"dial",size:20,color:t.color})},[f]);const z=typeof __DEV__!=="undefined"&&__DEV__;if(!z&&!b){return null}const H=(0,_externalSyncGate.shouldMountExternalSync)({isDevelopment:z,isLicensed:b,externalSync:m,isAvailable:(0,_autoExternalSync.isExternalSyncAvailable)()});const w=(0,_jsxRuntime.jsx)(_autoExternalSync.ToolRegistryPublisher,{requiredEnvVars:n,customApps:E});if(!W){return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[u.status==="initializing"&&(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[y&&(0,_jsxRuntime.jsx)(y,{}),p&&(0,_jsxRuntime.jsx)(p,{}),c&&(0,_jsxRuntime.jsx)(c,{}),g&&(0,_jsxRuntime.jsx)(g,{})]}),!R&&(0,_jsxRuntime.jsx)(_sharedUi.AccountSetup,{})]})}if(R){return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[y&&(0,_jsxRuntime.jsx)(y,{}),p&&(0,_jsxRuntime.jsx)(p,{}),c&&(0,_jsxRuntime.jsx)(c,{}),g&&(0,_jsxRuntime.jsx)(g,{}),w,H&&(0,_jsxRuntime.jsx)(_autoExternalSync.AutoExternalSync,{options:(0,_externalSyncGate.externalSyncOptions)(m),requiredEnvVars:n,isPro:b,tier:j,licenseKey:q,customApps:E})]})}return(0,_jsxRuntime.jsx)(_DefaultConfigContext.DefaultConfigProvider,{defaultFloatingTools:i,defaultDialTools:U,children:(0,_jsxRuntime.jsx)(_sharedUi.HintsProvider,{disableHints:x,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.container,pointerEvents:"box-none",__buoyDevToolsRoot:true,children:(0,_jsxRuntime.jsxs)(_DevToolsVisibilityContext.DevToolsVisibilityProvider,{children:[C&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:_reactNative.StyleSheet.absoluteFill,pointerEvents:"box-none",collapsable:false,children:(0,_jsxRuntime.jsx)(C,{})}),(0,_jsxRuntime.jsx)(_AppHost.AppHostProvider,{children:(0,_jsxRuntime.jsxs)(_MinimizedToolsContext.MinimizedToolsProvider,{getToolIcon:N,children:[(0,_jsxRuntime.jsx)(_FloatingMenu.FloatingMenu,{...T,apps:f,environment:B}),T.hidden?null:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_AppHost.AppOverlay,{}),(0,_jsxRuntime.jsx)(_sharedUi.FloatingToolHost,{})]}),(0,_jsxRuntime.jsx)(_ToolOpenerBridge.ToolOpenerBridge,{})]})}),r,D&&(0,_jsxRuntime.jsx)(D,{}),P&&(0,_jsxRuntime.jsx)(P,{}),I&&(0,_jsxRuntime.jsx)(I,{}),S&&(0,_jsxRuntime.jsx)(S,{}),k&&(0,_jsxRuntime.jsx)(k,{}),F&&(0,_jsxRuntime.jsx)(F,{}),y&&(0,_jsxRuntime.jsx)(y,{}),p&&(0,_jsxRuntime.jsx)(p,{}),c&&(0,_jsxRuntime.jsx)(c,{}),g&&(0,_jsxRuntime.jsx)(g,{}),w,H&&(0,_jsxRuntime.jsx)(_autoExternalSync.AutoExternalSync,{options:(0,_externalSyncGate.externalSyncOptions)(m),requiredEnvVars:n,isPro:b,tier:j,licenseKey:q,customApps:E})]})})})})};exports.FloatingDevTools=FloatingDevTools;const styles=_reactNative.StyleSheet.create({container:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:9999}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingDevTools=void 0;var _sharedUi=require("@buoy-gg/shared-ui");var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _AppHost=require("./AppHost");var _FloatingMenu=require("./FloatingMenu.js");var _ToolOpenerBridge=require("./ToolOpenerBridge.js");var _autoDiscoverPresets=require("./autoDiscoverPresets.js");var _installPing=require("../telemetry/installPing.js");var _Buoy=require("../Buoy.js");var _AppIcon=require("./AppIcon");var _DevToolsVisibilityContext=require("./DevToolsVisibilityContext.js");var _optionalRequire=require("./optionalRequire.js");var _MinimizedToolsContext=require("./MinimizedToolsContext.js");var _defaultConfig=require("./defaultConfig.js");var _DefaultConfigContext=require("./DefaultConfigContext.js");var _license=require("@buoy-gg/license");var _autoExternalSync=require("./autoExternalSync.js");var _externalSyncGate=require("./externalSyncGate.js");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(n,s){if("function"==typeof WeakMap)var l=new WeakMap,v=new WeakMap;return(_interopRequireWildcard=function(r,x){if(!x&&r&&r.__esModule)return r;var u,i,c={__proto__:null,default:r};if(null===r||"object"!=typeof r&&"function"!=typeof r)return c;if(u=x?v:l){if(u.has(r))return u.get(r);u.set(r,c)}for(const o in r)"default"!==o&&{}.hasOwnProperty.call(r,o)&&((i=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(r,o))&&(i.get||i.set)?u(c,o,i):c[o]=r[o]);return c})(n,s)}let warnedReleaseTransport=null;function warnReleaseTransportOnce(n){if(!n||n===warnedReleaseTransport)return;warnedReleaseTransport=n;console.warn(n)}const FloatingDevTools=({apps:n,requiredEnvVars:s,requiredStorageKeys:l,askBuoy:v,children:r,disableHints:x=false,defaultFloatingTools:u,defaultDialTools:i,requireLicense:c,licenseKey:o,zustandStores:m,environment:B,externalSync:b=true,headless:A=false,...D})=>{const L=B??(0,_sharedUi.normalizeEnvironment)(process.env.NODE_ENV??"dev");const{isLicensed:j}=(0,_license.useProAccess)();const{licenseKey:q,isInitialized:P,tier:h,access:a}=(0,_license.useLicense)();const U=o===void 0||o.trim().toUpperCase()===(q??"");const W=U&&a.status==="admitted";(0,_react.useEffect)(()=>{if(!P||a.status==="initializing")return;void(0,_installPing.sendInstallPing)({tier:a.status==="admitted"?h:"locked",enabled:(0,_Buoy.isTelemetryEnabled)()})},[P,a.status,h]);(0,_react.useEffect)(()=>{void _license.LicenseManager.configure(o).catch(()=>{})},[o]);(0,_react.useEffect)(()=>{if(!m||a.status==="locked")return;try{const{watchStores:e}=require("@buoy-gg/zustand");return e(m)}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/zustand",e)}},[m,a.status]);const N=(0,_react.useMemo)(()=>{if(i){return(0,_defaultConfig.validateDialConfig)(i)}return i},[i]);const O=(0,_react.useMemo)(()=>{const e=[];if(s&&s.length>0){try{const{createEnvTool:t,createEnvVarConfig:T}=require("@buoy-gg/env");e.push(t({requiredEnvVars:T(s)}))}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/env",t)}}if(l&&l.length>0){try{const{createStorageTool:t}=require("@buoy-gg/storage");e.push(t({requiredStorageKeys:l}))}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/storage",t)}}if(v){try{const{createAskBuoyTool:t}=require("@buoy-gg/ask-buoy");e.push(t(v))}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/ask-buoy",t)}}return e},[s,l,v]);const _=(0,_react.useMemo)(()=>{if(!n&&O.length===0)return void 0;return[...n||[],...O]},[n,O]);const f=(0,_react.useMemo)(()=>_?(0,_autoDiscoverPresets.autoDiscoverPresetsWithCustom)(_):(0,_autoDiscoverPresets.autoDiscoverPresets)(),[_]);const R=(0,_react.useMemo)(()=>f.filter(e=>e.sync),[f]);const C=(0,_react.useMemo)(()=>{try{const{DebugBordersStandaloneOverlay:e}=require("@buoy-gg/debug-borders");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/debug-borders",e);return null}},[]);const I=(0,_react.useMemo)(()=>{try{const{HighlightUpdatesOverlay:e}=require("@buoy-gg/highlight-updates");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/highlight-updates",e);return null}},[]);const S=(0,_react.useMemo)(()=>{try{const{ImageOverlayStandalone:e}=require("@buoy-gg/image-overlay");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/image-overlay",e);return null}},[]);const k=(0,_react.useMemo)(()=>{try{const{PerfMonitorOverlay:e}=require("@buoy-gg/perf-monitor");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/perf-monitor",e);return null}},[]);const F=(0,_react.useMemo)(()=>{try{const{JsTopHudOverlay:e}=require("@buoy-gg/js-top");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/js-top",e);return null}},[]);const g=(0,_react.useMemo)(()=>{try{const{RouteTracker:e}=require("@buoy-gg/route-events");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/route-events",e);return null}},[]);const y=(0,_react.useMemo)(()=>{try{const{ReactQueryTracker:e}=require("@buoy-gg/react-query");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/react-query",e);return null}},[]);const w=(0,_react.useMemo)(()=>{try{const{ImpersonateOverlay:e}=require("@buoy-gg/impersonate");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/impersonate",e);return null}},[]);const z=(0,_react.useMemo)(()=>{try{const{ScenariosOverlay:e}=require("@buoy-gg/scenarios");return e}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/scenarios",e);return null}},[]);const p=(0,_react.useMemo)(()=>{try{const{ReduxAutoInstrument:e}=require("@buoy-gg/redux");return e??null}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/redux",e);return null}},[]);const d=(0,_react.useMemo)(()=>{try{const{ConsoleRoot:e}=require("@buoy-gg/console");return e??null}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/console",e);return null}},[]);const G=(0,_react.useCallback)(e=>{const t=f.find(T=>T.id===e);if(!t)return null;return(0,_AppIcon.renderAppIcon)(t.icon,{slot:"dial",size:20,color:t.color})},[f]);const E=typeof __DEV__!=="undefined"&&__DEV__;if(!E&&!j){return null}const H=(0,_externalSyncGate.shouldMountExternalSync)({isDevelopment:E,isLicensed:j,externalSync:b,isAvailable:(0,_autoExternalSync.isExternalSyncAvailable)()});const M=(0,_externalSyncGate.externalSyncOptions)(b);if(!E&&M?.enableInRelease){warnReleaseTransportOnce((0,_externalSyncGate.releaseTransportProblem)(M.socketURL,M))}const V=(0,_jsxRuntime.jsx)(_autoExternalSync.ToolRegistryPublisher,{requiredEnvVars:s,customApps:R});if(!W){return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[a.status==="initializing"&&(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[p&&(0,_jsxRuntime.jsx)(p,{}),d&&(0,_jsxRuntime.jsx)(d,{}),g&&(0,_jsxRuntime.jsx)(g,{}),y&&(0,_jsxRuntime.jsx)(y,{})]}),!A&&(0,_jsxRuntime.jsx)(_sharedUi.AccountSetup,{})]})}if(A){return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[p&&(0,_jsxRuntime.jsx)(p,{}),d&&(0,_jsxRuntime.jsx)(d,{}),g&&(0,_jsxRuntime.jsx)(g,{}),y&&(0,_jsxRuntime.jsx)(y,{}),V,H&&(0,_jsxRuntime.jsx)(_autoExternalSync.AutoExternalSync,{options:(0,_externalSyncGate.externalSyncOptions)(b),requiredEnvVars:s,isPro:j,tier:h,licenseKey:q,customApps:R})]})}return(0,_jsxRuntime.jsx)(_DefaultConfigContext.DefaultConfigProvider,{defaultFloatingTools:u,defaultDialTools:N,children:(0,_jsxRuntime.jsx)(_sharedUi.HintsProvider,{disableHints:x,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.container,pointerEvents:"box-none",__buoyDevToolsRoot:true,children:(0,_jsxRuntime.jsxs)(_DevToolsVisibilityContext.DevToolsVisibilityProvider,{children:[S&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:_reactNative.StyleSheet.absoluteFill,pointerEvents:"box-none",collapsable:false,children:(0,_jsxRuntime.jsx)(S,{})}),(0,_jsxRuntime.jsx)(_AppHost.AppHostProvider,{children:(0,_jsxRuntime.jsxs)(_MinimizedToolsContext.MinimizedToolsProvider,{getToolIcon:G,children:[(0,_jsxRuntime.jsx)(_FloatingMenu.FloatingMenu,{...D,apps:f,environment:L}),D.hidden?null:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_AppHost.AppOverlay,{}),(0,_jsxRuntime.jsx)(_sharedUi.FloatingToolHost,{})]}),(0,_jsxRuntime.jsx)(_ToolOpenerBridge.ToolOpenerBridge,{})]})}),r,C&&(0,_jsxRuntime.jsx)(C,{}),I&&(0,_jsxRuntime.jsx)(I,{}),k&&(0,_jsxRuntime.jsx)(k,{}),F&&(0,_jsxRuntime.jsx)(F,{}),w&&(0,_jsxRuntime.jsx)(w,{}),z&&(0,_jsxRuntime.jsx)(z,{}),p&&(0,_jsxRuntime.jsx)(p,{}),d&&(0,_jsxRuntime.jsx)(d,{}),g&&(0,_jsxRuntime.jsx)(g,{}),y&&(0,_jsxRuntime.jsx)(y,{}),V,H&&(0,_jsxRuntime.jsx)(_autoExternalSync.AutoExternalSync,{options:(0,_externalSyncGate.externalSyncOptions)(b),requiredEnvVars:s,isPro:j,tier:h,licenseKey:q,customApps:R})]})})})})};exports.FloatingDevTools=FloatingDevTools;const styles=_reactNative.StyleSheet.create({container:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:9999}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingMenu=void 0;var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _sharedUi=require("@buoy-gg/shared-ui");var _floatingTools=require("./floatingTools");var _AppIcon=require("./AppIcon");var _DialDevTools=require("./dial/DialDevTools");var _DevToolsSettingsModal=require("./DevToolsSettingsModal");var _AppHost=require("./AppHost");var _DevToolsVisibilityContext=require("./DevToolsVisibilityContext.js");var _ToggleStateManager=require("./ToggleStateManager.js");var _OnboardingTooltip=require("./dial/OnboardingTooltip");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(o,d){if("function"==typeof WeakMap)var c=new WeakMap,g=new WeakMap;return(_interopRequireWildcard=function(t,f){if(!f&&t&&t.__esModule)return t;var n,u,l={__proto__:null,default:t};if(null===t||"object"!=typeof t&&"function"!=typeof t)return l;if(n=f?g:c){if(n.has(t))return n.get(t);n.set(t,l)}for(const i in t)"default"!==i&&{}.hasOwnProperty.call(t,i)&&((u=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(t,i))&&(u.get||u.set)?n(l,i,u):l[i]=t[i]);return l})(o,d)}const FLOATING_MENU_ONBOARDING_KEY="@react_buoy_floating_menu_tooltip_shown";const ONBOARDING_STEP_KEY="@react_buoy_onboarding_step";const FloatingMenu=({apps:o,state:d,actions:c,hidden:g,environment:t,userRole:f="admin",availableEnvironments:n,onEnvironmentSwitch:u})=>{const[l,i]=(0,_react.useState)(false);const[r,h]=(0,_react.useState)(false);const[_,E]=(0,_react.useState)(false);const[A,T]=(0,_react.useState)(null);const[,w]=(0,_react.useState)(0);const D=(0,_react.useRef)(false);const p=(0,_sharedUi.useHintsDisabled)();(0,_react.useEffect)(()=>{const e=async()=>{try{const s=await _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.dial.isOpen());if(s==="true"){h(true)}}catch(s){}finally{E(true)}};e()},[]);(0,_react.useEffect)(()=>{if(!_)return;_sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.dial.isOpen(),r?"true":"false").catch(e=>{console.warn("Failed to save dial state:",e)})},[r,_]);const x=Boolean(n?.length&&u);const{isAnyOpen:a,open:P,registerApps:y}=(0,_AppHost.useAppHost)();const O=(0,_react.useRef)(a);const{setDialOpen:j,setToolOpen:M}=(0,_DevToolsVisibilityContext.useDevToolsVisibility)();(0,_react.useEffect)(()=>{if(p){return}const e=async()=>{try{const s=await _sharedUi.persistentStorage.getItem(FLOATING_MENU_ONBOARDING_KEY);if(!s){setTimeout(()=>{T("positioning")},1e3)}}catch(s){}};e()},[p]);(0,_react.useEffect)(()=>{const e=_ToggleStateManager.toggleStateManager.subscribe(()=>{w(s=>s+1)});return e},[]);(0,_react.useEffect)(()=>{j(r)},[r,j]);(0,_react.useEffect)(()=>{M(a)},[a,M]);const q=(0,_react.useMemo)(()=>Boolean(r||a),[r,a]);const v=(0,_react.useMemo)(()=>Boolean(g??l),[g,l]);const{settings:m}=(0,_DevToolsSettingsModal.useDevToolsSettings)();(0,_react.useEffect)(()=>{if(y){y(o)}},[o,y]);const S=(0,_react.useMemo)(()=>{return{...c??{},closeMenu:()=>h(false),hideFloatingRow:()=>i(true),showFloatingRow:()=>i(false),notifyToggleChange:()=>w(e=>e+1)}},[c]);(0,_react.useEffect)(()=>{if(O.current&&!a){i(false);h(false)}O.current=a},[a]);const F=e=>{if(!m)return false;return m.floatingTools[e]??false};const R=e=>{e?.onPress?.(S);if(e.launchMode!=="toggle-only"){const s=(0,_AppIcon.renderAppIcon)(e.icon,{slot:"dial",size:20,color:e.color});P({id:e.id,title:e.name,component:e.component,props:e.props,launchMode:e.launchMode??"self-modal",singleton:e.singleton??true,icon:s,color:e.color,modal:e.modal})}};const I=()=>{D.current=true;T(null);_sharedUi.persistentStorage.setItem(FLOATING_MENU_ONBOARDING_KEY,"true").catch(e=>{console.warn("Failed to save onboarding state:",e)})};const C=()=>{if(b){I()}h(true)};const b=A==="positioning"&&!D.current&&!p;const V=!b;return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[b&&!r&&!a&&(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.onboardingContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.onboardingBackdrop}),(0,_jsxRuntime.jsx)(_OnboardingTooltip.OnboardingTooltip,{visible:true,onDismiss:I,title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools."})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{nativeID:"floating-devtools-root",pointerEvents:v||r?"none":"box-none",style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:b?10001:9999,opacity:v?0:1},children:(0,_jsxRuntime.jsxs)(_floatingTools.FloatingTools,{enablePositionPersistence:V,pushToSide:q,centerOnboarding:b,environment:t,availableEnvironments:n,onEnvironmentSwitch:u,showEnvironmentSelector:x&&m?.floatingTools?.environment,children:[t&&m?.floatingTools?.environment!==false&&!x?(0,_jsxRuntime.jsx)(_sharedUi.EnvironmentIndicator,{environment:t}):null,f?(0,_jsxRuntime.jsx)(_floatingTools.UserStatus,{userRole:f,onPress:C}):(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{accessibilityLabel:"Open Dev Tools Menu",onPress:C,style:styles.fab,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.menuButton,children:(0,_jsxRuntime.jsx)(MenuLauncherIcon,{size:14})})}),o.filter(e=>(e.slot??"both")!=="dial"&&F(e.id)).map(e=>(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{accessibilityLabel:e.name,onPress:()=>R(e),style:styles.fab,children:(()=>{if(typeof e.icon==="function"){const s=e.icon;return(0,_jsxRuntime.jsx)(s,{slot:"row",size:16,state:d,actions:S})}return(0,_AppIcon.renderAppIcon)(e.icon,{slot:"row",size:16,color:e.color})})()},`row-${e.id}`))]})}),r&&!v&&(0,_jsxRuntime.jsx)(_DialDevTools.DialDevTools,{apps:o,state:d,actions:S,onClose:()=>{h(false)}})]})};exports.FloatingMenu=FloatingMenu;const styles=_reactNative.StyleSheet.create({fab:{paddingHorizontal:6,paddingVertical:4,borderRadius:6,marginRight:4,alignItems:"center",justifyContent:"center",minWidth:0,minHeight:0,backgroundColor:"transparent"},menuButton:{paddingHorizontal:4,paddingVertical:2,minWidth:16,alignItems:"center",justifyContent:"center"},menuDots:{color:"#8CA2C8",fontSize:14,fontWeight:"900"},onboardingContainer:{..._sharedUi.absoluteFill,zIndex:1e4},onboardingBackdrop:{..._sharedUi.absoluteFill,backgroundColor:"rgba(0, 0, 0, 0.85)"}});const MenuLauncherIcon=({size:o=14,color:d=_sharedUi.buoyColors.primary})=>{const c=Math.max(2,Math.floor(o/4));const g=Math.max(1,Math.floor(o/16));const t=Array.from({length:9});return(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:o,height:o,flexDirection:"row",flexWrap:"wrap",alignContent:"center",justifyContent:"center"},children:t.map((f,n)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:c,height:c,margin:g,borderRadius:2,backgroundColor:d}},n))})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingMenu=void 0;var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _sharedUi=require("@buoy-gg/shared-ui");var _floatingTools=require("./floatingTools");var _AppIcon=require("./AppIcon");var _DialDevTools=require("./dial/DialDevTools");var _DevToolsSettingsModal=require("./DevToolsSettingsModal");var _AppHost=require("./AppHost");var _DevToolsVisibilityContext=require("./DevToolsVisibilityContext.js");var _ToggleStateManager=require("./ToggleStateManager.js");var _OnboardingTooltip=require("./dial/OnboardingTooltip");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(o,d){if("function"==typeof WeakMap)var c=new WeakMap,f=new WeakMap;return(_interopRequireWildcard=function(t,g){if(!g&&t&&t.__esModule)return t;var s,u,l={__proto__:null,default:t};if(null===t||"object"!=typeof t&&"function"!=typeof t)return l;if(s=g?f:c){if(s.has(t))return s.get(t);s.set(t,l)}for(const r in t)"default"!==r&&{}.hasOwnProperty.call(t,r)&&((u=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(t,r))&&(u.get||u.set)?s(l,r,u):l[r]=t[r]);return l})(o,d)}const FLOATING_MENU_ONBOARDING_KEY="@react_buoy_floating_menu_tooltip_shown";const ONBOARDING_STEP_KEY="@react_buoy_onboarding_step";const FloatingMenu=({apps:o,state:d,actions:c,hidden:f,environment:t,userRole:g="admin",availableEnvironments:s,onEnvironmentSwitch:u})=>{const[l,r]=(0,_react.useState)(false);const[i,h]=(0,_react.useState)(false);const[D,F]=(0,_react.useState)(false);const[V,O]=(0,_react.useState)(null);const[,x]=(0,_react.useState)(0);const M=(0,_react.useRef)(false);const m=(0,_sharedUi.useHintsDisabled)();(0,_react.useEffect)(()=>{const e=async()=>{try{const n=await _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.dial.isOpen());if(n==="true"){h(true)}}catch(n){}finally{F(true)}};e()},[]);(0,_react.useEffect)(()=>{if(!D)return;_sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.dial.isOpen(),i?"true":"false").catch(e=>{console.warn("Failed to save dial state:",e)})},[i,D]);const j=Boolean(s?.length&&u);const{isAnyOpen:a,open:B,registerApps:y,openApps:I}=(0,_AppHost.useAppHost)();const E=(0,_react.useRef)(a);const{setDialOpen:A,setToolOpen:C}=(0,_DevToolsVisibilityContext.useDevToolsVisibility)();(0,_react.useEffect)(()=>{if(m){return}const e=async()=>{try{const n=await _sharedUi.persistentStorage.getItem(FLOATING_MENU_ONBOARDING_KEY);if(!n){setTimeout(()=>{O("positioning")},1e3)}}catch(n){}};e()},[m]);(0,_react.useEffect)(()=>{const e=_ToggleStateManager.toggleStateManager.subscribe(()=>{x(n=>n+1)});return e},[]);(0,_react.useEffect)(()=>{A(i)},[i,A]);(0,_react.useEffect)(()=>{C(a)},[a,C]);const H=(0,_react.useMemo)(()=>Boolean(i||a),[i,a]);const v=(0,_react.useMemo)(()=>Boolean(f??l),[f,l]);const{settings:p}=(0,_DevToolsSettingsModal.useDevToolsSettings)();(0,_react.useEffect)(()=>{if(y){y(o)}},[o,y]);const S=(0,_react.useMemo)(()=>{return{...c??{},closeMenu:()=>h(false),hideFloatingRow:()=>r(true),showFloatingRow:()=>r(false),notifyToggleChange:()=>x(e=>e+1)}},[c]);(0,_react.useEffect)(()=>{if(E.current&&!a){r(false);h(false)}E.current=a},[a]);const k=e=>{if(!p)return false;return p.floatingTools[e]??false};const _=e=>{e?.onPress?.(S);if(e.launchMode!=="toggle-only"){const n=(0,_AppIcon.renderAppIcon)(e.icon,{slot:"dial",size:20,color:e.color});B({id:e.id,title:e.name,component:e.component,props:e.props,launchMode:e.launchMode??"self-modal",singleton:e.singleton??true,icon:n,color:e.color,modal:e.modal})}};const P=(0,_react.useRef)({apps:o,openApps:I,handlePress:_});P.current={apps:o,openApps:I,handlePress:_};(0,_react.useEffect)(()=>(0,_sharedUi.registerToolOpener)(e=>{const{apps:n,openApps:z,handlePress:N}=P.current;if(z.some(w=>w.id===e))return false;const T=n.find(w=>w.id===e);if(!T||T.launchMode==="toggle-only")return false;N(T);return true}),[]);const R=()=>{M.current=true;O(null);_sharedUi.persistentStorage.setItem(FLOATING_MENU_ONBOARDING_KEY,"true").catch(e=>{console.warn("Failed to save onboarding state:",e)})};const q=()=>{if(b){R()}h(true)};const b=V==="positioning"&&!M.current&&!m;const W=!b;return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[b&&!i&&!a&&(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.onboardingContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.onboardingBackdrop}),(0,_jsxRuntime.jsx)(_OnboardingTooltip.OnboardingTooltip,{visible:true,onDismiss:R,title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools."})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{nativeID:"floating-devtools-root",pointerEvents:v||i?"none":"box-none",style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:b?10001:9999,opacity:v?0:1},children:(0,_jsxRuntime.jsxs)(_floatingTools.FloatingTools,{enablePositionPersistence:W,pushToSide:H,centerOnboarding:b,environment:t,availableEnvironments:s,onEnvironmentSwitch:u,showEnvironmentSelector:j&&p?.floatingTools?.environment,children:[t&&p?.floatingTools?.environment!==false&&!j?(0,_jsxRuntime.jsx)(_sharedUi.EnvironmentIndicator,{environment:t}):null,g?(0,_jsxRuntime.jsx)(_floatingTools.UserStatus,{userRole:g,onPress:q}):(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{accessibilityLabel:"Open Dev Tools Menu",onPress:q,style:styles.fab,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.menuButton,children:(0,_jsxRuntime.jsx)(MenuLauncherIcon,{size:14})})}),o.filter(e=>(e.slot??"both")!=="dial"&&k(e.id)).map(e=>(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{accessibilityLabel:e.name,onPress:()=>_(e),style:styles.fab,children:(()=>{if(typeof e.icon==="function"){const n=e.icon;return(0,_jsxRuntime.jsx)(n,{slot:"row",size:16,state:d,actions:S})}return(0,_AppIcon.renderAppIcon)(e.icon,{slot:"row",size:16,color:e.color})})()},`row-${e.id}`))]})}),i&&!v&&(0,_jsxRuntime.jsx)(_DialDevTools.DialDevTools,{apps:o,state:d,actions:S,onClose:()=>{h(false)}})]})};exports.FloatingMenu=FloatingMenu;const styles=_reactNative.StyleSheet.create({fab:{paddingHorizontal:6,paddingVertical:4,borderRadius:6,marginRight:4,alignItems:"center",justifyContent:"center",minWidth:0,minHeight:0,backgroundColor:"transparent"},menuButton:{paddingHorizontal:4,paddingVertical:2,minWidth:16,alignItems:"center",justifyContent:"center"},menuDots:{color:"#8CA2C8",fontSize:14,fontWeight:"900"},onboardingContainer:{..._sharedUi.absoluteFill,zIndex:1e4},onboardingBackdrop:{..._sharedUi.absoluteFill,backgroundColor:"rgba(0, 0, 0, 0.85)"}});const MenuLauncherIcon=({size:o=14,color:d=_sharedUi.buoyColors.primary})=>{const c=Math.max(2,Math.floor(o/4));const f=Math.max(1,Math.floor(o/16));const t=Array.from({length:9});return(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:o,height:o,flexDirection:"row",flexWrap:"wrap",alignContent:"center",justifyContent:"center"},children:t.map((g,s)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:c,height:c,margin:f,borderRadius:2,backgroundColor:d}},s))})};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ToolModalShell=ToolModalShell;exports.useToolHeader=useToolHeader;exports.useToolHost=useToolHost;var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _sharedUi=require("@buoy-gg/shared-ui");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(t,o){if("function"==typeof WeakMap)var a=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,l){if(!l&&e&&e.__esModule)return e;var n,u,c={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return c;if(n=l?r:a){if(n.has(e))return n.get(e);n.set(e,c)}for(const i in e)"default"!==i&&{}.hasOwnProperty.call(e,i)&&((u=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,i))&&(u.get||u.set)?n(c,i,u):c[i]=e[i]);return c})(t,o)}const noop=()=>{};const FALLBACK_CONTEXT={search:"",isSearchActive:false,clearSearch:noop,close:noop,minimize:noop,showToast:noop,setHeaderOverride:noop};const ToolHostContext=(0,_react.createContext)(null);function useToolHost(){return(0,_react.useContext)(ToolHostContext)??FALLBACK_CONTEXT}function useToolHeader(t,o){const{setHeaderOverride:a}=useToolHost();(0,_react.useEffect)(()=>{a(t);return()=>a(null)},o)}const TOAST_DURATION_MS=2200;const TOAST_COLORS={success:_sharedUi.gameUIColors.success,error:_sharedUi.gameUIColors.error,info:_sharedUi.gameUIColors.info};function ToastView({message:t,type:o,nonce:a}){const r=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;(0,_react.useEffect)(()=>{r.setValue(0);_reactNative.Animated.sequence([_reactNative.Animated.timing(r,{toValue:1,duration:150,useNativeDriver:true}),_reactNative.Animated.delay(TOAST_DURATION_MS-450),_reactNative.Animated.timing(r,{toValue:0,duration:300,useNativeDriver:true})]).start()},[a,r]);const e=TOAST_COLORS[o];return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:"none",style:[styles.toast,{opacity:r,borderColor:e+"60"}],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.toastDot,{backgroundColor:e}]}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:styles.toastText,numberOfLines:2,children:t})]})}function ToolModalShell({app:t,config:o,visible:a,zIndex:r,onClose:e,onMinimize:l,initialModalState:n,enableSharedModalDimensions:u,bodyProps:c}){const i=t.component;const[s,T]=(0,_react.useState)(false);const[m,y]=(0,_react.useState)("");const[d,j]=(0,_react.useState)(null);const[x,S]=(0,_react.useState)(null);const h=(0,_react.useRef)(null);const f=(0,_react.useCallback)(()=>{T(false);y("")},[]);const g=(0,_react.useCallback)((A,H="info")=>{if(h.current)clearTimeout(h.current);S(k=>({message:A,type:H,nonce:(k?.nonce??0)+1}));h.current=setTimeout(()=>S(null),TOAST_DURATION_MS)},[]);(0,_react.useEffect)(()=>{return()=>{if(h.current)clearTimeout(h.current)}},[]);const p=(0,_react.useMemo)(()=>({search:s?m:"",isSearchActive:s,clearSearch:f,close:e,minimize:()=>l(),showToast:g,setHeaderOverride:j,instanceId:t.instanceId}),[m,s,f,e,l,g,t.instanceId]);const C=d?.title??o.title??t.title??t.id;const w=d?.subtitle??o.subtitle;const b=d?.onBack;const O=d?.actions??o.headerActions;const v=d?.searchable??o.searchable;(0,_react.useEffect)(()=>{if(!v&&s)f()},[v,s,f]);const M=u?_sharedUi.devToolsStorageKeys.modal.root():_sharedUi.devToolsStorageKeys.custom(t.id).modal();const _=(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[b&&!s&&(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation,{onBack:b}),s?(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Search,{value:m,onChangeText:y,onCancel:f,placeholder:o.searchPlaceholder,testID:`tool-search-field-${t.id}`}):(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:C,subtitle:w}),(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions,{children:[!s&&O,v&&!s&&(0,_jsxRuntime.jsx)(_sharedUi.HeaderSearchButton,{variant:"chip",testID:`tool-search-${t.id}`,onPress:()=>T(true)})]})]});return(0,_jsxRuntime.jsx)(ToolHostContext.Provider,{value:p,children:(0,_jsxRuntime.jsx)(_sharedUi.JsModal,{visible:a,onClose:e,onBack:b,onMinimize:l,initialModalState:n,zIndex:r,persistenceKey:M,enablePersistence:true,initialMode:o.initialMode??"bottomSheet",header:{customContent:_,showToggleButton:true},disableScrollWrapper:true,styles:{},children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.bodyRoot,children:[(0,_jsxRuntime.jsx)(_sharedUi.TickProvider,{children:(0,_jsxRuntime.jsx)(i,{...c})}),x&&(0,_jsxRuntime.jsx)(ToastView,{message:x.message,type:x.type,nonce:x.nonce})]})})})}const styles=_reactNative.StyleSheet.create({bodyRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},toast:{position:"absolute",bottom:16,alignSelf:"center",flexDirection:"row",alignItems:"center",gap:8,maxWidth:"86%",backgroundColor:_sharedUi.buoyColors.card,borderWidth:1,borderRadius:8,paddingHorizontal:12,paddingVertical:8,shadowColor:"#000",shadowOpacity:.4,shadowRadius:8,shadowOffset:{width:0,height:2},elevation:6},toastDot:{width:6,height:6,borderRadius:3},toastText:{flex:1,fontSize:12,color:_sharedUi.buoyColors.text}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ToolModalShell=ToolModalShell;exports.useToolHeader=useToolHeader;exports.useToolHost=useToolHost;var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _sharedUi=require("@buoy-gg/shared-ui");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(t,o){if("function"==typeof WeakMap)var a=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,l){if(!l&&e&&e.__esModule)return e;var n,u,c={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return c;if(n=l?r:a){if(n.has(e))return n.get(e);n.set(e,c)}for(const i in e)"default"!==i&&{}.hasOwnProperty.call(e,i)&&((u=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,i))&&(u.get||u.set)?n(c,i,u):c[i]=e[i]);return c})(t,o)}const noop=()=>{};const FALLBACK_CONTEXT={search:"",isSearchActive:false,clearSearch:noop,close:noop,minimize:noop,showToast:noop,setHeaderOverride:noop};const ToolHostContext=(0,_react.createContext)(null);function useToolHost(){return(0,_react.useContext)(ToolHostContext)??FALLBACK_CONTEXT}function useToolHeader(t,o){const{setHeaderOverride:a}=useToolHost();(0,_react.useEffect)(()=>{a(t);return()=>a(null)},o)}const TOAST_DURATION_MS=2200;const TOAST_COLORS={success:_sharedUi.gameUIColors.success,error:_sharedUi.gameUIColors.error,info:_sharedUi.gameUIColors.info};function ToastView({message:t,type:o,nonce:a}){const r=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;(0,_react.useEffect)(()=>{r.setValue(0);_reactNative.Animated.sequence([_reactNative.Animated.timing(r,{toValue:1,duration:150,useNativeDriver:true}),_reactNative.Animated.delay(TOAST_DURATION_MS-450),_reactNative.Animated.timing(r,{toValue:0,duration:300,useNativeDriver:true})]).start()},[a,r]);const e=TOAST_COLORS[o];return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:"none",style:[styles.toast,{opacity:r,borderColor:e+"60"}],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.toastDot,{backgroundColor:e}]}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:styles.toastText,numberOfLines:2,children:t})]})}function ToolModalShell({app:t,config:o,visible:a,zIndex:r,onClose:e,onMinimize:l,initialModalState:n,enableSharedModalDimensions:u,bodyProps:c}){const i=t.component;const[s,T]=(0,_react.useState)(false);const[m,y]=(0,_react.useState)("");const[d,S]=(0,_react.useState)(null);const[x,g]=(0,_react.useState)(null);const h=(0,_react.useRef)(null);const f=(0,_react.useCallback)(()=>{T(false);y("")},[]);const j=(0,_react.useCallback)((_,A="info")=>{if(h.current)clearTimeout(h.current);g(k=>({message:_,type:A,nonce:(k?.nonce??0)+1}));h.current=setTimeout(()=>g(null),TOAST_DURATION_MS)},[]);(0,_react.useEffect)(()=>{return()=>{if(h.current)clearTimeout(h.current)}},[]);const C=(0,_react.useMemo)(()=>({search:s?m:"",isSearchActive:s,clearSearch:f,close:e,minimize:()=>l(),showToast:j,setHeaderOverride:S,instanceId:t.instanceId}),[m,s,f,e,l,j,t.instanceId]);const p=d?.title??o.title??t.title??t.id;const w=d?.subtitle??o.subtitle;const v=d?.onBack;const O=d?.actions??o.headerActions;const b=d?.searchable??o.searchable;(0,_react.useEffect)(()=>{if(!b&&s)f()},[b,s,f]);const H=u?_sharedUi.devToolsStorageKeys.modal.root():_sharedUi.devToolsStorageKeys.custom(t.id).modal();const M=(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader,{children:[v&&!s&&(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation,{onBack:v}),s?(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Search,{value:m,onChangeText:y,onCancel:f,placeholder:o.searchPlaceholder,testID:`tool-search-field-${t.id}`}):(0,_jsxRuntime.jsx)(_sharedUi.ModalHeader.Content,{title:p,subtitle:w}),(0,_jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions,{children:[!s&&O,b&&!s&&(0,_jsxRuntime.jsx)(_sharedUi.HeaderSearchButton,{variant:"chip",testID:`tool-search-${t.id}`,onPress:()=>T(true)})]})]});return(0,_jsxRuntime.jsx)(ToolHostContext.Provider,{value:C,children:(0,_jsxRuntime.jsx)(_sharedUi.JsModal,{visible:a,onClose:e,onBack:v,onMinimize:l,initialModalState:n,zIndex:r,persistenceKey:H,enablePersistence:true,initialMode:o.initialMode??"bottomSheet",header:{customContent:M,showToggleButton:true},disableScrollWrapper:true,styles:{},children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.bodyRoot,children:[(0,_jsxRuntime.jsx)(_sharedUi.TickProvider,{children:(0,_jsxRuntime.jsx)(_sharedUi.ToolScreenHeaderContext.Provider,{value:S,children:(0,_jsxRuntime.jsx)(i,{...c})})}),x&&(0,_jsxRuntime.jsx)(ToastView,{message:x.message,type:x.type,nonce:x.nonce})]})})})}const styles=_reactNative.StyleSheet.create({bodyRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},toast:{position:"absolute",bottom:16,alignSelf:"center",flexDirection:"row",alignItems:"center",gap:8,maxWidth:"86%",backgroundColor:_sharedUi.buoyColors.card,borderWidth:1,borderRadius:8,paddingHorizontal:12,paddingVertical:8,shadowColor:"#000",shadowOpacity:.4,shadowRadius:8,shadowOffset:{width:0,height:2},elevation:6},toastDot:{width:6,height:6,borderRadius:3},toastText:{flex:1,fontSize:12,color:_sharedUi.buoyColors.text}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.autoDiscoverPresets=autoDiscoverPresets;exports.autoDiscoverPresetsWithCustom=autoDiscoverPresetsWithCustom;var _optionalRequire=require("./optionalRequire.js");function autoDiscoverPresets(){const t=[];const u=[{name:"@buoy-gg/env",loader:()=>{try{const{envToolPreset:r}=require("@buoy-gg/env");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/env",r);return null}}},{name:"@buoy-gg/network",loader:()=>{try{const{networkToolPreset:r}=require("@buoy-gg/network");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/network",r);return null}}},{name:"@buoy-gg/storage",loader:()=>{try{const{storageToolPreset:r}=require("@buoy-gg/storage");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/storage",r);return null}}},{name:"@buoy-gg/react-query",loader:()=>{try{const{reactQueryToolPreset:r,wifiTogglePreset:e}=require("@buoy-gg/react-query");return[r,e]}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/react-query",r);return null}}},{name:"@buoy-gg/route-events",loader:()=>{try{const{routeEventsToolPreset:r}=require("@buoy-gg/route-events");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/route-events",r);return null}}},{name:"@buoy-gg/debug-borders",loader:()=>{try{const{debugBordersToolPreset:r}=require("@buoy-gg/debug-borders");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/debug-borders",r);return null}}},{name:"@buoy-gg/highlight-updates",loader:()=>{try{const{highlightUpdatesPreset:r,highlightUpdatesModalPreset:e}=require("@buoy-gg/highlight-updates");return[e,r]}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/highlight-updates",r);return null}}},{name:"@buoy-gg/console",loader:()=>{try{const{consoleToolPreset:r}=require("@buoy-gg/console");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/console",r);return null}}},{name:"@buoy-gg/notifications",loader:()=>{try{return require("@buoy-gg/notifications").notificationToolPreset}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/notifications",r);return null}}},{name:"@buoy-gg/sentry",loader:()=>{try{const{sentryToolPreset:r}=require("@buoy-gg/sentry");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/sentry",r);return null}}},{name:"@buoy-gg/time-machine",loader:()=>{try{const{timeMachineToolPreset:r}=require("@buoy-gg/time-machine");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/time-machine",r);return null}}},{name:"@buoy-gg/clock",loader:()=>{try{const{clockToolPreset:r}=require("@buoy-gg/clock");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/clock",r);return null}}},{name:"@buoy-gg/scenarios",loader:()=>{try{const{scenariosToolPreset:r}=require("@buoy-gg/scenarios");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/scenarios",r);return null}}},{name:"@buoy-gg/ask-buoy",loader:()=>{try{const{askBuoyToolPreset:r}=require("@buoy-gg/ask-buoy");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/ask-buoy",r);return null}}},{name:"@buoy-gg/redux",loader:()=>{try{const{reduxToolPreset:r}=require("@buoy-gg/redux");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/redux",r);return null}}},{name:"@buoy-gg/zustand",loader:()=>{try{const{zustandToolPreset:r}=require("@buoy-gg/zustand");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/zustand",r);return null}}},{name:"@buoy-gg/events",loader:()=>{try{const{eventsToolPreset:r}=require("@buoy-gg/events");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/events",r);return null}}},{name:"@buoy-gg/jotai",loader:()=>{try{const{jotaiToolPreset:r}=require("@buoy-gg/jotai");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/jotai",r);return null}}},{name:"@buoy-gg/image-overlay",loader:()=>{try{const{imageOverlayToolPreset:r}=require("@buoy-gg/image-overlay");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/image-overlay",r);return null}}},{name:"@buoy-gg/perf-monitor",loader:()=>{try{const{perfMonitorPreset:r,perfMonitorModalPreset:e}=require("@buoy-gg/perf-monitor");return[r,e]}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/perf-monitor",r);return null}}},{name:"@buoy-gg/js-top",loader:()=>{try{const{jsTopPreset:r,jsTopModalPreset:e}=require("@buoy-gg/js-top");return[e,r]}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/js-top",r);return null}}},{name:"@buoy-gg/images",loader:()=>{try{const{imagesToolPreset:r}=require("@buoy-gg/images");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/images",r);return null}}},{name:"@buoy-gg/assets",loader:()=>{try{const{assetsToolPreset:r}=require("@buoy-gg/assets");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/assets",r);return null}}}];for(const{name:r,loader:e}of u){try{const o=e();if(o){if(Array.isArray(o)){t.push(...o)}else{t.push(o)}}}catch(o){(0,_optionalRequire.reportOptionalRequireError)(r,o)}}return t}function autoDiscoverPresetsWithCustom(t){const u=autoDiscoverPresets();const r=new Set(t.map(o=>o.id));const e=u.filter(o=>!r.has(o.id));return[...t,...e]}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.autoDiscoverPresets=autoDiscoverPresets;exports.autoDiscoverPresetsWithCustom=autoDiscoverPresetsWithCustom;var _optionalRequire=require("./optionalRequire.js");function autoDiscoverPresets(){const t=[];const u=[{name:"@buoy-gg/env",loader:()=>{try{const{envToolPreset:r}=require("@buoy-gg/env");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/env",r);return null}}},{name:"@buoy-gg/network",loader:()=>{try{const{networkToolPreset:r}=require("@buoy-gg/network");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/network",r);return null}}},{name:"@buoy-gg/storage",loader:()=>{try{const{storageToolPreset:r}=require("@buoy-gg/storage");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/storage",r);return null}}},{name:"@buoy-gg/react-query",loader:()=>{try{const{reactQueryToolPreset:r,wifiTogglePreset:e}=require("@buoy-gg/react-query");return[r,e]}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/react-query",r);return null}}},{name:"@buoy-gg/route-events",loader:()=>{try{const{routeEventsToolPreset:r}=require("@buoy-gg/route-events");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/route-events",r);return null}}},{name:"@buoy-gg/debug-borders",loader:()=>{try{const{debugBordersToolPreset:r}=require("@buoy-gg/debug-borders");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/debug-borders",r);return null}}},{name:"@buoy-gg/highlight-updates",loader:()=>{try{const{highlightUpdatesPreset:r,highlightUpdatesModalPreset:e}=require("@buoy-gg/highlight-updates");return[e,r]}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/highlight-updates",r);return null}}},{name:"@buoy-gg/console",loader:()=>{try{const{consoleToolPreset:r}=require("@buoy-gg/console");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/console",r);return null}}},{name:"@buoy-gg/notifications",loader:()=>{try{return require("@buoy-gg/notifications").notificationToolPreset}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/notifications",r);return null}}},{name:"@buoy-gg/sentry",loader:()=>{try{const{sentryToolPreset:r}=require("@buoy-gg/sentry");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/sentry",r);return null}}},{name:"@buoy-gg/time-machine",loader:()=>{try{const{timeMachineToolPreset:r}=require("@buoy-gg/time-machine");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/time-machine",r);return null}}},{name:"@buoy-gg/clock",loader:()=>{try{const{clockToolPreset:r}=require("@buoy-gg/clock");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/clock",r);return null}}},{name:"@buoy-gg/lifecycle",loader:()=>{try{const{lifecycleToolPreset:r}=require("@buoy-gg/lifecycle");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/lifecycle",r);return null}}},{name:"@buoy-gg/location",loader:()=>{try{const{locationToolPreset:r}=require("@buoy-gg/location");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/location",r);return null}}},{name:"@buoy-gg/permissions",loader:()=>{try{const{permissionsToolPreset:r}=require("@buoy-gg/permissions");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/permissions",r);return null}}},{name:"@buoy-gg/scenarios",loader:()=>{try{const{scenariosToolPreset:r}=require("@buoy-gg/scenarios");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/scenarios",r);return null}}},{name:"@buoy-gg/ask-buoy",loader:()=>{try{const{askBuoyToolPreset:r}=require("@buoy-gg/ask-buoy");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/ask-buoy",r);return null}}},{name:"@buoy-gg/redux",loader:()=>{try{const{reduxToolPreset:r}=require("@buoy-gg/redux");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/redux",r);return null}}},{name:"@buoy-gg/zustand",loader:()=>{try{const{zustandToolPreset:r}=require("@buoy-gg/zustand");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/zustand",r);return null}}},{name:"@buoy-gg/events",loader:()=>{try{const{eventsToolPreset:r}=require("@buoy-gg/events");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/events",r);return null}}},{name:"@buoy-gg/jotai",loader:()=>{try{const{jotaiToolPreset:r}=require("@buoy-gg/jotai");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/jotai",r);return null}}},{name:"@buoy-gg/image-overlay",loader:()=>{try{const{imageOverlayToolPreset:r}=require("@buoy-gg/image-overlay");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/image-overlay",r);return null}}},{name:"@buoy-gg/perf-monitor",loader:()=>{try{const{perfMonitorPreset:r,perfMonitorModalPreset:e}=require("@buoy-gg/perf-monitor");return[r,e]}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/perf-monitor",r);return null}}},{name:"@buoy-gg/js-top",loader:()=>{try{const{jsTopPreset:r,jsTopModalPreset:e}=require("@buoy-gg/js-top");return[e,r]}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/js-top",r);return null}}},{name:"@buoy-gg/images",loader:()=>{try{const{imagesToolPreset:r}=require("@buoy-gg/images");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/images",r);return null}}},{name:"@buoy-gg/assets",loader:()=>{try{const{assetsToolPreset:r}=require("@buoy-gg/assets");return r}catch(r){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/assets",r);return null}}}];for(const{name:r,loader:e}of u){try{const o=e();if(o){if(Array.isArray(o)){t.push(...o)}else{t.push(o)}}}catch(o){(0,_optionalRequire.reportOptionalRequireError)(r,o)}}return t}function autoDiscoverPresetsWithCustom(t){const u=autoDiscoverPresets();const r=new Set(t.map(o=>o.id));const e=u.filter(o=>!r.has(o.id));return[...t,...e]}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AutoExternalSync=AutoExternalSync;exports.ToolRegistryPublisher=ToolRegistryPublisher;exports.isExternalSyncAvailable=isExternalSyncAvailable;exports.useToolAdapterMap=useToolAdapterMap;var _react=require("react");var _reactNative=require("react-native");var _license=require("@buoy-gg/license");var _optionalRequire=require("./optionalRequire.js");var _appSyncAdapter=require("./sync/appSyncAdapter.js");var _deviceIdentity=require("./deviceIdentity.js");var _sharedUi=require("@buoy-gg/shared-ui");let externalSyncModule=null;let storageModule=null;let networkModule=null;let reactQueryModule=null;let routeEventsModule=null;let reduxModule=null;let zustandModule=null;let jotaiModule=null;let eventsModule=null;let consoleModule=null;let clockModule=null;let sentryModule=null;let notificationsModule=null;try{notificationsModule=require("@buoy-gg/notifications")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/notifications",e)}let envModule=null;let highlightUpdatesModule=null;let debugBordersModule=null;let impersonateModule=null;let perfMonitorModule=null;let jsTopModule=null;let imagesModule=null;let assetsModule=null;let tvRemoteModule=null;let focusInspectorModule=null;let expoConstantsModule=null;try{externalSyncModule=require("@buoy-gg/external-sync")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/external-sync",e)}try{storageModule=require("@buoy-gg/storage")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/storage",e)}try{networkModule=require("@buoy-gg/network")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/network",e)}try{reactQueryModule=require("@buoy-gg/react-query")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/react-query",e)}try{routeEventsModule=require("@buoy-gg/route-events")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/route-events",e)}try{reduxModule=require("@buoy-gg/redux")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/redux",e)}try{zustandModule=require("@buoy-gg/zustand")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/zustand",e)}try{jotaiModule=require("@buoy-gg/jotai")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/jotai",e)}try{eventsModule=require("@buoy-gg/events")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/events",e)}try{consoleModule=require("@buoy-gg/console")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/console",e)}try{clockModule=require("@buoy-gg/clock")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/clock",e)}try{sentryModule=require("@buoy-gg/sentry")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/sentry",e)}try{envModule=require("@buoy-gg/env")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/env",e)}try{highlightUpdatesModule=require("@buoy-gg/highlight-updates")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/highlight-updates",e)}try{debugBordersModule=require("@buoy-gg/debug-borders")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/debug-borders",e)}try{impersonateModule=require("@buoy-gg/impersonate")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/impersonate",e)}try{perfMonitorModule=require("@buoy-gg/perf-monitor")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/perf-monitor",e)}try{jsTopModule=require("@buoy-gg/js-top")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/js-top",e)}try{imagesModule=require("@buoy-gg/images")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/images",e)}try{assetsModule=require("@buoy-gg/assets")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/assets",e)}try{tvRemoteModule=require("@buoy-gg/tv-remote")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/tv-remote",e)}try{focusInspectorModule=require("@buoy-gg/focus-inspector")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/focus-inspector",e)}try{expoConstantsModule=require("expo-constants")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("expo-constants",e)}function isExternalSyncAvailable(){return!!externalSyncModule?.useExternalSyncSocket}function getAppName(){const e=expoConstantsModule?.default??expoConstantsModule;return e?.expoConfig?.name??e?.manifest2?.extra?.expoClient?.name??null}function getHardwareName(){const e=expoConstantsModule?.default??expoConstantsModule;const o=e?.deviceName;return typeof o==="string"&&o.length>0?o:null}function useToolAdapterMap({requiredEnvVars:e,customApps:o}){const n=reactQueryModule?.useReactQuerySyncAdapter?reactQueryModule.useReactQuerySyncAdapter():null;return useToolAdapterMapInner(n,e,o)}function ToolRegistryPublisher({requiredEnvVars:e,customApps:o}){const n=useToolAdapterMap({requiredEnvVars:e,customApps:o});const r=(0,_react.useRef)(n);r.current=n;(0,_react.useEffect)(()=>(0,_sharedUi.registerToolAdapters)(()=>r.current),[]);return null}function AutoExternalSync({options:e,requiredEnvVars:o,isPro:n,tier:r,licenseKey:t,customApps:l}){const{useExternalSyncSocket:p,useExternalSync:y}=externalSyncModule;const g=useToolAdapterMap({requiredEnvVars:o,customApps:l});const i=(0,_deviceIdentity.useDeviceIdentity)(e,{appName:getAppName(),hardwareName:getHardwareName(),platform:_reactNative.Platform.OS});const s=i?.deviceId??null;const{socket:u}=p({deviceName:i?.deviceName??"Buoy Device",socketURL:e?.socketURL??externalSyncModule.getDefaultSocketURL?.()??"http://localhost:42831",persistentDeviceId:s,platform:_reactNative.Platform.OS,enableLogs:e?.enableLogs});const a=(0,_react.useRef)({isPro:n,tier:r,licenseKey:t});a.current={isPro:n,tier:r,licenseKey:t};(0,_react.useEffect)(()=>{if(!u)return;const c=()=>{if(!_license.LicenseManager.hasAccountAccess()||!u.connected)return;u.emit("device-license",{isPro:a.current.isPro?"1":"0",tier:a.current.tier??(a.current.isPro?"pro":"free")})};if(u.connected)c();u.on("connect",c);return()=>{u.off("connect",c)}},[u,n,r,t]);y({tools:g,socket:u,deviceId:s,enableLogs:e?.enableLogs});return null}function useToolAdapterMapInner(e,o,n){return(0,_react.useMemo)(()=>{const r={app:_appSyncAdapter.appSyncAdapter};if(storageModule?.storageSyncAdapter){r.storage=storageModule.storageSyncAdapter}if(networkModule?.networkSyncAdapter){r.network=networkModule.networkSyncAdapter}if(e){r.query=e}if(routeEventsModule?.routeEventsSyncAdapter){r["route-events"]=routeEventsModule.routeEventsSyncAdapter}if(reduxModule?.reduxSyncAdapter){r.redux=reduxModule.reduxSyncAdapter}if(zustandModule?.zustandSyncAdapter){r.zustand=zustandModule.zustandSyncAdapter}if(jotaiModule?.jotaiSyncAdapter){r.jotai=jotaiModule.jotaiSyncAdapter}if(eventsModule?.eventsSyncAdapter){r.events=eventsModule.eventsSyncAdapter}if(consoleModule?.consoleSyncAdapter){r.console=consoleModule.consoleSyncAdapter}if(clockModule?.clockSyncAdapter){r.clock=clockModule.clockSyncAdapter}if(notificationsModule?.notificationSyncAdapter){r["push-notifications"]=notificationsModule.notificationSyncAdapter}if(sentryModule?.sentrySyncAdapter){r.sentry=sentryModule.sentrySyncAdapter}try{const t=require("@buoy-gg/time-machine");if(t?.timeMachineSyncAdapter){r["time-machine"]=t.timeMachineSyncAdapter}}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/time-machine",t)}try{const t=require("@buoy-gg/scenarios");if(t?.scenariosSyncAdapter){r.scenarios=t.scenariosSyncAdapter}}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/scenarios",t)}try{const t=require("@buoy-gg/ask-buoy");if(t?.askBuoySyncAdapter){r["ask-buoy"]=t.askBuoySyncAdapter}}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/ask-buoy",t)}if(envModule?.createEnvSyncAdapter){r.env=envModule.createEnvSyncAdapter(o??[])}if(highlightUpdatesModule?.highlightUpdatesSyncAdapter){r["highlight-updates"]=highlightUpdatesModule.highlightUpdatesSyncAdapter}if(debugBordersModule?.debugBordersSyncAdapter){r["debug-borders"]=debugBordersModule.debugBordersSyncAdapter}if(impersonateModule?.impersonateSyncAdapter){r.impersonate=impersonateModule.impersonateSyncAdapter}if(perfMonitorModule?.perfMonitorSyncAdapter){r["perf-monitor"]=perfMonitorModule.perfMonitorSyncAdapter}if(jsTopModule?.jsTopSyncAdapter){r["js-top"]=jsTopModule.jsTopSyncAdapter}if(imagesModule?.imagesSyncAdapter){r.images=imagesModule.imagesSyncAdapter}if(assetsModule?.assetsSyncAdapter){r.assets=assetsModule.assetsSyncAdapter}if(tvRemoteModule?.tvRemoteSyncAdapter){r["tv-remote"]=tvRemoteModule.tvRemoteSyncAdapter}if(focusInspectorModule?.focusInspectorSyncAdapter){r["focus-inspector"]=focusInspectorModule.focusInspectorSyncAdapter}for(const t of n??[]){if(t?.sync){r[`custom:${t.id}`]=t.sync}}return r},[e,o,n])}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AutoExternalSync=AutoExternalSync;exports.ToolRegistryPublisher=ToolRegistryPublisher;exports.isExternalSyncAvailable=isExternalSyncAvailable;exports.useToolAdapterMap=useToolAdapterMap;var _react=require("react");var _reactNative=require("react-native");var _license=require("@buoy-gg/license");var _optionalRequire=require("./optionalRequire.js");var _appSyncAdapter=require("./sync/appSyncAdapter.js");var _deviceIdentity=require("./deviceIdentity.js");var _externalSyncGate=require("./externalSyncGate.js");var _sharedUi=require("@buoy-gg/shared-ui");let externalSyncModule=null;let storageModule=null;let networkModule=null;let reactQueryModule=null;let routeEventsModule=null;let reduxModule=null;let zustandModule=null;let jotaiModule=null;let eventsModule=null;let consoleModule=null;let clockModule=null;let permissionsModule=null;let lifecycleModule=null;let locationModule=null;let sentryModule=null;let notificationsModule=null;try{notificationsModule=require("@buoy-gg/notifications")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/notifications",e)}let envModule=null;let highlightUpdatesModule=null;let debugBordersModule=null;let impersonateModule=null;let perfMonitorModule=null;let jsTopModule=null;let imagesModule=null;let assetsModule=null;let tvRemoteModule=null;let focusInspectorModule=null;let expoConstantsModule=null;try{externalSyncModule=require("@buoy-gg/external-sync")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/external-sync",e)}try{storageModule=require("@buoy-gg/storage")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/storage",e)}try{networkModule=require("@buoy-gg/network")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/network",e)}try{reactQueryModule=require("@buoy-gg/react-query")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/react-query",e)}try{routeEventsModule=require("@buoy-gg/route-events")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/route-events",e)}try{reduxModule=require("@buoy-gg/redux")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/redux",e)}try{zustandModule=require("@buoy-gg/zustand")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/zustand",e)}try{jotaiModule=require("@buoy-gg/jotai")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/jotai",e)}try{eventsModule=require("@buoy-gg/events")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/events",e)}try{consoleModule=require("@buoy-gg/console")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/console",e)}try{clockModule=require("@buoy-gg/clock")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/clock",e)}try{lifecycleModule=require("@buoy-gg/lifecycle")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/lifecycle",e)}try{locationModule=require("@buoy-gg/location")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/location",e)}try{permissionsModule=require("@buoy-gg/permissions")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/permissions",e)}try{sentryModule=require("@buoy-gg/sentry")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/sentry",e)}try{envModule=require("@buoy-gg/env")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/env",e)}try{highlightUpdatesModule=require("@buoy-gg/highlight-updates")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/highlight-updates",e)}try{debugBordersModule=require("@buoy-gg/debug-borders")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/debug-borders",e)}try{impersonateModule=require("@buoy-gg/impersonate")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/impersonate",e)}try{perfMonitorModule=require("@buoy-gg/perf-monitor")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/perf-monitor",e)}try{jsTopModule=require("@buoy-gg/js-top")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/js-top",e)}try{imagesModule=require("@buoy-gg/images")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/images",e)}try{assetsModule=require("@buoy-gg/assets")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/assets",e)}try{tvRemoteModule=require("@buoy-gg/tv-remote")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/tv-remote",e)}try{focusInspectorModule=require("@buoy-gg/focus-inspector")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/focus-inspector",e)}try{expoConstantsModule=require("expo-constants")}catch(e){(0,_optionalRequire.reportOptionalRequireError)("expo-constants",e)}function isExternalSyncAvailable(){return!!externalSyncModule?.useExternalSyncSocket}function getAppName(){const e=expoConstantsModule?.default??expoConstantsModule;return e?.expoConfig?.name??e?.manifest2?.extra?.expoClient?.name??null}function getHardwareName(){const e=expoConstantsModule?.default??expoConstantsModule;const o=e?.deviceName;return typeof o==="string"&&o.length>0?o:null}function useToolAdapterMap({requiredEnvVars:e,customApps:o}){const n=reactQueryModule?.useReactQuerySyncAdapter?reactQueryModule.useReactQuerySyncAdapter():null;return useToolAdapterMapInner(n,e,o)}function ToolRegistryPublisher({requiredEnvVars:e,customApps:o}){const n=useToolAdapterMap({requiredEnvVars:e,customApps:o});const r=(0,_react.useRef)(n);r.current=n;(0,_react.useEffect)(()=>(0,_sharedUi.registerToolAdapters)(()=>r.current),[]);return null}function AutoExternalSync({options:e,requiredEnvVars:o,isPro:n,tier:r,licenseKey:t,customApps:p}){const{useExternalSyncSocket:g,useExternalSync:d}=externalSyncModule;const l=useToolAdapterMap({requiredEnvVars:o,customApps:p});const s=(0,_deviceIdentity.useDeviceIdentity)(e,{appName:getAppName(),hardwareName:getHardwareName(),platform:_reactNative.Platform.OS});const y=s?.deviceId??null;const{socket:u}=g({deviceName:s?.deviceName??"Buoy Device",socketURL:e?.socketURL??externalSyncModule.getDefaultSocketURL?.()??"http://localhost:42831",persistentDeviceId:y,platform:_reactNative.Platform.OS,enableLogs:e?.enableLogs});const c=(0,_react.useRef)({isPro:n,tier:r,licenseKey:t});c.current={isPro:n,tier:r,licenseKey:t};(0,_react.useEffect)(()=>{if(!u)return;const i=()=>{if(!_license.LicenseManager.hasAccountAccess()||!u.connected)return;u.emit("device-license",{isPro:c.current.isPro?"1":"0",tier:c.current.tier??(c.current.isPro?"pro":"free")})};if(u.connected)i();u.on("connect",i);return()=>{u.off("connect",i)}},[u,n,r,t]);const a=e?.releaseActions?.join(",")??"";const f=(0,_react.useMemo)(()=>(0,_externalSyncGate.applyReleaseActionPolicy)(l,typeof __DEV__!=="undefined"&&__DEV__,a?a.split(","):void 0),[l,a]);d({tools:f,socket:u,deviceId:y,enableLogs:e?.enableLogs});return null}function useToolAdapterMapInner(e,o,n){return(0,_react.useMemo)(()=>{const r={app:_appSyncAdapter.appSyncAdapter};if(storageModule?.storageSyncAdapter){r.storage=storageModule.storageSyncAdapter}if(networkModule?.networkSyncAdapter){r.network=networkModule.networkSyncAdapter}if(e){r.query=e}if(routeEventsModule?.routeEventsSyncAdapter){r["route-events"]=routeEventsModule.routeEventsSyncAdapter}if(reduxModule?.reduxSyncAdapter){r.redux=reduxModule.reduxSyncAdapter}if(zustandModule?.zustandSyncAdapter){r.zustand=zustandModule.zustandSyncAdapter}if(jotaiModule?.jotaiSyncAdapter){r.jotai=jotaiModule.jotaiSyncAdapter}if(eventsModule?.eventsSyncAdapter){r.events=eventsModule.eventsSyncAdapter}if(consoleModule?.consoleSyncAdapter){r.console=consoleModule.consoleSyncAdapter}if(clockModule?.clockSyncAdapter){r.clock=clockModule.clockSyncAdapter}if(permissionsModule?.permissionsSyncAdapter){r.permissions=permissionsModule.permissionsSyncAdapter}if(lifecycleModule?.lifecycleSyncAdapter){r.lifecycle=lifecycleModule.lifecycleSyncAdapter}if(locationModule?.locationSyncAdapter){r.location=locationModule.locationSyncAdapter}if(notificationsModule?.notificationSyncAdapter){r["push-notifications"]=notificationsModule.notificationSyncAdapter}if(sentryModule?.sentrySyncAdapter){r.sentry=sentryModule.sentrySyncAdapter}try{const t=require("@buoy-gg/time-machine");if(t?.timeMachineSyncAdapter){r["time-machine"]=t.timeMachineSyncAdapter}}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/time-machine",t)}try{const t=require("@buoy-gg/scenarios");if(t?.scenariosSyncAdapter){r.scenarios=t.scenariosSyncAdapter}}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/scenarios",t)}try{const t=require("@buoy-gg/ask-buoy");if(t?.askBuoySyncAdapter){r["ask-buoy"]=t.askBuoySyncAdapter}}catch(t){(0,_optionalRequire.reportOptionalRequireError)("@buoy-gg/ask-buoy",t)}if(envModule?.createEnvSyncAdapter){r.env=envModule.createEnvSyncAdapter(o??[])}if(highlightUpdatesModule?.highlightUpdatesSyncAdapter){r["highlight-updates"]=highlightUpdatesModule.highlightUpdatesSyncAdapter}if(debugBordersModule?.debugBordersSyncAdapter){r["debug-borders"]=debugBordersModule.debugBordersSyncAdapter}if(impersonateModule?.impersonateSyncAdapter){r.impersonate=impersonateModule.impersonateSyncAdapter}if(perfMonitorModule?.perfMonitorSyncAdapter){r["perf-monitor"]=perfMonitorModule.perfMonitorSyncAdapter}if(jsTopModule?.jsTopSyncAdapter){r["js-top"]=jsTopModule.jsTopSyncAdapter}if(imagesModule?.imagesSyncAdapter){r.images=imagesModule.imagesSyncAdapter}if(assetsModule?.assetsSyncAdapter){r.assets=assetsModule.assetsSyncAdapter}if(tvRemoteModule?.tvRemoteSyncAdapter){r["tv-remote"]=tvRemoteModule.tvRemoteSyncAdapter}if(focusInspectorModule?.focusInspectorSyncAdapter){r["focus-inspector"]=focusInspectorModule.focusInspectorSyncAdapter}for(const t of n??[]){if(t?.sync){r[`custom:${t.id}`]=t.sync}}return r},[e,o,n])}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DialIcon=void 0;var _react=require("react");var _reactNative=require("react-native");var _floatingToolsCore=require("@buoy-gg/floating-tools-core");var _jsxRuntime=require("react/jsx-runtime");const DIAL_A11Y={network:"Network",images:"Images","image-overlay":"Image Overlay",assets:"Assets",query:"React Query",storage:"Storage",env:"Env",console:"Console",events:"Events",redux:"Redux",zustand:"Zustand",jotai:"Jotai","route-events":"Routes","time-machine":"Time Machine",clock:"Clock","highlight-updates":"Highlight Updates","debug-borders":"Debug Borders","perf-monitor":"Bench HUD","js-top":"JS Top","js-top-modal":"JS Top",impersonate:"Impersonate","perf-monitor-modal":"Bench"};function dialAccessibilityLabel(t,e){if(t&&DIAL_A11Y[t])return DIAL_A11Y[t];return e}const VIEW_SIZE=_floatingToolsCore.DIAL_ICON_SIZE;const DialIcon=({index:t,icon:e,iconsProgress:p,onPress:y,totalIcons:s,active:I})=>{const r=(0,_react.useRef)(new _reactNative.Animated.Value(1)).current;const{width:g}=(0,_reactNative.useWindowDimensions)();const a=(0,_react.useMemo)(()=>(0,_floatingToolsCore.getDialLayout)({screenWidth:g}),[g]);const f=_floatingToolsCore.dialAnimationConfig?.icons??{pressIn:{scale:.95,damping:15,stiffness:400},pressOut:{scale:1,damping:15,stiffness:400}};const{pressIn:l,pressOut:c}=f;const b=()=>{_reactNative.Animated.spring(r,{toValue:l.scale,damping:l.damping,stiffness:l.stiffness,useNativeDriver:true}).start()};const S=()=>{_reactNative.Animated.spring(r,{toValue:c.scale,damping:c.damping,stiffness:c.stiffness,useNativeDriver:true}).start()};const o=(0,_react.useMemo)(()=>{const d=(0,_floatingToolsCore.getIconPosition)(t,s,a.iconRadius,_floatingToolsCore.DIAL_START_ANGLE);const{x:w,y:j,angle:n}=d;const u=a.iconRadius;const v=(0,_floatingToolsCore.getIconStaggerInputRange)(t,s);const i=p.interpolate({inputRange:v,outputRange:[0,0,1,1],extrapolate:"clamp"});const m=i.interpolate({inputRange:[0,1],outputRange:[Math.PI*2,0]});const h=i.interpolate({inputRange:[0,1],outputRange:[0,u]});const A=_reactNative.Animated.add(_reactNative.Animated.multiply(h,m.interpolate({inputRange:[0,Math.PI*2],outputRange:[Math.cos(n),Math.cos(n+Math.PI*2)]})),i.interpolate({inputRange:[0,1],outputRange:[0,w-u*Math.cos(n+Math.PI*2)]}));const _=_reactNative.Animated.add(_reactNative.Animated.multiply(h,m.interpolate({inputRange:[0,Math.PI*2],outputRange:[Math.sin(n),Math.sin(n+Math.PI*2)]})),i.interpolate({inputRange:[0,1],outputRange:[0,j-u*Math.sin(n+Math.PI*2)]}));const D=i.interpolate({inputRange:[0,.3,1],outputRange:[0,.3,1]});return{translateX:A,translateY:_,itemOpacity:D,progressScale:i}},[t,s,p,a]);const R={position:"absolute",left:a.circleRadius-VIEW_SIZE/2,top:a.circleRadius-VIEW_SIZE/2,opacity:o.itemOpacity,transform:[{translateX:o.translateX},{translateY:o.translateY},{scale:_reactNative.Animated.multiply(r,o.progressScale)}]};const C=e.icon===null&&!e.iconComponent;return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.view,R,!I&&styles.hidden],children:C?(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.emptySpot,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.emptyDot})}):(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>y(e),onPressIn:b,onPressOut:S,style:styles.pressable,testID:e.id?`buoy-dial-${e.id}`:void 0,accessibilityLabel:dialAccessibilityLabel(e.id,e.name),accessibilityRole:"button",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.iconGradientBg,{backgroundColor:"rgba(0, 0, 0, 0.2)"}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.iconInnerGlow,{backgroundColor:"rgba(255, 255, 255, 0.02)"}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.iconWrapper,children:e.iconComponent?(()=>{const d=e.iconComponent;return(0,_jsxRuntime.jsx)(d,{slot:"dial",size:_floatingToolsCore.DIAL_ICON_GLYPH_SIZE})})():(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.iconClamp,children:e.icon})}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:styles.label,numberOfLines:1,adjustsFontSizeToFit:true,minimumFontScale:.7,children:e.name.toUpperCase()})]})})};exports.DialIcon=DialIcon;const styles=_reactNative.StyleSheet.create({view:{width:VIEW_SIZE,height:VIEW_SIZE,justifyContent:"center",alignItems:"center"},hidden:{display:"none"},pressable:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center",padding:4,backgroundColor:"transparent"},iconGradientBg:{position:"absolute",width:"85%",height:"85%",borderRadius:12,opacity:.3},iconInnerGlow:{position:"absolute",width:"70%",height:"70%",borderRadius:10,opacity:.5},iconWrapper:{marginBottom:4,alignItems:"center",justifyContent:"center"},iconClamp:{width:_floatingToolsCore.DIAL_ICON_GLYPH_SIZE,height:_floatingToolsCore.DIAL_ICON_GLYPH_SIZE,alignItems:"center",justifyContent:"center",overflow:"hidden"},label:{fontSize:_floatingToolsCore.dialStyles.icon.label.fontSize,fontWeight:_floatingToolsCore.dialStyles.icon.label.fontWeight,letterSpacing:_floatingToolsCore.dialStyles.icon.label.letterSpacing,fontFamily:_floatingToolsCore.dialStyles.icon.label.fontFamily,marginTop:_floatingToolsCore.dialStyles.icon.label.marginTop,color:_floatingToolsCore.dialColors.iconLabel},emptySpot:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center"},emptyDot:{width:_floatingToolsCore.dialStyles.emptySlot.dotSize,height:_floatingToolsCore.dialStyles.emptySlot.dotSize,borderRadius:_floatingToolsCore.dialStyles.emptySlot.dotSize/2,backgroundColor:_floatingToolsCore.dialColors.emptyDotBackground,borderWidth:_floatingToolsCore.dialStyles.emptySlot.borderWidth,borderColor:_floatingToolsCore.dialColors.emptyDotBorder}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DialIcon=void 0;var _react=require("react");var _reactNative=require("react-native");var _floatingToolsCore=require("@buoy-gg/floating-tools-core");var _jsxRuntime=require("react/jsx-runtime");const DIAL_A11Y={network:"Network",images:"Images","image-overlay":"Image Overlay",assets:"Assets",query:"React Query",storage:"Storage",env:"Env",console:"Console",events:"Events",redux:"Redux",zustand:"Zustand",jotai:"Jotai","route-events":"Routes","time-machine":"Time Machine",clock:"Clock",permissions:"Permissions","highlight-updates":"Highlight Updates","debug-borders":"Debug Borders","perf-monitor":"Bench HUD","js-top":"JS Top","js-top-modal":"JS Top",impersonate:"Impersonate","perf-monitor-modal":"Bench"};function dialAccessibilityLabel(t,e){if(t&&DIAL_A11Y[t])return DIAL_A11Y[t];return e}const VIEW_SIZE=_floatingToolsCore.DIAL_ICON_SIZE;const DialIcon=({index:t,icon:e,iconsProgress:u,onPress:y,totalIcons:s,active:I})=>{const r=(0,_react.useRef)(new _reactNative.Animated.Value(1)).current;const{width:g}=(0,_reactNative.useWindowDimensions)();const a=(0,_react.useMemo)(()=>(0,_floatingToolsCore.getDialLayout)({screenWidth:g}),[g]);const f=_floatingToolsCore.dialAnimationConfig?.icons??{pressIn:{scale:.95,damping:15,stiffness:400},pressOut:{scale:1,damping:15,stiffness:400}};const{pressIn:l,pressOut:c}=f;const b=()=>{_reactNative.Animated.spring(r,{toValue:l.scale,damping:l.damping,stiffness:l.stiffness,useNativeDriver:true}).start()};const S=()=>{_reactNative.Animated.spring(r,{toValue:c.scale,damping:c.damping,stiffness:c.stiffness,useNativeDriver:true}).start()};const o=(0,_react.useMemo)(()=>{const d=(0,_floatingToolsCore.getIconPosition)(t,s,a.iconRadius,_floatingToolsCore.DIAL_START_ANGLE);const{x:w,y:j,angle:n}=d;const p=a.iconRadius;const v=(0,_floatingToolsCore.getIconStaggerInputRange)(t,s);const i=u.interpolate({inputRange:v,outputRange:[0,0,1,1],extrapolate:"clamp"});const m=i.interpolate({inputRange:[0,1],outputRange:[Math.PI*2,0]});const h=i.interpolate({inputRange:[0,1],outputRange:[0,p]});const A=_reactNative.Animated.add(_reactNative.Animated.multiply(h,m.interpolate({inputRange:[0,Math.PI*2],outputRange:[Math.cos(n),Math.cos(n+Math.PI*2)]})),i.interpolate({inputRange:[0,1],outputRange:[0,w-p*Math.cos(n+Math.PI*2)]}));const _=_reactNative.Animated.add(_reactNative.Animated.multiply(h,m.interpolate({inputRange:[0,Math.PI*2],outputRange:[Math.sin(n),Math.sin(n+Math.PI*2)]})),i.interpolate({inputRange:[0,1],outputRange:[0,j-p*Math.sin(n+Math.PI*2)]}));const D=i.interpolate({inputRange:[0,.3,1],outputRange:[0,.3,1]});return{translateX:A,translateY:_,itemOpacity:D,progressScale:i}},[t,s,u,a]);const R={position:"absolute",left:a.circleRadius-VIEW_SIZE/2,top:a.circleRadius-VIEW_SIZE/2,opacity:o.itemOpacity,transform:[{translateX:o.translateX},{translateY:o.translateY},{scale:_reactNative.Animated.multiply(r,o.progressScale)}]};const C=e.icon===null&&!e.iconComponent;return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.view,R,!I&&styles.hidden],children:C?(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.emptySpot,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.emptyDot})}):(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>y(e),onPressIn:b,onPressOut:S,style:styles.pressable,testID:e.id?`buoy-dial-${e.id}`:void 0,accessibilityLabel:dialAccessibilityLabel(e.id,e.name),accessibilityRole:"button",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.iconGradientBg,{backgroundColor:"rgba(0, 0, 0, 0.2)"}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.iconInnerGlow,{backgroundColor:"rgba(255, 255, 255, 0.02)"}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.iconWrapper,children:e.iconComponent?(()=>{const d=e.iconComponent;return(0,_jsxRuntime.jsx)(d,{slot:"dial",size:_floatingToolsCore.DIAL_ICON_GLYPH_SIZE})})():(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.iconClamp,children:e.icon})}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:styles.label,numberOfLines:1,adjustsFontSizeToFit:true,minimumFontScale:.7,children:e.name.toUpperCase()})]})})};exports.DialIcon=DialIcon;const styles=_reactNative.StyleSheet.create({view:{width:VIEW_SIZE,height:VIEW_SIZE,justifyContent:"center",alignItems:"center"},hidden:{display:"none"},pressable:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center",padding:4,backgroundColor:"transparent"},iconGradientBg:{position:"absolute",width:"85%",height:"85%",borderRadius:12,opacity:.3},iconInnerGlow:{position:"absolute",width:"70%",height:"70%",borderRadius:10,opacity:.5},iconWrapper:{marginBottom:4,alignItems:"center",justifyContent:"center"},iconClamp:{width:_floatingToolsCore.DIAL_ICON_GLYPH_SIZE,height:_floatingToolsCore.DIAL_ICON_GLYPH_SIZE,alignItems:"center",justifyContent:"center",overflow:"hidden"},label:{fontSize:_floatingToolsCore.dialStyles.icon.label.fontSize,fontWeight:_floatingToolsCore.dialStyles.icon.label.fontWeight,letterSpacing:_floatingToolsCore.dialStyles.icon.label.letterSpacing,fontFamily:_floatingToolsCore.dialStyles.icon.label.fontFamily,marginTop:_floatingToolsCore.dialStyles.icon.label.marginTop,color:_floatingToolsCore.dialColors.iconLabel},emptySpot:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center"},emptyDot:{width:_floatingToolsCore.dialStyles.emptySlot.dotSize,height:_floatingToolsCore.dialStyles.emptySlot.dotSize,borderRadius:_floatingToolsCore.dialStyles.emptySlot.dotSize/2,backgroundColor:_floatingToolsCore.dialColors.emptyDotBackground,borderWidth:_floatingToolsCore.dialStyles.emptySlot.borderWidth,borderColor:_floatingToolsCore.dialColors.emptyDotBorder}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.externalSyncOptions=externalSyncOptions;exports.shouldMountExternalSync=shouldMountExternalSync;function externalSyncOptions(e){return typeof e==="object"&&e!==null?e:void 0}function shouldMountExternalSync({isDevelopment:e,isLicensed:n,externalSync:t,isAvailable:r}){if(t===false)return false;if(!r)return false;if(e)return true;return n&&externalSyncOptions(t)?.enableInRelease===true}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.RELEASE_GATED_ACTIONS=exports.RELEASE_DEFAULT_SOCKET_URL=void 0;exports.applyReleaseActionPolicy=applyReleaseActionPolicy;exports.externalSyncOptions=externalSyncOptions;exports.releaseTransportProblem=releaseTransportProblem;exports.shouldMountExternalSync=shouldMountExternalSync;function externalSyncOptions(e){return typeof e==="object"&&e!==null?e:void 0}function shouldMountExternalSync({isDevelopment:e,isLicensed:n,externalSync:r,isAvailable:t}){if(r===false)return false;if(!t)return false;if(e)return true;const o=externalSyncOptions(r);return n&&o?.enableInRelease===true&&releaseTransportProblem(o.socketURL,o)===null}const RELEASE_DEFAULT_SOCKET_URL=exports.RELEASE_DEFAULT_SOCKET_URL="http://localhost:42831";function isLoopbackHost(e){return e==="localhost"||e.endsWith(".localhost")||/^127\.\d+\.\d+\.\d+$/.test(e)||e==="[::1]"||e==="::1"||e==="10.0.2.2"}function releaseTransportProblem(e,n){const r=e??RELEASE_DEFAULT_SOCKET_URL;if(n?.allowInsecureNetwork===true)return null;let t;try{t=new URL(r)}catch{return`[Buoy] externalSync.socketURL "${r}" isn't a valid URL, so this release build won't connect to Buoy Desktop.`}if(t.protocol==="https:"||t.protocol==="wss:")return null;if(isLoopbackHost(t.hostname))return null;return`[Buoy] This release build won't connect to ${r}: release sync carries real user data, and plain http to another machine is readable by anyone on the same network. Use a simulator, an emulator or adb reverse (localhost), an https:// broker, or set externalSync.allowInsecureNetwork: true for a network you trust.`}const RELEASE_GATED_ACTIONS=exports.RELEASE_GATED_ACTIONS={impersonate:["searchUsers","startImpersonation","resumeImpersonation","updateSettings","removeFromHistory","clearHistory"]};function applyReleaseActionPolicy(e,n,r){if(n)return e;let t=null;for(const[o,u]of Object.entries(RELEASE_GATED_ACTIONS)){if(r?.includes(o))continue;const s=e[o];if(!s?.actions)continue;const a={...s.actions};for(const l of u){if(!(l in a))continue;a[l]=()=>{throw new Error(`${o}.${l} is off in release builds. To allow it from Buoy Desktop and the MCP, pass externalSync={{ enableInRelease: true, releaseActions: ["${o}"] }}.`)}}t??={...e};t[o]={...s,actions:a}}return t??e}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SDK_VERSION=void 0;const SDK_VERSION=exports.SDK_VERSION="7.0.42";
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SDK_VERSION=void 0;const SDK_VERSION=exports.SDK_VERSION="7.0.44";
@@ -1 +1 @@
1
- "use strict";import{useEffect as m,useMemo as S,useRef as I}from"react";import{LicenseManager as _,useLicense as j}from"@buoy-gg/license";import{registerToolAdapters as x}from"@buoy-gg/shared-ui";import{externalSyncOptions as E,shouldMountExternalSync as L}from"./externalSyncGate.js";import{useDeviceIdentity as h}from"./deviceIdentity.js";import{appSyncAdapter as k}from"./sync/appSyncAdapter.js";import{jsx as u,Fragment as B,jsxs as D}from"react/jsx-runtime";const M=["ConsoleRoot","RouteTracker","ReactQueryTracker","ReduxAutoInstrument","PerfMonitorRoot","AutomationResumer","ImagesRoot"];const N=["DebugBordersStandaloneOverlay","HighlightUpdatesOverlay","ImageOverlayStandalone","PerfMonitorOverlay","JsTopHudOverlay","ImpersonateOverlay","ScenariosOverlay"];export function BrowserToolRuntime(e){const s=S(()=>Object.fromEntries(Object.entries(e.modules).map(([i,f])=>[i.replace(/^@buoy-gg\//,"").replace(/\/web$/,""),f])),[e.modules]);const c=s["react-query"];return c?.useReactQuerySyncAdapter?u(T,{...e,modules:s,query:c}):u(R,{...e,modules:s})}function T(e){const s=e.query.useReactQuerySyncAdapter();return u(R,{...e,queryAdapter:s})}function R({modules:e,apps:s,requiredEnvVars:c,externalSync:i,headless:f,sentryGetClient:l,queryAdapter:o}){const{isPro:p,tier:O}=j();const y=S(()=>{const n={app:k};for(const[t,r]of Object.entries(e)){for(const[a,d]of Object.entries(r)){if(a.endsWith("SyncAdapter")&&d&&typeof d==="object")n[t]=d}}if(o)n.query=o;if(e.env?.createEnvSyncAdapter)n.env=e.env.createEnvSyncAdapter(c??[]);for(const t of s??[])if(t.sync)n[`custom:${t.id}`]=t.sync;return n},[e,s,c,o]);const v=I(y);v.current=y;m(()=>x(()=>v.current),[]);m(()=>{const n=[];const t=r=>{const a=r?.();if(typeof a==="function")n.push(a)};t(e.network?.startNetworkCapture);t(e.storage?.startBrowserStorageCapture);t(e.assets?.startBrowserAssetCapture);if(e.storage?.storageSyncAdapter?.subscribe)t(()=>e.storage.storageSyncAdapter.subscribe(()=>{}));if(e["focus-inspector"]?.focusInspectorSyncAdapter?.subscribe)t(()=>e["focus-inspector"].focusInspectorSyncAdapter.subscribe(()=>{}));return()=>{for(const r of n.reverse())r()}},[e]);const b=e["external-sync"];const A=typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production";const w=L({isDevelopment:A,isLicensed:p,externalSync:i,isAvailable:Boolean(b)});const g=e.sentry?.SentryRoot;return D(B,{children:[Object.entries(e).flatMap(([n,t])=>M.map(r=>{const a=t[r];return a?u(a,{},`${n}:${r}`):null})),g&&u(g,{getClient:l}),Object.entries(e).flatMap(([n,t])=>N.map(r=>{const a=t[r];return a&&(!f||r==="ScenariosOverlay"||r==="ImpersonateOverlay")?u(a,{},`${n}:${r}`):null})),w&&u($,{module:b,tools:y,options:E(i),isPro:p,tier:O})]})}function $({module:e,tools:s,options:c,isPro:i,tier:f}){const l=h(c,{appName:typeof document==="undefined"?null:document.title||location.hostname,hardwareName:"Browser",platform:"web"});const{socket:o}=e.useExternalSyncSocket({deviceName:l?.deviceName??"Buoy Browser",socketURL:c?.socketURL??e.getDefaultSocketURL(),persistentDeviceId:l?.deviceId??null,platform:"web",enableLogs:c?.enableLogs});m(()=>{if(!o)return;const p=()=>{if(o.connected&&_.hasAccountAccess())o.emit("device-license",{isPro:i?"1":"0",tier:f})};p();o.on("connect",p);return()=>{o.off("connect",p)}},[o,i,f]);e.useExternalSync({tools:s,socket:o,deviceId:l?.deviceId??null,enableLogs:c?.enableLogs});return null}
1
+ "use strict";import{useEffect as R,useMemo as g,useRef as L}from"react";import{LicenseManager as I,useLicense as j}from"@buoy-gg/license";import{registerToolAdapters as x}from"@buoy-gg/shared-ui";import{RELEASE_DEFAULT_SOCKET_URL as k,applyReleaseActionPolicy as T,externalSyncOptions as h,releaseTransportProblem as B,shouldMountExternalSync as D}from"./externalSyncGate.js";import{useDeviceIdentity as M}from"./deviceIdentity.js";import{appSyncAdapter as N}from"./sync/appSyncAdapter.js";import{jsx as l,Fragment as U,jsxs as C}from"react/jsx-runtime";const P=["ConsoleRoot","RouteTracker","ReactQueryTracker","ReduxAutoInstrument","PerfMonitorRoot","AutomationResumer","ImagesRoot"];const $=["DebugBordersStandaloneOverlay","HighlightUpdatesOverlay","ImageOverlayStandalone","PerfMonitorOverlay","JsTopHudOverlay","ImpersonateOverlay","ScenariosOverlay"];export function BrowserToolRuntime(e){const o=g(()=>Object.fromEntries(Object.entries(e.modules).map(([i,f])=>[i.replace(/^@buoy-gg\//,"").replace(/\/web$/,""),f])),[e.modules]);const s=o["react-query"];return s?.useReactQuerySyncAdapter?l(Q,{...e,modules:o,query:s}):l(E,{...e,modules:o})}function Q(e){const o=e.query.useReactQuerySyncAdapter();return l(E,{...e,queryAdapter:o})}function E({modules:e,apps:o,requiredEnvVars:s,externalSync:i,headless:f,sentryGetClient:p,queryAdapter:u}){const{isPro:c,tier:d}=j();const m=g(()=>{const r={app:N};for(const[t,n]of Object.entries(e)){for(const[a,b]of Object.entries(n)){if(a.endsWith("SyncAdapter")&&b&&typeof b==="object")r[t]=b}}if(u)r.query=u;if(e.env?.createEnvSyncAdapter)r.env=e.env.createEnvSyncAdapter(s??[]);for(const t of o??[])if(t.sync)r[`custom:${t.id}`]=t.sync;return r},[e,o,s,u]);const y=L(m);y.current=m;R(()=>x(()=>y.current),[]);R(()=>{const r=[];const t=n=>{const a=n?.();if(typeof a==="function")r.push(a)};t(e.network?.startNetworkCapture);t(e.storage?.startBrowserStorageCapture);t(e.assets?.startBrowserAssetCapture);if(e.storage?.storageSyncAdapter?.subscribe)t(()=>e.storage.storageSyncAdapter.subscribe(()=>{}));if(e["focus-inspector"]?.focusInspectorSyncAdapter?.subscribe)t(()=>e["focus-inspector"].focusInspectorSyncAdapter.subscribe(()=>{}));return()=>{for(const n of r.reverse())n()}},[e]);const A=e["external-sync"];const S=typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production";const _=D({isDevelopment:S,isLicensed:c,externalSync:i,isAvailable:Boolean(A)});const v=h(i);if(!S&&v?.enableInRelease)q(B(v.socketURL,v));const O=e.sentry?.SentryRoot;return C(U,{children:[Object.entries(e).flatMap(([r,t])=>P.map(n=>{const a=t[n];return a?l(a,{},`${r}:${n}`):null})),O&&l(O,{getClient:p}),Object.entries(e).flatMap(([r,t])=>$.map(n=>{const a=t[n];return a&&(!f||n==="ScenariosOverlay"||n==="ImpersonateOverlay")?l(a,{},`${r}:${n}`):null})),_&&l(F,{module:A,tools:m,options:v,isPro:c,tier:d,dev:S})]})}let w=null;function q(e){if(!e||e===w)return;w=e;console.warn(e)}function F({module:e,tools:o,options:s,isPro:i,tier:f,dev:p}){const u=M(s,{appName:typeof document==="undefined"?null:document.title||location.hostname,hardwareName:"Browser",platform:"web"});const{socket:c}=e.useExternalSyncSocket({deviceName:u?.deviceName??"Buoy Browser",socketURL:s?.socketURL??(p?e.getDefaultSocketURL():k),persistentDeviceId:u?.deviceId??null,platform:"web",enableLogs:s?.enableLogs});R(()=>{if(!c)return;const y=()=>{if(c.connected&&I.hasAccountAccess())c.emit("device-license",{isPro:i?"1":"0",tier:f})};y();c.on("connect",y);return()=>{c.off("connect",y)}},[c,i,f]);const d=s?.releaseActions?.join(",")??"";const m=g(()=>T(o,p,d?d.split(","):void 0),[o,p,d]);e.useExternalSync({tools:m,socket:c,deviceId:u?.deviceId??null,enableLogs:s?.enableLogs});return null}
@@ -1 +1 @@
1
- "use strict";import{FloatingToolHost as re}from"@buoy-gg/shared-ui";import{AccountSetup as te}from"@buoy-gg/shared-ui";import Pe,{useMemo as t,useCallback as oe,useEffect as I}from"react";import{View as w,StyleSheet as B}from"react-native";import{AppHostProvider as ne}from"./AppHost";import{FloatingMenu as ie}from"./FloatingMenu.js";import{AppOverlay as se}from"./AppHost";import{ToolOpenerBridge as ue}from"./ToolOpenerBridge.js";import{autoDiscoverPresets as ce,autoDiscoverPresetsWithCustom as le}from"./autoDiscoverPresets.js";import{sendInstallPing as ae}from"../telemetry/installPing.js";import{isTelemetryEnabled as ge}from"../Buoy.js";import{renderAppIcon as ye}from"./AppIcon";import{DevToolsVisibilityProvider as me}from"./DevToolsVisibilityContext.js";import{reportOptionalRequireError as n}from"./optionalRequire.js";import{HintsProvider as pe,normalizeEnvironment as de}from"@buoy-gg/shared-ui";import{MinimizedToolsProvider as fe}from"./MinimizedToolsContext.js";import{validateDialConfig as be}from"./defaultConfig.js";import{DefaultConfigProvider as ve}from"./DefaultConfigContext.js";import{LicenseManager as he,useProAccess as Oe,useLicense as Te}from"@buoy-gg/license";import{AutoExternalSync as J,ToolRegistryPublisher as Ae,isExternalSyncAvailable as qe}from"./autoExternalSync.js";import{externalSyncOptions as N,shouldMountExternalSync as Ee}from"./externalSyncGate.js";import{jsx as r,Fragment as v,jsxs as g}from"react/jsx-runtime";export const FloatingDevTools=({apps:h,requiredEnvVars:i,requiredStorageKeys:m,askBuoy:O,children:Q,disableHints:W=false,defaultFloatingTools:G,defaultDialTools:p,requireLicense:xe,licenseKey:d,zustandStores:T,environment:X,externalSync:A=true,headless:D=false,...P})=>{const Y=X??de(process.env.NODE_ENV??"dev");const{isLicensed:f}=Oe();const{licenseKey:q,isInitialized:k,tier:b,access:s}=Te();const Z=d===void 0||d.trim().toUpperCase()===(q??"");const $=Z&&s.status==="admitted";I(()=>{if(!k||s.status==="initializing")return;void ae({tier:s.status==="admitted"?b:"locked",enabled:ge()})},[k,s.status,b]);I(()=>{void he.configure(d).catch(()=>{})},[d]);I(()=>{if(!T||s.status==="locked")return;try{const{watchStores:e}=require("@buoy-gg/zustand");return e(T)}catch(e){n("@buoy-gg/zustand",e)}},[T,s.status]);const K=t(()=>{if(p){return be(p)}return p},[p]);const E=t(()=>{const e=[];if(i&&i.length>0){try{const{createEnvTool:o,createEnvVarConfig:R}=require("@buoy-gg/env");e.push(o({requiredEnvVars:R(i)}))}catch(o){n("@buoy-gg/env",o)}}if(m&&m.length>0){try{const{createStorageTool:o}=require("@buoy-gg/storage");e.push(o({requiredStorageKeys:m}))}catch(o){n("@buoy-gg/storage",o)}}if(O){try{const{createAskBuoyTool:o}=require("@buoy-gg/ask-buoy");e.push(o(O))}catch(o){n("@buoy-gg/ask-buoy",o)}}return e},[i,m,O]);const _=t(()=>{if(!h&&E.length===0)return void 0;return[...h||[],...E]},[h,E]);const y=t(()=>_?le(_):ce(),[_]);const x=t(()=>y.filter(e=>e.sync),[y]);const z=t(()=>{try{const{DebugBordersStandaloneOverlay:e}=require("@buoy-gg/debug-borders");return e}catch(e){n("@buoy-gg/debug-borders",e);return null}},[]);const C=t(()=>{try{const{HighlightUpdatesOverlay:e}=require("@buoy-gg/highlight-updates");return e}catch(e){n("@buoy-gg/highlight-updates",e);return null}},[]);const M=t(()=>{try{const{ImageOverlayStandalone:e}=require("@buoy-gg/image-overlay");return e}catch(e){n("@buoy-gg/image-overlay",e);return null}},[]);const F=t(()=>{try{const{PerfMonitorOverlay:e}=require("@buoy-gg/perf-monitor");return e}catch(e){n("@buoy-gg/perf-monitor",e);return null}},[]);const H=t(()=>{try{const{JsTopHudOverlay:e}=require("@buoy-gg/js-top");return e}catch(e){n("@buoy-gg/js-top",e);return null}},[]);const u=t(()=>{try{const{RouteTracker:e}=require("@buoy-gg/route-events");return e}catch(e){n("@buoy-gg/route-events",e);return null}},[]);const c=t(()=>{try{const{ReactQueryTracker:e}=require("@buoy-gg/react-query");return e}catch(e){n("@buoy-gg/react-query",e);return null}},[]);const j=t(()=>{try{const{ImpersonateOverlay:e}=require("@buoy-gg/impersonate");return e}catch(e){n("@buoy-gg/impersonate",e);return null}},[]);const S=t(()=>{try{const{ScenariosOverlay:e}=require("@buoy-gg/scenarios");return e}catch(e){n("@buoy-gg/scenarios",e);return null}},[]);const l=t(()=>{try{const{ReduxAutoInstrument:e}=require("@buoy-gg/redux");return e??null}catch(e){n("@buoy-gg/redux",e);return null}},[]);const a=t(()=>{try{const{ConsoleRoot:e}=require("@buoy-gg/console");return e??null}catch(e){n("@buoy-gg/console",e);return null}},[]);const ee=oe(e=>{const o=y.find(R=>R.id===e);if(!o)return null;return ye(o.icon,{slot:"dial",size:20,color:o.color})},[y]);const L=typeof __DEV__!=="undefined"&&__DEV__;if(!L&&!f){return null}const V=Ee({isDevelopment:L,isLicensed:f,externalSync:A,isAvailable:qe()});const U=r(Ae,{requiredEnvVars:i,customApps:x});if(!$){return g(v,{children:[s.status==="initializing"&&g(v,{children:[l&&r(l,{}),a&&r(a,{}),u&&r(u,{}),c&&r(c,{})]}),!D&&r(te,{})]})}if(D){return g(v,{children:[l&&r(l,{}),a&&r(a,{}),u&&r(u,{}),c&&r(c,{}),U,V&&r(J,{options:N(A),requiredEnvVars:i,isPro:f,tier:b,licenseKey:q,customApps:x})]})}return r(ve,{defaultFloatingTools:G,defaultDialTools:K,children:r(pe,{disableHints:W,children:r(w,{style:_e.container,pointerEvents:"box-none",__buoyDevToolsRoot:true,children:g(me,{children:[M&&r(w,{style:B.absoluteFill,pointerEvents:"box-none",collapsable:false,children:r(M,{})}),r(ne,{children:g(fe,{getToolIcon:ee,children:[r(ie,{...P,apps:y,environment:Y}),P.hidden?null:g(v,{children:[r(se,{}),r(re,{})]}),r(ue,{})]})}),Q,z&&r(z,{}),C&&r(C,{}),F&&r(F,{}),H&&r(H,{}),j&&r(j,{}),S&&r(S,{}),l&&r(l,{}),a&&r(a,{}),u&&r(u,{}),c&&r(c,{}),U,V&&r(J,{options:N(A),requiredEnvVars:i,isPro:f,tier:b,licenseKey:q,customApps:x})]})})})})};const _e=B.create({container:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:9999}});
1
+ "use strict";import{FloatingToolHost as oe}from"@buoy-gg/shared-ui";import{AccountSetup as ne}from"@buoy-gg/shared-ui";import Me,{useMemo as t,useCallback as se,useEffect as P}from"react";import{View as J,StyleSheet as N}from"react-native";import{AppHostProvider as ie}from"./AppHost";import{FloatingMenu as ue}from"./FloatingMenu.js";import{AppOverlay as ce}from"./AppHost";import{ToolOpenerBridge as le}from"./ToolOpenerBridge.js";import{autoDiscoverPresets as ae,autoDiscoverPresetsWithCustom as ge}from"./autoDiscoverPresets.js";import{sendInstallPing as ye}from"../telemetry/installPing.js";import{isTelemetryEnabled as me}from"../Buoy.js";import{renderAppIcon as pe}from"./AppIcon";import{DevToolsVisibilityProvider as de}from"./DevToolsVisibilityContext.js";import{reportOptionalRequireError as n}from"./optionalRequire.js";import{HintsProvider as fe,normalizeEnvironment as be}from"@buoy-gg/shared-ui";import{MinimizedToolsProvider as ve}from"./MinimizedToolsContext.js";import{validateDialConfig as he}from"./defaultConfig.js";import{DefaultConfigProvider as Oe}from"./DefaultConfigContext.js";import{LicenseManager as Te,useProAccess as Ae,useLicense as Re}from"@buoy-gg/license";import{AutoExternalSync as Q,ToolRegistryPublisher as qe,isExternalSyncAvailable as Ee}from"./autoExternalSync.js";import{externalSyncOptions as k,releaseTransportProblem as _e,shouldMountExternalSync as Ie}from"./externalSyncGate.js";import{jsx as r,Fragment as O,jsxs as y}from"react/jsx-runtime";let W=null;function xe(s){if(!s||s===W)return;W=s;console.warn(s)}export const FloatingDevTools=({apps:s,requiredEnvVars:i,requiredStorageKeys:p,askBuoy:T,children:G,disableHints:X=false,defaultFloatingTools:Y,defaultDialTools:d,requireLicense:Pe,licenseKey:f,zustandStores:A,environment:Z,externalSync:b=true,headless:z=false,...C})=>{const $=Z??be(process.env.NODE_ENV??"dev");const{isLicensed:v}=Ae();const{licenseKey:R,isInitialized:M,tier:h,access:u}=Re();const K=f===void 0||f.trim().toUpperCase()===(R??"");const ee=K&&u.status==="admitted";P(()=>{if(!M||u.status==="initializing")return;void ye({tier:u.status==="admitted"?h:"locked",enabled:me()})},[M,u.status,h]);P(()=>{void Te.configure(f).catch(()=>{})},[f]);P(()=>{if(!A||u.status==="locked")return;try{const{watchStores:e}=require("@buoy-gg/zustand");return e(A)}catch(e){n("@buoy-gg/zustand",e)}},[A,u.status]);const re=t(()=>{if(d){return he(d)}return d},[d]);const q=t(()=>{const e=[];if(i&&i.length>0){try{const{createEnvTool:o,createEnvVarConfig:D}=require("@buoy-gg/env");e.push(o({requiredEnvVars:D(i)}))}catch(o){n("@buoy-gg/env",o)}}if(p&&p.length>0){try{const{createStorageTool:o}=require("@buoy-gg/storage");e.push(o({requiredStorageKeys:p}))}catch(o){n("@buoy-gg/storage",o)}}if(T){try{const{createAskBuoyTool:o}=require("@buoy-gg/ask-buoy");e.push(o(T))}catch(o){n("@buoy-gg/ask-buoy",o)}}return e},[i,p,T]);const E=t(()=>{if(!s&&q.length===0)return void 0;return[...s||[],...q]},[s,q]);const m=t(()=>E?ge(E):ae(),[E]);const _=t(()=>m.filter(e=>e.sync),[m]);const F=t(()=>{try{const{DebugBordersStandaloneOverlay:e}=require("@buoy-gg/debug-borders");return e}catch(e){n("@buoy-gg/debug-borders",e);return null}},[]);const H=t(()=>{try{const{HighlightUpdatesOverlay:e}=require("@buoy-gg/highlight-updates");return e}catch(e){n("@buoy-gg/highlight-updates",e);return null}},[]);const j=t(()=>{try{const{ImageOverlayStandalone:e}=require("@buoy-gg/image-overlay");return e}catch(e){n("@buoy-gg/image-overlay",e);return null}},[]);const L=t(()=>{try{const{PerfMonitorOverlay:e}=require("@buoy-gg/perf-monitor");return e}catch(e){n("@buoy-gg/perf-monitor",e);return null}},[]);const S=t(()=>{try{const{JsTopHudOverlay:e}=require("@buoy-gg/js-top");return e}catch(e){n("@buoy-gg/js-top",e);return null}},[]);const c=t(()=>{try{const{RouteTracker:e}=require("@buoy-gg/route-events");return e}catch(e){n("@buoy-gg/route-events",e);return null}},[]);const l=t(()=>{try{const{ReactQueryTracker:e}=require("@buoy-gg/react-query");return e}catch(e){n("@buoy-gg/react-query",e);return null}},[]);const w=t(()=>{try{const{ImpersonateOverlay:e}=require("@buoy-gg/impersonate");return e}catch(e){n("@buoy-gg/impersonate",e);return null}},[]);const U=t(()=>{try{const{ScenariosOverlay:e}=require("@buoy-gg/scenarios");return e}catch(e){n("@buoy-gg/scenarios",e);return null}},[]);const a=t(()=>{try{const{ReduxAutoInstrument:e}=require("@buoy-gg/redux");return e??null}catch(e){n("@buoy-gg/redux",e);return null}},[]);const g=t(()=>{try{const{ConsoleRoot:e}=require("@buoy-gg/console");return e??null}catch(e){n("@buoy-gg/console",e);return null}},[]);const te=se(e=>{const o=m.find(D=>D.id===e);if(!o)return null;return pe(o.icon,{slot:"dial",size:20,color:o.color})},[m]);const I=typeof __DEV__!=="undefined"&&__DEV__;if(!I&&!v){return null}const V=Ie({isDevelopment:I,isLicensed:v,externalSync:b,isAvailable:Ee()});const x=k(b);if(!I&&x?.enableInRelease){xe(_e(x.socketURL,x))}const B=r(qe,{requiredEnvVars:i,customApps:_});if(!ee){return y(O,{children:[u.status==="initializing"&&y(O,{children:[a&&r(a,{}),g&&r(g,{}),c&&r(c,{}),l&&r(l,{})]}),!z&&r(ne,{})]})}if(z){return y(O,{children:[a&&r(a,{}),g&&r(g,{}),c&&r(c,{}),l&&r(l,{}),B,V&&r(Q,{options:k(b),requiredEnvVars:i,isPro:v,tier:h,licenseKey:R,customApps:_})]})}return r(Oe,{defaultFloatingTools:Y,defaultDialTools:re,children:r(fe,{disableHints:X,children:r(J,{style:De.container,pointerEvents:"box-none",__buoyDevToolsRoot:true,children:y(de,{children:[j&&r(J,{style:N.absoluteFill,pointerEvents:"box-none",collapsable:false,children:r(j,{})}),r(ie,{children:y(ve,{getToolIcon:te,children:[r(ue,{...C,apps:m,environment:$}),C.hidden?null:y(O,{children:[r(ce,{}),r(oe,{})]}),r(le,{})]})}),G,F&&r(F,{}),H&&r(H,{}),L&&r(L,{}),S&&r(S,{}),w&&r(w,{}),U&&r(U,{}),a&&r(a,{}),g&&r(g,{}),c&&r(c,{}),l&&r(l,{}),B,V&&r(Q,{options:k(b),requiredEnvVars:i,isPro:v,tier:h,licenseKey:R,customApps:_})]})})})})};const De=N.create({container:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:9999}});
@@ -1 +1 @@
1
- "use strict";import fo,{useEffect as r,useMemo as I,useRef as k,useState as m}from"react";import{TouchableOpacity as L,StyleSheet as X,View as l}from"react-native";import{absoluteFill as N}from"@buoy-gg/shared-ui";import{FloatingTools as Z,UserStatus as oo}from"./floatingTools";import{renderAppIcon as W}from"./AppIcon";import{DialDevTools as eo}from"./dial/DialDevTools";import{EnvironmentIndicator as to,persistentStorage as p,useHintsDisabled as no,devToolsStorageKeys as G,buoyColors as so}from"@buoy-gg/shared-ui";import{useDevToolsSettings as io}from"./DevToolsSettingsModal";import{useAppHost as ro}from"./AppHost";import{useDevToolsVisibility as lo}from"./DevToolsVisibilityContext.js";import{toggleStateManager as ao}from"./ToggleStateManager.js";import{OnboardingTooltip as co}from"./dial/OnboardingTooltip";import{jsx as e,jsxs as _,Fragment as uo}from"react/jsx-runtime";const V="@react_buoy_floating_menu_tooltip_shown";const Co="@react_buoy_onboarding_step";export const FloatingMenu=({apps:n,state:f,actions:a,hidden:h,environment:c,userRole:w="admin",availableEnvironments:b,onEnvironmentSwitch:C})=>{const[M,S]=m(false);const[s,d]=m(false);const[x,K]=m(false);const[U,A]=m(null);const[,E]=m(0);const F=k(false);const D=no();r(()=>{const o=async()=>{try{const t=await p.getItem(G.dial.isOpen());if(t==="true"){d(true)}}catch(t){}finally{K(true)}};o()},[]);r(()=>{if(!x)return;p.setItem(G.dial.isOpen(),s?"true":"false").catch(o=>{console.warn("Failed to save dial state:",o)})},[s,x]);const P=Boolean(b?.length&&C);const{isAnyOpen:i,open:Y,registerApps:O}=ro();const R=k(i);const{setDialOpen:B,setToolOpen:H}=lo();r(()=>{if(D){return}const o=async()=>{try{const t=await p.getItem(V);if(!t){setTimeout(()=>{A("positioning")},1e3)}}catch(t){}};o()},[D]);r(()=>{const o=ao.subscribe(()=>{E(t=>t+1)});return o},[]);r(()=>{B(s)},[s,B]);r(()=>{H(i)},[i,H]);const $=I(()=>Boolean(s||i),[s,i]);const v=I(()=>Boolean(h??M),[h,M]);const{settings:y}=io();r(()=>{if(O){O(n)}},[n,O]);const T=I(()=>{return{...a??{},closeMenu:()=>d(false),hideFloatingRow:()=>S(true),showFloatingRow:()=>S(false),notifyToggleChange:()=>E(o=>o+1)}},[a]);r(()=>{if(R.current&&!i){S(false);d(false)}R.current=i},[i]);const q=o=>{if(!y)return false;return y.floatingTools[o]??false};const J=o=>{o?.onPress?.(T);if(o.launchMode!=="toggle-only"){const t=W(o.icon,{slot:"dial",size:20,color:o.color});Y({id:o.id,title:o.name,component:o.component,props:o.props,launchMode:o.launchMode??"self-modal",singleton:o.singleton??true,icon:t,color:o.color,modal:o.modal})}};const j=()=>{F.current=true;A(null);p.setItem(V,"true").catch(o=>{console.warn("Failed to save onboarding state:",o)})};const z=()=>{if(u){j()}d(true)};const u=U==="positioning"&&!F.current&&!D;const Q=!u;return _(uo,{children:[u&&!s&&!i&&_(l,{style:g.onboardingContainer,children:[e(l,{style:g.onboardingBackdrop}),e(co,{visible:true,onDismiss:j,title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools."})]}),e(l,{nativeID:"floating-devtools-root",pointerEvents:v||s?"none":"box-none",style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:u?10001:9999,opacity:v?0:1},children:_(Z,{enablePositionPersistence:Q,pushToSide:$,centerOnboarding:u,environment:c,availableEnvironments:b,onEnvironmentSwitch:C,showEnvironmentSelector:P&&y?.floatingTools?.environment,children:[c&&y?.floatingTools?.environment!==false&&!P?e(to,{environment:c}):null,w?e(oo,{userRole:w,onPress:z}):e(L,{accessibilityLabel:"Open Dev Tools Menu",onPress:z,style:g.fab,children:e(l,{style:g.menuButton,children:e(mo,{size:14})})}),n.filter(o=>(o.slot??"both")!=="dial"&&q(o.id)).map(o=>e(L,{accessibilityLabel:o.name,onPress:()=>J(o),style:g.fab,children:(()=>{if(typeof o.icon==="function"){const t=o.icon;return e(t,{slot:"row",size:16,state:f,actions:T})}return W(o.icon,{slot:"row",size:16,color:o.color})})()},`row-${o.id}`))]})}),s&&!v&&e(eo,{apps:n,state:f,actions:T,onClose:()=>{d(false)}})]})};const g=X.create({fab:{paddingHorizontal:6,paddingVertical:4,borderRadius:6,marginRight:4,alignItems:"center",justifyContent:"center",minWidth:0,minHeight:0,backgroundColor:"transparent"},menuButton:{paddingHorizontal:4,paddingVertical:2,minWidth:16,alignItems:"center",justifyContent:"center"},menuDots:{color:"#8CA2C8",fontSize:14,fontWeight:"900"},onboardingContainer:{...N,zIndex:1e4},onboardingBackdrop:{...N,backgroundColor:"rgba(0, 0, 0, 0.85)"}});const mo=({size:n=14,color:f=so.primary})=>{const a=Math.max(2,Math.floor(n/4));const h=Math.max(1,Math.floor(n/16));const c=Array.from({length:9});return e(l,{style:{width:n,height:n,flexDirection:"row",flexWrap:"wrap",alignContent:"center",justifyContent:"center"},children:c.map((w,b)=>e(l,{style:{width:a,height:a,margin:h,borderRadius:2,backgroundColor:f}},b))})};
1
+ "use strict";import Oe,{useEffect as r,useMemo as M,useRef as A,useState as m}from"react";import{TouchableOpacity as K,StyleSheet as se,View as l}from"react-native";import{absoluteFill as U,registerToolOpener as ie}from"@buoy-gg/shared-ui";import{FloatingTools as re,UserStatus as le}from"./floatingTools";import{renderAppIcon as Y}from"./AppIcon";import{DialDevTools as ae}from"./dial/DialDevTools";import{EnvironmentIndicator as ce,persistentStorage as y,useHintsDisabled as de,devToolsStorageKeys as $,buoyColors as ue}from"@buoy-gg/shared-ui";import{useDevToolsSettings as me}from"./DevToolsSettingsModal";import{useAppHost as ge}from"./AppHost";import{useDevToolsVisibility as fe}from"./DevToolsVisibilityContext.js";import{toggleStateManager as he}from"./ToggleStateManager.js";import{OnboardingTooltip as be}from"./dial/OnboardingTooltip";import{jsx as n,jsxs as x,Fragment as pe}from"react/jsx-runtime";const q="@react_buoy_floating_menu_tooltip_shown";const Ee="@react_buoy_onboarding_step";export const FloatingMenu=({apps:t,state:f,actions:a,hidden:h,environment:c,userRole:w="admin",availableEnvironments:b,onEnvironmentSwitch:P})=>{const[R,O]=m(false);const[s,d]=m(false);const[E,J]=m(false);const[Q,F]=m(null);const[,B]=m(0);const H=A(false);const S=de();r(()=>{const e=async()=>{try{const o=await y.getItem($.dial.isOpen());if(o==="true"){d(true)}}catch(o){}finally{J(true)}};e()},[]);r(()=>{if(!E)return;y.setItem($.dial.isOpen(),s?"true":"false").catch(e=>{console.warn("Failed to save dial state:",e)})},[s,E]);const j=Boolean(b?.length&&P);const{isAnyOpen:i,open:X,registerApps:D,openApps:z}=ge();const k=A(i);const{setDialOpen:L,setToolOpen:N}=fe();r(()=>{if(S){return}const e=async()=>{try{const o=await y.getItem(q);if(!o){setTimeout(()=>{F("positioning")},1e3)}}catch(o){}};e()},[S]);r(()=>{const e=he.subscribe(()=>{B(o=>o+1)});return e},[]);r(()=>{L(s)},[s,L]);r(()=>{N(i)},[i,N]);const Z=M(()=>Boolean(s||i),[s,i]);const v=M(()=>Boolean(h??R),[h,R]);const{settings:p}=me();r(()=>{if(D){D(t)}},[t,D]);const T=M(()=>{return{...a??{},closeMenu:()=>d(false),hideFloatingRow:()=>O(true),showFloatingRow:()=>O(false),notifyToggleChange:()=>B(e=>e+1)}},[a]);r(()=>{if(k.current&&!i){O(false);d(false)}k.current=i},[i]);const ee=e=>{if(!p)return false;return p.floatingTools[e]??false};const I=e=>{e?.onPress?.(T);if(e.launchMode!=="toggle-only"){const o=Y(e.icon,{slot:"dial",size:20,color:e.color});X({id:e.id,title:e.name,component:e.component,props:e.props,launchMode:e.launchMode??"self-modal",singleton:e.singleton??true,icon:o,color:e.color,modal:e.modal})}};const W=A({apps:t,openApps:z,handlePress:I});W.current={apps:t,openApps:z,handlePress:I};r(()=>ie(e=>{const{apps:o,openApps:ne,handlePress:te}=W.current;if(ne.some(C=>C.id===e))return false;const _=o.find(C=>C.id===e);if(!_||_.launchMode==="toggle-only")return false;te(_);return true}),[]);const G=()=>{H.current=true;F(null);y.setItem(q,"true").catch(e=>{console.warn("Failed to save onboarding state:",e)})};const V=()=>{if(u){G()}d(true)};const u=Q==="positioning"&&!H.current&&!S;const oe=!u;return x(pe,{children:[u&&!s&&!i&&x(l,{style:g.onboardingContainer,children:[n(l,{style:g.onboardingBackdrop}),n(be,{visible:true,onDismiss:G,title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools."})]}),n(l,{nativeID:"floating-devtools-root",pointerEvents:v||s?"none":"box-none",style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:u?10001:9999,opacity:v?0:1},children:x(re,{enablePositionPersistence:oe,pushToSide:Z,centerOnboarding:u,environment:c,availableEnvironments:b,onEnvironmentSwitch:P,showEnvironmentSelector:j&&p?.floatingTools?.environment,children:[c&&p?.floatingTools?.environment!==false&&!j?n(ce,{environment:c}):null,w?n(le,{userRole:w,onPress:V}):n(K,{accessibilityLabel:"Open Dev Tools Menu",onPress:V,style:g.fab,children:n(l,{style:g.menuButton,children:n(ye,{size:14})})}),t.filter(e=>(e.slot??"both")!=="dial"&&ee(e.id)).map(e=>n(K,{accessibilityLabel:e.name,onPress:()=>I(e),style:g.fab,children:(()=>{if(typeof e.icon==="function"){const o=e.icon;return n(o,{slot:"row",size:16,state:f,actions:T})}return Y(e.icon,{slot:"row",size:16,color:e.color})})()},`row-${e.id}`))]})}),s&&!v&&n(ae,{apps:t,state:f,actions:T,onClose:()=>{d(false)}})]})};const g=se.create({fab:{paddingHorizontal:6,paddingVertical:4,borderRadius:6,marginRight:4,alignItems:"center",justifyContent:"center",minWidth:0,minHeight:0,backgroundColor:"transparent"},menuButton:{paddingHorizontal:4,paddingVertical:2,minWidth:16,alignItems:"center",justifyContent:"center"},menuDots:{color:"#8CA2C8",fontSize:14,fontWeight:"900"},onboardingContainer:{...U,zIndex:1e4},onboardingBackdrop:{...U,backgroundColor:"rgba(0, 0, 0, 0.85)"}});const ye=({size:t=14,color:f=ue.primary})=>{const a=Math.max(2,Math.floor(t/4));const h=Math.max(1,Math.floor(t/16));const c=Array.from({length:9});return n(l,{style:{width:t,height:t,flexDirection:"row",flexWrap:"wrap",alignContent:"center",justifyContent:"center"},children:c.map((w,b)=>n(l,{style:{width:a,height:a,margin:h,borderRadius:2,backgroundColor:f}},b))})};
@@ -1 +1 @@
1
- "use strict";import ae,{createContext as J,useCallback as H,useContext as X,useEffect as T,useMemo as G,useRef as I,useState as b}from"react";import{Animated as i,StyleSheet as Q,Text as Y,View as R}from"react-native";import{JsModal as Z,ModalHeader as u,HeaderSearchButton as ee,TickProvider as te,devToolsStorageKeys as k,buoyColors as V,gameUIColors as g}from"@buoy-gg/shared-ui";import{jsx as t,jsxs as f}from"react/jsx-runtime";const h=()=>{};const oe={search:"",isSearchActive:false,clearSearch:h,close:h,minimize:h,showToast:h,setHeaderOverride:h};const B=J(null);export function useToolHost(){return X(B)??oe}export function useToolHeader(e,o){const{setHeaderOverride:n}=useToolHost();T(()=>{n(e);return()=>n(null)},o)}const D=2200;const se={success:g.success,error:g.error,info:g.info};function re({message:e,type:o,nonce:n}){const r=I(new i.Value(0)).current;T(()=>{r.setValue(0);i.sequence([i.timing(r,{toValue:1,duration:150,useNativeDriver:true}),i.delay(D-450),i.timing(r,{toValue:0,duration:300,useNativeDriver:true})]).start()},[n,r]);const a=se[o];return f(i.View,{pointerEvents:"none",style:[S.toast,{opacity:r,borderColor:a+"60"}],children:[t(R,{style:[S.toastDot,{backgroundColor:a}]}),t(Y,{style:S.toastText,numberOfLines:2,children:e})]})}export function ToolModalShell({app:e,config:o,visible:n,zIndex:r,onClose:a,onMinimize:v,initialModalState:M,enableSharedModalDimensions:_,bodyProps:N}){const P=e.component;const[s,w]=b(false);const[x,O]=b("");const[c,j]=b(null);const[m,p]=b(null);const l=I(null);const d=H(()=>{w(false);O("")},[]);const A=H(($,q="info")=>{if(l.current)clearTimeout(l.current);p(F=>({message:$,type:q,nonce:(F?.nonce??0)+1}));l.current=setTimeout(()=>p(null),D)},[]);T(()=>{return()=>{if(l.current)clearTimeout(l.current)}},[]);const z=G(()=>({search:s?x:"",isSearchActive:s,clearSearch:d,close:a,minimize:()=>v(),showToast:A,setHeaderOverride:j,instanceId:e.instanceId}),[x,s,d,a,v,A,e.instanceId]);const K=c?.title??o.title??e.title??e.id;const L=c?.subtitle??o.subtitle;const y=c?.onBack;const E=c?.actions??o.headerActions;const C=c?.searchable??o.searchable;T(()=>{if(!C&&s)d()},[C,s,d]);const W=_?k.modal.root():k.custom(e.id).modal();const U=f(u,{children:[y&&!s&&t(u.Navigation,{onBack:y}),s?t(u.Search,{value:x,onChangeText:O,onCancel:d,placeholder:o.searchPlaceholder,testID:`tool-search-field-${e.id}`}):t(u.Content,{title:K,subtitle:L}),f(u.Actions,{children:[!s&&E,C&&!s&&t(ee,{variant:"chip",testID:`tool-search-${e.id}`,onPress:()=>w(true)})]})]});return t(B.Provider,{value:z,children:t(Z,{visible:n,onClose:a,onBack:y,onMinimize:v,initialModalState:M,zIndex:r,persistenceKey:W,enablePersistence:true,initialMode:o.initialMode??"bottomSheet",header:{customContent:U,showToggleButton:true},disableScrollWrapper:true,styles:{},children:f(R,{style:S.bodyRoot,children:[t(te,{children:t(P,{...N})}),m&&t(re,{message:m.message,type:m.type,nonce:m.nonce})]})})})}const S=Q.create({bodyRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},toast:{position:"absolute",bottom:16,alignSelf:"center",flexDirection:"row",alignItems:"center",gap:8,maxWidth:"86%",backgroundColor:V.card,borderWidth:1,borderRadius:8,paddingHorizontal:12,paddingVertical:8,shadowColor:"#000",shadowOpacity:.4,shadowRadius:8,shadowOffset:{width:0,height:2},elevation:6},toastDot:{width:6,height:6,borderRadius:3},toastText:{flex:1,fontSize:12,color:V.text}});
1
+ "use strict";import ie,{createContext as J,useCallback as I,useContext as X,useEffect as T,useMemo as G,useRef as R,useState as b}from"react";import{Animated as i,StyleSheet as Q,Text as Y,View as k}from"react-native";import{JsModal as Z,ModalHeader as u,HeaderSearchButton as ee,TickProvider as te,ToolScreenHeaderContext as oe,devToolsStorageKeys as V,buoyColors as B,gameUIColors as g}from"@buoy-gg/shared-ui";import{jsx as t,jsxs as f}from"react/jsx-runtime";const h=()=>{};const re={search:"",isSearchActive:false,clearSearch:h,close:h,minimize:h,showToast:h,setHeaderOverride:h};const D=J(null);export function useToolHost(){return X(D)??re}export function useToolHeader(e,o){const{setHeaderOverride:n}=useToolHost();T(()=>{n(e);return()=>n(null)},o)}const M=2200;const se={success:g.success,error:g.error,info:g.info};function ne({message:e,type:o,nonce:n}){const s=R(new i.Value(0)).current;T(()=>{s.setValue(0);i.sequence([i.timing(s,{toValue:1,duration:150,useNativeDriver:true}),i.delay(M-450),i.timing(s,{toValue:0,duration:300,useNativeDriver:true})]).start()},[n,s]);const a=se[o];return f(i.View,{pointerEvents:"none",style:[v.toast,{opacity:s,borderColor:a+"60"}],children:[t(k,{style:[v.toastDot,{backgroundColor:a}]}),t(Y,{style:v.toastText,numberOfLines:2,children:e})]})}export function ToolModalShell({app:e,config:o,visible:n,zIndex:s,onClose:a,onMinimize:S,initialModalState:P,enableSharedModalDimensions:_,bodyProps:N}){const j=e.component;const[r,w]=b(false);const[x,O]=b("");const[c,p]=b(null);const[m,A]=b(null);const l=R(null);const d=I(()=>{w(false);O("")},[]);const H=I(($,q="info")=>{if(l.current)clearTimeout(l.current);A(F=>({message:$,type:q,nonce:(F?.nonce??0)+1}));l.current=setTimeout(()=>A(null),M)},[]);T(()=>{return()=>{if(l.current)clearTimeout(l.current)}},[]);const z=G(()=>({search:r?x:"",isSearchActive:r,clearSearch:d,close:a,minimize:()=>S(),showToast:H,setHeaderOverride:p,instanceId:e.instanceId}),[x,r,d,a,S,H,e.instanceId]);const K=c?.title??o.title??e.title??e.id;const L=c?.subtitle??o.subtitle;const y=c?.onBack;const E=c?.actions??o.headerActions;const C=c?.searchable??o.searchable;T(()=>{if(!C&&r)d()},[C,r,d]);const W=_?V.modal.root():V.custom(e.id).modal();const U=f(u,{children:[y&&!r&&t(u.Navigation,{onBack:y}),r?t(u.Search,{value:x,onChangeText:O,onCancel:d,placeholder:o.searchPlaceholder,testID:`tool-search-field-${e.id}`}):t(u.Content,{title:K,subtitle:L}),f(u.Actions,{children:[!r&&E,C&&!r&&t(ee,{variant:"chip",testID:`tool-search-${e.id}`,onPress:()=>w(true)})]})]});return t(D.Provider,{value:z,children:t(Z,{visible:n,onClose:a,onBack:y,onMinimize:S,initialModalState:P,zIndex:s,persistenceKey:W,enablePersistence:true,initialMode:o.initialMode??"bottomSheet",header:{customContent:U,showToggleButton:true},disableScrollWrapper:true,styles:{},children:f(k,{style:v.bodyRoot,children:[t(te,{children:t(oe.Provider,{value:p,children:t(j,{...N})})}),m&&t(ne,{message:m.message,type:m.type,nonce:m.nonce})]})})})}const v=Q.create({bodyRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},toast:{position:"absolute",bottom:16,alignSelf:"center",flexDirection:"row",alignItems:"center",gap:8,maxWidth:"86%",backgroundColor:B.card,borderWidth:1,borderRadius:8,paddingHorizontal:12,paddingVertical:8,shadowColor:"#000",shadowOpacity:.4,shadowRadius:8,shadowOffset:{width:0,height:2},elevation:6},toastDot:{width:6,height:6,borderRadius:3},toastText:{flex:1,fontSize:12,color:B.text}});
@@ -1 +1 @@
1
- "use strict";import{reportOptionalRequireError as r}from"./optionalRequire.js";export function autoDiscoverPresets(){const u=[];const n=[{name:"@buoy-gg/env",loader:()=>{try{const{envToolPreset:e}=require("@buoy-gg/env");return e}catch(e){r("@buoy-gg/env",e);return null}}},{name:"@buoy-gg/network",loader:()=>{try{const{networkToolPreset:e}=require("@buoy-gg/network");return e}catch(e){r("@buoy-gg/network",e);return null}}},{name:"@buoy-gg/storage",loader:()=>{try{const{storageToolPreset:e}=require("@buoy-gg/storage");return e}catch(e){r("@buoy-gg/storage",e);return null}}},{name:"@buoy-gg/react-query",loader:()=>{try{const{reactQueryToolPreset:e,wifiTogglePreset:o}=require("@buoy-gg/react-query");return[e,o]}catch(e){r("@buoy-gg/react-query",e);return null}}},{name:"@buoy-gg/route-events",loader:()=>{try{const{routeEventsToolPreset:e}=require("@buoy-gg/route-events");return e}catch(e){r("@buoy-gg/route-events",e);return null}}},{name:"@buoy-gg/debug-borders",loader:()=>{try{const{debugBordersToolPreset:e}=require("@buoy-gg/debug-borders");return e}catch(e){r("@buoy-gg/debug-borders",e);return null}}},{name:"@buoy-gg/highlight-updates",loader:()=>{try{const{highlightUpdatesPreset:e,highlightUpdatesModalPreset:o}=require("@buoy-gg/highlight-updates");return[o,e]}catch(e){r("@buoy-gg/highlight-updates",e);return null}}},{name:"@buoy-gg/console",loader:()=>{try{const{consoleToolPreset:e}=require("@buoy-gg/console");return e}catch(e){r("@buoy-gg/console",e);return null}}},{name:"@buoy-gg/notifications",loader:()=>{try{return require("@buoy-gg/notifications").notificationToolPreset}catch(e){r("@buoy-gg/notifications",e);return null}}},{name:"@buoy-gg/sentry",loader:()=>{try{const{sentryToolPreset:e}=require("@buoy-gg/sentry");return e}catch(e){r("@buoy-gg/sentry",e);return null}}},{name:"@buoy-gg/time-machine",loader:()=>{try{const{timeMachineToolPreset:e}=require("@buoy-gg/time-machine");return e}catch(e){r("@buoy-gg/time-machine",e);return null}}},{name:"@buoy-gg/clock",loader:()=>{try{const{clockToolPreset:e}=require("@buoy-gg/clock");return e}catch(e){r("@buoy-gg/clock",e);return null}}},{name:"@buoy-gg/scenarios",loader:()=>{try{const{scenariosToolPreset:e}=require("@buoy-gg/scenarios");return e}catch(e){r("@buoy-gg/scenarios",e);return null}}},{name:"@buoy-gg/ask-buoy",loader:()=>{try{const{askBuoyToolPreset:e}=require("@buoy-gg/ask-buoy");return e}catch(e){r("@buoy-gg/ask-buoy",e);return null}}},{name:"@buoy-gg/redux",loader:()=>{try{const{reduxToolPreset:e}=require("@buoy-gg/redux");return e}catch(e){r("@buoy-gg/redux",e);return null}}},{name:"@buoy-gg/zustand",loader:()=>{try{const{zustandToolPreset:e}=require("@buoy-gg/zustand");return e}catch(e){r("@buoy-gg/zustand",e);return null}}},{name:"@buoy-gg/events",loader:()=>{try{const{eventsToolPreset:e}=require("@buoy-gg/events");return e}catch(e){r("@buoy-gg/events",e);return null}}},{name:"@buoy-gg/jotai",loader:()=>{try{const{jotaiToolPreset:e}=require("@buoy-gg/jotai");return e}catch(e){r("@buoy-gg/jotai",e);return null}}},{name:"@buoy-gg/image-overlay",loader:()=>{try{const{imageOverlayToolPreset:e}=require("@buoy-gg/image-overlay");return e}catch(e){r("@buoy-gg/image-overlay",e);return null}}},{name:"@buoy-gg/perf-monitor",loader:()=>{try{const{perfMonitorPreset:e,perfMonitorModalPreset:o}=require("@buoy-gg/perf-monitor");return[e,o]}catch(e){r("@buoy-gg/perf-monitor",e);return null}}},{name:"@buoy-gg/js-top",loader:()=>{try{const{jsTopPreset:e,jsTopModalPreset:o}=require("@buoy-gg/js-top");return[o,e]}catch(e){r("@buoy-gg/js-top",e);return null}}},{name:"@buoy-gg/images",loader:()=>{try{const{imagesToolPreset:e}=require("@buoy-gg/images");return e}catch(e){r("@buoy-gg/images",e);return null}}},{name:"@buoy-gg/assets",loader:()=>{try{const{assetsToolPreset:e}=require("@buoy-gg/assets");return e}catch(e){r("@buoy-gg/assets",e);return null}}}];for(const{name:e,loader:o}of n){try{const t=o();if(t){if(Array.isArray(t)){u.push(...t)}else{u.push(t)}}}catch(t){r(e,t)}}return u}export function autoDiscoverPresetsWithCustom(u){const n=autoDiscoverPresets();const e=new Set(u.map(t=>t.id));const o=n.filter(t=>!e.has(t.id));return[...u,...o]}
1
+ "use strict";import{reportOptionalRequireError as r}from"./optionalRequire.js";export function autoDiscoverPresets(){const u=[];const n=[{name:"@buoy-gg/env",loader:()=>{try{const{envToolPreset:e}=require("@buoy-gg/env");return e}catch(e){r("@buoy-gg/env",e);return null}}},{name:"@buoy-gg/network",loader:()=>{try{const{networkToolPreset:e}=require("@buoy-gg/network");return e}catch(e){r("@buoy-gg/network",e);return null}}},{name:"@buoy-gg/storage",loader:()=>{try{const{storageToolPreset:e}=require("@buoy-gg/storage");return e}catch(e){r("@buoy-gg/storage",e);return null}}},{name:"@buoy-gg/react-query",loader:()=>{try{const{reactQueryToolPreset:e,wifiTogglePreset:o}=require("@buoy-gg/react-query");return[e,o]}catch(e){r("@buoy-gg/react-query",e);return null}}},{name:"@buoy-gg/route-events",loader:()=>{try{const{routeEventsToolPreset:e}=require("@buoy-gg/route-events");return e}catch(e){r("@buoy-gg/route-events",e);return null}}},{name:"@buoy-gg/debug-borders",loader:()=>{try{const{debugBordersToolPreset:e}=require("@buoy-gg/debug-borders");return e}catch(e){r("@buoy-gg/debug-borders",e);return null}}},{name:"@buoy-gg/highlight-updates",loader:()=>{try{const{highlightUpdatesPreset:e,highlightUpdatesModalPreset:o}=require("@buoy-gg/highlight-updates");return[o,e]}catch(e){r("@buoy-gg/highlight-updates",e);return null}}},{name:"@buoy-gg/console",loader:()=>{try{const{consoleToolPreset:e}=require("@buoy-gg/console");return e}catch(e){r("@buoy-gg/console",e);return null}}},{name:"@buoy-gg/notifications",loader:()=>{try{return require("@buoy-gg/notifications").notificationToolPreset}catch(e){r("@buoy-gg/notifications",e);return null}}},{name:"@buoy-gg/sentry",loader:()=>{try{const{sentryToolPreset:e}=require("@buoy-gg/sentry");return e}catch(e){r("@buoy-gg/sentry",e);return null}}},{name:"@buoy-gg/time-machine",loader:()=>{try{const{timeMachineToolPreset:e}=require("@buoy-gg/time-machine");return e}catch(e){r("@buoy-gg/time-machine",e);return null}}},{name:"@buoy-gg/clock",loader:()=>{try{const{clockToolPreset:e}=require("@buoy-gg/clock");return e}catch(e){r("@buoy-gg/clock",e);return null}}},{name:"@buoy-gg/lifecycle",loader:()=>{try{const{lifecycleToolPreset:e}=require("@buoy-gg/lifecycle");return e}catch(e){r("@buoy-gg/lifecycle",e);return null}}},{name:"@buoy-gg/location",loader:()=>{try{const{locationToolPreset:e}=require("@buoy-gg/location");return e}catch(e){r("@buoy-gg/location",e);return null}}},{name:"@buoy-gg/permissions",loader:()=>{try{const{permissionsToolPreset:e}=require("@buoy-gg/permissions");return e}catch(e){r("@buoy-gg/permissions",e);return null}}},{name:"@buoy-gg/scenarios",loader:()=>{try{const{scenariosToolPreset:e}=require("@buoy-gg/scenarios");return e}catch(e){r("@buoy-gg/scenarios",e);return null}}},{name:"@buoy-gg/ask-buoy",loader:()=>{try{const{askBuoyToolPreset:e}=require("@buoy-gg/ask-buoy");return e}catch(e){r("@buoy-gg/ask-buoy",e);return null}}},{name:"@buoy-gg/redux",loader:()=>{try{const{reduxToolPreset:e}=require("@buoy-gg/redux");return e}catch(e){r("@buoy-gg/redux",e);return null}}},{name:"@buoy-gg/zustand",loader:()=>{try{const{zustandToolPreset:e}=require("@buoy-gg/zustand");return e}catch(e){r("@buoy-gg/zustand",e);return null}}},{name:"@buoy-gg/events",loader:()=>{try{const{eventsToolPreset:e}=require("@buoy-gg/events");return e}catch(e){r("@buoy-gg/events",e);return null}}},{name:"@buoy-gg/jotai",loader:()=>{try{const{jotaiToolPreset:e}=require("@buoy-gg/jotai");return e}catch(e){r("@buoy-gg/jotai",e);return null}}},{name:"@buoy-gg/image-overlay",loader:()=>{try{const{imageOverlayToolPreset:e}=require("@buoy-gg/image-overlay");return e}catch(e){r("@buoy-gg/image-overlay",e);return null}}},{name:"@buoy-gg/perf-monitor",loader:()=>{try{const{perfMonitorPreset:e,perfMonitorModalPreset:o}=require("@buoy-gg/perf-monitor");return[e,o]}catch(e){r("@buoy-gg/perf-monitor",e);return null}}},{name:"@buoy-gg/js-top",loader:()=>{try{const{jsTopPreset:e,jsTopModalPreset:o}=require("@buoy-gg/js-top");return[o,e]}catch(e){r("@buoy-gg/js-top",e);return null}}},{name:"@buoy-gg/images",loader:()=>{try{const{imagesToolPreset:e}=require("@buoy-gg/images");return e}catch(e){r("@buoy-gg/images",e);return null}}},{name:"@buoy-gg/assets",loader:()=>{try{const{assetsToolPreset:e}=require("@buoy-gg/assets");return e}catch(e){r("@buoy-gg/assets",e);return null}}}];for(const{name:e,loader:o}of n){try{const t=o();if(t){if(Array.isArray(t)){u.push(...t)}else{u.push(t)}}}catch(t){r(e,t)}}return u}export function autoDiscoverPresetsWithCustom(u){const n=autoDiscoverPresets();const e=new Set(u.map(t=>t.id));const o=n.filter(t=>!e.has(t.id));return[...u,...o]}
@@ -1 +1 @@
1
- "use strict";import{useEffect as z,useMemo as H,useRef as U}from"react";import{Platform as D}from"react-native";import{LicenseManager as $}from"@buoy-gg/license";import{reportOptionalRequireError as r}from"./optionalRequire.js";import{appSyncAdapter as F}from"./sync/appSyncAdapter.js";import{useDeviceIdentity as G}from"./deviceIdentity.js";import{registerToolAdapters as J}from"@buoy-gg/shared-ui";let i=null;let y=null;let g=null;let d=null;let p=null;let f=null;let b=null;let m=null;let S=null;let h=null;let A=null;let M=null;let v=null;try{v=require("@buoy-gg/notifications")}catch(e){r("@buoy-gg/notifications",e)}let q=null;let k=null;let x=null;let R=null;let j=null;let E=null;let L=null;let w=null;let I=null;let B=null;let a=null;try{i=require("@buoy-gg/external-sync")}catch(e){r("@buoy-gg/external-sync",e)}try{y=require("@buoy-gg/storage")}catch(e){r("@buoy-gg/storage",e)}try{g=require("@buoy-gg/network")}catch(e){r("@buoy-gg/network",e)}try{d=require("@buoy-gg/react-query")}catch(e){r("@buoy-gg/react-query",e)}try{p=require("@buoy-gg/route-events")}catch(e){r("@buoy-gg/route-events",e)}try{f=require("@buoy-gg/redux")}catch(e){r("@buoy-gg/redux",e)}try{b=require("@buoy-gg/zustand")}catch(e){r("@buoy-gg/zustand",e)}try{m=require("@buoy-gg/jotai")}catch(e){r("@buoy-gg/jotai",e)}try{S=require("@buoy-gg/events")}catch(e){r("@buoy-gg/events",e)}try{h=require("@buoy-gg/console")}catch(e){r("@buoy-gg/console",e)}try{A=require("@buoy-gg/clock")}catch(e){r("@buoy-gg/clock",e)}try{M=require("@buoy-gg/sentry")}catch(e){r("@buoy-gg/sentry",e)}try{q=require("@buoy-gg/env")}catch(e){r("@buoy-gg/env",e)}try{k=require("@buoy-gg/highlight-updates")}catch(e){r("@buoy-gg/highlight-updates",e)}try{x=require("@buoy-gg/debug-borders")}catch(e){r("@buoy-gg/debug-borders",e)}try{R=require("@buoy-gg/impersonate")}catch(e){r("@buoy-gg/impersonate",e)}try{j=require("@buoy-gg/perf-monitor")}catch(e){r("@buoy-gg/perf-monitor",e)}try{E=require("@buoy-gg/js-top")}catch(e){r("@buoy-gg/js-top",e)}try{L=require("@buoy-gg/images")}catch(e){r("@buoy-gg/images",e)}try{w=require("@buoy-gg/assets")}catch(e){r("@buoy-gg/assets",e)}try{I=require("@buoy-gg/tv-remote")}catch(e){r("@buoy-gg/tv-remote",e)}try{B=require("@buoy-gg/focus-inspector")}catch(e){r("@buoy-gg/focus-inspector",e)}try{a=require("expo-constants")}catch(e){r("expo-constants",e)}export function isExternalSyncAvailable(){return!!i?.useExternalSyncSocket}function W(){const e=a?.default??a;return e?.expoConfig?.name??e?.manifest2?.extra?.expoClient?.name??null}function X(){const e=a?.default??a;const n=e?.deviceName;return typeof n==="string"&&n.length>0?n:null}export function useToolAdapterMap({requiredEnvVars:e,customApps:n}){const c=d?.useReactQuerySyncAdapter?d.useReactQuerySyncAdapter():null;return Y(c,e,n)}export function ToolRegistryPublisher({requiredEnvVars:e,customApps:n}){const c=useToolAdapterMap({requiredEnvVars:e,customApps:n});const t=U(c);t.current=c;z(()=>J(()=>t.current),[]);return null}export function AutoExternalSync({options:e,requiredEnvVars:n,isPro:c,tier:t,licenseKey:o,customApps:C}){const{useExternalSyncSocket:O,useExternalSync:P}=i;const Q=useToolAdapterMap({requiredEnvVars:n,customApps:C});const N=G(e,{appName:W(),hardwareName:X(),platform:D.OS});const T=N?.deviceId??null;const{socket:u}=O({deviceName:N?.deviceName??"Buoy Device",socketURL:e?.socketURL??i.getDefaultSocketURL?.()??"http://localhost:42831",persistentDeviceId:T,platform:D.OS,enableLogs:e?.enableLogs});const s=U({isPro:c,tier:t,licenseKey:o});s.current={isPro:c,tier:t,licenseKey:o};z(()=>{if(!u)return;const l=()=>{if(!$.hasAccountAccess()||!u.connected)return;u.emit("device-license",{isPro:s.current.isPro?"1":"0",tier:s.current.tier??(s.current.isPro?"pro":"free")})};if(u.connected)l();u.on("connect",l);return()=>{u.off("connect",l)}},[u,c,t,o]);P({tools:Q,socket:u,deviceId:T,enableLogs:e?.enableLogs});return null}function Y(e,n,c){return H(()=>{const t={app:F};if(y?.storageSyncAdapter){t.storage=y.storageSyncAdapter}if(g?.networkSyncAdapter){t.network=g.networkSyncAdapter}if(e){t.query=e}if(p?.routeEventsSyncAdapter){t["route-events"]=p.routeEventsSyncAdapter}if(f?.reduxSyncAdapter){t.redux=f.reduxSyncAdapter}if(b?.zustandSyncAdapter){t.zustand=b.zustandSyncAdapter}if(m?.jotaiSyncAdapter){t.jotai=m.jotaiSyncAdapter}if(S?.eventsSyncAdapter){t.events=S.eventsSyncAdapter}if(h?.consoleSyncAdapter){t.console=h.consoleSyncAdapter}if(A?.clockSyncAdapter){t.clock=A.clockSyncAdapter}if(v?.notificationSyncAdapter){t["push-notifications"]=v.notificationSyncAdapter}if(M?.sentrySyncAdapter){t.sentry=M.sentrySyncAdapter}try{const o=require("@buoy-gg/time-machine");if(o?.timeMachineSyncAdapter){t["time-machine"]=o.timeMachineSyncAdapter}}catch(o){r("@buoy-gg/time-machine",o)}try{const o=require("@buoy-gg/scenarios");if(o?.scenariosSyncAdapter){t.scenarios=o.scenariosSyncAdapter}}catch(o){r("@buoy-gg/scenarios",o)}try{const o=require("@buoy-gg/ask-buoy");if(o?.askBuoySyncAdapter){t["ask-buoy"]=o.askBuoySyncAdapter}}catch(o){r("@buoy-gg/ask-buoy",o)}if(q?.createEnvSyncAdapter){t.env=q.createEnvSyncAdapter(n??[])}if(k?.highlightUpdatesSyncAdapter){t["highlight-updates"]=k.highlightUpdatesSyncAdapter}if(x?.debugBordersSyncAdapter){t["debug-borders"]=x.debugBordersSyncAdapter}if(R?.impersonateSyncAdapter){t.impersonate=R.impersonateSyncAdapter}if(j?.perfMonitorSyncAdapter){t["perf-monitor"]=j.perfMonitorSyncAdapter}if(E?.jsTopSyncAdapter){t["js-top"]=E.jsTopSyncAdapter}if(L?.imagesSyncAdapter){t.images=L.imagesSyncAdapter}if(w?.assetsSyncAdapter){t.assets=w.assetsSyncAdapter}if(I?.tvRemoteSyncAdapter){t["tv-remote"]=I.tvRemoteSyncAdapter}if(B?.focusInspectorSyncAdapter){t["focus-inspector"]=B.focusInspectorSyncAdapter}for(const o of c??[]){if(o?.sync){t[`custom:${o.id}`]=o.sync}}return t},[e,n,c])}
1
+ "use strict";import{useEffect as C,useMemo as O,useRef as Q}from"react";import{Platform as H}from"react-native";import{LicenseManager as J}from"@buoy-gg/license";import{reportOptionalRequireError as r}from"./optionalRequire.js";import{appSyncAdapter as W}from"./sync/appSyncAdapter.js";import{useDeviceIdentity as X}from"./deviceIdentity.js";import{applyReleaseActionPolicy as Y}from"./externalSyncGate.js";import{registerToolAdapters as Z}from"@buoy-gg/shared-ui";let i=null;let g=null;let d=null;let p=null;let f=null;let b=null;let m=null;let S=null;let A=null;let h=null;let M=null;let v=null;let q=null;let k=null;let x=null;let R=null;try{R=require("@buoy-gg/notifications")}catch(e){r("@buoy-gg/notifications",e)}let j=null;let E=null;let L=null;let w=null;let I=null;let T=null;let _=null;let B=null;let N=null;let z=null;let a=null;try{i=require("@buoy-gg/external-sync")}catch(e){r("@buoy-gg/external-sync",e)}try{g=require("@buoy-gg/storage")}catch(e){r("@buoy-gg/storage",e)}try{d=require("@buoy-gg/network")}catch(e){r("@buoy-gg/network",e)}try{p=require("@buoy-gg/react-query")}catch(e){r("@buoy-gg/react-query",e)}try{f=require("@buoy-gg/route-events")}catch(e){r("@buoy-gg/route-events",e)}try{b=require("@buoy-gg/redux")}catch(e){r("@buoy-gg/redux",e)}try{m=require("@buoy-gg/zustand")}catch(e){r("@buoy-gg/zustand",e)}try{S=require("@buoy-gg/jotai")}catch(e){r("@buoy-gg/jotai",e)}try{A=require("@buoy-gg/events")}catch(e){r("@buoy-gg/events",e)}try{h=require("@buoy-gg/console")}catch(e){r("@buoy-gg/console",e)}try{M=require("@buoy-gg/clock")}catch(e){r("@buoy-gg/clock",e)}try{q=require("@buoy-gg/lifecycle")}catch(e){r("@buoy-gg/lifecycle",e)}try{k=require("@buoy-gg/location")}catch(e){r("@buoy-gg/location",e)}try{v=require("@buoy-gg/permissions")}catch(e){r("@buoy-gg/permissions",e)}try{x=require("@buoy-gg/sentry")}catch(e){r("@buoy-gg/sentry",e)}try{j=require("@buoy-gg/env")}catch(e){r("@buoy-gg/env",e)}try{E=require("@buoy-gg/highlight-updates")}catch(e){r("@buoy-gg/highlight-updates",e)}try{L=require("@buoy-gg/debug-borders")}catch(e){r("@buoy-gg/debug-borders",e)}try{w=require("@buoy-gg/impersonate")}catch(e){r("@buoy-gg/impersonate",e)}try{I=require("@buoy-gg/perf-monitor")}catch(e){r("@buoy-gg/perf-monitor",e)}try{T=require("@buoy-gg/js-top")}catch(e){r("@buoy-gg/js-top",e)}try{_=require("@buoy-gg/images")}catch(e){r("@buoy-gg/images",e)}try{B=require("@buoy-gg/assets")}catch(e){r("@buoy-gg/assets",e)}try{N=require("@buoy-gg/tv-remote")}catch(e){r("@buoy-gg/tv-remote",e)}try{z=require("@buoy-gg/focus-inspector")}catch(e){r("@buoy-gg/focus-inspector",e)}try{a=require("expo-constants")}catch(e){r("expo-constants",e)}export function isExternalSyncAvailable(){return!!i?.useExternalSyncSocket}function K(){const e=a?.default??a;return e?.expoConfig?.name??e?.manifest2?.extra?.expoClient?.name??null}function ee(){const e=a?.default??a;const n=e?.deviceName;return typeof n==="string"&&n.length>0?n:null}export function useToolAdapterMap({requiredEnvVars:e,customApps:n}){const c=p?.useReactQuerySyncAdapter?p.useReactQuerySyncAdapter():null;return te(c,e,n)}export function ToolRegistryPublisher({requiredEnvVars:e,customApps:n}){const c=useToolAdapterMap({requiredEnvVars:e,customApps:n});const t=Q(c);t.current=c;C(()=>Z(()=>t.current),[]);return null}export function AutoExternalSync({options:e,requiredEnvVars:n,isPro:c,tier:t,licenseKey:o,customApps:V}){const{useExternalSyncSocket:$,useExternalSync:F}=i;const D=useToolAdapterMap({requiredEnvVars:n,customApps:V});const U=X(e,{appName:K(),hardwareName:ee(),platform:H.OS});const P=U?.deviceId??null;const{socket:u}=$({deviceName:U?.deviceName??"Buoy Device",socketURL:e?.socketURL??i.getDefaultSocketURL?.()??"http://localhost:42831",persistentDeviceId:P,platform:H.OS,enableLogs:e?.enableLogs});const s=Q({isPro:c,tier:t,licenseKey:o});s.current={isPro:c,tier:t,licenseKey:o};C(()=>{if(!u)return;const y=()=>{if(!J.hasAccountAccess()||!u.connected)return;u.emit("device-license",{isPro:s.current.isPro?"1":"0",tier:s.current.tier??(s.current.isPro?"pro":"free")})};if(u.connected)y();u.on("connect",y);return()=>{u.off("connect",y)}},[u,c,t,o]);const l=e?.releaseActions?.join(",")??"";const G=O(()=>Y(D,typeof __DEV__!=="undefined"&&__DEV__,l?l.split(","):void 0),[D,l]);F({tools:G,socket:u,deviceId:P,enableLogs:e?.enableLogs});return null}function te(e,n,c){return O(()=>{const t={app:W};if(g?.storageSyncAdapter){t.storage=g.storageSyncAdapter}if(d?.networkSyncAdapter){t.network=d.networkSyncAdapter}if(e){t.query=e}if(f?.routeEventsSyncAdapter){t["route-events"]=f.routeEventsSyncAdapter}if(b?.reduxSyncAdapter){t.redux=b.reduxSyncAdapter}if(m?.zustandSyncAdapter){t.zustand=m.zustandSyncAdapter}if(S?.jotaiSyncAdapter){t.jotai=S.jotaiSyncAdapter}if(A?.eventsSyncAdapter){t.events=A.eventsSyncAdapter}if(h?.consoleSyncAdapter){t.console=h.consoleSyncAdapter}if(M?.clockSyncAdapter){t.clock=M.clockSyncAdapter}if(v?.permissionsSyncAdapter){t.permissions=v.permissionsSyncAdapter}if(q?.lifecycleSyncAdapter){t.lifecycle=q.lifecycleSyncAdapter}if(k?.locationSyncAdapter){t.location=k.locationSyncAdapter}if(R?.notificationSyncAdapter){t["push-notifications"]=R.notificationSyncAdapter}if(x?.sentrySyncAdapter){t.sentry=x.sentrySyncAdapter}try{const o=require("@buoy-gg/time-machine");if(o?.timeMachineSyncAdapter){t["time-machine"]=o.timeMachineSyncAdapter}}catch(o){r("@buoy-gg/time-machine",o)}try{const o=require("@buoy-gg/scenarios");if(o?.scenariosSyncAdapter){t.scenarios=o.scenariosSyncAdapter}}catch(o){r("@buoy-gg/scenarios",o)}try{const o=require("@buoy-gg/ask-buoy");if(o?.askBuoySyncAdapter){t["ask-buoy"]=o.askBuoySyncAdapter}}catch(o){r("@buoy-gg/ask-buoy",o)}if(j?.createEnvSyncAdapter){t.env=j.createEnvSyncAdapter(n??[])}if(E?.highlightUpdatesSyncAdapter){t["highlight-updates"]=E.highlightUpdatesSyncAdapter}if(L?.debugBordersSyncAdapter){t["debug-borders"]=L.debugBordersSyncAdapter}if(w?.impersonateSyncAdapter){t.impersonate=w.impersonateSyncAdapter}if(I?.perfMonitorSyncAdapter){t["perf-monitor"]=I.perfMonitorSyncAdapter}if(T?.jsTopSyncAdapter){t["js-top"]=T.jsTopSyncAdapter}if(_?.imagesSyncAdapter){t.images=_.imagesSyncAdapter}if(B?.assetsSyncAdapter){t.assets=B.assetsSyncAdapter}if(N?.tvRemoteSyncAdapter){t["tv-remote"]=N.tvRemoteSyncAdapter}if(z?.focusInspectorSyncAdapter){t["focus-inspector"]=z.focusInspectorSyncAdapter}for(const o of c??[]){if(o?.sync){t[`custom:${o.id}`]=o.sync}}return t},[e,n,c])}
@@ -1 +1 @@
1
- "use strict";import{useMemo as D,useRef as E}from"react";import{StyleSheet as G,Pressable as N,View as l,Text as V,useWindowDimensions as Y,Animated as n}from"react-native";import{getDialLayout as F,getIconPosition as X,getIconStaggerInputRange as Z,DIAL_START_ANGLE as H,DIAL_ICON_SIZE as J,DIAL_ICON_GLYPH_SIZE as b,dialColors as I,dialStyles as o,dialAnimationConfig as U}from"@buoy-gg/floating-tools-core";import{jsx as i,jsxs as q}from"react/jsx-runtime";const P={network:"Network",images:"Images","image-overlay":"Image Overlay",assets:"Assets",query:"React Query",storage:"Storage",env:"Env",console:"Console",events:"Events",redux:"Redux",zustand:"Zustand",jotai:"Jotai","route-events":"Routes","time-machine":"Time Machine",clock:"Clock","highlight-updates":"Highlight Updates","debug-borders":"Debug Borders","perf-monitor":"Bench HUD","js-top":"JS Top","js-top-modal":"JS Top",impersonate:"Impersonate","perf-monitor-modal":"Bench"};function Q(s,t){if(s&&P[s])return P[s];return t}const u=J;export const DialIcon=({index:s,icon:t,iconsProgress:R,onPress:M,totalIcons:d,active:v})=>{const g=E(new n.Value(1)).current;const{width:S}=Y();const c=D(()=>F({screenWidth:S}),[S]);const j=U?.icons??{pressIn:{scale:.95,damping:15,stiffness:400},pressOut:{scale:1,damping:15,stiffness:400}};const{pressIn:m,pressOut:h}=j;const A=()=>{n.spring(g,{toValue:m.scale,damping:m.damping,stiffness:m.stiffness,useNativeDriver:true}).start()};const L=()=>{n.spring(g,{toValue:h.scale,damping:h.damping,stiffness:h.stiffness,useNativeDriver:true}).start()};const p=D(()=>{const y=X(s,d,c.iconRadius,H);const{x:k,y:T,angle:a}=y;const f=c.iconRadius;const W=Z(s,d);const r=R.interpolate({inputRange:W,outputRange:[0,0,1,1],extrapolate:"clamp"});const C=r.interpolate({inputRange:[0,1],outputRange:[Math.PI*2,0]});const w=r.interpolate({inputRange:[0,1],outputRange:[0,f]});const x=n.add(n.multiply(w,C.interpolate({inputRange:[0,Math.PI*2],outputRange:[Math.cos(a),Math.cos(a+Math.PI*2)]})),r.interpolate({inputRange:[0,1],outputRange:[0,k-f*Math.cos(a+Math.PI*2)]}));const z=n.add(n.multiply(w,C.interpolate({inputRange:[0,Math.PI*2],outputRange:[Math.sin(a),Math.sin(a+Math.PI*2)]})),r.interpolate({inputRange:[0,1],outputRange:[0,T-f*Math.sin(a+Math.PI*2)]}));const B=r.interpolate({inputRange:[0,.3,1],outputRange:[0,.3,1]});return{translateX:x,translateY:z,itemOpacity:B,progressScale:r}},[s,d,R,c]);const _={position:"absolute",left:c.circleRadius-u/2,top:c.circleRadius-u/2,opacity:p.itemOpacity,transform:[{translateX:p.translateX},{translateY:p.translateY},{scale:n.multiply(g,p.progressScale)}]};const O=t.icon===null&&!t.iconComponent;return i(n.View,{style:[e.view,_,!v&&e.hidden],children:O?i(l,{style:e.emptySpot,children:i(l,{style:e.emptyDot})}):q(N,{onPress:()=>M(t),onPressIn:A,onPressOut:L,style:e.pressable,testID:t.id?`buoy-dial-${t.id}`:void 0,accessibilityLabel:Q(t.id,t.name),accessibilityRole:"button",children:[i(l,{style:[e.iconGradientBg,{backgroundColor:"rgba(0, 0, 0, 0.2)"}]}),i(l,{style:[e.iconInnerGlow,{backgroundColor:"rgba(255, 255, 255, 0.02)"}]}),i(l,{style:e.iconWrapper,children:t.iconComponent?(()=>{const y=t.iconComponent;return i(y,{slot:"dial",size:b})})():i(l,{style:e.iconClamp,children:t.icon})}),i(V,{style:e.label,numberOfLines:1,adjustsFontSizeToFit:true,minimumFontScale:.7,children:t.name.toUpperCase()})]})})};const e=G.create({view:{width:u,height:u,justifyContent:"center",alignItems:"center"},hidden:{display:"none"},pressable:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center",padding:4,backgroundColor:"transparent"},iconGradientBg:{position:"absolute",width:"85%",height:"85%",borderRadius:12,opacity:.3},iconInnerGlow:{position:"absolute",width:"70%",height:"70%",borderRadius:10,opacity:.5},iconWrapper:{marginBottom:4,alignItems:"center",justifyContent:"center"},iconClamp:{width:b,height:b,alignItems:"center",justifyContent:"center",overflow:"hidden"},label:{fontSize:o.icon.label.fontSize,fontWeight:o.icon.label.fontWeight,letterSpacing:o.icon.label.letterSpacing,fontFamily:o.icon.label.fontFamily,marginTop:o.icon.label.marginTop,color:I.iconLabel},emptySpot:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center"},emptyDot:{width:o.emptySlot.dotSize,height:o.emptySlot.dotSize,borderRadius:o.emptySlot.dotSize/2,backgroundColor:I.emptyDotBackground,borderWidth:o.emptySlot.borderWidth,borderColor:I.emptyDotBorder}});
1
+ "use strict";import{useMemo as P,useRef as E}from"react";import{StyleSheet as G,Pressable as N,View as l,Text as V,useWindowDimensions as Y,Animated as n}from"react-native";import{getDialLayout as F,getIconPosition as X,getIconStaggerInputRange as Z,DIAL_START_ANGLE as H,DIAL_ICON_SIZE as J,DIAL_ICON_GLYPH_SIZE as b,dialColors as I,dialStyles as o,dialAnimationConfig as U}from"@buoy-gg/floating-tools-core";import{jsx as i,jsxs as q}from"react/jsx-runtime";const D={network:"Network",images:"Images","image-overlay":"Image Overlay",assets:"Assets",query:"React Query",storage:"Storage",env:"Env",console:"Console",events:"Events",redux:"Redux",zustand:"Zustand",jotai:"Jotai","route-events":"Routes","time-machine":"Time Machine",clock:"Clock",permissions:"Permissions","highlight-updates":"Highlight Updates","debug-borders":"Debug Borders","perf-monitor":"Bench HUD","js-top":"JS Top","js-top-modal":"JS Top",impersonate:"Impersonate","perf-monitor-modal":"Bench"};function Q(s,t){if(s&&D[s])return D[s];return t}const u=J;export const DialIcon=({index:s,icon:t,iconsProgress:R,onPress:M,totalIcons:d,active:v})=>{const g=E(new n.Value(1)).current;const{width:S}=Y();const c=P(()=>F({screenWidth:S}),[S]);const j=U?.icons??{pressIn:{scale:.95,damping:15,stiffness:400},pressOut:{scale:1,damping:15,stiffness:400}};const{pressIn:m,pressOut:h}=j;const A=()=>{n.spring(g,{toValue:m.scale,damping:m.damping,stiffness:m.stiffness,useNativeDriver:true}).start()};const L=()=>{n.spring(g,{toValue:h.scale,damping:h.damping,stiffness:h.stiffness,useNativeDriver:true}).start()};const p=P(()=>{const y=X(s,d,c.iconRadius,H);const{x:k,y:T,angle:a}=y;const f=c.iconRadius;const W=Z(s,d);const r=R.interpolate({inputRange:W,outputRange:[0,0,1,1],extrapolate:"clamp"});const C=r.interpolate({inputRange:[0,1],outputRange:[Math.PI*2,0]});const w=r.interpolate({inputRange:[0,1],outputRange:[0,f]});const x=n.add(n.multiply(w,C.interpolate({inputRange:[0,Math.PI*2],outputRange:[Math.cos(a),Math.cos(a+Math.PI*2)]})),r.interpolate({inputRange:[0,1],outputRange:[0,k-f*Math.cos(a+Math.PI*2)]}));const z=n.add(n.multiply(w,C.interpolate({inputRange:[0,Math.PI*2],outputRange:[Math.sin(a),Math.sin(a+Math.PI*2)]})),r.interpolate({inputRange:[0,1],outputRange:[0,T-f*Math.sin(a+Math.PI*2)]}));const B=r.interpolate({inputRange:[0,.3,1],outputRange:[0,.3,1]});return{translateX:x,translateY:z,itemOpacity:B,progressScale:r}},[s,d,R,c]);const _={position:"absolute",left:c.circleRadius-u/2,top:c.circleRadius-u/2,opacity:p.itemOpacity,transform:[{translateX:p.translateX},{translateY:p.translateY},{scale:n.multiply(g,p.progressScale)}]};const O=t.icon===null&&!t.iconComponent;return i(n.View,{style:[e.view,_,!v&&e.hidden],children:O?i(l,{style:e.emptySpot,children:i(l,{style:e.emptyDot})}):q(N,{onPress:()=>M(t),onPressIn:A,onPressOut:L,style:e.pressable,testID:t.id?`buoy-dial-${t.id}`:void 0,accessibilityLabel:Q(t.id,t.name),accessibilityRole:"button",children:[i(l,{style:[e.iconGradientBg,{backgroundColor:"rgba(0, 0, 0, 0.2)"}]}),i(l,{style:[e.iconInnerGlow,{backgroundColor:"rgba(255, 255, 255, 0.02)"}]}),i(l,{style:e.iconWrapper,children:t.iconComponent?(()=>{const y=t.iconComponent;return i(y,{slot:"dial",size:b})})():i(l,{style:e.iconClamp,children:t.icon})}),i(V,{style:e.label,numberOfLines:1,adjustsFontSizeToFit:true,minimumFontScale:.7,children:t.name.toUpperCase()})]})})};const e=G.create({view:{width:u,height:u,justifyContent:"center",alignItems:"center"},hidden:{display:"none"},pressable:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center",padding:4,backgroundColor:"transparent"},iconGradientBg:{position:"absolute",width:"85%",height:"85%",borderRadius:12,opacity:.3},iconInnerGlow:{position:"absolute",width:"70%",height:"70%",borderRadius:10,opacity:.5},iconWrapper:{marginBottom:4,alignItems:"center",justifyContent:"center"},iconClamp:{width:b,height:b,alignItems:"center",justifyContent:"center",overflow:"hidden"},label:{fontSize:o.icon.label.fontSize,fontWeight:o.icon.label.fontWeight,letterSpacing:o.icon.label.letterSpacing,fontFamily:o.icon.label.fontFamily,marginTop:o.icon.label.marginTop,color:I.iconLabel},emptySpot:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center"},emptyDot:{width:o.emptySlot.dotSize,height:o.emptySlot.dotSize,borderRadius:o.emptySlot.dotSize/2,backgroundColor:I.emptyDotBackground,borderWidth:o.emptySlot.borderWidth,borderColor:I.emptyDotBorder}});
@@ -1 +1 @@
1
- "use strict";export function externalSyncOptions(e){return typeof e==="object"&&e!==null?e:void 0}export function shouldMountExternalSync({isDevelopment:e,isLicensed:n,externalSync:t,isAvailable:r}){if(t===false)return false;if(!r)return false;if(e)return true;return n&&externalSyncOptions(t)?.enableInRelease===true}
1
+ "use strict";export function externalSyncOptions(e){return typeof e==="object"&&e!==null?e:void 0}export function shouldMountExternalSync({isDevelopment:e,isLicensed:o,externalSync:r,isAvailable:t}){if(r===false)return false;if(!t)return false;if(e)return true;const n=externalSyncOptions(r);return o&&n?.enableInRelease===true&&releaseTransportProblem(n.socketURL,n)===null}export const RELEASE_DEFAULT_SOCKET_URL="http://localhost:42831";function i(e){return e==="localhost"||e.endsWith(".localhost")||/^127\.\d+\.\d+\.\d+$/.test(e)||e==="[::1]"||e==="::1"||e==="10.0.2.2"}export function releaseTransportProblem(e,o){const r=e??RELEASE_DEFAULT_SOCKET_URL;if(o?.allowInsecureNetwork===true)return null;let t;try{t=new URL(r)}catch{return`[Buoy] externalSync.socketURL "${r}" isn't a valid URL, so this release build won't connect to Buoy Desktop.`}if(t.protocol==="https:"||t.protocol==="wss:")return null;if(i(t.hostname))return null;return`[Buoy] This release build won't connect to ${r}: release sync carries real user data, and plain http to another machine is readable by anyone on the same network. Use a simulator, an emulator or adb reverse (localhost), an https:// broker, or set externalSync.allowInsecureNetwork: true for a network you trust.`}export const RELEASE_GATED_ACTIONS={impersonate:["searchUsers","startImpersonation","resumeImpersonation","updateSettings","removeFromHistory","clearHistory"]};export function applyReleaseActionPolicy(e,o,r){if(o)return e;let t=null;for(const[n,u]of Object.entries(RELEASE_GATED_ACTIONS)){if(r?.includes(n))continue;const s=e[n];if(!s?.actions)continue;const a={...s.actions};for(const l of u){if(!(l in a))continue;a[l]=()=>{throw new Error(`${n}.${l} is off in release builds. To allow it from Buoy Desktop and the MCP, pass externalSync={{ enableInRelease: true, releaseActions: ["${n}"] }}.`)}}t??={...e};t[n]={...s,actions:a}}return t??e}
@@ -1 +1 @@
1
- "use strict";export const SDK_VERSION="7.0.42";
1
+ "use strict";export const SDK_VERSION="7.0.44";
@@ -12,7 +12,8 @@
12
12
  * Scenarios so the tester can drive the app, then needs it back). It
13
13
  * deliberately does not construct and open a tool from scratch: an opener that
14
14
  * guesses at an instance is a worse failure than reporting that it couldn't,
15
- * and every caller already has to handle `false`.
15
+ * and every caller already has to handle `false`. Opening a tool that isn't
16
+ * open yet is FloatingMenu's opener, which launches it the way a dial tap does.
16
17
  */
17
18
  export declare function ToolOpenerBridge(): null;
18
19
  //# sourceMappingURL=ToolOpenerBridge.d.ts.map