@buoy-gg/core 7.0.80 → 7.0.81
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.
- package/lib/commonjs/Buoy.js +1 -1
- package/lib/commonjs/auto.web.js +1 -1
- package/lib/commonjs/bundlerKey.js +1 -0
- package/lib/commonjs/floatingMenu/FloatingDevTools.web.js +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/Buoy.js +1 -1
- package/lib/module/auto.web.js +1 -1
- package/lib/module/bundlerKey.js +1 -0
- package/lib/module/floatingMenu/FloatingDevTools.web.js +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/commonjs/Buoy.d.ts +1 -1
- package/lib/typescript/commonjs/auto.web.d.ts +1 -5
- package/lib/typescript/commonjs/bundlerKey.d.ts +6 -0
- package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts +2 -1
- package/lib/typescript/commonjs/version.d.ts +1 -1
- package/lib/typescript/module/Buoy.d.ts +1 -1
- package/lib/typescript/module/auto.web.d.ts +1 -5
- package/lib/typescript/module/bundlerKey.d.ts +6 -0
- package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts +2 -1
- package/lib/typescript/module/version.d.ts +1 -1
- package/lib/web/auto.mjs +1 -1
- package/lib/web/chunks/FloatingDevTools.web-H4R5WRDU.mjs +1 -0
- package/lib/web/chunks/FloatingDevTools.web-OZM47G4Z.mjs +1 -0
- package/lib/web/chunks/chunk-5PL4HAS6.mjs +10 -0
- package/lib/web/chunks/chunk-74RBGVOS.mjs +1 -0
- package/lib/web/chunks/chunk-H4EIRXRJ.mjs +2 -2
- package/lib/web/chunks/chunk-YXDQX4XV.mjs +10 -0
- package/lib/web/index.mjs +1 -1
- package/package.json +5 -5
package/lib/commonjs/Buoy.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Buoy=void 0;exports.applyDefaultLicenseKey=applyDefaultLicenseKey;exports.default=void 0;exports.defaultLicenseKey=defaultLicenseKey;exports.isTelemetryEnabled=isTelemetryEnabled;var _license=require("@buoy-gg/license");let telemetryEnabled=true;function isTelemetryEnabled(){return telemetryEnabled}let initKeyGiven=false;let defaultKeyApplied=false;function defaultLicenseKey(){if(initKeyGiven)return void 0;try{const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Buoy=void 0;exports.applyDefaultLicenseKey=applyDefaultLicenseKey;exports.default=void 0;exports.defaultLicenseKey=defaultLicenseKey;exports.isTelemetryEnabled=isTelemetryEnabled;var _license=require("@buoy-gg/license");let telemetryEnabled=true;function isTelemetryEnabled(){return telemetryEnabled}let initKeyGiven=false;let defaultKeyApplied=false;function defaultLicenseKey(e){if(initKeyGiven)return void 0;try{const t=process.env.EXPO_PUBLIC_BUOY_KEY;if(t)return t}catch{}try{const t=process.env.NEXT_PUBLIC_BUOY_KEY;if(t)return t}catch{}return e?.()}function applyDefaultLicenseKey(){if(defaultKeyApplied)return;defaultKeyApplied=true;const e=defaultLicenseKey();if(e)void _license.LicenseManager.configure(e).catch(()=>{})}const Buoy=exports.Buoy={init(e){if(e.telemetry===false)telemetryEnabled=false;if(e.licenseKey!==void 0)initKeyGiven=true;void _license.LicenseManager.configure(e.licenseKey).catch(t=>{console.warn("[Buoy] License initialization failed:",t)})},async initAsync(e){if(e.telemetry===false)telemetryEnabled=false;if(e.licenseKey!==void 0)initKeyGiven=true;return _license.LicenseManager.configure(e.licenseKey)},isPro(){return _license.LicenseManager.isPro()},getState(){return _license.LicenseManager.getState()},async forceReregister(){await _license.LicenseManager.forceReregister()}};var _default=exports.default=Buoy;
|
package/lib/commonjs/auto.web.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.BuoyDevTools=BuoyDevTools;exports.bundlerKey
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.BuoyDevTools=BuoyDevTools;Object.defineProperty(exports,"bundlerKey",{enumerable:true,get:function(){return _bundlerKey.bundlerKey}});exports.shouldShowBuoy=shouldShowBuoy;var _react=require("react");var _bundlerKey=require("./bundlerKey.js");function _interopRequireWildcard(t,r){if("function"==typeof WeakMap)var i=new WeakMap,a=new WeakMap;return(_interopRequireWildcard=function(e,s){if(!s&&e&&e.__esModule)return e;var n,l,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(n=s?a:i){if(n.has(e))return n.get(e);n.set(e,u)}for(const o in e)"default"!==o&&{}.hasOwnProperty.call(e,o)&&((l=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,o))&&(l.get||l.set)?n(u,o,l):u[o]=e[o]);return u})(t,r)}function shouldShowBuoy(){if(typeof window==="undefined")return false;const t=window.Capacitor;let r=false;try{r=t?.isNativePlatform?.()===true}catch{r=false}if(r)return t?.DEBUG===true;return typeof __DEV__!=="undefined"?Boolean(__DEV__):process.env.NODE_ENV!=="production"}let host;function loadHost(){host??=(0,_react.lazy)(()=>Promise.resolve().then(()=>_interopRequireWildcard(require("./floatingMenu/FloatingDevTools.web"))).then(t=>({default:t.FloatingDevTools})));return host}function BuoyDevTools({enabled:t,...r}){const[i,a]=(0,_react.useState)(false);(0,_react.useEffect)(()=>{a(t??shouldShowBuoy())},[t]);if(!i)return null;const e=r.licenseKey??(0,_bundlerKey.bundlerKey)();return(0,_react.createElement)(_react.Suspense,{fallback:null},(0,_react.createElement)(loadHost(),{...r,licenseKey:e}))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.bundlerKey=bundlerKey;function bundlerKey(){try{const e=import.meta.env.VITE_BUOY_KEY;if(e)return e}catch{}try{const e=process.env.NEXT_PUBLIC_BUOY_KEY;if(e)return e}catch{}return void 0}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingDevTools=FloatingDevTools;var _floating=require("@buoy-gg/shared-ui/floating");var _license=_interopRequireWildcard(require("@buoy-gg/license"));var licenseModule=_license;var _sharedUi=require("@buoy-gg/shared-ui");var _react=require("react");var _floatingToolsReact=require("@buoy-gg/floating-tools-react");var _autoDiscoverPresetsWeb=require("../utils/autoDiscoverPresets.web.js");var _floatingToolsCore=require("@buoy-gg/floating-tools-core");var _teamToolsNote=require("./teamToolsNote.js");var _floatingToolsWeb=require("./floatingTools.web.js");var _DialDevToolsWeb=require("./dial/DialDevTools.web.js");var _dialUsageStore=require("./dial/dialUsageStore.js");var _OnboardingTooltipWeb=require("./dial/OnboardingTooltip.web.js");var _DevToolsSettingsModalWeb=require("./DevToolsSettingsModal.web.js");var _AppHostWeb=require("./AppHost.web.js");var _MinimizedToolsStackWeb=require("./MinimizedToolsStack.web.js");var _ToggleStateManager=require("./ToggleStateManager.js");var _createWebTools=require("../utils/createWebTools.js");var _BrowserToolRuntime=require("./BrowserToolRuntime.js");var _releaseOptIn=require("../releaseOptIn.js");var _BuoySignInWeb=require("./BuoySignIn.web.js");var _Buoy=require("../Buoy.js");var _BuoyCodeSignIn=require("./BuoyCodeSignIn.js");var _DevToolsVisibilityContext=require("./DevToolsVisibilityContext.js");var _createWebTool=require("../utils/createWebTool.js");var _DefaultConfigContext=require("./DefaultConfigContext.js");var _DevToolsSettingsModalShared=require("./DevToolsSettingsModal.shared.js");var _defaultConfig=require("./defaultConfig.js");var _installedTools=require("../installedTools.js");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(n,s){if("function"==typeof WeakMap)var i=new WeakMap,a=new WeakMap;return(_interopRequireWildcard=function(o,r){if(!r&&o&&o.__esModule)return o;var l,c,p={__proto__:null,default:o};if(null===o||"object"!=typeof o&&"function"!=typeof o)return p;if(l=r?a:i){if(l.has(o))return l.get(o);l.set(o,p)}for(const d in o)"default"!==d&&{}.hasOwnProperty.call(o,d)&&((c=(l=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,d))&&(c.get||c.set)?l(p,d,c):p[d]=o[d]);return p})(n,s)}const EMPTY_MODULES={};const MENU_TOOLTIP_KEY="@react_buoy_floating_menu_tooltip_shown";const webSettingsStorage=_sharedUi.persistentStorage;function MenuLauncherIcon({size:n=14,color:s="#20C997"}){const i=Math.max(2,n/4);const a=Math.max(1,n/16);return(0,_jsxRuntime.jsx)("div",{style:{display:"grid",gridTemplateColumns:`repeat(3, ${i}px)`,gap:a,width:n,height:n,alignContent:"center",justifyContent:"center"},children:Array.from({length:9}).map((o,r)=>(0,_jsxRuntime.jsx)("div",{style:{width:i,height:i,borderRadius:i/2,backgroundColor:s}},r))})}function AdmittedFloatingDevTools(n){const{defaultFloatingTools:s,defaultDialTools:i,disableHints:a=false,children:o}=n;const r=(0,_react.useMemo)(()=>i?(0,_defaultConfig.validateDialConfig)(i):i,[i]);return(0,_jsxRuntime.jsx)(_DefaultConfigContext.DefaultConfigProvider,{defaultFloatingTools:s,defaultDialTools:r,children:(0,_jsxRuntime.jsx)(_sharedUi.HintsProvider,{disableHints:a,children:(0,_jsxRuntime.jsxs)(_DevToolsVisibilityContext.DevToolsVisibilityProvider,{children:[(0,_jsxRuntime.jsx)(_AppHostWeb.AppHostProvider,{children:(0,_jsxRuntime.jsx)(FloatingDevToolsInner,{...n})}),o]})})})}const STARTUP_ROOTS=["ReduxAutoInstrument","ConsoleRoot","RouteTracker","ReactQueryTracker"];function StartupCapture({modules:n=EMPTY_MODULES}){return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:Object.entries(n).flatMap(([s,i])=>STARTUP_ROOTS.map(a=>{const o=i[a];return o?(0,_jsxRuntime.jsx)(o,{},`${s}:${a}`):null}))})}function WebToolOpenerBridge(){const{openApps:n,restore:s}=(0,_AppHostWeb.useAppHost)();(0,_react.useEffect)(()=>(0,_sharedUi.registerToolOpener)(i=>{const a=n.find(o=>o.id===i);if(!a)return false;s(a.instanceId);return true}),[n,s]);return null}function defaultEnvironment(){const n=(0,_license.capacitorDebug)();const s=n===null?process.env.NODE_ENV:n?"development":"production";return(0,_sharedUi.normalizeEnvironment)(s??"dev")}function configOverrides(n,s,i,a){const o=x=>Object.entries(n).find(([v])=>v.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")===x)?.[1];const r=[];const l=o("env");if(s?.length&&l?.createEnvTool&&l.createEnvVarConfig){r.push((0,_createWebTool.createWebTool)(l.createEnvTool({requiredEnvVars:l.createEnvVarConfig(s)})))}const c=o("storage");if(i?.length&&c?.createStorageTool){r.push((0,_createWebTool.createWebTool)(c.createStorageTool({requiredStorageKeys:i})))}const p=o("ask-buoy");const d=a==="hosted"?p?.hostedAskBuoy?.():a;if(d&&p?.createAskBuoyTool)r.push((0,_createWebTool.createWebTool)(p.createAskBuoyTool(d)));return r}function toggleIsOn(n){if(n.launchMode!=="toggle-only")return void 0;const s=n.isOn;return typeof s==="function"?s():void 0}function FloatingDevToolsInner({environment:n,userRole:s="admin",availableEnvironments:i,onEnvironmentSwitch:a,apps:o,modules:r=EMPTY_MODULES,externalSync:l,requiredEnvVars:c,sentryGetClient:p,disableHints:d=false,headless:x=false,hidden:v=false,defaultFloatingTools:Z,defaultDialTools:E,zustandStores:M,requiredStorageKeys:B,askBuoy:W}){const I=n??defaultEnvironment();const ee=(0,_react.useMemo)(()=>E?(0,_defaultConfig.validateDialConfig)(E):void 0,[E]);const[g,S]=(0,_react.useState)(false);const[y,O]=(0,_react.useState)(false);const[,R]=(0,_react.useState)(0);(0,_react.useEffect)(()=>_ToggleStateManager.toggleStateManager.subscribe(()=>R(e=>e+1)),[]);const w=(0,_react.useRef)(false);const m=(0,_AppHostWeb.useAppHost)();const L=(0,_react.useMemo)(()=>configOverrides(r,c,B,W),[r,c,B,W]);const{allowedTools:b}=(0,_license.useLicense)();const f=(0,_react.useMemo)(()=>(0,_floatingToolsCore.filterTeamTools)((0,_autoDiscoverPresetsWeb.autoDiscoverWithCustom)([...(0,_createWebTools.createWebTools)(r),...o??[],...L]),b),[o,r,L,b]);const{openApps:F,close:N}=m;(0,_react.useEffect)(()=>{if(!b)return;for(const e of F){if(!(0,_floatingToolsCore.isTeamToolAllowed)(e.id,b))N(e.instanceId)}},[F,b,N]);const A=(0,_react.useMemo)(()=>Object.entries(r).find(([e])=>e.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")==="zustand")?.[1],[r]);(0,_react.useEffect)(()=>{if(!M||typeof A?.watchStores!=="function")return;const e=A.watchStores(M);return typeof e==="function"?e:void 0},[M,A]);const C=(0,_DevToolsVisibilityContext.useDevToolsVisibility)();const K=m.openApps.some(e=>!e.minimized);(0,_react.useEffect)(()=>{C.setDialOpen(g)},[g,C.setDialOpen]);(0,_react.useEffect)(()=>{C.setToolOpen(K||y)},[K,y,C.setToolOpen]);const{registerApps:V}=m;(0,_react.useEffect)(()=>{V(f.map(e=>{const t=e.icon;return{...e,icon:typeof t==="function"?({size:u})=>t(u):t}}))},[V,f]);const ne=(0,_react.useMemo)(()=>f.map(e=>({id:e.id,name:e.name,description:e.description,slot:e.slot})),[f]);(0,_floatingToolsReact.useSettings)({availableTools:ne,storage:webSettingsStorage});(0,_react.useEffect)(()=>{let e=false;const t=async()=>{const[u,T]=await Promise.all([_sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.dial.isOpen()),_sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.settings.modalOpen())]);if(e)return;if(u==="true")S(true);if(T==="true"){S(true);O(true)}w.current=true};void t();return()=>{e=true}},[]);(0,_react.useEffect)(()=>{if(!w.current)return;void _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.dial.isOpen(),g?"true":"false")},[g]);(0,_react.useEffect)(()=>{if(!w.current)return;void _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.settings.modalOpen(),y?"true":"false")},[y]);const _=(0,_react.useCallback)(e=>{void(0,_dialUsageStore.recordToolUsage)(e.id);if(e.launchMode==="toggle-only"){e.onPress?.();R(t=>t+1);return}if(e.component){const t=typeof e.icon==="function"?e.icon(20):e.icon;m.open({id:e.id,title:e.name||(0,_floatingToolsReact.getToolLabel)(e.id),component:e.component,props:e.props,modal:e.modal,launchMode:e.launchMode||"self-modal",singleton:e.singleton??true,icon:t,color:e.color||(0,_floatingToolsReact.getToolColor)(e.id)})}else{e.onPress?.()}},[m]);const z=(0,_react.useRef)({tools:f,openApps:m.openApps,openTool:_});z.current={tools:f,openApps:m.openApps,openTool:_};(0,_react.useEffect)(()=>(0,_sharedUi.registerToolOpener)(e=>{const{tools:t,openApps:u,openTool:T}=z.current;if(u.some(q=>q.id===e))return false;const P=t.find(q=>q.id===e);if(!P||P.launchMode==="toggle-only")return false;T(P);return true}),[]);const D=(0,_react.useMemo)(()=>{const e=(0,_autoDiscoverPresetsWeb.getToolsBySlot)(f,"dial");return e.map(t=>{const u=t.color||(0,_floatingToolsReact.getToolColor)(t.id);let T;if(typeof t.icon==="string"){T=t.icon}else if(typeof t.icon==="function"){T=t.icon(32)}else{T=null}return{id:t.id,name:t.name||(0,_floatingToolsReact.getToolLabel)(t.id),icon:T,unavailable:!t.component&&!t.onPress,color:u,onPress:()=>{_(t);S(false)}}})},[f,_]);const H=(0,_react.useMemo)(()=>{if(!g)return D;const e=new Map(D.map(t=>[t.id,t]));return(0,_dialUsageStore.getRankedToolIds)(D.map(t=>t.id)).map(t=>e.get(t)).filter(t=>Boolean(t))},[g,D]);const{settings:k}=(0,_DevToolsSettingsModalShared.useDevToolsSettings)();const te=(0,_react.useMemo)(()=>(0,_autoDiscoverPresetsWeb.getToolsBySlot)(f,"row").filter(e=>(k.floatingTools[e.id]??false)===true&&(e.component||e.onPress)),[f,k.floatingTools]);const oe=(0,_react.useMemo)(()=>f.map(e=>({id:e.id,name:e.name||(0,_floatingToolsReact.getToolLabel)(e.id),description:e.description||(0,_floatingToolsReact.getToolDescription)(e.id),slot:e.slot,icon:e.icon,color:e.color})),[f]);const[se,U]=(0,_react.useState)(false);const $=m.openApps.some(e=>!e.minimized);(0,_react.useEffect)(()=>{if(d)return;let e=false;const t=setTimeout(async()=>{const u=await _sharedUi.persistentStorage.getItem(MENU_TOOLTIP_KEY);if(!e&&!u)U(true)},1e3);return()=>{e=true;clearTimeout(t)}},[d]);const h=(0,_react.useCallback)(()=>{U(false);void _sharedUi.persistentStorage.setItem(MENU_TOOLTIP_KEY,"true")},[]);const Y=(0,_react.useCallback)(()=>{h();S(true)},[h]);const ie=(0,_react.useCallback)(()=>{S(false);O(false)},[]);const re=(0,_react.useCallback)(()=>{O(e=>!e)},[]);const ae=(0,_react.useCallback)(()=>O(false),[]);const G=Boolean(i?.length&&a);const Q=k.floatingTools.environment!==false;const j=se&&!g&&!$&&!v;(0,_react.useEffect)(()=>{if(!j)return;const e=u=>{if(!(u.target instanceof Element)||!u.target.closest("[data-buoy-root]"))h()};const t=u=>{if(u.key==="Escape")h()};document.addEventListener("pointerdown",e,true);document.addEventListener("keydown",t);return()=>{document.removeEventListener("pointerdown",e,true);document.removeEventListener("keydown",t)}},[j,h]);const J=m.openApps.some(e=>e.minimized&&e.launchMode!=="toggle-only");const X=(0,_jsxRuntime.jsx)(_BrowserToolRuntime.BrowserToolRuntime,{modules:r,apps:o,requiredEnvVars:c,externalSync:l,headless:x,sentryGetClient:p});if(x)return X;return(0,_jsxRuntime.jsxs)("div",{"data-buoy-root":"",style:{display:"contents"},children:[X,(0,_jsxRuntime.jsx)(WebToolOpenerBridge,{}),j&&(0,_jsxRuntime.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.85)",zIndex:1e4,pointerEvents:"none"}}),(0,_jsxRuntime.jsx)("div",{style:v?{visibility:"hidden"}:{display:"contents"},"aria-hidden":v||void 0,children:(0,_jsxRuntime.jsxs)(_floatingToolsWeb.FloatingTools,{enablePositionPersistence:!j,pushToSide:g||$,suspendPointerEvents:g,centerOnboarding:j,minimizedStack:J?(0,_jsxRuntime.jsx)(_MinimizedToolsStackWeb.MinimizedToolsStack,{}):void 0,hasMinimizedStack:J,children:[I&&Q&&!G&&(0,_jsxRuntime.jsx)(_sharedUi.EnvironmentIndicator,{environment:I}),G&&Q&&(0,_jsxRuntime.jsx)(_sharedUi.EnvironmentSelectorInline,{currentEnvironment:I??"local",availableEnvironments:i,onSelect:a}),s?(0,_jsxRuntime.jsx)(_floatingToolsWeb.UserStatus,{userRole:s,onPress:Y}):(0,_jsxRuntime.jsx)("button",{"aria-label":"Open dev tools",onClick:Y,style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"6px 8px",background:"none",border:"none",cursor:"pointer"},children:(0,_jsxRuntime.jsx)(MenuLauncherIcon,{})}),te.map(e=>(0,_jsxRuntime.jsx)("button",{"aria-label":e.name||(0,_floatingToolsReact.getToolLabel)(e.id),"aria-pressed":toggleIsOn(e),title:e.description,onClick:()=>_(e),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"4px 6px",borderRadius:6,background:"none",border:"none",cursor:"pointer"},children:typeof e.icon==="function"?e.icon(16):e.icon},e.id))]})}),j&&(0,_jsxRuntime.jsx)(_OnboardingTooltipWeb.OnboardingTooltip,{title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools.",onDismiss:h}),g&&!v&&(0,_jsxRuntime.jsx)(_DialDevToolsWeb.DialMenu,{icons:H,onClose:ie,centerLabel:"BUOY",onCenterPress:re,settingsOpen:y,hintsDisabled:d,emptyNote:b&&H.length===0?_teamToolsNote.NO_TEAM_TOOLS_NOTE:void 0}),y&&!v&&(0,_jsxRuntime.jsx)(_DevToolsSettingsModalWeb.SettingsModal,{visible:true,onClose:ae,availableTools:oe,defaultFloatingTools:Z,defaultDialTools:ee,onSettingsChange:e=>{}}),!v&&(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_AppHostWeb.AppOverlay,{}),(0,_jsxRuntime.jsx)(_floating.FloatingToolHost,{})]})]})}function useCapacitorSignInAudience(n){const s=n&&typeof n==="object"?n.appId:void 0;const i=!!n;(0,_react.useEffect)(()=>{if(!i)return;let a=false;const o=licenseModule.SessionManager;if(!o)return;const r=l=>{if(a||!l)return;o.configure({audience:`app:${l}`});void o.load().catch(()=>{})};if(s)r(s);else void(0,_license.loadCapacitorAppHost)().then(l=>r(l?.bundleId)).catch(()=>{});return()=>{a=true}},[i,s])}function usePublishAppId(n){const s=n&&typeof n==="object"?n.appId:void 0;(0,_react.useEffect)(()=>{let i=false;if(s){(0,_sharedUi.setBuoyAppId)(s)}else if((0,_license.isCapacitorNative)()){void(0,_license.loadCapacitorAppHost)().then(a=>{if(!i)(0,_sharedUi.setBuoyAppId)(a?.bundleId)}).catch(()=>{})}else if(typeof location!=="undefined"&&location.origin&&location.origin!=="null"){(0,_sharedUi.setBuoyAppId)(location.origin)}return()=>{i=true}},[s])}let warnedNoTools=false;function withInstalledTools(n){if(n.modules)return n;if(!_installedTools.installedToolsFound&&!warnedNoTools&&typeof console!=="undefined"){warnedNoTools=true;console.info("[Buoy] No tools loaded. Add buoy() from '@buoy-gg/core/vite' to your Vite plugins, or pass modules to FloatingDevTools.")}return{...n,modules:_installedTools.installedTools}}function FloatingDevTools(n){return(0,_jsxRuntime.jsx)(_floating.BuoyPortal,{children:(0,_jsxRuntime.jsx)(FloatingDevToolsContent,{...withInstalledTools(n)})})}function FloatingDevToolsContent(n){const{access:s,isPro:i,licenseKey:a}=(0,_license.useLicense)();(0,_react.useEffect)(()=>{void _license.LicenseManager.configure(n.licenseKey??(0,_Buoy.defaultLicenseKey)())},[n.licenseKey]);const o=n.licenseKey===void 0||(0,_license.sameLicenseKey)(n.licenseKey,a);const r=(0,_license.resolveDevBuild)(typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production");const l=o&&s.status==="admitted";(0,_react.useEffect)(()=>{if(l)(0,_sharedUi.startSettingsSync)()},[l]);(0,_react.useEffect)(()=>{if(r||s.status==="initializing")return;if(i&&l)(0,_releaseOptIn.markReleaseOptIn)();else(0,_releaseOptIn.clearReleaseOptIn)()},[r,i,l,s.status]);const c=(0,_license.isCapacitorNative)();useCapacitorSignInAudience(c?n.signIn:void 0);usePublishAppId(n.signIn);if(!r&&!i){if(!n.signIn||n.headless)return null;return c?(0,_jsxRuntime.jsx)(_BuoyCodeSignIn.BuoySignIn,{needsPlan:true}):(0,_jsxRuntime.jsx)(_BuoySignInWeb.BuoySignIn,{})}if(!l){return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[s.status==="initializing"&&(0,_jsxRuntime.jsx)(StartupCapture,{modules:n.modules}),n.headless?null:n.signIn&&c?(0,_jsxRuntime.jsx)(_BuoyCodeSignIn.BuoySignIn,{}):(0,_jsxRuntime.jsx)(_sharedUi.AccountSetup,{})]})}return(0,_jsxRuntime.jsx)(AdmittedFloatingDevTools,{...n})}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingDevTools=FloatingDevTools;var _floating=require("@buoy-gg/shared-ui/floating");var _license=_interopRequireWildcard(require("@buoy-gg/license"));var licenseModule=_license;var _sharedUi=require("@buoy-gg/shared-ui");var _react=require("react");var _floatingToolsReact=require("@buoy-gg/floating-tools-react");var _autoDiscoverPresetsWeb=require("../utils/autoDiscoverPresets.web.js");var _floatingToolsCore=require("@buoy-gg/floating-tools-core");var _teamToolsNote=require("./teamToolsNote.js");var _floatingToolsWeb=require("./floatingTools.web.js");var _DialDevToolsWeb=require("./dial/DialDevTools.web.js");var _dialUsageStore=require("./dial/dialUsageStore.js");var _OnboardingTooltipWeb=require("./dial/OnboardingTooltip.web.js");var _DevToolsSettingsModalWeb=require("./DevToolsSettingsModal.web.js");var _AppHostWeb=require("./AppHost.web.js");var _MinimizedToolsStackWeb=require("./MinimizedToolsStack.web.js");var _ToggleStateManager=require("./ToggleStateManager.js");var _createWebTools=require("../utils/createWebTools.js");var _BrowserToolRuntime=require("./BrowserToolRuntime.js");var _releaseOptIn=require("../releaseOptIn.js");var _BuoySignInWeb=require("./BuoySignIn.web.js");var _Buoy=require("../Buoy.js");var _bundlerKey=require("../bundlerKey.js");var _BuoyCodeSignIn=require("./BuoyCodeSignIn.js");var _DevToolsVisibilityContext=require("./DevToolsVisibilityContext.js");var _createWebTool=require("../utils/createWebTool.js");var _DefaultConfigContext=require("./DefaultConfigContext.js");var _DevToolsSettingsModalShared=require("./DevToolsSettingsModal.shared.js");var _defaultConfig=require("./defaultConfig.js");var _installedTools=require("../installedTools.js");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(n,s){if("function"==typeof WeakMap)var i=new WeakMap,a=new WeakMap;return(_interopRequireWildcard=function(o,r){if(!r&&o&&o.__esModule)return o;var l,c,p={__proto__:null,default:o};if(null===o||"object"!=typeof o&&"function"!=typeof o)return p;if(l=r?a:i){if(l.has(o))return l.get(o);l.set(o,p)}for(const d in o)"default"!==d&&{}.hasOwnProperty.call(o,d)&&((c=(l=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,d))&&(c.get||c.set)?l(p,d,c):p[d]=o[d]);return p})(n,s)}const EMPTY_MODULES={};const MENU_TOOLTIP_KEY="@react_buoy_floating_menu_tooltip_shown";const webSettingsStorage=_sharedUi.persistentStorage;function MenuLauncherIcon({size:n=14,color:s="#20C997"}){const i=Math.max(2,n/4);const a=Math.max(1,n/16);return(0,_jsxRuntime.jsx)("div",{style:{display:"grid",gridTemplateColumns:`repeat(3, ${i}px)`,gap:a,width:n,height:n,alignContent:"center",justifyContent:"center"},children:Array.from({length:9}).map((o,r)=>(0,_jsxRuntime.jsx)("div",{style:{width:i,height:i,borderRadius:i/2,backgroundColor:s}},r))})}function AdmittedFloatingDevTools(n){const{defaultFloatingTools:s,defaultDialTools:i,disableHints:a=false,children:o}=n;const r=(0,_react.useMemo)(()=>i?(0,_defaultConfig.validateDialConfig)(i):i,[i]);return(0,_jsxRuntime.jsx)(_DefaultConfigContext.DefaultConfigProvider,{defaultFloatingTools:s,defaultDialTools:r,children:(0,_jsxRuntime.jsx)(_sharedUi.HintsProvider,{disableHints:a,children:(0,_jsxRuntime.jsxs)(_DevToolsVisibilityContext.DevToolsVisibilityProvider,{children:[(0,_jsxRuntime.jsx)(_AppHostWeb.AppHostProvider,{children:(0,_jsxRuntime.jsx)(FloatingDevToolsInner,{...n})}),o]})})})}const STARTUP_ROOTS=["ReduxAutoInstrument","ConsoleRoot","RouteTracker","ReactQueryTracker"];function StartupCapture({modules:n=EMPTY_MODULES}){return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:Object.entries(n).flatMap(([s,i])=>STARTUP_ROOTS.map(a=>{const o=i[a];return o?(0,_jsxRuntime.jsx)(o,{},`${s}:${a}`):null}))})}function WebToolOpenerBridge(){const{openApps:n,restore:s}=(0,_AppHostWeb.useAppHost)();(0,_react.useEffect)(()=>(0,_sharedUi.registerToolOpener)(i=>{const a=n.find(o=>o.id===i);if(!a)return false;s(a.instanceId);return true}),[n,s]);return null}function defaultEnvironment(){const n=(0,_license.capacitorDebug)();const s=n===null?process.env.NODE_ENV:n?"development":"production";return(0,_sharedUi.normalizeEnvironment)(s??"dev")}function configOverrides(n,s,i,a){const o=x=>Object.entries(n).find(([m])=>m.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")===x)?.[1];const r=[];const l=o("env");if(s?.length&&l?.createEnvTool&&l.createEnvVarConfig){r.push((0,_createWebTool.createWebTool)(l.createEnvTool({requiredEnvVars:l.createEnvVarConfig(s)})))}const c=o("storage");if(i?.length&&c?.createStorageTool){r.push((0,_createWebTool.createWebTool)(c.createStorageTool({requiredStorageKeys:i})))}const p=o("ask-buoy");const d=a==="hosted"?p?.hostedAskBuoy?.():a;if(d&&p?.createAskBuoyTool)r.push((0,_createWebTool.createWebTool)(p.createAskBuoyTool(d)));return r}function toggleIsOn(n){if(n.launchMode!=="toggle-only")return void 0;const s=n.isOn;return typeof s==="function"?s():void 0}function FloatingDevToolsInner({environment:n,userRole:s="admin",availableEnvironments:i,onEnvironmentSwitch:a,apps:o,modules:r=EMPTY_MODULES,externalSync:l,requiredEnvVars:c,sentryGetClient:p,disableHints:d=false,headless:x=false,hidden:m=false,defaultFloatingTools:Z,defaultDialTools:E,zustandStores:M,requiredStorageKeys:B,askBuoy:W}){const I=n??defaultEnvironment();const ee=(0,_react.useMemo)(()=>E?(0,_defaultConfig.validateDialConfig)(E):void 0,[E]);const[g,S]=(0,_react.useState)(false);const[y,O]=(0,_react.useState)(false);const[,R]=(0,_react.useState)(0);(0,_react.useEffect)(()=>_ToggleStateManager.toggleStateManager.subscribe(()=>R(e=>e+1)),[]);const w=(0,_react.useRef)(false);const v=(0,_AppHostWeb.useAppHost)();const L=(0,_react.useMemo)(()=>configOverrides(r,c,B,W),[r,c,B,W]);const{allowedTools:b}=(0,_license.useLicense)();const f=(0,_react.useMemo)(()=>(0,_floatingToolsCore.filterTeamTools)((0,_autoDiscoverPresetsWeb.autoDiscoverWithCustom)([...(0,_createWebTools.createWebTools)(r),...o??[],...L]),b),[o,r,L,b]);const{openApps:F,close:K}=v;(0,_react.useEffect)(()=>{if(!b)return;for(const e of F){if(!(0,_floatingToolsCore.isTeamToolAllowed)(e.id,b))K(e.instanceId)}},[F,b,K]);const A=(0,_react.useMemo)(()=>Object.entries(r).find(([e])=>e.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")==="zustand")?.[1],[r]);(0,_react.useEffect)(()=>{if(!M||typeof A?.watchStores!=="function")return;const e=A.watchStores(M);return typeof e==="function"?e:void 0},[M,A]);const C=(0,_DevToolsVisibilityContext.useDevToolsVisibility)();const N=v.openApps.some(e=>!e.minimized);(0,_react.useEffect)(()=>{C.setDialOpen(g)},[g,C.setDialOpen]);(0,_react.useEffect)(()=>{C.setToolOpen(N||y)},[N,y,C.setToolOpen]);const{registerApps:V}=v;(0,_react.useEffect)(()=>{V(f.map(e=>{const t=e.icon;return{...e,icon:typeof t==="function"?({size:u})=>t(u):t}}))},[V,f]);const ne=(0,_react.useMemo)(()=>f.map(e=>({id:e.id,name:e.name,description:e.description,slot:e.slot})),[f]);(0,_floatingToolsReact.useSettings)({availableTools:ne,storage:webSettingsStorage});(0,_react.useEffect)(()=>{let e=false;const t=async()=>{const[u,T]=await Promise.all([_sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.dial.isOpen()),_sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.settings.modalOpen())]);if(e)return;if(u==="true")S(true);if(T==="true"){S(true);O(true)}w.current=true};void t();return()=>{e=true}},[]);(0,_react.useEffect)(()=>{if(!w.current)return;void _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.dial.isOpen(),g?"true":"false")},[g]);(0,_react.useEffect)(()=>{if(!w.current)return;void _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.settings.modalOpen(),y?"true":"false")},[y]);const _=(0,_react.useCallback)(e=>{void(0,_dialUsageStore.recordToolUsage)(e.id);if(e.launchMode==="toggle-only"){e.onPress?.();R(t=>t+1);return}if(e.component){const t=typeof e.icon==="function"?e.icon(20):e.icon;v.open({id:e.id,title:e.name||(0,_floatingToolsReact.getToolLabel)(e.id),component:e.component,props:e.props,modal:e.modal,launchMode:e.launchMode||"self-modal",singleton:e.singleton??true,icon:t,color:e.color||(0,_floatingToolsReact.getToolColor)(e.id)})}else{e.onPress?.()}},[v]);const z=(0,_react.useRef)({tools:f,openApps:v.openApps,openTool:_});z.current={tools:f,openApps:v.openApps,openTool:_};(0,_react.useEffect)(()=>(0,_sharedUi.registerToolOpener)(e=>{const{tools:t,openApps:u,openTool:T}=z.current;if(u.some(q=>q.id===e))return false;const P=t.find(q=>q.id===e);if(!P||P.launchMode==="toggle-only")return false;T(P);return true}),[]);const D=(0,_react.useMemo)(()=>{const e=(0,_autoDiscoverPresetsWeb.getToolsBySlot)(f,"dial");return e.map(t=>{const u=t.color||(0,_floatingToolsReact.getToolColor)(t.id);let T;if(typeof t.icon==="string"){T=t.icon}else if(typeof t.icon==="function"){T=t.icon(32)}else{T=null}return{id:t.id,name:t.name||(0,_floatingToolsReact.getToolLabel)(t.id),icon:T,unavailable:!t.component&&!t.onPress,color:u,onPress:()=>{_(t);S(false)}}})},[f,_]);const H=(0,_react.useMemo)(()=>{if(!g)return D;const e=new Map(D.map(t=>[t.id,t]));return(0,_dialUsageStore.getRankedToolIds)(D.map(t=>t.id)).map(t=>e.get(t)).filter(t=>Boolean(t))},[g,D]);const{settings:k}=(0,_DevToolsSettingsModalShared.useDevToolsSettings)();const te=(0,_react.useMemo)(()=>(0,_autoDiscoverPresetsWeb.getToolsBySlot)(f,"row").filter(e=>(k.floatingTools[e.id]??false)===true&&(e.component||e.onPress)),[f,k.floatingTools]);const oe=(0,_react.useMemo)(()=>f.map(e=>({id:e.id,name:e.name||(0,_floatingToolsReact.getToolLabel)(e.id),description:e.description||(0,_floatingToolsReact.getToolDescription)(e.id),slot:e.slot,icon:e.icon,color:e.color})),[f]);const[se,U]=(0,_react.useState)(false);const $=v.openApps.some(e=>!e.minimized);(0,_react.useEffect)(()=>{if(d)return;let e=false;const t=setTimeout(async()=>{const u=await _sharedUi.persistentStorage.getItem(MENU_TOOLTIP_KEY);if(!e&&!u)U(true)},1e3);return()=>{e=true;clearTimeout(t)}},[d]);const h=(0,_react.useCallback)(()=>{U(false);void _sharedUi.persistentStorage.setItem(MENU_TOOLTIP_KEY,"true")},[]);const Y=(0,_react.useCallback)(()=>{h();S(true)},[h]);const ie=(0,_react.useCallback)(()=>{S(false);O(false)},[]);const re=(0,_react.useCallback)(()=>{O(e=>!e)},[]);const ae=(0,_react.useCallback)(()=>O(false),[]);const G=Boolean(i?.length&&a);const Q=k.floatingTools.environment!==false;const j=se&&!g&&!$&&!m;(0,_react.useEffect)(()=>{if(!j)return;const e=u=>{if(!(u.target instanceof Element)||!u.target.closest("[data-buoy-root]"))h()};const t=u=>{if(u.key==="Escape")h()};document.addEventListener("pointerdown",e,true);document.addEventListener("keydown",t);return()=>{document.removeEventListener("pointerdown",e,true);document.removeEventListener("keydown",t)}},[j,h]);const J=v.openApps.some(e=>e.minimized&&e.launchMode!=="toggle-only");const X=(0,_jsxRuntime.jsx)(_BrowserToolRuntime.BrowserToolRuntime,{modules:r,apps:o,requiredEnvVars:c,externalSync:l,headless:x,sentryGetClient:p});if(x)return X;return(0,_jsxRuntime.jsxs)("div",{"data-buoy-root":"",style:{display:"contents"},children:[X,(0,_jsxRuntime.jsx)(WebToolOpenerBridge,{}),j&&(0,_jsxRuntime.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.85)",zIndex:1e4,pointerEvents:"none"}}),(0,_jsxRuntime.jsx)("div",{style:m?{visibility:"hidden"}:{display:"contents"},"aria-hidden":m||void 0,children:(0,_jsxRuntime.jsxs)(_floatingToolsWeb.FloatingTools,{enablePositionPersistence:!j,pushToSide:g||$,suspendPointerEvents:g,centerOnboarding:j,minimizedStack:J?(0,_jsxRuntime.jsx)(_MinimizedToolsStackWeb.MinimizedToolsStack,{}):void 0,hasMinimizedStack:J,children:[I&&Q&&!G&&(0,_jsxRuntime.jsx)(_sharedUi.EnvironmentIndicator,{environment:I}),G&&Q&&(0,_jsxRuntime.jsx)(_sharedUi.EnvironmentSelectorInline,{currentEnvironment:I??"local",availableEnvironments:i,onSelect:a}),s?(0,_jsxRuntime.jsx)(_floatingToolsWeb.UserStatus,{userRole:s,onPress:Y}):(0,_jsxRuntime.jsx)("button",{"aria-label":"Open dev tools",onClick:Y,style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"6px 8px",background:"none",border:"none",cursor:"pointer"},children:(0,_jsxRuntime.jsx)(MenuLauncherIcon,{})}),te.map(e=>(0,_jsxRuntime.jsx)("button",{"aria-label":e.name||(0,_floatingToolsReact.getToolLabel)(e.id),"aria-pressed":toggleIsOn(e),title:e.description,onClick:()=>_(e),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"4px 6px",borderRadius:6,background:"none",border:"none",cursor:"pointer"},children:typeof e.icon==="function"?e.icon(16):e.icon},e.id))]})}),j&&(0,_jsxRuntime.jsx)(_OnboardingTooltipWeb.OnboardingTooltip,{title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools.",onDismiss:h}),g&&!m&&(0,_jsxRuntime.jsx)(_DialDevToolsWeb.DialMenu,{icons:H,onClose:ie,centerLabel:"BUOY",onCenterPress:re,settingsOpen:y,hintsDisabled:d,emptyNote:b&&H.length===0?_teamToolsNote.NO_TEAM_TOOLS_NOTE:void 0}),y&&!m&&(0,_jsxRuntime.jsx)(_DevToolsSettingsModalWeb.SettingsModal,{visible:true,onClose:ae,availableTools:oe,defaultFloatingTools:Z,defaultDialTools:ee,onSettingsChange:e=>{}}),!m&&(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_AppHostWeb.AppOverlay,{}),(0,_jsxRuntime.jsx)(_floating.FloatingToolHost,{})]})]})}function useCapacitorSignInAudience(n){const s=n&&typeof n==="object"?n.appId:void 0;const i=!!n;(0,_react.useEffect)(()=>{if(!i)return;let a=false;const o=licenseModule.SessionManager;if(!o)return;const r=l=>{if(a||!l)return;o.configure({audience:`app:${l}`});void o.load().catch(()=>{})};if(s)r(s);else void(0,_license.loadCapacitorAppHost)().then(l=>r(l?.bundleId)).catch(()=>{});return()=>{a=true}},[i,s])}function usePublishAppId(n){const s=n&&typeof n==="object"?n.appId:void 0;(0,_react.useEffect)(()=>{let i=false;if(s){(0,_sharedUi.setBuoyAppId)(s)}else if((0,_license.isCapacitorNative)()){void(0,_license.loadCapacitorAppHost)().then(a=>{if(!i)(0,_sharedUi.setBuoyAppId)(a?.bundleId)}).catch(()=>{})}else if(typeof location!=="undefined"&&location.origin&&location.origin!=="null"){(0,_sharedUi.setBuoyAppId)(location.origin)}return()=>{i=true}},[s])}let warnedNoTools=false;function withInstalledTools(n){if(n.modules)return n;if(!_installedTools.installedToolsFound&&!warnedNoTools&&typeof console!=="undefined"){warnedNoTools=true;console.info("[Buoy] No tools loaded. Add buoy() from '@buoy-gg/core/vite' to your Vite plugins, or pass modules to FloatingDevTools.")}return{...n,modules:_installedTools.installedTools}}function FloatingDevTools(n){return(0,_jsxRuntime.jsx)(_floating.BuoyPortal,{children:(0,_jsxRuntime.jsx)(FloatingDevToolsContent,{...withInstalledTools(n)})})}function FloatingDevToolsContent(n){const{access:s,isPro:i,licenseKey:a}=(0,_license.useLicense)();(0,_react.useEffect)(()=>{void _license.LicenseManager.configure(n.licenseKey??(0,_Buoy.defaultLicenseKey)(_bundlerKey.bundlerKey))},[n.licenseKey]);const o=n.licenseKey===void 0||(0,_license.sameLicenseKey)(n.licenseKey,a);const r=(0,_license.resolveDevBuild)(typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production");const l=o&&s.status==="admitted";(0,_react.useEffect)(()=>{if(l)(0,_sharedUi.startSettingsSync)()},[l]);(0,_react.useEffect)(()=>{if(r||s.status==="initializing")return;if(i&&l)(0,_releaseOptIn.markReleaseOptIn)();else(0,_releaseOptIn.clearReleaseOptIn)()},[r,i,l,s.status]);const c=(0,_license.isCapacitorNative)();useCapacitorSignInAudience(c?n.signIn:void 0);usePublishAppId(n.signIn);if(!r&&!i){if(!n.signIn||n.headless)return null;return c?(0,_jsxRuntime.jsx)(_BuoyCodeSignIn.BuoySignIn,{needsPlan:true}):(0,_jsxRuntime.jsx)(_BuoySignInWeb.BuoySignIn,{})}if(!l){return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[s.status==="initializing"&&(0,_jsxRuntime.jsx)(StartupCapture,{modules:n.modules}),n.headless?null:n.signIn&&c?(0,_jsxRuntime.jsx)(_BuoyCodeSignIn.BuoySignIn,{}):(0,_jsxRuntime.jsx)(_sharedUi.AccountSetup,{})]})}return(0,_jsxRuntime.jsx)(AdmittedFloatingDevTools,{...n})}
|
package/lib/commonjs/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SDK_VERSION=void 0;const SDK_VERSION=exports.SDK_VERSION="7.0.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SDK_VERSION=void 0;const SDK_VERSION=exports.SDK_VERSION="7.0.81";
|
package/lib/module/Buoy.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{LicenseManager as
|
|
1
|
+
"use strict";import{LicenseManager as r}from"@buoy-gg/license";let n=true;export function isTelemetryEnabled(){return n}let i=false;let s=false;export function defaultLicenseKey(e){if(i)return void 0;try{const t=process.env.EXPO_PUBLIC_BUOY_KEY;if(t)return t}catch{}try{const t=process.env.NEXT_PUBLIC_BUOY_KEY;if(t)return t}catch{}return e?.()}export function applyDefaultLicenseKey(){if(s)return;s=true;const e=defaultLicenseKey();if(e)void r.configure(e).catch(()=>{})}export const Buoy={init(e){if(e.telemetry===false)n=false;if(e.licenseKey!==void 0)i=true;void r.configure(e.licenseKey).catch(t=>{console.warn("[Buoy] License initialization failed:",t)})},async initAsync(e){if(e.telemetry===false)n=false;if(e.licenseKey!==void 0)i=true;return r.configure(e.licenseKey)},isPro(){return r.isPro()},getState(){return r.getState()},async forceReregister(){await r.forceReregister()}};export default Buoy;
|
package/lib/module/auto.web.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{createElement as
|
|
1
|
+
"use strict";import{createElement as o,lazy as s,Suspense as i,useEffect as f,useState as a}from"react";export function shouldShowBuoy(){if(typeof window==="undefined")return false;const e=window.Capacitor;let t=false;try{t=e?.isNativePlatform?.()===true}catch{t=false}if(t)return e?.DEBUG===true;return typeof __DEV__!=="undefined"?Boolean(__DEV__):process.env.NODE_ENV!=="production"}export{bundlerKey}from"./bundlerKey.js";import{bundlerKey as c}from"./bundlerKey.js";let n;function d(){n??=s(()=>import("./floatingMenu/FloatingDevTools.web").then(e=>({default:e.FloatingDevTools})));return n}export function BuoyDevTools({enabled:e,...t}){const[r,u]=a(false);f(()=>{u(e??shouldShowBuoy())},[e]);if(!r)return null;const l=t.licenseKey??c();return o(i,{fallback:null},o(d(),{...t,licenseKey:l}))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export function bundlerKey(){try{const e=import.meta.env.VITE_BUOY_KEY;if(e)return e}catch{}try{const e=process.env.NEXT_PUBLIC_BUOY_KEY;if(e)return e}catch{}return void 0}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{BuoyPortal as xe,FloatingToolHost as Re}from"@buoy-gg/shared-ui/floating";import*as Be from"@buoy-gg/license";import{LicenseManager as Le,useLicense as ue,sameLicenseKey as Fe,resolveDevBuild as je,capacitorDebug as Ne,isCapacitorNative as fe,loadCapacitorAppHost as pe}from"@buoy-gg/license";import{AccountSetup as Ve,HintsProvider as ze,normalizeEnvironment as Ke,registerToolOpener as me,setBuoyAppId as U,startSettingsSync as We}from"@buoy-gg/shared-ui";import{useState as R,useMemo as g,useCallback as D,useEffect as c,useRef as ge}from"react";import{useSettings as He,getToolLabel as B,getToolDescription as Ue,getToolColor as Te}from"@buoy-gg/floating-tools-react";import{persistentStorage as h,devToolsStorageKeys as L,EnvironmentIndicator as $e,EnvironmentSelectorInline as Ye}from"@buoy-gg/shared-ui";import{autoDiscoverWithCustom as Ge,getToolsBySlot as ye}from"../utils/autoDiscoverPresets.web.js";import{filterTeamTools as Qe,isTeamToolAllowed as Je}from"@buoy-gg/floating-tools-core";import{NO_TEAM_TOOLS_NOTE as Xe}from"./teamToolsNote.js";import{FloatingTools as Ze,UserStatus as qe}from"./floatingTools.web.js";import{DialMenu as en}from"./dial/DialDevTools.web.js";import{getRankedToolIds as nn,recordToolUsage as on}from"./dial/dialUsageStore.js";import{OnboardingTooltip as tn}from"./dial/OnboardingTooltip.web.js";import{SettingsModal as sn}from"./DevToolsSettingsModal.web.js";import{AppHostProvider as rn,AppOverlay as an,useAppHost as ve}from"./AppHost.web.js";import{MinimizedToolsStack as ln}from"./MinimizedToolsStack.web.js";import{toggleStateManager as cn}from"./ToggleStateManager.js";import{createWebTools as dn}from"../utils/createWebTools.js";import{BrowserToolRuntime as un}from"./BrowserToolRuntime.js";import{clearReleaseOptIn as fn,markReleaseOptIn as pn}from"../releaseOptIn.js";import{BuoySignIn as mn}from"./BuoySignIn.web.js";import{defaultLicenseKey as gn}from"../Buoy.js";import{BuoySignIn as he}from"./BuoyCodeSignIn.js";import{DevToolsVisibilityProvider as Tn,useDevToolsVisibility as yn}from"./DevToolsVisibilityContext.js";import{createWebTool as $}from"../utils/createWebTool.js";import{DefaultConfigProvider as vn}from"./DefaultConfigContext.js";import{useDevToolsSettings as hn}from"./DevToolsSettingsModal.shared.js";import{validateDialConfig as be}from"./defaultConfig.js";import{installedTools as bn,installedToolsFound as On}from"../installedTools.js";import{jsx as i,jsxs as _,Fragment as Y}from"react/jsx-runtime";const Oe={};const Se="@react_buoy_floating_menu_tooltip_shown";const Sn=h;function In({size:n=14,color:t="#20C997"}){const s=Math.max(2,n/4);const a=Math.max(1,n/16);return i("div",{style:{display:"grid",gridTemplateColumns:`repeat(3, ${s}px)`,gap:a,width:n,height:n,alignContent:"center",justifyContent:"center"},children:Array.from({length:9}).map((l,r)=>i("div",{style:{width:s,height:s,borderRadius:s/2,backgroundColor:t}},r))})}function Cn(n){const{defaultFloatingTools:t,defaultDialTools:s,disableHints:a=false,children:l}=n;const r=g(()=>s?be(s):s,[s]);return i(vn,{defaultFloatingTools:t,defaultDialTools:r,children:i(ze,{disableHints:a,children:_(Tn,{children:[i(rn,{children:i(kn,{...n})}),l]})})})}const Dn=["ReduxAutoInstrument","ConsoleRoot","RouteTracker","ReactQueryTracker"];function An({modules:n=Oe}){return i(Y,{children:Object.entries(n).flatMap(([t,s])=>Dn.map(a=>{const l=s[a];return l?i(l,{},`${t}:${a}`):null}))})}function En(){const{openApps:n,restore:t}=ve();c(()=>me(s=>{const a=n.find(l=>l.id===s);if(!a)return false;t(a.instanceId);return true}),[n,t]);return null}function wn(){const n=Ne();const t=n===null?process.env.NODE_ENV:n?"development":"production";return Ke(t??"dev")}function _n(n,t,s,a){const l=M=>Object.entries(n).find(([y])=>y.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")===M)?.[1];const r=[];const d=l("env");if(t?.length&&d?.createEnvTool&&d.createEnvVarConfig){r.push($(d.createEnvTool({requiredEnvVars:d.createEnvVarConfig(t)})))}const p=l("storage");if(s?.length&&p?.createStorageTool){r.push($(p.createStorageTool({requiredStorageKeys:s})))}const A=l("ask-buoy");const b=a==="hosted"?A?.hostedAskBuoy?.():a;if(b&&A?.createAskBuoyTool)r.push($(A.createAskBuoyTool(b)));return r}function Mn(n){if(n.launchMode!=="toggle-only")return void 0;const t=n.isOn;return typeof t==="function"?t():void 0}function kn({environment:n,userRole:t="admin",availableEnvironments:s,onEnvironmentSwitch:a,apps:l,modules:r=Oe,externalSync:d,requiredEnvVars:p,sentryGetClient:A,disableHints:b=false,headless:M=false,hidden:y=false,defaultFloatingTools:Ce,defaultDialTools:F,zustandStores:j,requiredStorageKeys:G,askBuoy:Q}){const N=n??wn();const De=g(()=>F?be(F):void 0,[F]);const[m,E]=R(false);const[O,k]=R(false);const[,J]=R(0);c(()=>cn.subscribe(()=>J(e=>e+1)),[]);const V=ge(false);const T=ve();const X=g(()=>_n(r,p,G,Q),[r,p,G,Q]);const{allowedTools:S}=ue();const f=g(()=>Qe(Ge([...dn(r),...l??[],...X]),S),[l,r,X,S]);const{openApps:Z,close:q}=T;c(()=>{if(!S)return;for(const e of Z){if(!Je(e.id,S))q(e.instanceId)}},[Z,S,q]);const z=g(()=>Object.entries(r).find(([e])=>e.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")==="zustand")?.[1],[r]);c(()=>{if(!j||typeof z?.watchStores!=="function")return;const e=z.watchStores(j);return typeof e==="function"?e:void 0},[j,z]);const P=yn();const ee=T.openApps.some(e=>!e.minimized);c(()=>{P.setDialOpen(m)},[m,P.setDialOpen]);c(()=>{P.setToolOpen(ee||O)},[ee,O,P.setToolOpen]);const{registerApps:ne}=T;c(()=>{ne(f.map(e=>{const o=e.icon;return{...e,icon:typeof o==="function"?({size:u})=>o(u):o}}))},[ne,f]);const Ae=g(()=>f.map(e=>({id:e.id,name:e.name,description:e.description,slot:e.slot})),[f]);He({availableTools:Ae,storage:Sn});c(()=>{let e=false;const o=async()=>{const[u,v]=await Promise.all([h.getItem(L.dial.isOpen()),h.getItem(L.settings.modalOpen())]);if(e)return;if(u==="true")E(true);if(v==="true"){E(true);k(true)}V.current=true};void o();return()=>{e=true}},[]);c(()=>{if(!V.current)return;void h.setItem(L.dial.isOpen(),m?"true":"false")},[m]);c(()=>{if(!V.current)return;void h.setItem(L.settings.modalOpen(),O?"true":"false")},[O]);const w=D(e=>{void on(e.id);if(e.launchMode==="toggle-only"){e.onPress?.();J(o=>o+1);return}if(e.component){const o=typeof e.icon==="function"?e.icon(20):e.icon;T.open({id:e.id,title:e.name||B(e.id),component:e.component,props:e.props,modal:e.modal,launchMode:e.launchMode||"self-modal",singleton:e.singleton??true,icon:o,color:e.color||Te(e.id)})}else{e.onPress?.()}},[T]);const oe=ge({tools:f,openApps:T.openApps,openTool:w});oe.current={tools:f,openApps:T.openApps,openTool:w};c(()=>me(e=>{const{tools:o,openApps:u,openTool:v}=oe.current;if(u.some(H=>H.id===e))return false;const W=o.find(H=>H.id===e);if(!W||W.launchMode==="toggle-only")return false;v(W);return true}),[]);const x=g(()=>{const e=ye(f,"dial");return e.map(o=>{const u=o.color||Te(o.id);let v;if(typeof o.icon==="string"){v=o.icon}else if(typeof o.icon==="function"){v=o.icon(32)}else{v=null}return{id:o.id,name:o.name||B(o.id),icon:v,unavailable:!o.component&&!o.onPress,color:u,onPress:()=>{w(o);E(false)}}})},[f,w]);const te=g(()=>{if(!m)return x;const e=new Map(x.map(o=>[o.id,o]));return nn(x.map(o=>o.id)).map(o=>e.get(o)).filter(o=>Boolean(o))},[m,x]);const{settings:K}=hn();const Ee=g(()=>ye(f,"row").filter(e=>(K.floatingTools[e.id]??false)===true&&(e.component||e.onPress)),[f,K.floatingTools]);const we=g(()=>f.map(e=>({id:e.id,name:e.name||B(e.id),description:e.description||Ue(e.id),slot:e.slot,icon:e.icon,color:e.color})),[f]);const[_e,ie]=R(false);const se=T.openApps.some(e=>!e.minimized);c(()=>{if(b)return;let e=false;const o=setTimeout(async()=>{const u=await h.getItem(Se);if(!e&&!u)ie(true)},1e3);return()=>{e=true;clearTimeout(o)}},[b]);const I=D(()=>{ie(false);void h.setItem(Se,"true")},[]);const re=D(()=>{I();E(true)},[I]);const Me=D(()=>{E(false);k(false)},[]);const ke=D(()=>{k(e=>!e)},[]);const Pe=D(()=>k(false),[]);const ae=Boolean(s?.length&&a);const le=K.floatingTools.environment!==false;const C=_e&&!m&&!se&&!y;c(()=>{if(!C)return;const e=u=>{if(!(u.target instanceof Element)||!u.target.closest("[data-buoy-root]"))I()};const o=u=>{if(u.key==="Escape")I()};document.addEventListener("pointerdown",e,true);document.addEventListener("keydown",o);return()=>{document.removeEventListener("pointerdown",e,true);document.removeEventListener("keydown",o)}},[C,I]);const ce=T.openApps.some(e=>e.minimized&&e.launchMode!=="toggle-only");const de=i(un,{modules:r,apps:l,requiredEnvVars:p,externalSync:d,headless:M,sentryGetClient:A});if(M)return de;return _("div",{"data-buoy-root":"",style:{display:"contents"},children:[de,i(En,{}),C&&i("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.85)",zIndex:1e4,pointerEvents:"none"}}),i("div",{style:y?{visibility:"hidden"}:{display:"contents"},"aria-hidden":y||void 0,children:_(Ze,{enablePositionPersistence:!C,pushToSide:m||se,suspendPointerEvents:m,centerOnboarding:C,minimizedStack:ce?i(ln,{}):void 0,hasMinimizedStack:ce,children:[N&&le&&!ae&&i($e,{environment:N}),ae&&le&&i(Ye,{currentEnvironment:N??"local",availableEnvironments:s,onSelect:a}),t?i(qe,{userRole:t,onPress:re}):i("button",{"aria-label":"Open dev tools",onClick:re,style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"6px 8px",background:"none",border:"none",cursor:"pointer"},children:i(In,{})}),Ee.map(e=>i("button",{"aria-label":e.name||B(e.id),"aria-pressed":Mn(e),title:e.description,onClick:()=>w(e),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"4px 6px",borderRadius:6,background:"none",border:"none",cursor:"pointer"},children:typeof e.icon==="function"?e.icon(16):e.icon},e.id))]})}),C&&i(tn,{title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools.",onDismiss:I}),m&&!y&&i(en,{icons:te,onClose:Me,centerLabel:"BUOY",onCenterPress:ke,settingsOpen:O,hintsDisabled:b,emptyNote:S&&te.length===0?Xe:void 0}),O&&!y&&i(sn,{visible:true,onClose:Pe,availableTools:we,defaultFloatingTools:Ce,defaultDialTools:De,onSettingsChange:e=>{}}),!y&&_(Y,{children:[i(an,{}),i(Re,{})]})]})}function Pn(n){const t=n&&typeof n==="object"?n.appId:void 0;const s=!!n;c(()=>{if(!s)return;let a=false;const l=Be.SessionManager;if(!l)return;const r=d=>{if(a||!d)return;l.configure({audience:`app:${d}`});void l.load().catch(()=>{})};if(t)r(t);else void pe().then(d=>r(d?.bundleId)).catch(()=>{});return()=>{a=true}},[s,t])}function xn(n){const t=n&&typeof n==="object"?n.appId:void 0;c(()=>{let s=false;if(t){U(t)}else if(fe()){void pe().then(a=>{if(!s)U(a?.bundleId)}).catch(()=>{})}else if(typeof location!=="undefined"&&location.origin&&location.origin!=="null"){U(location.origin)}return()=>{s=true}},[t])}let Ie=false;function Rn(n){if(n.modules)return n;if(!On&&!Ie&&typeof console!=="undefined"){Ie=true;console.info("[Buoy] No tools loaded. Add buoy() from '@buoy-gg/core/vite' to your Vite plugins, or pass modules to FloatingDevTools.")}return{...n,modules:bn}}export function FloatingDevTools(n){return i(xe,{children:i(Bn,{...Rn(n)})})}function Bn(n){const{access:t,isPro:s,licenseKey:a}=ue();c(()=>{void Le.configure(n.licenseKey??gn())},[n.licenseKey]);const l=n.licenseKey===void 0||Fe(n.licenseKey,a);const r=je(typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production");const d=l&&t.status==="admitted";c(()=>{if(d)We()},[d]);c(()=>{if(r||t.status==="initializing")return;if(s&&d)pn();else fn()},[r,s,d,t.status]);const p=fe();Pn(p?n.signIn:void 0);xn(n.signIn);if(!r&&!s){if(!n.signIn||n.headless)return null;return p?i(he,{needsPlan:true}):i(mn,{})}if(!d){return _(Y,{children:[t.status==="initializing"&&i(An,{modules:n.modules}),n.headless?null:n.signIn&&p?i(he,{}):i(Ve,{})]})}return i(Cn,{...n})}
|
|
1
|
+
"use strict";import{BuoyPortal as xe,FloatingToolHost as Re}from"@buoy-gg/shared-ui/floating";import*as Be from"@buoy-gg/license";import{LicenseManager as Le,useLicense as ue,sameLicenseKey as Fe,resolveDevBuild as je,capacitorDebug as Ne,isCapacitorNative as fe,loadCapacitorAppHost as pe}from"@buoy-gg/license";import{AccountSetup as Ke,HintsProvider as Ve,normalizeEnvironment as ze,registerToolOpener as me,setBuoyAppId as U,startSettingsSync as We}from"@buoy-gg/shared-ui";import{useState as R,useMemo as g,useCallback as D,useEffect as c,useRef as ge}from"react";import{useSettings as He,getToolLabel as B,getToolDescription as Ue,getToolColor as ye}from"@buoy-gg/floating-tools-react";import{persistentStorage as h,devToolsStorageKeys as L,EnvironmentIndicator as $e,EnvironmentSelectorInline as Ye}from"@buoy-gg/shared-ui";import{autoDiscoverWithCustom as Ge,getToolsBySlot as Te}from"../utils/autoDiscoverPresets.web.js";import{filterTeamTools as Qe,isTeamToolAllowed as Je}from"@buoy-gg/floating-tools-core";import{NO_TEAM_TOOLS_NOTE as Xe}from"./teamToolsNote.js";import{FloatingTools as Ze,UserStatus as qe}from"./floatingTools.web.js";import{DialMenu as en}from"./dial/DialDevTools.web.js";import{getRankedToolIds as nn,recordToolUsage as on}from"./dial/dialUsageStore.js";import{OnboardingTooltip as tn}from"./dial/OnboardingTooltip.web.js";import{SettingsModal as sn}from"./DevToolsSettingsModal.web.js";import{AppHostProvider as rn,AppOverlay as an,useAppHost as ve}from"./AppHost.web.js";import{MinimizedToolsStack as ln}from"./MinimizedToolsStack.web.js";import{toggleStateManager as cn}from"./ToggleStateManager.js";import{createWebTools as dn}from"../utils/createWebTools.js";import{BrowserToolRuntime as un}from"./BrowserToolRuntime.js";import{clearReleaseOptIn as fn,markReleaseOptIn as pn}from"../releaseOptIn.js";import{BuoySignIn as mn}from"./BuoySignIn.web.js";import{defaultLicenseKey as gn}from"../Buoy.js";import{bundlerKey as yn}from"../bundlerKey.js";import{BuoySignIn as he}from"./BuoyCodeSignIn.js";import{DevToolsVisibilityProvider as Tn,useDevToolsVisibility as vn}from"./DevToolsVisibilityContext.js";import{createWebTool as $}from"../utils/createWebTool.js";import{DefaultConfigProvider as hn}from"./DefaultConfigContext.js";import{useDevToolsSettings as bn}from"./DevToolsSettingsModal.shared.js";import{validateDialConfig as be}from"./defaultConfig.js";import{installedTools as On,installedToolsFound as Sn}from"../installedTools.js";import{jsx as i,jsxs as _,Fragment as Y}from"react/jsx-runtime";const Oe={};const Se="@react_buoy_floating_menu_tooltip_shown";const In=h;function Cn({size:n=14,color:t="#20C997"}){const s=Math.max(2,n/4);const a=Math.max(1,n/16);return i("div",{style:{display:"grid",gridTemplateColumns:`repeat(3, ${s}px)`,gap:a,width:n,height:n,alignContent:"center",justifyContent:"center"},children:Array.from({length:9}).map((l,r)=>i("div",{style:{width:s,height:s,borderRadius:s/2,backgroundColor:t}},r))})}function Dn(n){const{defaultFloatingTools:t,defaultDialTools:s,disableHints:a=false,children:l}=n;const r=g(()=>s?be(s):s,[s]);return i(hn,{defaultFloatingTools:t,defaultDialTools:r,children:i(Ve,{disableHints:a,children:_(Tn,{children:[i(rn,{children:i(Pn,{...n})}),l]})})})}const An=["ReduxAutoInstrument","ConsoleRoot","RouteTracker","ReactQueryTracker"];function En({modules:n=Oe}){return i(Y,{children:Object.entries(n).flatMap(([t,s])=>An.map(a=>{const l=s[a];return l?i(l,{},`${t}:${a}`):null}))})}function wn(){const{openApps:n,restore:t}=ve();c(()=>me(s=>{const a=n.find(l=>l.id===s);if(!a)return false;t(a.instanceId);return true}),[n,t]);return null}function _n(){const n=Ne();const t=n===null?process.env.NODE_ENV:n?"development":"production";return ze(t??"dev")}function Mn(n,t,s,a){const l=M=>Object.entries(n).find(([T])=>T.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")===M)?.[1];const r=[];const d=l("env");if(t?.length&&d?.createEnvTool&&d.createEnvVarConfig){r.push($(d.createEnvTool({requiredEnvVars:d.createEnvVarConfig(t)})))}const p=l("storage");if(s?.length&&p?.createStorageTool){r.push($(p.createStorageTool({requiredStorageKeys:s})))}const A=l("ask-buoy");const b=a==="hosted"?A?.hostedAskBuoy?.():a;if(b&&A?.createAskBuoyTool)r.push($(A.createAskBuoyTool(b)));return r}function kn(n){if(n.launchMode!=="toggle-only")return void 0;const t=n.isOn;return typeof t==="function"?t():void 0}function Pn({environment:n,userRole:t="admin",availableEnvironments:s,onEnvironmentSwitch:a,apps:l,modules:r=Oe,externalSync:d,requiredEnvVars:p,sentryGetClient:A,disableHints:b=false,headless:M=false,hidden:T=false,defaultFloatingTools:Ce,defaultDialTools:F,zustandStores:j,requiredStorageKeys:G,askBuoy:Q}){const N=n??_n();const De=g(()=>F?be(F):void 0,[F]);const[m,E]=R(false);const[O,k]=R(false);const[,J]=R(0);c(()=>cn.subscribe(()=>J(e=>e+1)),[]);const K=ge(false);const y=ve();const X=g(()=>Mn(r,p,G,Q),[r,p,G,Q]);const{allowedTools:S}=ue();const f=g(()=>Qe(Ge([...dn(r),...l??[],...X]),S),[l,r,X,S]);const{openApps:Z,close:q}=y;c(()=>{if(!S)return;for(const e of Z){if(!Je(e.id,S))q(e.instanceId)}},[Z,S,q]);const V=g(()=>Object.entries(r).find(([e])=>e.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")==="zustand")?.[1],[r]);c(()=>{if(!j||typeof V?.watchStores!=="function")return;const e=V.watchStores(j);return typeof e==="function"?e:void 0},[j,V]);const P=vn();const ee=y.openApps.some(e=>!e.minimized);c(()=>{P.setDialOpen(m)},[m,P.setDialOpen]);c(()=>{P.setToolOpen(ee||O)},[ee,O,P.setToolOpen]);const{registerApps:ne}=y;c(()=>{ne(f.map(e=>{const o=e.icon;return{...e,icon:typeof o==="function"?({size:u})=>o(u):o}}))},[ne,f]);const Ae=g(()=>f.map(e=>({id:e.id,name:e.name,description:e.description,slot:e.slot})),[f]);He({availableTools:Ae,storage:In});c(()=>{let e=false;const o=async()=>{const[u,v]=await Promise.all([h.getItem(L.dial.isOpen()),h.getItem(L.settings.modalOpen())]);if(e)return;if(u==="true")E(true);if(v==="true"){E(true);k(true)}K.current=true};void o();return()=>{e=true}},[]);c(()=>{if(!K.current)return;void h.setItem(L.dial.isOpen(),m?"true":"false")},[m]);c(()=>{if(!K.current)return;void h.setItem(L.settings.modalOpen(),O?"true":"false")},[O]);const w=D(e=>{void on(e.id);if(e.launchMode==="toggle-only"){e.onPress?.();J(o=>o+1);return}if(e.component){const o=typeof e.icon==="function"?e.icon(20):e.icon;y.open({id:e.id,title:e.name||B(e.id),component:e.component,props:e.props,modal:e.modal,launchMode:e.launchMode||"self-modal",singleton:e.singleton??true,icon:o,color:e.color||ye(e.id)})}else{e.onPress?.()}},[y]);const oe=ge({tools:f,openApps:y.openApps,openTool:w});oe.current={tools:f,openApps:y.openApps,openTool:w};c(()=>me(e=>{const{tools:o,openApps:u,openTool:v}=oe.current;if(u.some(H=>H.id===e))return false;const W=o.find(H=>H.id===e);if(!W||W.launchMode==="toggle-only")return false;v(W);return true}),[]);const x=g(()=>{const e=Te(f,"dial");return e.map(o=>{const u=o.color||ye(o.id);let v;if(typeof o.icon==="string"){v=o.icon}else if(typeof o.icon==="function"){v=o.icon(32)}else{v=null}return{id:o.id,name:o.name||B(o.id),icon:v,unavailable:!o.component&&!o.onPress,color:u,onPress:()=>{w(o);E(false)}}})},[f,w]);const te=g(()=>{if(!m)return x;const e=new Map(x.map(o=>[o.id,o]));return nn(x.map(o=>o.id)).map(o=>e.get(o)).filter(o=>Boolean(o))},[m,x]);const{settings:z}=bn();const Ee=g(()=>Te(f,"row").filter(e=>(z.floatingTools[e.id]??false)===true&&(e.component||e.onPress)),[f,z.floatingTools]);const we=g(()=>f.map(e=>({id:e.id,name:e.name||B(e.id),description:e.description||Ue(e.id),slot:e.slot,icon:e.icon,color:e.color})),[f]);const[_e,ie]=R(false);const se=y.openApps.some(e=>!e.minimized);c(()=>{if(b)return;let e=false;const o=setTimeout(async()=>{const u=await h.getItem(Se);if(!e&&!u)ie(true)},1e3);return()=>{e=true;clearTimeout(o)}},[b]);const I=D(()=>{ie(false);void h.setItem(Se,"true")},[]);const re=D(()=>{I();E(true)},[I]);const Me=D(()=>{E(false);k(false)},[]);const ke=D(()=>{k(e=>!e)},[]);const Pe=D(()=>k(false),[]);const ae=Boolean(s?.length&&a);const le=z.floatingTools.environment!==false;const C=_e&&!m&&!se&&!T;c(()=>{if(!C)return;const e=u=>{if(!(u.target instanceof Element)||!u.target.closest("[data-buoy-root]"))I()};const o=u=>{if(u.key==="Escape")I()};document.addEventListener("pointerdown",e,true);document.addEventListener("keydown",o);return()=>{document.removeEventListener("pointerdown",e,true);document.removeEventListener("keydown",o)}},[C,I]);const ce=y.openApps.some(e=>e.minimized&&e.launchMode!=="toggle-only");const de=i(un,{modules:r,apps:l,requiredEnvVars:p,externalSync:d,headless:M,sentryGetClient:A});if(M)return de;return _("div",{"data-buoy-root":"",style:{display:"contents"},children:[de,i(wn,{}),C&&i("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.85)",zIndex:1e4,pointerEvents:"none"}}),i("div",{style:T?{visibility:"hidden"}:{display:"contents"},"aria-hidden":T||void 0,children:_(Ze,{enablePositionPersistence:!C,pushToSide:m||se,suspendPointerEvents:m,centerOnboarding:C,minimizedStack:ce?i(ln,{}):void 0,hasMinimizedStack:ce,children:[N&&le&&!ae&&i($e,{environment:N}),ae&&le&&i(Ye,{currentEnvironment:N??"local",availableEnvironments:s,onSelect:a}),t?i(qe,{userRole:t,onPress:re}):i("button",{"aria-label":"Open dev tools",onClick:re,style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"6px 8px",background:"none",border:"none",cursor:"pointer"},children:i(Cn,{})}),Ee.map(e=>i("button",{"aria-label":e.name||B(e.id),"aria-pressed":kn(e),title:e.description,onClick:()=>w(e),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"4px 6px",borderRadius:6,background:"none",border:"none",cursor:"pointer"},children:typeof e.icon==="function"?e.icon(16):e.icon},e.id))]})}),C&&i(tn,{title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools.",onDismiss:I}),m&&!T&&i(en,{icons:te,onClose:Me,centerLabel:"BUOY",onCenterPress:ke,settingsOpen:O,hintsDisabled:b,emptyNote:S&&te.length===0?Xe:void 0}),O&&!T&&i(sn,{visible:true,onClose:Pe,availableTools:we,defaultFloatingTools:Ce,defaultDialTools:De,onSettingsChange:e=>{}}),!T&&_(Y,{children:[i(an,{}),i(Re,{})]})]})}function xn(n){const t=n&&typeof n==="object"?n.appId:void 0;const s=!!n;c(()=>{if(!s)return;let a=false;const l=Be.SessionManager;if(!l)return;const r=d=>{if(a||!d)return;l.configure({audience:`app:${d}`});void l.load().catch(()=>{})};if(t)r(t);else void pe().then(d=>r(d?.bundleId)).catch(()=>{});return()=>{a=true}},[s,t])}function Rn(n){const t=n&&typeof n==="object"?n.appId:void 0;c(()=>{let s=false;if(t){U(t)}else if(fe()){void pe().then(a=>{if(!s)U(a?.bundleId)}).catch(()=>{})}else if(typeof location!=="undefined"&&location.origin&&location.origin!=="null"){U(location.origin)}return()=>{s=true}},[t])}let Ie=false;function Bn(n){if(n.modules)return n;if(!Sn&&!Ie&&typeof console!=="undefined"){Ie=true;console.info("[Buoy] No tools loaded. Add buoy() from '@buoy-gg/core/vite' to your Vite plugins, or pass modules to FloatingDevTools.")}return{...n,modules:On}}export function FloatingDevTools(n){return i(xe,{children:i(Ln,{...Bn(n)})})}function Ln(n){const{access:t,isPro:s,licenseKey:a}=ue();c(()=>{void Le.configure(n.licenseKey??gn(yn))},[n.licenseKey]);const l=n.licenseKey===void 0||Fe(n.licenseKey,a);const r=je(typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production");const d=l&&t.status==="admitted";c(()=>{if(d)We()},[d]);c(()=>{if(r||t.status==="initializing")return;if(s&&d)pn();else fn()},[r,s,d,t.status]);const p=fe();xn(p?n.signIn:void 0);Rn(n.signIn);if(!r&&!s){if(!n.signIn||n.headless)return null;return p?i(he,{needsPlan:true}):i(mn,{})}if(!d){return _(Y,{children:[t.status==="initializing"&&i(En,{modules:n.modules}),n.headless?null:n.signIn&&p?i(he,{}):i(Ke,{})]})}return i(Dn,{...n})}
|
package/lib/module/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";export const SDK_VERSION="7.0.
|
|
1
|
+
"use strict";export const SDK_VERSION="7.0.81";
|
|
@@ -40,7 +40,7 @@ export declare function isTelemetryEnabled(): boolean;
|
|
|
40
40
|
* in node_modules. Next.js swaps in `NEXT_PUBLIC_*` values when it bundles.
|
|
41
41
|
* Each name is written out in full so the bundler can find it.
|
|
42
42
|
*/
|
|
43
|
-
export declare function defaultLicenseKey(): string | undefined;
|
|
43
|
+
export declare function defaultLicenseKey(fallback?: () => string | undefined): string | undefined;
|
|
44
44
|
/**
|
|
45
45
|
* Start the account check with the env key while Buoy loads, the way a
|
|
46
46
|
* top-level `Buoy.init()` would. The Network tool decides whether to keep
|
|
@@ -12,11 +12,7 @@ export interface BuoyDevToolsProps extends FloatingDevToolsProps {
|
|
|
12
12
|
* browser it's a development build.
|
|
13
13
|
*/
|
|
14
14
|
export declare function shouldShowBuoy(): boolean;
|
|
15
|
-
|
|
16
|
-
* The key `buoy login` writes: `VITE_BUOY_KEY` in a Vite app, `NEXT_PUBLIC_BUOY_KEY`
|
|
17
|
-
* in Next.js. Each bundler fills in its own expression; the other stays empty.
|
|
18
|
-
*/
|
|
19
|
-
export declare function bundlerKey(): string | undefined;
|
|
15
|
+
export { bundlerKey } from './bundlerKey';
|
|
20
16
|
/**
|
|
21
17
|
* Buoy with no setup: shows in debug and development builds, loads every
|
|
22
18
|
* installed tool (with the `buoy()` plugin from `@buoy-gg/core/vite`), reads
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The key `buoy login` writes: `VITE_BUOY_KEY` in a Vite app, `NEXT_PUBLIC_BUOY_KEY`
|
|
3
|
+
* in Next.js. Each bundler fills in its own expression; the other stays empty.
|
|
4
|
+
*/
|
|
5
|
+
export declare function bundlerKey(): string | undefined;
|
|
6
|
+
//# sourceMappingURL=bundlerKey.d.ts.map
|
|
@@ -238,7 +238,8 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
|
|
|
238
238
|
/**
|
|
239
239
|
* The dev token `npx --package=@buoy-gg/core buoy login` writes to your env
|
|
240
240
|
* file, or a Buoy key. Buoy reads `EXPO_PUBLIC_BUOY_KEY` and
|
|
241
|
-
* `NEXT_PUBLIC_BUOY_KEY` for you
|
|
241
|
+
* `NEXT_PUBLIC_BUOY_KEY` for you, and `VITE_BUOY_KEY` in the web build
|
|
242
|
+
* (`@buoy-gg/core/web`); pass this for other setups.
|
|
242
243
|
* Test and store builds sign in with `signIn` instead.
|
|
243
244
|
*
|
|
244
245
|
* @example
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* Drift is prevented by a test that fails when this disagrees with
|
|
10
10
|
* package.json, so a version bump that forgets this file cannot ship.
|
|
11
11
|
*/
|
|
12
|
-
export declare const SDK_VERSION = "7.0.
|
|
12
|
+
export declare const SDK_VERSION = "7.0.81";
|
|
13
13
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -40,7 +40,7 @@ export declare function isTelemetryEnabled(): boolean;
|
|
|
40
40
|
* in node_modules. Next.js swaps in `NEXT_PUBLIC_*` values when it bundles.
|
|
41
41
|
* Each name is written out in full so the bundler can find it.
|
|
42
42
|
*/
|
|
43
|
-
export declare function defaultLicenseKey(): string | undefined;
|
|
43
|
+
export declare function defaultLicenseKey(fallback?: () => string | undefined): string | undefined;
|
|
44
44
|
/**
|
|
45
45
|
* Start the account check with the env key while Buoy loads, the way a
|
|
46
46
|
* top-level `Buoy.init()` would. The Network tool decides whether to keep
|
|
@@ -12,11 +12,7 @@ export interface BuoyDevToolsProps extends FloatingDevToolsProps {
|
|
|
12
12
|
* browser it's a development build.
|
|
13
13
|
*/
|
|
14
14
|
export declare function shouldShowBuoy(): boolean;
|
|
15
|
-
|
|
16
|
-
* The key `buoy login` writes: `VITE_BUOY_KEY` in a Vite app, `NEXT_PUBLIC_BUOY_KEY`
|
|
17
|
-
* in Next.js. Each bundler fills in its own expression; the other stays empty.
|
|
18
|
-
*/
|
|
19
|
-
export declare function bundlerKey(): string | undefined;
|
|
15
|
+
export { bundlerKey } from './bundlerKey';
|
|
20
16
|
/**
|
|
21
17
|
* Buoy with no setup: shows in debug and development builds, loads every
|
|
22
18
|
* installed tool (with the `buoy()` plugin from `@buoy-gg/core/vite`), reads
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The key `buoy login` writes: `VITE_BUOY_KEY` in a Vite app, `NEXT_PUBLIC_BUOY_KEY`
|
|
3
|
+
* in Next.js. Each bundler fills in its own expression; the other stays empty.
|
|
4
|
+
*/
|
|
5
|
+
export declare function bundlerKey(): string | undefined;
|
|
6
|
+
//# sourceMappingURL=bundlerKey.d.ts.map
|
|
@@ -238,7 +238,8 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
|
|
|
238
238
|
/**
|
|
239
239
|
* The dev token `npx --package=@buoy-gg/core buoy login` writes to your env
|
|
240
240
|
* file, or a Buoy key. Buoy reads `EXPO_PUBLIC_BUOY_KEY` and
|
|
241
|
-
* `NEXT_PUBLIC_BUOY_KEY` for you
|
|
241
|
+
* `NEXT_PUBLIC_BUOY_KEY` for you, and `VITE_BUOY_KEY` in the web build
|
|
242
|
+
* (`@buoy-gg/core/web`); pass this for other setups.
|
|
242
243
|
* Test and store builds sign in with `signIn` instead.
|
|
243
244
|
*
|
|
244
245
|
* @example
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* Drift is prevented by a test that fails when this disagrees with
|
|
10
10
|
* package.json, so a version bump that forgets this file cannot ship.
|
|
11
11
|
*/
|
|
12
|
-
export declare const SDK_VERSION = "7.0.
|
|
12
|
+
export declare const SDK_VERSION = "7.0.81";
|
|
13
13
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/web/auto.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{a as
|
|
1
|
+
"use client";import{a as n}from"./chunks/chunk-74RBGVOS.mjs";import{a as t,e as r}from"./chunks/chunk-LOPXJLVB.mjs";import{createElement as l,lazy as y,Suspense as d,useEffect as m,useState as h}from"react";function a(){if(typeof window>"u")return false;let e=window.Capacitor,o=false;try{o=e?.isNativePlatform?.()===true}catch{o=false}return o?e?.DEBUG===true:typeof r<"u"?!!r:process.env.NODE_ENV!=="production"}t(a,"shouldShowBuoy");var s;function u(){return s??(s=y(()=>import("./chunks/FloatingDevTools.web-H4R5WRDU.mjs").then(e=>({default:e.FloatingDevTools})))),s}t(u,"loadHost");function i({enabled:e,...o}){let[f,c]=h(false);if(m(()=>{c(e??a())},[e]),!f)return null;let p=o.licenseKey??n();return l(d,{fallback:null},l(u(),{...o,licenseKey:p}))}t(i,"BuoyDevTools");export{i as BuoyDevTools,n as bundlerKey,a as shouldShowBuoy};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{v as o}from"./chunk-5PL4HAS6.mjs";import"./chunk-C6HZO5XT.mjs";import"./chunk-D2FYORGY.mjs";import"./chunk-74RBGVOS.mjs";import"./chunk-LOPXJLVB.mjs";export{o as FloatingDevTools};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{v as o}from"./chunk-YXDQX4XV.mjs";import"./chunk-C6HZO5XT.mjs";import"./chunk-D2FYORGY.mjs";import"./chunk-74RBGVOS.mjs";import"./chunk-LOPXJLVB.mjs";export{o as FloatingDevTools};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use client";import{a as dt,b as H,c as K,d as De,e as ut,f as hr,g as ko,h as yr,i as jl,j as zo,k as Ne}from"./chunk-C6HZO5XT.mjs";import{b as br,c as vr}from"./chunk-D2FYORGY.mjs";import{a as Sr}from"./chunk-74RBGVOS.mjs";import{a as r,b as Ao,e as He}from"./chunk-LOPXJLVB.mjs";import{BuoyPortal as wr,FloatingToolHost as xr}from"@buoy-gg/shared-ui/web/floating";import*as Tr from"@buoy-gg/license/web";import{LicenseManager as Ir,useLicense as Bo,sameLicenseKey as Cr,resolveDevBuild as kr,capacitorDebug as zr,isCapacitorNative as Mo,loadCapacitorAppHost as Ro}from"@buoy-gg/license/web";import{AccountSetup as Ar,HintsProvider as Br,normalizeEnvironment as Mr,registerToolOpener as Do,setBuoyAppId as Lt,startSettingsSync as Rr}from"@buoy-gg/shared-ui/web";import{useState as pt,useMemo as fe,useCallback as We,useEffect as G,useRef as Oo}from"react";import{useSettings as Dr,getToolLabel as mt,getToolDescription as Or,getToolColor as Po}from"@buoy-gg/floating-tools-react/web";import{persistentStorage as Oe,devToolsStorageKeys as gt,EnvironmentIndicator as Pr,EnvironmentSelectorInline as Er}from"@buoy-gg/shared-ui/web";var Lr=[];function Eo(){return[]}r(Eo,"autoDiscoverWebPresets");function Ft(e=[]){return[...new Map(e.map(t=>[t.id,t])).values()]}r(Ft,"autoDiscoverWithCustom");function ft(e,t){return e.filter(o=>{let i=o.slot||"both";return i==="both"||i===t})}r(ft,"getToolsBySlot");function Lo(e,t){let o=t instanceof Set?t:new Set(t);return e.filter(i=>o.has(i.id))}r(Lo,"getEnabledTools");import{filterTeamTools as Fr,isTeamToolAllowed as $r}from"@buoy-gg/floating-tools-core/web";var jr="No tools are on for your role. Ask your team admin.";import{FloatingTool as Fo,FloatingToolDivider as Nr,FloatingToolUserStatus as $o,getBubbleAnchorPosition as Hr}from"@buoy-gg/shared-ui/web/floating";import{useState as te,useEffect as Pe,useMemo as ht,useRef as yt,useCallback as bt}from"react";var jo={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 No(e,t){return e&&jo[e]?jo[e]:t}r(No,"dialAccessibilityLabel");import{getDialLayout as Wr,getAllIconPositions as _r,getGridLineRotations as Ur,getIconStaggerInputRange as Kr,MAX_DIAL_SLOTS as Qe,DIAL_ICON_SIZE as Vr,dialAnimationConfig as Ho,getDialCSSKeyframesString as qr,getDialCSSAnimationStyles as Gr,dialColors as j,dialStyles as I,withAlpha as Wo,floatingToolsColors as Jr}from"@buoy-gg/floating-tools-react/web";import{persistentStorage as _o,monoFont as $t,ToolBackground as Yr,useToolBackground as Xr}from"@buoy-gg/shared-ui/web";import{memo as Qr}from"react";import{RasterLayer as Zr,scatter as ea,useLoop as ta,withBgAlpha as oa}from"@buoy-gg/shared-ui/web";import{Fragment as na,jsx as Ze}from"react/jsx-runtime";var ia=.94,ra=6,aa=2400,vt=3,Uo=16,sa=Array.from({length:vt},(e,t)=>ea(22343^t*40503,Uo*4)),Ko=["#FFFFFF","#B3D9FF","#8CB3FF"],Vo=Math.PI/3,qo=14*Math.PI/180;function Go(e){let t=Math.min(5,Math.floor(e*6)),o=e*6-t;return t*Vo+qo/2+o*(Vo-qo)}r(Go,"spokeClearAngle");function Jo(e){return Math.min(ra,1/(1-e*ia))}r(Jo,"scaleAt");function Yo(e){let t=.15+.85*e*e;return e<.06?t*=e/.06:e>.94&&(t*=(1-e)/.06),Math.min(.7,t)}r(Yo,"opacityAt");function Xo(e){let t=e/vt,o=[],i=12;for(let u=0;u<=i;u++)o.push(u/i);let n=(1-t)%1;n>.001&&n<1-.001&&o.push(n-1e-4,n+1e-4),o.sort((u,d)=>u-d);let a=[],s=[],c=[];for(let u of o){let d=t===0&&u===1?1:(u+t)%1;a.push(u),s.push(Jo(d)),c.push(Yo(d))}return{input:a,scale:s,opacity:c}}r(Xo,"shellStops");var la=Array.from({length:vt},(e,t)=>Xo(t)),ca=Qr(r(function({size:e}){let t=ta(aa),o=e/2,i=[];for(let n=0;n<vt;n++){let a=sa[n],s=la[n],c=[];for(let u=0;u<Uo;u++){let d=Go(a[u*4]),g=(.15+.85*Math.sqrt(a[u*4+1]))*.5*o,x=Ko[Math.floor(a[u*4+3]*Ko.length)%3],h=o+Math.cos(d)*g,B=o+Math.sin(d)*g,k=.6,M=k*2.4;c.push(Ze(H,{style:{position:"absolute",left:h-M/2,top:B-M/2,width:M,height:M,borderRadius:M/2,backgroundColor:oa(x,.3)}},`${u}-h`),Ze(H,{style:{position:"absolute",left:h-k/2,top:B-k/2,width:k,height:k,borderRadius:k/2,backgroundColor:x}},u))}i.push(Ze(De.View,{style:{position:"absolute",left:0,top:0,width:e,height:e,opacity:t.interpolate({inputRange:s.input,outputRange:s.opacity}),transform:[{scale:t.interpolate({inputRange:s.input,outputRange:s.scale})}]},pointerEvents:"none",children:Ze(Zr,{style:{width:e,height:e},raster:false,children:c})},n))}return Ze(na,{children:i})},"DialHyperspace"));import{useEffect as da,useState as Qo}from"react";import{dialColors as _e,withAlpha as Zo}from"@buoy-gg/floating-tools-react/web";import{ARROW_BOTTOM_OFFSET as ua,ARROW_HEIGHT as pa,SPACING_GAP as ac,getScreenCenterY as sc,calculateTooltipPosition as ma,calculateTargetPosition as lc}from"@buoy-gg/shared-ui/web/floating";import{monoFont as en}from"@buoy-gg/shared-ui/web";import{jsx as Ue,jsxs as tn}from"react/jsx-runtime";var on=false;function nn(){if(on||typeof document>"u")return;let e=document.createElement("style");e.textContent=`
|
|
2
|
+
@keyframes buoyOnboardPulse {
|
|
3
|
+
0%, 100% { transform: scale(1); }
|
|
4
|
+
50% { transform: scale(1.02); }
|
|
5
|
+
}
|
|
6
|
+
@keyframes buoyOnboardArrowBounce {
|
|
7
|
+
0%, 100% { transform: translateY(0); }
|
|
8
|
+
50% { transform: translateY(-8px); }
|
|
9
|
+
}
|
|
10
|
+
`,document.head.appendChild(e),on=true}r(nn,"injectOnboardingKeyframes");var jt=_e.accent;function Nt({title:e,message:t,onDismiss:o,showArrow:i=true}){let[n,a]=Qo(false),[s,c]=Qo(false);da(()=>{nn();let d=requestAnimationFrame(()=>a(true));return()=>cancelAnimationFrame(d)},[]);let u={fontFamily:en,textTransform:"uppercase"};return Ue("div",{style:{position:"fixed",left:"50%",bottom:ma(),transform:`translateX(-50%) scale(${n?1:.8})`,opacity:n?1:0,transition:"transform 300ms cubic-bezier(0.34, 1.3, 0.64, 1), opacity 300ms ease",zIndex:10002,pointerEvents:"auto"},children:tn("div",{style:{position:"relative",animation:n?"buoyOnboardPulse 3s ease-in-out infinite":"none"},children:[Ue("div",{style:{position:"absolute",inset:-4,borderRadius:18,backgroundColor:"#FFFFFF",opacity:.06}}),tn("div",{style:{position:"relative",maxWidth:280,backgroundColor:_e.dialBackground,borderRadius:16,border:`1px solid ${_e.dialBorder}`,padding:20,boxShadow:`0 0 20px ${Zo(_e.dialShadow,.6)}`,display:"flex",flexDirection:"column",alignItems:"center",gap:8},children:[Ue("span",{style:{...u,fontSize:16,fontWeight:900,letterSpacing:1,color:jt,textAlign:"center"},children:e}),Ue("span",{style:{fontFamily:en,fontSize:13,lineHeight:"20px",color:_e.centerText,textAlign:"center"},children:t}),Ue("button",{onClick:o,onPointerDown:()=>c(true),onPointerUp:()=>c(false),onPointerLeave:()=>c(false),onPointerCancel:()=>c(false),style:{...u,marginTop:8,borderRadius:8,border:"none",backgroundColor:jt,padding:"10px 24px",fontSize:14,fontWeight:900,letterSpacing:1.5,color:"#000000",cursor:"pointer",opacity:s?.7:1,transform:s?"scale(0.96)":"scale(1)",transition:"transform 100ms ease, opacity 100ms ease"},children:"Got it!"})]}),i&&Ue("div",{style:{position:"absolute",left:"50%",bottom:ua,marginLeft:-12,width:0,height:0,borderLeft:"12px solid transparent",borderRight:"12px solid transparent",borderTop:`${pa}px solid ${jt}`,filter:`drop-shadow(0 0 10px ${Zo(_e.dialShadow,.5)})`,animation:n?"buoyOnboardArrowBounce 1.6s ease-in-out infinite":"none"}})]})})}r(Nt,"OnboardingTooltip");import{useEffect as ga,useRef as fa}from"react";import{capacitorPlatform as ha,capacitorPlugin as ya}from"@buoy-gg/license/web";function rn(){return globalThis.__BUOY_HOLDS_BACK__===true}r(rn,"isBuoyHoldingBackButton");var ba=99.5,va=99.6,St=0;function an(){if(typeof document>"u")return false;let e=globalThis.Ionic;if(!e&&!document.querySelector("ion-app"))return false;try{return e?.config?.get?.("hardwareBackButton",true)!==false}catch{return true}}r(an,"ionicHandlesBack");function Ht(e,t,o=ba){let i=fa(t);i.current=t,ga(()=>{if(!e||ha()!=="android")return;let n=globalThis;St+=1,n.__BUOY_HOLDS_BACK__=true;let a=r(()=>{St=Math.max(0,St-1),n.__BUOY_HOLDS_BACK__=St>0},"release"),s;if(an()){let c=r(u=>{u.detail?.register?.(o,()=>{i.current()})},"listener");document.addEventListener("ionBackButton",c),s=r(()=>document.removeEventListener("ionBackButton",c),"cleanup")}else{let c=ya("App");if(!c?.addListener){a();return}let u=false,d=null;Promise.resolve(c.addListener("backButton",()=>i.current())).then(g=>{u?g.remove():d=g}).catch(()=>{}),s=r(()=>{u=true,d&&d.remove()},"cleanup")}return()=>{s(),a()}},[e,o])}r(Ht,"useCapacitorBackButton");import{Fragment as Sa,jsx as L,jsxs as we}from"react/jsx-runtime";var wa={x:.5,y:.5},sn="@react_buoy_settings_tooltip_shown",ln=false;function cn(){if(ln||typeof document>"u")return;let e=document.createElement("style");e.textContent=qr(),document.head.appendChild(e),ln=true}r(cn,"injectKeyframes");var Ke=r(e=>1-Math.pow(1-e,3),"easeOutCubic"),Wt=r(e=>e*e*e,"easeInCubic");function dn({icon:e,index:t,totalIcons:o,position:i,progress:n,onPress:a}){let[s,c]=te(false),[u,d]=te(false),g=!e.icon&&e.id.startsWith("empty-"),x=!g&&e.unavailable===true,h=!g&&!x,{icons:B}=Ho,k=Kr(t,o),M=0;n<=k[1]?M=0:n<=k[2]?M=(n-k[1])/(k[2]-k[1]):M=1,M=Math.max(0,Math.min(1,M));let F=Vr,D=B.pressIn.scale,P=M*(u?D:s?1.1:1),A=0;M<=0?A=0:M<=.3?A=M:A=.3+(M-.3)*(.7/.7);let V=i.x*(M-1),S=i.y*(M-1);return L("button",{role:"menuitem","aria-label":g?"Empty slot":No(e.id,e.name),"data-testid":e.id?`buoy-dial-${e.id}`:void 0,"aria-disabled":!h,tabIndex:h?0:-1,onClick:h?a:void 0,onPointerEnter:R=>h&&R.pointerType==="mouse"&&c(true),onPointerLeave:()=>{c(false),d(false)},onPointerDown:()=>h&&d(true),onPointerUp:()=>d(false),onPointerCancel:()=>d(false),style:{position:"absolute",left:`calc(50% + ${i.x}px)`,top:`calc(50% + ${i.y}px)`,width:F,height:F,marginLeft:-F/2,marginTop:-F/2,cursor:h?"pointer":"default",background:"none",border:"none",padding:0},children:L("span",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",transform:`translate(${V}px, ${S}px) scale(${P})`,opacity:A,transition:s||u?"transform 100ms ease":"none"},children:g?L("div",{style:{width:I.emptySlot.dotSize,height:I.emptySlot.dotSize,borderRadius:I.emptySlot.dotSize/2,backgroundColor:j.emptyDotBackground,border:`${I.emptySlot.borderWidth}px solid ${j.emptyDotBorder}`}}):we(Sa,{children:[L("div",{style:{position:"absolute",width:`${I.icon.gradientBgSizePercent}%`,height:`${I.icon.gradientBgSizePercent}%`,borderRadius:I.icon.gradientBgBorderRadius,backgroundColor:"rgba(0, 0, 0, 0.2)",opacity:I.icon.gradientBgOpacity}}),L("div",{style:{position:"absolute",width:`${I.icon.innerGlowSizePercent}%`,height:`${I.icon.innerGlowSizePercent}%`,borderRadius:I.icon.innerGlowBorderRadius,backgroundColor:"rgba(255, 255, 255, 0.02)",opacity:I.icon.innerGlowOpacity}}),L("div",{style:{marginBottom:I.icon.wrapperMarginBottom,display:"flex",alignItems:"center",justifyContent:"center",fontSize:32,filter:s?"brightness(1.2)":"none"},children:e.icon}),L("span",{style:{fontSize:e.name.length>8?Math.max(I.icon.label.fontSize*.7,I.icon.label.fontSize*8/e.name.length):I.icon.label.fontSize,fontWeight:I.icon.label.fontWeight,fontFamily:I.icon.label.fontFamily,color:j.iconLabel,letterSpacing:I.icon.label.letterSpacing,marginTop:I.icon.label.marginTop,textTransform:"uppercase",whiteSpace:"nowrap"},children:e.name}),x&&L("span",{style:{fontSize:I.icon.label.fontSize-1,fontWeight:I.icon.label.fontWeight,fontFamily:I.icon.label.fontFamily,letterSpacing:I.icon.label.letterSpacing,color:Jr.muted,textTransform:"uppercase",whiteSpace:"nowrap"},children:"Unavailable"})]})})})}r(dn,"DialIconItem");function _t({side:e,color:t}){return L("svg",{width:18,height:18,viewBox:"0 0 24 24","aria-hidden":"true",focusable:"false",children:(e==="prev"?[[15,18,9,12],[9,12,15,6]]:[[9,18,15,12],[15,12,9,6]]).map(([o,i,n,a],s)=>L("line",{x1:o,y1:i,x2:n,y2:a,stroke:t,strokeWidth:2},s))})}r(_t,"PagerChevron");function Ut({side:e,disabled:t,onClick:o}){let[i,n]=te(false),a=t?j.emptyDotBorder:j.accent;return we("button",{type:"button","aria-label":`${e==="prev"?"Previous":"Next"} dial page`,"data-testid":`buoy-dial-${e}`,disabled:t,onClick:o,onPointerDown:()=>!t&&n(true),onPointerUp:()=>n(false),onPointerLeave:()=>n(false),onPointerCancel:()=>n(false),style:{display:"flex",alignItems:"center",gap:4,padding:"10px 16px",borderRadius:10,border:`1px solid ${j.dialBorder}`,backgroundColor:j.dialBackground,color:t?j.iconLabelMuted:j.centerText,fontSize:12,fontWeight:900,fontFamily:$t,letterSpacing:1.5,textTransform:"uppercase",cursor:t?"default":"pointer",opacity:t?.4:1,boxShadow:t?"none":`0 0 8px ${Wo(j.dialShadow,.4)}`,transform:i?"scale(0.92)":"scale(1)",transition:"transform 100ms ease"},children:[e==="prev"&&L(_t,{side:"prev",color:a}),e==="prev"?"PREV":"NEXT",e==="next"&&L(_t,{side:"next",color:a})]})}r(Ut,"PagerButton");function Kt({icons:e,onClose:t,centerLabel:o="MENU",onCenterPress:i,settingsOpen:n=false,hintsDisabled:a=false,emptyNote:s}){let{id:c}=Xr(),[u,d]=te(0),[g,x]=te(0),[h,B]=te(0),[k,M]=te(0),[F,D]=te(0),[P,A]=te(1),[V,S]=te(false),[R,_]=te(false),[T,E]=te(false),Q=yt(null),Z=yt(null),U=yt(null),q=yt(false),{entrance:re,exit:ee,interaction:ne}=Ho,xe=Gr(),[ge,ye]=te(()=>({width:window.innerWidth,height:window.innerHeight}));Pe(()=>{let O=r(()=>ye({width:window.innerWidth,height:window.innerHeight}),"resize");return window.addEventListener("resize",O),()=>window.removeEventListener("resize",O)},[]);let W=ht(()=>Wr({screenWidth:ge.width,maxCircleSize:Math.max(120,Math.min(320,ge.height-96))}),[ge]),Te=ht(()=>Ur(),[]),be=ht(()=>_r(Qe,W.iconRadius),[W.iconRadius]),[Be,Ie]=te(0),pe=Math.max(1,Math.ceil(e.length/Qe)),oe=Math.min(Be,pe-1),Me=ht(()=>{let O=oe*Qe,w=[...e.slice(O,O+Qe)];for(;w.length<Qe;)w.push({id:`empty-${w.length}`,name:"",icon:null,onPress:r(()=>{},"onPress")});return w},[e,oe]);Pe(()=>{cn()},[]),Pe(()=>{let O=re.backdrop.duration,w=re.dial.rotation.duration,l=re.centerButton.delay,v=re.icons.delay,C=re.icons.duration,J=performance.now(),Y=r(m=>{let f=m-J;d(Math.min(1,f/O));let z=Math.min(1,f/400),X=Ke(z)*1.1;z>.7&&(X-=(z-.7)*.33),z>=1&&(X=1),x(Math.max(0,Math.min(1.05,X)));let le=Math.min(1,f/w);if(B(Ke(le)*360),f>=l){let Se=Math.min(1,(f-l)/300),Et=Ke(Se)*1.15;Se>.6&&(Et-=(Se-.6)*.375),Se>=1&&(Et=1),M(Math.max(0,Math.min(1.05,Et)))}if(f>=v){let Se=Math.min(1,(f-v)/C);D(Ke(Se))}let Xe=v+C;f<Xe?U.current=requestAnimationFrame(Y):(d(1),x(1),B(360),M(1),D(1),E(true))},"animate");return U.current=requestAnimationFrame(Y),()=>{U.current&&cancelAnimationFrame(U.current)}},[]);let me=bt(()=>{if(q.current)return;q.current=true,_(true),U.current&&cancelAnimationFrame(U.current);let O=performance.now(),w=ee.icons.duration,l=ee.centerButton.duration,v=ee.dialScale.duration,C=Math.max(l,v),J=ee.backdrop.duration,Y=r(m=>{let f=m-O;if(f<w){let le=Wt(f/w);D(1-le),U.current=requestAnimationFrame(Y);return}let z=w;if(f<z+C){D(0);let le=Math.min(1,(f-z)/l),Xe=Math.min(1,(f-z)/v);M(1-Wt(le)),x(1-Wt(Xe)),U.current=requestAnimationFrame(Y);return}let X=z+C;if(f<X+J){x(0),M(0);let le=(f-X)/J;d(1-le),U.current=requestAnimationFrame(Y);return}d(0),t()},"animate");U.current=requestAnimationFrame(Y)},[ee,t]);Ht(true,()=>{q.current||(n?i?.():me())},va),Pe(()=>{let O=document.activeElement,w=Q.current;return()=>{O?.isConnected&&(document.activeElement===document.body||w?.contains(document.activeElement))&&O.focus()}},[]),Pe(()=>{if(n)return;Z.current?.focus();let O=r(w=>{let l=Q.current;if(l){if(w.key==="Escape")w.preventDefault(),me();else if(w.key==="Tab"){let v=Array.from(l.querySelectorAll('button:not(:disabled):not([aria-disabled="true"]), [tabindex="0"]')).filter(Y=>Y.getClientRects().length>0),C=v[0],J=v[v.length-1];(!l.contains(document.activeElement)||(w.shiftKey?document.activeElement===C:document.activeElement===J))&&(w.preventDefault(),(w.shiftKey?J:C)?.focus())}else if(["ArrowRight","ArrowDown","ArrowLeft","ArrowUp","Home","End"].includes(w.key)){let v=Array.from(l.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')),C=v.indexOf(document.activeElement);if(C<0||!v.length)return;w.preventDefault();let J=w.key==="Home"?0:w.key==="End"?v.length-1:(C+(w.key==="ArrowRight"||w.key==="ArrowDown"?1:-1)+v.length)%v.length;v[J].focus()}}},"handleKeyDown");return document.addEventListener("keydown",O),()=>document.removeEventListener("keydown",O)},[me,n]);let[Ce,ae]=te(false);Pe(()=>{if(a)return;let O=false,w=setTimeout(async()=>{let l=await _o.getItem(sn);!O&&!l&&ae(true)},1200);return()=>{O=true,clearTimeout(w)}},[a]);let ve=bt(()=>{ae(false),_o.setItem(sn,"true")},[]);Pe(()=>{n&&Ce&&ve()},[n,Ce,ve]);let Ye=bt(O=>{if(O.id.startsWith("empty-")||q.current)return;let[w,l]=ne.iconSelect.pulse,v=performance.now(),C=150,J=r(Y=>{let m=Y-v;if(m<C){let f=Ke(m/C);A(1-(1-w.scale)*f),requestAnimationFrame(J)}else if(m<C*2){let f=Ke((m-C)/C);A(w.scale+(l.scale-w.scale)*f),requestAnimationFrame(J)}else A(1)},"animatePulse");requestAnimationFrame(J),setTimeout(()=>{O.onPress(),me()},ne.iconSelect.actionDelay)},[ne.iconSelect,me]),$e=bt(O=>{if(q.current)return;let w=Math.max(0,Math.min(O,pe-1));w!==oe&&Ie(w)},[pe,oe]),ke=W.buttonSize*I.centerButton.containerRatio,Re=W.buttonSize*I.centerButton.borderRatio,je=W.buttonSize*I.centerButton.containerRatio/2+6,se=T&&!R;return we("div",{ref:Q,role:"dialog","aria-label":"Dial Menu","aria-modal":"true",style:{position:"fixed",inset:0,zIndex:1e4},children:[L("button",{type:"button","aria-label":"Close dial menu",tabIndex:0,onClick:me,style:{position:"absolute",inset:0,border:0,padding:0,backgroundColor:j.dialBackdrop,opacity:u}}),s?L("div",{role:"status","data-testid":"buoy-dial-empty-note",style:{position:"absolute",left:16,right:16,bottom:80+W.circleSize+16,color:j.iconLabel,fontSize:12,fontFamily:$t,textAlign:"center",opacity:g>.01?1:0},children:s}):null,we("div",{style:{position:"absolute",left:"50%",marginLeft:-W.circleSize/2,bottom:80,width:W.circleSize,height:W.circleSize,borderRadius:"50%",backgroundColor:j.dialBackground,border:`${I.circle.borderWidth}px solid ${j.dialBorder}`,boxShadow:`0 0 ${I.circle.shadowRadius}px ${Wo(j.dialShadow,I.circle.shadowOpacity)}`,transform:`scale(${g}) rotate(${h}deg)`,opacity:g>.01?1:0,overflow:"hidden"},children:[L("div",{style:{position:"absolute",inset:0,borderRadius:"50%",backgroundColor:j.dialGradient1,opacity:I.gradientLayers[0].opacity}}),L("div",{style:{position:"absolute",inset:0,top:"30%",left:"30%",borderRadius:"50%",backgroundColor:j.dialGradient2,opacity:I.gradientLayers[1].opacity}}),L("div",{style:{position:"absolute",inset:0,top:"50%",left:"50%",borderRadius:"50%",backgroundColor:j.dialGradient3,opacity:I.gradientLayers[2].opacity}}),Te.map(O=>L("div",{style:{position:"absolute",top:"50%",left:0,right:0,height:I.grid.lineHeight,transform:`rotate(${O}deg)`,transformOrigin:"center"},children:["left","right"].map(w=>L("div",{style:{position:"absolute",top:0,[w]:0,width:`calc(50% - ${je}px)`,height:I.grid.lineHeight,backgroundColor:j.dialGridLine}},w))},O)),L("div",{"data-testid":"dial-background","data-background":c,style:{position:"absolute",inset:0,pointerEvents:"none"},children:c==="hyperspace"?L(ca,{size:W.circleSize}):L(Yr,{focus:wa})}),Me.map((O,w)=>L(dn,{icon:O,index:w,totalIcons:Me.length,position:be[w],progress:F,onPress:()=>Ye(O)},w)),we("div",{style:{position:"absolute",left:"50%",top:"50%",width:ke,height:ke,marginLeft:-ke/2,marginTop:-ke/2,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:j.hubHalo,borderRadius:W.buttonSize,overflow:"hidden",transform:`scale(${k*P})`,opacity:k>.01?1:0},children:[L("div",{style:{position:"absolute",inset:0,backgroundColor:j.dialGradient1,opacity:.5,borderRadius:W.buttonSize}}),L("div",{style:{position:"absolute",inset:0,top:"20%",left:"20%",backgroundColor:j.dialGradient2,opacity:.3,borderRadius:W.buttonSize}}),L("div",{style:{position:"absolute",inset:0,top:"40%",left:"40%",backgroundColor:j.dialGradient3,opacity:.2,borderRadius:W.buttonSize}}),L("div",{style:{width:Re,height:Re,borderRadius:W.buttonSize*I.centerButton.borderRadiusRatio,backgroundColor:j.hubFill,display:"flex",alignItems:"center",justifyContent:"center"},children:L("button",{ref:Z,type:"button","aria-label":n?"Close Settings":"Open Dev Tools Settings",disabled:!i,onClick:i,onPointerEnter:O=>O.pointerType==="mouse"&&S(true),onPointerLeave:()=>S(false),style:{border:0,padding:0,background:"transparent",width:W.buttonSize,height:W.buttonSize,borderRadius:W.buttonSize/2,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",cursor:i?"pointer":"default",transform:V?`scale(${ne.centerHover.scale})`:"scale(1)",transition:`transform ${ne.centerHover.duration}ms ease`,animation:se&&!V?xe.pulse:"none"},children:n?we("span",{style:{display:"flex",flexDirection:"column",alignItems:"center",fontSize:I.centerButton.text.fontSize-2,fontWeight:I.centerButton.text.fontWeight,fontFamily:I.centerButton.text.fontFamily,color:j.centerText,letterSpacing:I.centerButton.text.letterSpacing,textAlign:"center",textShadow:`0 0 4px ${j.centerTextGlow}`,textTransform:"uppercase",lineHeight:1.2},children:[L("span",{style:{marginBottom:-2},children:"CLOSE"}),L("span",{style:{marginTop:-2},children:"SETTINGS"})]}):L("span",{style:{fontSize:I.centerButton.text.fontSize,fontWeight:I.centerButton.text.fontWeight,fontFamily:I.centerButton.text.fontFamily,color:j.centerText,letterSpacing:I.centerButton.text.letterSpacing,textAlign:"center",textShadow:`0 0 4px ${j.centerTextGlow}`,textTransform:"uppercase"},children:o})})})]})]}),pe>1&&we("div",{style:{position:"absolute",left:"50%",marginLeft:-W.circleSize/2,top:"calc(100% - 64px)",width:W.circleSize,display:"flex",alignItems:"center",justifyContent:"space-between",opacity:Math.min(1,g),transform:`scale(${Math.min(1,g)})`},children:[L(Ut,{side:"prev",disabled:oe<=0,onClick:()=>$e(oe-1)}),we("span",{"data-testid":"buoy-dial-page",style:{padding:"6px 12px",fontSize:13,fontWeight:900,fontFamily:$t,letterSpacing:2,color:j.centerText,textShadow:`0 0 6px ${j.centerTextGlow}`},children:[String(oe+1).padStart(2,"0"),we("span",{style:{color:j.iconLabelMuted,textShadow:"none"},children:[" / ",String(pe).padStart(2,"0")]})]}),L(Ut,{side:"next",disabled:oe>=pe-1,onClick:()=>$e(oe+1)})]}),Ce&&!n&&L(Nt,{title:"Welcome to Buoy!",message:"Tap the center button to configure and add tools to your dial menu.",onDismiss:ve,showArrow:false})]})}r(Kt,"DialMenu");import{persistentStorage as un,devToolsStorageKeys as xa}from"@buoy-gg/shared-ui/web";import{recordUsage as Ta,pruneUsage as Ia}from"@buoy-gg/floating-tools-core/web";var pn=xa.dial.usage(),Ve={},mn=false,Vt=null;function qt(){return Vt||(Vt=(async()=>{try{let e=await un.getItem(pn);if(e){let t=JSON.parse(e);t&&typeof t=="object"&&(Ve=t)}}catch{}finally{mn=true}})(),Vt)}r(qt,"loadDialUsage");qt();function gn(e){return e.map((t,o)=>({id:t,index:o,lastUsed:Ve[t]?.lastUsed??0})).sort((t,o)=>o.lastUsed-t.lastUsed||t.index-o.index).map(({id:t})=>t)}r(gn,"getRankedToolIds");async function fn(e){if(!e)return;mn||await qt();let t=Math.max(Date.now(),...Object.values(Ve).map(o=>o.lastUsed+1));Ve=Ia(Ta(Ve,e,t),t);try{await un.setItem(pn,JSON.stringify(Ve))}catch{}}r(fn,"recordToolUsage");import{useCallback as Ca,useMemo as hn}from"react";import{persistentStorage as ka}from"@buoy-gg/shared-ui/web";import{useState as ie,useEffect as ze,useCallback as wt,useMemo as xt}from"react";import{settingsEventBus as Tt}from"@buoy-gg/floating-tools-core/web";import{useSyncExternalStore as za}from"react";import{getRegisteredToolModule as Aa}from"@buoy-gg/shared-ui/web";var Ba=r(()=>()=>{},"noopSubscribe"),Ma=r(()=>null,"serverSnapshot");function yn(){let e=Aa("@buoy-gg/external-sync");return za(e?.subscribeSyncStatus??Ba,()=>e?.getSyncStatus?.()??null,Ma)}r(yn,"useDesktopSyncStatus");import{SentryIcon as Ra,WifiCircuitIcon as Da,ImageOverlayIcon as Oa,RenderCountIcon as Pa,Info as Gt,Layers as Ea,ChevronRightIcon as bn,ChevronDown as vn,getStorageBackendType as La,getUseLicense as Fa,signOutOfBuoy as $a,persistentStorage as Ee,Trash2 as ja,CheckCircle2 as Sn,BuoyUpgradeSheet as Na,BackgroundSwitcher as Ha,night as b,NightCard as Le,NightRows as Jt,NightSectionLabel as Wa,NightFootnote as wn,NightSwitch as xn,NightButton as Yt,NightSegmented as _a,NightBadge as he,NightSeparator as Ua,monoFont as Tn}from"@buoy-gg/shared-ui/web";import{EnvIcon as In,StorageIcon as Ka,RoutesIcon as Va,NetworkIcon as qa,QueryIcon as Ga,HighlighterIcon as Ja,ReduxIcon as Ya,EventsIcon as Xa}from"@buoy-gg/floating-tools-core/web";import Qa,{createContext as Za,useContext as es}from"react";import{jsx as ts}from"react/jsx-runtime";var Cn=Za({});function Xt({children:e,defaultFloatingTools:t,defaultDialTools:o}){let i=Qa.useMemo(()=>({defaultFloatingTools:t,defaultDialTools:o}),[t,o]);return ts(Cn.Provider,{value:i,children:e})}r(Xt,"DefaultConfigProvider");function Qt(){return es(Cn)}r(Qt,"useDefaultConfig");import os from"react";import{toolTheme as ns}from"@buoy-gg/shared-ui/web";import{jsx as kn}from"react/jsx-runtime";function zn({label:e,size:t,color:o=ns.colors.text}){let i=Math.max(Array.from(e.replace(/[\uFE00-\uFE0F\u200D]/g,"")).length,1),n=i<=2?t:t*1.6,a=Math.max(7,Math.min(t*(i===1?.7:.62),n/(.62*i)));return kn("span",{style:{display:"inline-flex",minWidth:t,maxWidth:n,height:t,alignItems:"center",justifyContent:"center",color:o,fontSize:a,fontWeight:800,letterSpacing:.5,whiteSpace:"nowrap",overflow:"hidden"},children:e})}r(zn,"AppTextIcon");function Zt(e,t){return e==null?e:typeof e=="function"?os.createElement(e,{slot:t.slot,size:t.size,state:t.state,actions:t.actions}):typeof e=="string"||typeof e=="number"?kn(zn,{label:String(e),size:t.size,color:t.color}):e}r(Zt,"renderAppIcon");import{JsModal as is,devToolsStorageKeys as eo,onSettingsApplied as rs,expandableWindowControlsSupported as as}from"@buoy-gg/shared-ui/web";import{useSafeAreaInsets as ss}from"@buoy-gg/shared-ui/web";import{Fragment as et,jsx as p,jsxs as N}from"react/jsx-runtime";var qe="@react_buoy_dev_tools_settings",ls=6,It=r(e=>{let t=ls,o={};for(let[i,n]of Object.entries(e))n&&t>0?(o[i]=true,t-=1):o[i]=false;return o},"enforceDialLimit"),cs=r((e,t)=>{let{userStatus:o,environment:i,...n}=e,a=t?Object.entries(n).filter(([s])=>t.includes(s)):Object.entries(n);return{...Object.fromEntries(a),environment:i??false}},"sanitizeFloating"),An=r((e,t,o)=>{if(!t)return e;let i={...e.dialTools,...t.dialTools??{}},n=o?.allowedDialKeys?Object.entries(i).filter(([a])=>o.allowedDialKeys?.includes(a)):Object.entries(i);return{dialTools:It(Object.fromEntries(n)),floatingTools:cs({...e.floatingTools,...t.floatingTools??{}},o?.allowedFloatingKeys),globalSettings:{enableSharedModalDimensions:false,expandableWindowControls:true,...t.globalSettings??{}}}},"mergeWithDefaults"),ds=r((e=[],t,o)=>{let i={},n={},a=new Set(t??[]),s=new Set(o??[]),c=!o||o.length===0;for(let u of e){let{id:d,slot:g="both"}=u;(g==="dial"||g==="both")&&(i[d]=c?true:s.has(d)),(g==="row"||g==="both")&&(n[d]=a.has(d))}return{dialTools:It(i),floatingTools:{...n,environment:a.has("environment")},globalSettings:{enableSharedModalDimensions:false,expandableWindowControls:true}}},"generateDefaultSettings"),us=r(({visible:e,onClose:t,onSettingsChange:o,initialSettings:i,availableApps:n=[],storage:a=Ee,zIndex:s})=>{let{defaultFloatingTools:c,defaultDialTools:u}=Qt(),d=xt(()=>ds(n,c,u),[n,c,u]),g=xt(()=>Object.keys(d.dialTools),[d]),x=xt(()=>Object.keys(d.floatingTools).filter(m=>m!=="environment"),[d]),[h,B]=ie(i||tt||d),[k,M]=ie(to??"floating"),[F,D]=ie(to!==null),[P,A]=ie(new Set),[V,S]=ie(false),[R,_]=ie(false);ze(()=>{let m=requestAnimationFrame(()=>_(true));return()=>cancelAnimationFrame(m)},[]);let T=yn();ze(()=>{r(async()=>{try{let m=await Ee.getItem(eo.settings.activeTab());if(m&&["floating","settings","pro"].includes(m)){let f=m;to=f,M(z=>z===f?z:f)}}catch{}finally{D(true)}},"loadActiveTab")()},[]),ze(()=>{F&&Ee.setItem(eo.settings.activeTab(),k).catch(m=>{console.warn("[Buoy]","Failed to save settings active tab:",m)})},[k,F]);let E=Fa()?.(),Q=E?.isPro??false,Z=!Q&&E?.licenseKey?E.error:null,U=E?.errorKind==="transport",[q,re]=ie(Bn),[ee,ne]=ie(false),[xe,ge]=ie(false),[ye,W]=ie(false),[Te,be]=ie([]),[Be,Ie]=ie(false),pe=ss(),oe=zo.get("window").height,Me=zo.get("window").width,me=Math.floor(oe*.33),Ce=Math.min(Me-32,400),ae=wt(async()=>{try{let m=await a.getItem(qe);if(m){let f=JSON.parse(m),z=An(d,f,{allowedDialKeys:g,allowedFloatingKeys:x});tt=z,B(X=>Mn(X,z)?X:z);return}tt=d,B(f=>Mn(f,d)?f:d)}catch(m){console.error("[Buoy]","Failed to load dev tools settings:",m),B(d)}},[d,g,x,a]);ze(()=>{ae()},[ae]),ze(()=>{La().then(m=>{Bn=m,re(f=>f===m?f:m)})},[]),ze(()=>{ye&&(Ie(true),Ee.getAllKeys().then(m=>{be(m.sort())}).catch(()=>{be([])}).finally(()=>{Ie(false)}))},[ye]);let ve=r(async m=>{try{let f=null;try{let X=await a?.getItem(qe);f=X?JSON.parse(X):null}catch{}let z={...m,dialTools:{...f?.dialTools,...It(m.dialTools)},floatingTools:{...f?.floatingTools,...m.floatingTools}};await a.setItem(qe,JSON.stringify(z)),tt=z,B(z),o?.(z),Tt.emit(z)}catch(f){console.error("[Buoy]","Failed to save dev tools settings:",f)}},"saveSettings"),Ye=r(m=>{let f={...h,floatingTools:{...h.floatingTools,[m]:!h.floatingTools[m]}};ve(f)},"toggleFloatingTool"),$e=r(m=>{let f={...h,globalSettings:{...h.globalSettings,[m]:!h.globalSettings?.[m]}};ve(f)},"toggleGlobalSetting"),ke=r(async()=>{ne(true),ge(false);try{await Ee.clear(),ge(true),B(d),a!==Ee&&await a.setItem(qe,JSON.stringify(d)),o?.(d),Tt.emit(d),setTimeout(()=>ge(false),2e3)}catch(m){console.error("[Buoy]","Failed to clear storage:",m)}finally{ne(false)}},"handleClearStorage"),Re=wt(m=>{},[]),je=r(m=>{let f=n.find(z=>z.id===m);return f?.description?f.description:m==="environment"?"Environment badge.":""},"getToolDescription"),se=r(m=>m==="environment"?"Env Badge":n.find(f=>f.id===m)?.name??m.toUpperCase().replace(/_/g," "),"getToolLabel"),O=r(m=>{if(!R)return null;switch(m){case"query":return p(Ga,{size:18});case"env":return p(In,{size:18});case"sentry":return p(Ra,{size:18,color:"#9945FF"});case"storage":return p(Ka,{size:18,bgColor:b.color.surface});case"wifi":case"query-wifi-toggle":return p(Da,{size:18,colorPreset:"green",strength:4,noBackground:true});case"route-events":return p(Va,{size:18,bgColor:b.color.surface});case"network":return p(qa,{size:18});case"environment":return p(In,{size:18});case"debug-borders":return p(Ea,{size:18,color:b.color.accent});case"highlight-updates":return p(Pa,{size:18,color:b.color.accent});case"highlight-updates-modal":return p(Ja,{size:18});case"redux":return p(Ya,{size:18});case"image-overlay":return p(Oa,{size:18});case"events":return p(Xa,{size:18});case"zustand":try{let{ZustandIcon:f}=Ao("@buoy-gg/zustand/web");return p(f,{size:18})}catch{return p(Gt,{size:18,color:b.color.textSecondary})}case"jotai":try{let{JotaiIcon:f}=Ao("@buoy-gg/jotai/web");return p(f,{size:18})}catch{return p(Gt,{size:18,color:b.color.textSecondary})}default:{let f=n.find(z=>z.id===m);return f?.icon!=null?Zt(f.icon,{slot:"row",size:18,color:f.color}):p(Gt,{size:18,color:b.color.textSecondary})}}},"getToolIcon"),w=r((m,f,z,X)=>{let le=je(m);return N(ut,{activeOpacity:z?1:.7,onPress:()=>!z&&X(),accessibilityLabel:se(m),accessibilityRole:"button",style:[y.toolRow,z&&y.rowDisabled],children:[p(H,{style:y.toolIconSlot,children:O(m)}),N(H,{style:y.rowInfo,children:[N(K,{style:y.rowLabel,children:[se(m),z?" \xB7 max 6":""]}),le?p(K,{style:y.rowCaption,numberOfLines:1,children:le}):null]}),p(xn,{value:f,disabled:z,onValueChange:()=>X(),accessibilityLabel:se(m)})]},m)},"renderToolRow"),l=r(m=>{A(f=>{let z=new Set(f);return z.has(m)?z.delete(m):z.add(m),z})},"toggleSettingExpanded"),v=r((m,f,z,X,le)=>{let Xe=h.globalSettings?.[m]??false,Se=P.has(m);return N(H,{children:[N(ut,{activeOpacity:.7,onPress:()=>l(m),accessibilityLabel:f,style:y.settingRow,children:[N(H,{style:y.rowInfo,children:[p(K,{style:y.rowLabel,children:f}),p(K,{style:y.rowCaption,numberOfLines:Se?0:1,children:z})]}),p(xn,{value:Xe,onValueChange:()=>$e(m),accessibilityLabel:f})]}),Se&&N(H,{style:y.settingRowBody,children:[p(K,{style:y.settingRowBodyText,children:X}),p(K,{style:y.settingRowBodyHint,children:le})]})]},m)},"renderGlobalSettingRow"),C=r((m,f,z)=>N(H,{children:[p(Wa,{children:m}),f,z]}),"renderSection"),J=q==="filesystem"?p(he,{label:"File System",tone:"accent"}):q==="asyncstorage"?p(he,{label:"Async Storage",tone:"warning"}):q==="localstorage"?p(he,{label:"Local Storage",tone:"accent"}):q==="memory"?p(he,{label:"Memory",tone:"danger"}):p(he,{label:"Loading\u2026",tone:"neutral"}),Y=r(()=>N(H,{style:y.container,children:[N(ko,{keyboardShouldPersistTaps:"handled",style:y.scrollContent,showsVerticalScrollIndicator:false,contentContainerStyle:y.scrollContainer,children:[k==="floating"&&p(et,{children:C("Floating Tools",p(Le,{glass:true,children:p(Jt,{children:Object.entries(h.floatingTools).map(([m,f])=>w(m,f,false,()=>Ye(m)))})}),p(wn,{children:"Tools switched on here appear in the floating bubble row."}))}),k==="settings"&&N(et,{children:[C("Background",p(Le,{glass:true,padded:true,children:p(Ha,{embedded:true})})),C("Storage",N(Le,{glass:true,children:[N(ut,{activeOpacity:.7,onPress:()=>W(!ye),accessibilityLabel:"Storage Type",style:y.settingRow,children:[p(H,{style:y.rowInfo,children:p(K,{style:y.rowLabel,children:"Storage Type"})}),J,ye?p(vn,{size:16,color:b.color.textTertiary}):p(bn,{size:16,color:b.color.textTertiary})]}),ye&&N(et,{children:[N(H,{style:y.settingRowBody,children:[p(K,{style:y.settingRowBodyText,children:q==="filesystem"?"Settings persist independently and survive AsyncStorage.clear() calls during logout.":q==="asyncstorage"?"Settings may be lost if AsyncStorage is cleared during logout.":q==="localstorage"?"Settings are saved in this browser. Clearing site data removes them.":q==="memory"?"Settings are stored in memory only and will be lost on app restart.":"Checking storage backend\u2026"}),q==="asyncstorage"&&p(K,{style:[y.settingRowBodyText,y.bodyWarning],children:"Install expo-file-system to persist settings through logout flows."}),q==="memory"&&p(K,{style:[y.settingRowBodyText,y.bodyDanger],children:"No persistent storage available \u2014 install expo-file-system (best) or @react-native-async-storage/async-storage."})]}),p(Ua,{}),N(H,{style:y.storageExpanded,children:[N(H,{style:y.storageExpandedHeader,children:[p(K,{style:y.storageExpandedTitle,children:"SAVED SETTINGS"}),p(K,{style:y.storageExpandedCount,children:Be?"\u2026":`${Te.length} keys`})]}),Be?p(K,{style:y.storageKeyEmpty,children:"Loading\u2026"}):Te.length===0?p(K,{style:y.storageKeyEmpty,children:"No settings saved yet"}):p(ko,{keyboardShouldPersistTaps:"handled",style:y.storageKeysList,nestedScrollEnabled:true,showsVerticalScrollIndicator:true,children:Te.map(m=>p(H,{style:y.storageKeyItem,children:p(K,{style:y.storageKeyText,numberOfLines:1,children:m.replace("@react_buoy_","")})},m))})]}),p(H,{style:y.cardButtonWrap,children:p(Yt,{label:xe?"Cleared":ee?"Clearing\u2026":"Clear All Settings",variant:xe?"secondary":"destructive",size:"md",disabled:ee,onPress:ke,icon:xe?p(Sn,{size:15,color:b.color.accent}):p(ja,{size:15,color:ee?b.color.textTertiary:b.color.danger})})})]})]})),T&&T.state!=="idle"&&C("Desktop Sync",N(Le,{glass:true,children:[N(ut,{activeOpacity:.7,onPress:()=>l("desktopSync"),accessibilityLabel:"Buoy Desktop",style:y.settingRow,children:[p(H,{style:y.rowInfo,children:p(K,{style:y.rowLabel,children:"Buoy Desktop"})}),T.state==="connected"?p(he,{label:"Connected",tone:"accent"}):T.state==="connecting"?p(he,{label:"Connecting\u2026",tone:"neutral"}):p(he,{label:"Retrying",tone:"warning"}),P.has("desktopSync")?p(vn,{size:16,color:b.color.textTertiary}):p(bn,{size:16,color:b.color.textTertiary})]}),P.has("desktopSync")&&N(H,{style:y.settingRowBody,children:[N(K,{style:y.settingRowBodyText,children:[T.state==="connected"?"Streaming tool data to Buoy Desktop at ":"Trying to reach Buoy Desktop at ",p(K,{style:y.footnoteMono,children:T.targetURL??"(unknown URL)"}),T.state!=="connected"&&" \u2014 is the desktop app running? Override with the externalSync socketURL option if it runs elsewhere."]}),T.state==="retrying"&&T.lastError&&N(K,{style:[y.settingRowBodyText,y.bodyWarning],children:["Last error: ",T.lastError]})]})]})),C("Modal Behavior",p(Le,{glass:true,children:N(Jt,{children:[v("enableSharedModalDimensions","Shared Modal Size","Sync dimensions across all tools","When enabled, all tool modals will share the same size and position. Resizing one modal will affect all others. When disabled, each tool remembers its own size and position independently.","Keep OFF for the best experience. This allows you to customize each tool's modal size separately."),as(Ne.OS==="web")?v("expandableWindowControls","Expand Controls","iPad-style expandable window buttons","When enabled, the window control buttons (minimize, toggle mode, close) start as small dots and expand into larger, easy-to-tap buttons when pressed. When disabled, buttons are directly tappable at their small size.","Keep ON for touch devices where the small buttons are hard to press. Turn OFF if you prefer direct single-tap access."):null]})}))]}),k==="pro"&&N(et,{children:[C("License",N(Le,{glass:true,children:[N(H,{style:y.settingRow,children:[p(H,{style:y.rowInfo,children:p(K,{style:y.rowLabel,children:"License Status"})}),p(H,{testID:"buoy-settings-license-status",accessibilityLabel:Q?"License: Active":"License: Free",children:Q?p(he,{label:"Active",tone:"accent"}):p(he,{label:"Free",tone:"neutral"})})]}),E?.tierSource==="session"?N(H,{style:y.settingRow,children:[p(H,{style:y.rowInfo,children:p(K,{style:y.rowLabel,children:"Signed in with Buoy"})}),p(Yt,{label:"Sign out",variant:"secondary",size:"md",onPress:()=>void $a(),testID:"buoy-settings-signout"})]}):null,E?.teamRole?p(H,{style:y.settingRow,testID:"buoy-settings-team-role",children:N(H,{style:y.rowInfo,children:[N(K,{style:y.rowLabel,children:["Role: ",E.teamRole]}),p(K,{style:y.rowCaption,children:E.allowedTools?"Your team picks the tools you see.":"You see all tools."})]})}):null]}),p(wn,{children:Q?"You have full access to all Buoy DevTools features.":Z?U?`Couldn't reach the license server (${Z}). A VPN or corporate proxy can block buoy.gg \u2014 turn it off and reload. Your key hasn't been rejected.`:`License check failed: ${Z}.`:"Upgrade to Pro to unlock all features and support development."})),!Q&&N(et,{children:[C("Pro Features",p(Le,{glass:true,children:p(Jt,{children:["Advanced Settings","Priority Support"].map(m=>N(H,{style:y.featureRow,children:[p(Sn,{size:16,color:b.color.accent}),p(K,{style:y.rowLabel,children:m})]},m))})})),p(Yt,{label:"Upgrade to Pro",variant:"primary",size:"lg",onPress:()=>S(true)})]})]})]}),p(Na,{visible:V,onClose:()=>S(false)})]}),"renderContent");return p(is,{visible:e,onClose:t,zIndex:s,variant:"night",header:{showToggleButton:false,customContent:p(H,{style:y.headerRow,children:p(_a,{glass:true,tabs:[{key:"floating",label:"Floating"},{key:"settings",label:"Settings"},{key:"pro",label:"Pro"}],activeKey:k,onChange:m=>M(m)})})},initialMode:"bottomSheet",onModeChange:Re,persistenceKey:eo.settings.root(),enablePersistence:true,maxHeight:oe-pe.top,initialHeight:me,initialFloatingPosition:{x:(Me-Ce)/2,y:pe.top+20},enableGlitchEffects:true,children:Y()})},"DevToolsSettingsModal"),ps={dialTools:{},floatingTools:{environment:false},globalSettings:{enableSharedModalDimensions:false}},ms=r((e,t)=>{let o=new Set(e??[]),i=new Set(t??[]),n={};for(let s of i)n[s]=true;let a={environment:o.has("environment")};for(let s of o)s!=="environment"&&(a[s]=true);return{dialTools:It(n),floatingTools:a,globalSettings:{enableSharedModalDimensions:false}}},"createDefaultsFromConfig"),tt=null,to=null,Bn=null,Mn=r((e,t)=>JSON.stringify(e)===JSON.stringify(t),"sameSettings");Tt.addListener(e=>{e&&(tt=e)});var Rn=r(()=>{let{defaultFloatingTools:e,defaultDialTools:t}=Qt(),o=xt(()=>!e&&!t?ps:ms(e,t),[e,t]),[i,n]=ie(o),a=wt(async()=>{try{let c=await Ee.getItem(qe);if(c){let u=JSON.parse(c),d=An(o,u);n(d);return}n(o)}catch(c){console.error("[Buoy]","Failed to load dev tools settings:",c),n(o)}},[o]);ze(()=>rs(c=>{c.includes(qe)&&a()}),[a]),ze(()=>{a();let c=Tt.addListener(u=>{try{u&&n(u)}catch{}});return()=>{c()}},[a]);let s=wt(()=>{a()},[a]);return{settings:i,refreshSettings:s}},"useDevToolsSettings"),y=dt.create({container:{flex:1,backgroundColor:"transparent"},headerRow:{flexDirection:"row",alignItems:"center",paddingLeft:b.gutter,paddingRight:b.gutter,paddingBottom:8},scrollContent:{flex:1},scrollContainer:{paddingHorizontal:b.gutter,paddingTop:8,paddingBottom:24,gap:b.groupGap},toolRow:{flexDirection:"row",alignItems:"center",gap:12,paddingHorizontal:b.rowPadH,paddingVertical:12},settingRow:{flexDirection:"row",alignItems:"center",gap:10,paddingHorizontal:b.rowPadH,paddingVertical:b.rowPadV,minHeight:52},featureRow:{flexDirection:"row",alignItems:"center",gap:10,paddingHorizontal:b.rowPadH,paddingVertical:12},rowDisabled:{opacity:.4},toolIconSlot:{width:24,alignItems:"center"},rowInfo:{flex:1,gap:2},rowLabel:{color:b.color.text,fontSize:b.font.row,fontWeight:"500"},rowCaption:{color:b.color.textTertiary,fontSize:b.font.label},settingRowBody:{paddingHorizontal:b.rowPadH,paddingBottom:b.rowPadV,gap:6},settingRowBodyText:{color:b.color.textSecondary,fontSize:b.font.caption,lineHeight:b.font.caption*1.45},settingRowBodyHint:{color:b.color.textTertiary,fontSize:b.font.caption,lineHeight:b.font.caption*1.45},bodyWarning:{color:b.color.warning},bodyDanger:{color:b.color.danger},cardButtonWrap:{paddingHorizontal:b.cardPad,paddingTop:10,paddingBottom:b.cardPad},storageExpanded:{paddingHorizontal:b.rowPadH,paddingVertical:12,gap:8},storageExpandedHeader:{flexDirection:"row",alignItems:"center"},storageExpandedTitle:{flex:1,color:b.color.textSecondary,fontSize:b.font.micro,fontWeight:"600",letterSpacing:.5},storageExpandedCount:{color:b.color.textTertiary,fontSize:b.font.micro},storageKeysList:{maxHeight:150},storageKeyItem:{backgroundColor:b.color.glassElevated,borderRadius:b.radius.segment,paddingHorizontal:10,paddingVertical:7,marginBottom:4},storageKeyText:{color:b.color.textSecondary,fontSize:b.font.micro,fontFamily:Tn},storageKeyEmpty:{color:b.color.textTertiary,fontSize:b.font.caption,fontStyle:"italic"},footnoteMono:{fontFamily:Tn,fontSize:b.font.label,color:b.color.textSecondary}});import{jsx as Dn}from"react/jsx-runtime";var gs=[];function oo({visible:e,onClose:t,availableTools:o=gs,defaultFloatingTools:i,defaultDialTools:n,storage:a=ka,onSettingsChange:s}){let c=hn(()=>({getItem:r(async g=>a.getItem(g),"getItem"),setItem:r(async(g,x)=>a.setItem(g,x),"setItem")}),[a]),u=hn(()=>o.map(g=>({...g,name:g.name??g.id,icon:typeof g.icon=="function"?x=>g.icon(x.size):g.icon})),[o]),d=Ca(g=>{s?.(g)},[s]);return Dn(Xt,{defaultFloatingTools:i,defaultDialTools:n,children:Dn(us,{visible:e,onClose:t,zIndex:11e3,availableApps:u,storage:c,onSettingsChange:d})})}r(oo,"SettingsModal");import{listenBuoyKeydown as fs}from"@buoy-gg/shared-ui/web/floating";import{persistentStorage as On,setExpandableWindowControls as hs}from"@buoy-gg/shared-ui/web";import{createContext as ys,useCallback as Ae,useContext as bs,useEffect as Ct,useMemo as vs,useRef as ot,useState as Pn}from"react";var Ss=r((e,t,o)=>{if(t.singleton){let n=e.find(a=>a.id===t.id);if(n){let a=n.minimized??false;return{instanceId:n.instanceId,wasMinimized:a,apps:[...e.filter(s=>s.instanceId!==n.instanceId),{...n,minimized:false}]}}}let i=o();return{instanceId:i,wasMinimized:false,apps:[...e,{...t,instanceId:i}]}},"resolveOpenAppsState"),ws=r((e,t,o)=>{let i=e.find(n=>n.instanceId===t);return i?[...e.filter(n=>n!==i),{...i,minimized:false,restoreState:o??i.restoreState}]:e},"restoreOpenApp");import{createContext as xs,useCallback as En,useContext as Ts,useEffect as kt,useMemo as Is,useRef as Ln,useState as zt}from"react";import{JsModal as Cs,ModalHeader as nt,HeaderSearchButton as ks,TickProvider as zs,ToolScreenHeaderContext as As,devToolsStorageKeys as Fn,buoyColors as $n,gameUIColors as no}from"@buoy-gg/shared-ui/web";import{jsx as ce,jsxs as At}from"react/jsx-runtime";var it=r(()=>{},"noop"),Bs={search:"",isSearchActive:false,clearSearch:it,close:it,minimize:it,showToast:it,setHeaderOverride:it},jn=xs(null);function io(){return Ts(jn)??Bs}r(io,"useToolHost");function Nn(e,t){let{setHeaderOverride:o}=io();kt(()=>(o(e),()=>o(null)),t)}r(Nn,"useToolHeader");var Hn=2200,Ms={success:no.success,error:no.error,info:no.info};function Wn({message:e,type:t,nonce:o}){let i=Ln(new De.Value(0)).current;kt(()=>{i.setValue(0),De.sequence([De.timing(i,{toValue:1,duration:150,useNativeDriver:true}),De.delay(Hn-450),De.timing(i,{toValue:0,duration:300,useNativeDriver:true})]).start()},[o,i]);let n=Ms[t];return At(De.View,{pointerEvents:"none",style:[Bt.toast,{opacity:i,borderColor:n+"60"}],children:[ce(H,{style:[Bt.toastDot,{backgroundColor:n}]}),ce(K,{style:Bt.toastText,numberOfLines:2,children:e})]})}r(Wn,"ToastView");function _n({app:e,config:t,visible:o,zIndex:i,onClose:n,onMinimize:a,initialModalState:s,enableSharedModalDimensions:c,bodyProps:u}){let d=e.component,[g,x]=zt(false),[h,B]=zt(""),[k,M]=zt(null),[F,D]=zt(null),P=Ln(null),A=En(()=>{x(false),B("")},[]),V=En((q,re="info")=>{P.current&&clearTimeout(P.current),D(ee=>({message:q,type:re,nonce:(ee?.nonce??0)+1})),P.current=setTimeout(()=>D(null),Hn)},[]);kt(()=>()=>{P.current&&clearTimeout(P.current)},[]);let S=Is(()=>({search:g?h:"",isSearchActive:g,clearSearch:A,close:n,minimize:r(()=>a(),"minimize"),showToast:V,setHeaderOverride:M,instanceId:e.instanceId}),[h,g,A,n,a,V,e.instanceId]),R=k?.title??t.title??e.title??e.id,_=k?.subtitle??t.subtitle,T=k?.onBack,E=k?.actions??t.headerActions,Q=k?.searchable??t.searchable;kt(()=>{!Q&&g&&A()},[Q,g,A]);let Z=c?Fn.modal.root():Fn.custom(e.id).modal(),U=At(nt,{children:[T&&!g&&ce(nt.Navigation,{onBack:T}),g?ce(nt.Search,{value:h,onChangeText:B,onCancel:A,placeholder:t.searchPlaceholder,testID:`tool-search-field-${e.id}`}):ce(nt.Content,{title:R,subtitle:_}),At(nt.Actions,{children:[!g&&E,Q&&!g&&ce(ks,{variant:"chip",testID:`tool-search-${e.id}`,onPress:()=>x(true)})]})]});return ce(jn.Provider,{value:S,children:ce(Cs,{visible:o,onClose:n,onBack:T,onMinimize:a,initialModalState:s,zIndex:i,persistenceKey:Z,enablePersistence:true,initialMode:t.initialMode??"bottomSheet",header:{customContent:U,showToggleButton:true},disableScrollWrapper:true,styles:{},children:At(H,{nativeID:"buoy-tool-host",style:Bt.bodyRoot,children:[ce(zs,{children:ce(As.Provider,{value:M,children:ce(d,{...u})})}),F&&ce(Wn,{message:F.message,type:F.type,nonce:F.nonce})]})})})}r(_n,"ToolModalShell");var Bt=dt.create({bodyRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},toast:{position:"absolute",bottom:16,alignSelf:"center",flexDirection:"row",alignItems:"center",gap:8,maxWidth:"86%",backgroundColor:$n.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:$n.text}});function Un(e,t){if(t)return{kind:"dial"};for(let i=e.length-1;i>=0;i--){let n=e[i];if(n.launchMode!=="toggle-only"&&!n.minimized)return{kind:"tool",instanceId:n.instanceId}}let o=e[e.length-1];return o?{kind:"tool",instanceId:o.instanceId}:null}r(Un,"resolveBackTarget");import{createContext as Rs,useContext as Ds,useState as Kn,useMemo as Vn}from"react";import{jsx as Os}from"react/jsx-runtime";var qn=Rs(null);function ro({children:e}){let[t,o]=Kn(false),[i,n]=Kn(false),a=Vn(()=>t||i,[t,i]),s=Vn(()=>({isDialOpen:t,isToolOpen:i,isDevToolsActive:a,setDialOpen:o,setToolOpen:n}),[t,i,a]);return Os(qn.Provider,{value:s,children:e})}r(ro,"DevToolsVisibilityProvider");function rt(){let e=Ds(qn);return e||{isDialOpen:false,isToolOpen:false,isDevToolsActive:false,setDialOpen:r(()=>{},"setDialOpen"),setToolOpen:r(()=>{},"setToolOpen")}}r(rt,"useDevToolsVisibility");import{Fragment as Ps,jsx as de}from"react/jsx-runtime";var Gn=ys(null),Jn="@react_buoy_open_apps",ao=44,Es=12,Ls=100,Fs=16,$s=r(e=>({x:window.innerWidth-ao-Fs,y:window.innerHeight-Ls-ao-e*(ao+Es)}),"dockIconPosition"),Yn=r(({children:e})=>{let[t,o]=Pn([]),[i,n]=Pn(false),a=ot([]),s=ot(null),c=ot(false),u=ot(false),d=ot(false),g=Ae(S=>{let R="";return o(_=>{let{apps:T,instanceId:E}=Ss(_,S,()=>`${S.id}-${Date.now()}-${Math.random().toString(36).slice(2)}`);return R=E,T}),R},[]),x=Ae(()=>{if(c.current||!u.current||!d.current)return;c.current=true;let S=s.current;if(!S||S.length===0){n(true);return}s.current=null,S.forEach(({id:R,minimized:_})=>{let T=a.current.find(E=>E.id===R);if(T&&T.component){let E=Zt(T.icon,{slot:"dial",size:20,color:T.color});g({id:T.id,title:T.name,component:T.component,props:T.props,modal:T.modal,launchMode:T.launchMode||"self-modal",singleton:T.singleton??true,icon:E,color:T.color,minimized:_})}}),n(true)},[g]);Ct(()=>{let S=false;return r(async()=>{try{let R=await On.getItem(Jn);if(S)return;if(R){let _=JSON.parse(R),T;Array.isArray(_)&&_.length>0&&(typeof _[0]=="string"?T=_.map(E=>({id:E,minimized:false})):T=_.filter(E=>typeof E=="object"&&E!==null&&typeof E.id=="string"),T.length&&(s.current=T))}}catch{}S||(u.current=true,x())},"restoreOpenApps")(),()=>{S=true}},[x]),Ct(()=>{if(!i)return;let S=t.map(R=>({id:R.id,minimized:R.minimized??false}));On.setItem(Jn,JSON.stringify(S))},[t,i]);let h=Ae(S=>{a.current=S,d.current=true,x()},[x]),B=Ae(S=>{o(R=>R.length?S?R.filter(_=>_.instanceId!==S):R.slice(0,-1):R)},[]),k=Ae(()=>o([]),[]),M=Ae((S,R)=>{o(_=>_.map(T=>T.instanceId===S?{...T,minimized:true,restoreState:R}:T))},[]),F=Ae((S,R)=>{o(_=>ws(_,S,R))},[]),D=Ae(S=>t.find(R=>R.instanceId===S)?.minimized??false,[t]),P=t.some(S=>S.launchMode!=="toggle-only"&&!S.minimized);Ct(()=>P?fs(r(S=>{if(S.key!=="Escape"||S.defaultPrevented)return;let R=[...t].reverse().find(_=>_.launchMode!=="toggle-only"&&!_.minimized);R&&B(R.instanceId)},"handler")):void 0,[P,B,t]);let{isDialOpen:A}=rt();Ht(t.length>0,()=>{let S=Un(t,A);S?.kind==="tool"&&B(S.instanceId)});let V=vs(()=>({openApps:t,isAnyOpen:P,open:g,close:B,closeAll:k,registerApps:h,minimize:M,restore:F,isMinimized:D}),[t,P,g,B,k,h,M,F,D]);return de(Gn.Provider,{value:V,children:e})},"AppHostProvider"),at=r(()=>{let e=bs(Gn);return e||{openApps:[],isAnyOpen:false,open:r(()=>"","open"),close:r(()=>{},"close"),closeAll:r(()=>{},"closeAll"),registerApps:r(()=>{},"registerApps"),minimize:r(()=>{},"minimize"),restore:r(()=>{},"restore"),isMinimized:r(()=>false,"isMinimized")}},"useAppHost"),js=9e3,Ns={position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.28)",display:"flex",alignItems:"center",justifyContent:"center"},Hs={maxHeight:"90%",width:"94%",borderRadius:12,backgroundColor:"white",overflow:"hidden"},Ws=r(({app:e,zIndex:t,onClose:o,onMinimize:i,minimizeTargetPosition:n,enableSharedModalDimensions:a})=>{let s=e.component,c=!e.minimized,u={...e.props??{},...a?{enableSharedModalDimensions:true}:{}};return e.modal&&(!e.launchMode||e.launchMode==="self-modal")?de("div",{"data-testid":`buoy-tool-instance-${e.id}`,style:{position:"fixed",inset:0,zIndex:t,pointerEvents:"none"},children:de(_n,{app:e,config:e.modal,visible:c,zIndex:t,onClose:o,onMinimize:i,initialModalState:e.restoreState,enableSharedModalDimensions:a,bodyProps:u})}):e.launchMode==="self-modal"?de("div",{"data-testid":`buoy-tool-instance-${e.id}`,style:{position:"fixed",inset:0,zIndex:t,pointerEvents:"none"},children:de(s,{...u,visible:c,onClose:o,onRequestClose:o,onMinimize:i,minimizeTargetPosition:n,instanceId:e.instanceId,zIndex:t,initialModalState:e.restoreState})}):e.launchMode==="inline"?c?de("div",{"data-testid":`buoy-tool-instance-${e.id}`,style:{position:"fixed",inset:0,zIndex:t,pointerEvents:"none"},children:de(s,{...u,onClose:o,onMinimize:i,minimizeTargetPosition:n,initialModalState:e.restoreState,instanceId:e.instanceId})}):null:de("div",{"data-testid":`buoy-tool-instance-${e.id}`,style:{...Ns,zIndex:t,display:c?"flex":"none"},children:de("div",{style:Hs,children:de(s,{...u,onClose:o,onMinimize:i,minimizeTargetPosition:n,initialModalState:e.restoreState,instanceId:e.instanceId})})})},"AppRenderer"),Xn=r(()=>{let{openApps:e,close:t,minimize:o}=at(),{settings:i}=Rn();Ct(()=>{hs(i.globalSettings?.expandableWindowControls!==false)},[i.globalSettings?.expandableWindowControls]);let n=e.filter(c=>c.launchMode!=="toggle-only");if(n.length===0)return null;let a=n.filter(c=>c.minimized).length,s=Hr()??$s(a);return de(Ps,{children:n.map((c,u)=>de(Ws,{app:c,zIndex:js+u,onClose:()=>t(c.instanceId),onMinimize:d=>o(c.instanceId,d),enableSharedModalDimensions:i.globalSettings?.enableSharedModalDimensions===true,minimizeTargetPosition:s},c.instanceId))})},"AppOverlay");import{useCallback as _s,useEffect as so,useRef as Us,useState as Qn,useSyncExternalStore as Zn}from"react";import{persistentStorage as ei,getToolAttention as lo,subscribeToolAttention as ti}from"@buoy-gg/shared-ui/web";import{jsx as ue,jsxs as Mt}from"react/jsx-runtime";function oi(e){return Zn(ti,()=>lo(e),()=>lo(e))}r(oi,"useToolAttention");var ni={needsInput:"#FF8329",done:"#20C997",failed:"#FF3B30"},ii={needsInput:3,failed:2,done:1},ri=new Map;function co(e){let t=null;for(let i of e?e.split("|"):[]){let n=lo(i);n&&(!t||ii[n.kind]>ii[t.kind])&&(t=n)}let o=ri.get(e);return o&&t&&o.kind===t.kind&&o.label===t.label?o:!o&&!t?null:(ri.set(e,t),t)}r(co,"strongest");function ai(e){let t=e.join("|");return Zn(ti,()=>co(t),()=>co(t))}r(ai,"useStrongestAttention");var si=28,uo=32,po=6,li=8,ci=24,di="@react_buoy_minimized_stack_expanded",Ks=80,ui=2e3,Vs=6e3,qs="#1A1A1A",st="#888888";function mo({down:e=false}){return ue("svg",{width:12,height:12,viewBox:"0 0 24 24","aria-hidden":"true",style:{transform:e?"rotate(180deg)":void 0},children:ue("path",{d:"M18 15l-6-6-6 6",fill:"none",stroke:st,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}r(mo,"ChevronGlyph");function pi({id:e,title:t,icon:o,index:i,onPress:n}){let a=oi(e),s=Us(null);return so(()=>{let c=true,u,d=r(()=>{s.current?.animate([{transform:"translateX(0) scale(1)",opacity:1,offset:0},{transform:"translateX(3px) scale(1.05)",opacity:.4,offset:.2},{transform:"translateX(-3px) scale(1.1)",opacity:1,offset:.4},{transform:"translateX(2px) scale(1.0)",opacity:.6,offset:.6},{transform:"translateX(-1px) scale(0.95)",opacity:1,offset:.8},{transform:"translateX(0) scale(1)",opacity:1,offset:1}],{duration:Ks,easing:"linear"})},"runGlitch"),g=r(x=>{let h=x?500+Math.random()*1500+i*200:ui+Math.random()*(Vs-ui)+i*300;u=setTimeout(()=>{c&&(d(),g(false))},h)},"schedule");return g(true),()=>{c=false,clearTimeout(u)}},[i]),Mt("button",{type:"button","aria-label":a?`${t} \u2014 ${a.label}. Restore`:`Restore ${t}`,"data-testid":`buoy-dock-restore-${e}`,onClick:n,style:{width:uo,height:uo,display:"flex",alignItems:"center",justifyContent:"center",background:"none",border:"none",padding:0,cursor:"pointer",position:"relative"},children:[ue("div",{ref:s,style:{display:"flex",alignItems:"center",justifyContent:"center"},children:o}),a?ue("span",{"aria-hidden":true,"data-testid":`buoy-dock-badge-${e}-${a.kind}`,style:{position:"absolute",top:0,right:0,minWidth:12,height:12,borderRadius:6,padding:"0 2px",boxSizing:"border-box",background:ni[a.kind],border:"1.5px solid #0C0C0C",color:"#000",fontSize:8,fontWeight:800,lineHeight:"9px",display:"flex",alignItems:"center",justifyContent:"center"},children:a.kind==="needsInput"?"!":""}):null]})}r(pi,"GlitchToolButton");function mi({containerWidth:e=32}){let{openApps:t,restore:o}=at(),i=t.filter(h=>h.minimized&&h.launchMode!=="toggle-only"),[n,a]=Qn(false),[s,c]=Qn(false),u=ai(i.map(h=>h.id));so(()=>{let h=false;return r(async()=>{let B=await ei.getItem(di);!h&&B==="true"&&a(true),h||c(true)},"load")(),()=>{h=true}},[]),so(()=>{s&&ei.setItem(di,n?"true":"false")},[n,s]);let d=_s(h=>{o(h)},[o]);if(i.length===0)return null;let g=li+i.length*uo+(i.length-1)*po+po+ci+4,x={backgroundColor:qs,borderTopLeftRadius:6,borderTopRightRadius:6,borderTop:`1px solid ${st}66`,borderLeft:`1px solid ${st}66`,borderRight:`1px solid ${st}66`,borderBottom:"none",boxSizing:"border-box"};return Mt("div",{style:{height:si,overflow:"visible",position:"relative"},children:[ue("div",{style:{position:"absolute",bottom:"var(--buoy-stack-bottom, 0px)",top:"var(--buoy-stack-top, auto)",left:0,width:e,maxHeight:"var(--buoy-stack-space, calc(100vh - 48px))",visibility:n?"visible":"hidden",height:n?g:0,opacity:n?1:0,overflowY:"auto",overflowX:"hidden",transition:"height 200ms ease, opacity 200ms ease",pointerEvents:n?"auto":"none",...x},children:Mt("div",{style:{height:g,display:"flex",flexDirection:"column",alignItems:"center",paddingTop:li,gap:po,boxSizing:"border-box"},children:[n&&[...i].reverse().map((h,B)=>ue(pi,{id:h.id,title:h.title||h.id,icon:h.icon??ue("span",{style:{color:"#fff",fontSize:13},children:(h.title||h.id).slice(0,1).toUpperCase()}),index:B,onPress:()=>d(h.instanceId)},h.instanceId)),ue("button",{type:"button","aria-label":"Collapse","data-testid":"buoy-dock-collapse",onClick:()=>a(false),style:{width:"100%",height:ci,marginTop:3,display:"flex",alignItems:"center",justifyContent:"center",background:"none",border:"none",cursor:"pointer",padding:0},children:ue(mo,{down:true})})]})}),Mt("button",{type:"button","aria-label":`Show ${i.length} minimized tools`,"data-testid":"buoy-dock-peek",tabIndex:n?-1:0,"aria-hidden":n,onClick:()=>a(true),style:{position:"absolute",bottom:0,left:0,width:e,height:si,display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"center",gap:2,cursor:"pointer",padding:0,opacity:n?0:1,transform:n?"scale(0.9)":"scale(1)",transition:"opacity 200ms ease, transform 200ms ease",pointerEvents:n?"none":"auto",...x},children:[ue(mo,{}),u?ue("span",{"aria-hidden":true,"data-testid":"buoy-dock-peek-attention",style:{position:"absolute",top:2,right:2,minWidth:11,height:11,borderRadius:6,padding:"0 2px",boxSizing:"border-box",background:ni[u.kind],border:"1.5px solid #0C0C0C",color:"#000",fontSize:8,fontWeight:800,lineHeight:"9px",display:"flex",alignItems:"center",justifyContent:"center"},children:u.kind==="needsInput"?"!":""}):null,i.length>1&&ue("span",{style:{fontSize:9,fontWeight:600,color:st,marginLeft:1},children:i.length})]})]})}r(mi,"MinimizedToolsStack");var gi=class Kc{constructor(){this.listeners=new Set}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}notify(){this.listeners.forEach(t=>t())}};r(gi,"ToggleStateManager");var Gs=gi,Js=new Gs;import{registerToolModules as Ys}from"@buoy-gg/shared-ui/web";import{createElement as Xs}from"react";function Ge(e){let t=e.icon;return{...e,icon:typeof t=="function"?o=>Xs(t,{size:o,slot:e.slot??"both",color:e.color}):()=>t}}r(Ge,"createWebTool");import*as Qs from"@buoy-gg/license/web";import*as Zs from"@buoy-gg/shared-ui/web";import*as el from"@buoy-gg/shared-ui/web/dataViewer";function go(e){Ys({core:{useDevToolsVisibility:rt},license:Qs,"shared-ui":Zs,"shared-ui/dataViewer":el,...e});let t=new Set;return Object.values(e).flatMap(o=>Object.entries(o).flatMap(([i,n])=>!i.endsWith("Preset")||!n||typeof n.id!="string"||!n.component||t.has(n.id)?[]:(t.add(n.id),[Ge(n)])))}r(go,"createWebTools");import{useEffect as Rt,useMemo as Dt,useRef as tl}from"react";import{LicenseManager as fi,installCapacitorBridge as ol,resolveDevBuild as hi,useLicense as nl}from"@buoy-gg/license/web";import{registerToolAdapters as il}from"@buoy-gg/shared-ui/web";function fo(e){return typeof e=="object"&&e!==null?e:void 0}r(fo,"externalSyncOptions");function yi({isDevelopment:e,isLicensed:t,externalSync:o,isAvailable:i}){if(o===false||!i)return false;if(e)return true;let n=fo(o);return t&&n?.enableInRelease===true&&ho(n.socketURL,n)===null}r(yi,"shouldMountExternalSync");var bi="http://localhost:42831";function vi(e){return e==="localhost"||e.endsWith(".localhost")||/^127\.\d+\.\d+\.\d+$/.test(e)||e==="[::1]"||e==="::1"||e==="10.0.2.2"}r(vi,"isLoopbackHost");function ho(e,t){let o=e??bi;if(t?.allowInsecureNetwork===true)return null;let i;try{i=new URL(o)}catch{return`[Buoy] externalSync.socketURL "${o}" isn't a valid URL, so this release build won't connect to Buoy Desktop.`}return i.protocol==="https:"||i.protocol==="wss:"||vi(i.hostname)?null:`[Buoy] This release build won't connect to ${o}: 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.`}r(ho,"releaseTransportProblem");var rl={"ota-update-inspector":["check","fetch","reload","setHeaders","setURL"],impersonate:["searchUsers","startImpersonation","resumeImpersonation","updateSettings","removeFromHistory","clearHistory"]};function Si(e,t,o){if(t)return e;let i=null;for(let[n,a]of Object.entries(rl)){if(o?.includes(n))continue;let s=e[n];if(!s?.actions)continue;let c={...s.actions};for(let u of a)u in c&&(c[u]=()=>{throw new Error(`${n}.${u} is off in release builds. To allow it from Buoy Desktop and the MCP, pass externalSync={{ enableInRelease: true, releaseActions: ["${n}"] }}.`)});i??(i={...e}),i[n]={...s,actions:c}}return i??e}r(Si,"applyReleaseActionPolicy");import{useEffect as al,useMemo as sl,useState as ll}from"react";import{devToolsStorageKeys as cl,persistentStorage as dl}from"@buoy-gg/shared-ui/web";import{isCapacitorNative as ul}from"@buoy-gg/license/web";var pl=8;function wi(){let e="";for(;e.length<pl;)e+=(Math.random()*16|0).toString(16);return e}r(wi,"generateInstallId");function xi(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}r(xi,"slugify");function Ti({appName:e,hardwareName:t,platform:o,installId:i,deviceId:n}){let a=xi(e??"buoy")||"buoy",s=e??"Buoy Device",c=t?.trim()||o;return n?{deviceId:n,deviceName:`${s} (${c})`}:{deviceId:`${a}-${o}-${i}`,deviceName:`${s} (${c} \xB7 ${i.slice(-4)})`}}r(Ti,"buildDeviceIdentity");function Ii(){let e=globalThis;try{return e.sessionStorage??null}catch{return null}}r(Ii,"sessionStore");function Ci(){let e=globalThis;try{return e.localStorage??null}catch{return null}}r(Ci,"localStore");async function ki({platform:e=Ne.OS,store:t,mint:o=wi}={}){let i=cl.sync.deviceId(),n=t===void 0?ul()?Ci():e==="web"?Ii():dl:t;if(!n)return o();try{let a=await n.getItem(i);if(a&&a.length>0)return a;let s=o();return await n.setItem(i,s),s}catch{return o()}}r(ki,"loadInstallId");var yo=null;function zi(){return yo||(yo=ki()),yo}r(zi,"getInstallId");function Ai(e,t){let o=e?.deviceId,i=e?.deviceName,n=t.loadId??zi,a=t.platform??Ne.OS,[s,c]=ll(null);return al(()=>{if(o)return;let u=false;return n().then(d=>{u||c(d)}),()=>{u=true}},[o,n]),sl(()=>{if(!o&&!s)return null;let u=Ti({appName:t.appName,hardwareName:t.hardwareName,platform:a,installId:s??"",deviceId:o});return i?{...u,deviceName:i}:u},[o,i,s,t.appName,t.hardwareName,a])}r(Ai,"useDeviceIdentity");import{useEffect as ml,useState as gl}from"react";import{capacitorPlatform as fl,capacitorPlugin as Ot,isCapacitorNative as hl}from"@buoy-gg/license/web";function Bi(e,t){if(t==="ios")return/iPad/.test(e)?"iPad":/iPhone/.test(e)?"iPhone":null;let o=/Android [\d.]+;\s*([^;)]+?)(?:\s+Build\/|\))/.exec(e)?.[1]?.trim();return!o||o==="K"?null:o}r(Bi,"hardwareFromUserAgent");function Mi(e){return/sdk_gphone|Android SDK built for|Android ATD built for|google_sdk|Emulator|generic_/i.test(e)}r(Mi,"isAndroidEmulatorUserAgent");function bo(){return typeof navigator>"u"?"":navigator.userAgent??""}r(bo,"userAgent");function Pt(){return typeof document>"u"?null:document.title||(typeof location>"u"?null:location.hostname)||null}r(Pt,"firstPageTitle");var Ri="@react_buoy_capacitor_app_name";function Di(e){try{let t=globalThis.localStorage;if(!t)return e;let o=t.getItem(Ri);if(o)return o;e&&t.setItem(Ri,e)}catch{}return e}r(Di,"persistedAppName");function Oi(){let e=fl();if(!e)return{platform:"web",appName:Pt(),hardwareName:"Browser",ready:true};let t=!!Ot("App");return{platform:e,appName:t?Pt():Di(Pt()),hardwareName:Bi(bo(),e)??e,extraDeviceInfo:{runtime:"capacitor"},ready:!t&&!Ot("Device")}}r(Oi,"initialHostInfo");function Pi(){let[e,t]=gl(Oi);return ml(()=>{if(!hl())return;let o=false,i=Ot("App"),n=Ot("Device");return Promise.all([i?.getInfo?.().catch(()=>null)??null,n?.getInfo?.().catch(()=>null)??null]).then(([a,s])=>{if(o)return;let c=a?.name?.trim(),u=s?.name?.trim()||s?.model?.trim();t(d=>({...d,appName:c||d.appName,hardwareName:u||d.hardwareName,ready:true}))}),()=>{o=true}},[]),e}r(Pi,"useHostInfo");function vo(){if(typeof location>"u")return null;let e=globalThis.WEBVIEW_SERVER_URL;return{protocol:location.protocol,hostname:location.hostname,origin:`${location.protocol}//${location.host}`,userAgent:bo(),serverUrl:typeof e=="string"?e:null}}r(vo,"pageInfo");function So(e){if(!e)return null;try{let t=new URL(e);return`${t.protocol}//${t.host}`}catch{return null}}r(So,"schemeHost");function Ei(e,t){if(e==="ios"){let o=So(t.serverUrl);return o?o===So(t.origin):t.protocol==="capacitor:"}return Li.has(t.hostname)}r(Ei,"isBundledPage");var Li=new Set(["localhost","127.0.0.1","[::1]","::1"]);function Fi(e,t,o,i=vo()){if(o==="web"||!i)return e;let n;try{n=new URL(e)}catch{return e}let a=Ei(o,i);return!t&&a&&n.hostname===i.hostname&&(n.hostname="localhost"),o==="android"&&Li.has(n.hostname)&&Mi(i.userAgent)&&(n.hostname="10.0.2.2"),n.toString().replace(/\/$/,"")}r(Fi,"capacitorBrokerURL");function $i(e,t,o=vo()){return t!=="android"||!o||o.protocol!=="https:"||!/^(http|ws):/i.test(e)?null:`[Buoy] Can't reach Buoy Desktop at ${e}. This Android WebView serves the app from https://${o.hostname} and blocks plain http/ws by default. For debug builds, set android.allowMixedContent: true and server.cleartext: true in capacitor.config, then run cap sync.`}r($i,"capacitorTransportProblem");import{getDevServerOrigin as yl,resolveReloadStrategy as bl,scheduleReloadApp as vl}from"@buoy-gg/shared-ui/web";var ji=Date.now(),Ni=yl(),Sl={platform:Ne.OS,isTV:Ne.isTV===true,isTVOS:Ne.isTVOS===true},Hi={version:3,getSnapshot:r(()=>{let e=bl("auto");return{startedAt:ji,devServerOrigin:Ni,device:Sl,reload:{available:e!==null,strategy:e}}},"getSnapshot"),subscribe:r(e=>()=>{},"subscribe"),actions:{ping:r(()=>({ok:true,startedAt:ji,devServerOrigin:Ni}),"ping"),reloadApp:r(e=>{let t=e??{},{strategy:o,delayMs:i}=vl({strategy:t.strategy,delayMs:t.delayMs});return{scheduled:true,strategy:o,delayMs:i}},"reloadApp")}};import{Fragment as wl,jsx as Fe,jsxs as xl}from"react/jsx-runtime";var Tl=["ConsoleRoot","RouteTracker","ReactQueryTracker","ReduxAutoInstrument","PerfMonitorRoot","AutomationResumer","ImagesRoot"],Il=["DebugBordersStandaloneOverlay","HighlightUpdatesOverlay","ImageOverlayStandalone","PerfMonitorOverlay","JsTopHudOverlay","ImpersonateOverlay","ScenariosOverlay","BugLinksOverlay"];function Wi(e){let t=Dt(()=>Object.fromEntries(Object.entries(e.modules).map(([i,n])=>[i.replace(/^@buoy-gg\//,"").replace(/\/web$/,""),n])),[e.modules]),o=t["react-query"];return o?.useReactQuerySyncAdapter?Fe(_i,{...e,modules:t,query:o}):Fe(wo,{...e,modules:t})}r(Wi,"BrowserToolRuntime");function _i(e){let t=e.query.useReactQuerySyncAdapter();return Fe(wo,{...e,queryAdapter:t})}r(_i,"QueryRuntime");function wo({modules:e,apps:t,requiredEnvVars:o,externalSync:i,headless:n,sentryGetClient:a,queryAdapter:s}){let{isPro:c,tier:u}=nl(),d=Dt(()=>{let F={app:Hi};for(let[D,P]of Object.entries(e))for(let[A,V]of Object.entries(P))A.endsWith("SyncAdapter")&&V&&typeof V=="object"&&(F[D]=V);s&&(F.query=s),e.env?.createEnvSyncAdapter&&(F.env=e.env.createEnvSyncAdapter(o??[]));for(let D of t??[])D.sync&&(F[`custom:${D.id}`]=D.sync);return F},[e,t,o,s]),g=tl(d);g.current=d,Rt(()=>il(()=>g.current),[]),Rt(()=>{let F=[],D=r(P=>{let A=P?.();typeof A=="function"&&F.push(A)},"start");return D(e.network?.startNetworkCapture),D(e.storage?.startBrowserStorageCapture),D(e.assets?.startBrowserAssetCapture),D(e.three?.startThreeCapture),hi(typeof He<"u"?He:process.env.NODE_ENV!=="production")&&D(e["time-machine"]?.startTimeMachineFloatingToolPersistence),e.storage?.storageSyncAdapter?.subscribe&&D(()=>e.storage.storageSyncAdapter.subscribe(()=>{})),e["focus-inspector"]?.focusInspectorSyncAdapter?.subscribe&&D(()=>e["focus-inspector"].focusInspectorSyncAdapter.subscribe(()=>{})),()=>{for(let P of F.reverse())P()}},[e]);let x=e["external-sync"],h=hi(typeof He<"u"?He:process.env.NODE_ENV!=="production"),B=yi({isDevelopment:h,isLicensed:c,externalSync:i,isAvailable:!!x}),k=fo(i);ol({release:!h&&!!k?.enableInRelease}),!h&&k?.enableInRelease&&xo(ho(k.socketURL,k));let M=e.sentry?.SentryRoot;return xl(wl,{children:[Object.entries(e).flatMap(([F,D])=>Tl.map(P=>{let A=D[P];return A?Fe(A,{},`${F}:${P}`):null})),M&&Fe(M,{getClient:a}),Object.entries(e).flatMap(([F,D])=>Il.map(P=>{let A=D[P];return A&&(!n||P==="ScenariosOverlay"||P==="ImpersonateOverlay"||P==="BugLinksOverlay")?Fe(A,{},`${F}:${P}`):null})),B&&Fe(Ki,{module:x,tools:d,options:k,isPro:c,tier:u,dev:h})]})}r(wo,"ToolRuntime");var Ui=null;function xo(e){!e||e===Ui||(Ui=e,console.warn("[Buoy]",e))}r(xo,"warnOnce");function Ki({module:e,tools:t,options:o,isPro:i,tier:n,dev:a}){let s=Pi(),c=Ai(o,{appName:s.appName,hardwareName:s.hardwareName,platform:s.platform}),u=Dt(()=>Fi(o?.socketURL??(a?e.getDefaultSocketURL():bi),!!o?.socketURL,s.platform),[o?.socketURL,a,e,s.platform]),{socket:d}=e.useExternalSyncSocket({deviceName:c?.deviceName??"Buoy Browser",socketURL:u,persistentDeviceId:s.ready?c?.deviceId??null:null,platform:s.platform,extraDeviceInfo:s.extraDeviceInfo,enableLogs:o?.enableLogs});Rt(()=>{let h=$i(u,s.platform);if(!d||!h)return;let B=r(()=>xo(h),"onError");return d.on("connect_error",B),()=>{d.off("connect_error",B)}},[d,u,s.platform]),Rt(()=>{if(!d)return;let h=r(()=>{if(!d.connected||!fi.hasAccountAccess())return;let B=fi.getState();!i&&(B.isInitialized===false||B.isValidating===true)||d.emit("device-license",{isPro:i?"1":"0",tier:n})},"emit");return h(),d.on("connect",h),()=>{d.off("connect",h)}},[d,i,n]);let g=o?.releaseActions?.join(",")??"",x=Dt(()=>Si(t,a,g?g.split(","):void 0),[t,a,g]);return e.useExternalSync({tools:x,socket:d,deviceId:s.ready?c?.deviceId??null:null,enableLogs:o?.enableLogs}),null}r(Ki,"BrowserExternalSync");import{useState as Vi}from"react";import{BuoyPortal as Cl}from"@buoy-gg/shared-ui/web/floating";import{useBuoySession as kl}from"@buoy-gg/license/web";import{Fragment as qi,jsx as Je,jsxs as Gi}from"react/jsx-runtime";var Ji="#20C997";function Yi(){let{status:e,signIn:t,signOut:o}=kl(),[i,n]=Vi(false),[a,s]=Vi(null);if(typeof document>"u")return null;let c=r(()=>{s(null),n(true),t().catch(d=>s(d instanceof Error?d.message:"Sign-in did not work. Try again.")).finally(()=>n(false))},"start"),u=e.state==="active";return Je(Cl,{children:Je("div",{"data-buoy-signin":"",style:{position:"fixed",right:"max(16px, env(safe-area-inset-right))",bottom:"max(20px, env(safe-area-inset-bottom))",zIndex:99999,maxWidth:"min(320px, calc(100vw - 32px))",padding:u||a?"12px 14px":0,borderRadius:16,background:u||a?"#0f1419":"transparent",color:"#e6edf3",boxShadow:u||a?"0 10px 30px rgba(0,0,0,.35)":"none",fontFamily:"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",fontSize:14,lineHeight:1.45},children:u?Gi(qi,{children:[Je("div",{"data-testid":"buoy-signin-needs-plan",children:"Buoy on a live site needs a Pro or Business plan."}),Je("button",{type:"button",onClick:()=>void o(),style:zl,"data-testid":"buoy-signout",children:"Sign out"})]}):Gi(qi,{children:[a?Je("div",{role:"alert",style:{marginBottom:10},"data-testid":"buoy-signin-error",children:a}):null,Je("button",{type:"button",onClick:c,disabled:i,"data-testid":"buoy-signin",style:{display:"inline-flex",alignItems:"center",gap:8,padding:"10px 16px",border:"none",borderRadius:999,background:Ji,color:"#04130d",fontWeight:600,fontSize:14,cursor:i?"wait":"pointer",boxShadow:"0 8px 24px rgba(0,0,0,.3)"},children:i?"Signing in\u2026":"Sign in to Buoy"})]})})})}r(Yi,"BuoySignIn");var zl={marginTop:8,padding:0,border:"none",background:"none",color:Ji,fontSize:14,cursor:"pointer",textDecoration:"underline"};import{LicenseManager as cd}from"@buoy-gg/license/web";var Al=false;function Xi(e){if(!Al){try{let t=process.env.EXPO_PUBLIC_BUOY_KEY;if(t)return t}catch{}try{let t=process.env.NEXT_PUBLIC_BUOY_KEY;if(t)return t}catch{}return e?.()}}r(Xi,"defaultLicenseKey");import{useState as Bl}from"react";import{AccountSetupButton as Ml,BuoyNeedsPlanCard as Rl,BuoySignInCard as Dl,useSignInState as Ol}from"@buoy-gg/shared-ui/web";import{jsx as lt,jsxs as Qi}from"react/jsx-runtime";function To({needsPlan:e=false}){let[t,o]=Bl(false),i=Ol();return Qi(H,{pointerEvents:"box-none",style:Zi.root,children:[lt(Ml,{expanded:t,onPress:()=>o(true)}),t?lt(yr,{visible:true,transparent:true,animationType:"fade",onRequestClose:()=>o(false),children:Qi(H,{style:Zi.overlay,accessibilityViewIsModal:true,children:[lt(hr,{style:dt.absoluteFill,onPress:()=>o(false),accessible:false}),e&&i==="active"?lt(Rl,{onClose:()=>o(false)}):lt(Dl,{onClose:()=>o(false)})]})}):null]})}r(To,"BuoySignIn");var Zi=dt.create({root:{position:"absolute",bottom:30,right:16,zIndex:99999},overlay:{flex:1,backgroundColor:"rgba(0, 0, 0, 0.65)",alignItems:"center",justifyContent:"center",padding:20}});function Io(e){if(e.length>6){let t=e.map(o=>`"${o}"`).join(", ");return e.slice(0,6)}return e}r(Io,"validateDialConfig");import{installedTools as Pl,installedToolsFound as El}from"@buoy-gg/core/web/installed-tools";import{Fragment as Co,jsx as $,jsxs as ct}from"react/jsx-runtime";var er={},tr="@react_buoy_floating_menu_tooltip_shown",Ll=Oe;function or({size:e=14,color:t="#20C997"}){let o=Math.max(2,e/4),i=Math.max(1,e/16);return $("div",{style:{display:"grid",gridTemplateColumns:`repeat(3, ${o}px)`,gap:i,width:e,height:e,alignContent:"center",justifyContent:"center"},children:Array.from({length:9}).map((n,a)=>$("div",{style:{width:o,height:o,borderRadius:o/2,backgroundColor:t}},a))})}r(or,"MenuLauncherIcon");function nr(e){let{defaultFloatingTools:t,defaultDialTools:o,disableHints:i=false,children:n}=e,a=fe(()=>o&&Io(o),[o]);return $(Xt,{defaultFloatingTools:t,defaultDialTools:a,children:$(Br,{disableHints:i,children:ct(ro,{children:[$(Yn,{children:$(cr,{...e})}),n]})})})}r(nr,"AdmittedFloatingDevTools");var Fl=["ReduxAutoInstrument","ConsoleRoot","RouteTracker","ReactQueryTracker"];function ir({modules:e=er}){return $(Co,{children:Object.entries(e).flatMap(([t,o])=>Fl.map(i=>{let n=o[i];return n?$(n,{},`${t}:${i}`):null}))})}r(ir,"StartupCapture");function rr(){let{openApps:e,restore:t}=at();return G(()=>Do(o=>{let i=e.find(n=>n.id===o);return i?(t(i.instanceId),true):false}),[e,t]),null}r(rr,"WebToolOpenerBridge");function ar(){let e=zr();return Mr((e===null?process.env.NODE_ENV:e?"development":"production")??"dev")}r(ar,"defaultEnvironment");function sr(e,t,o,i){let n=r(g=>Object.entries(e).find(([x])=>x.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")===g)?.[1],"find"),a=[],s=n("env");t?.length&&s?.createEnvTool&&s.createEnvVarConfig&&a.push(Ge(s.createEnvTool({requiredEnvVars:s.createEnvVarConfig(t)})));let c=n("storage");o?.length&&c?.createStorageTool&&a.push(Ge(c.createStorageTool({requiredStorageKeys:o})));let u=n("ask-buoy"),d=i==="hosted"?u?.hostedAskBuoy?.():i;return d&&u?.createAskBuoyTool&&a.push(Ge(u.createAskBuoyTool(d))),a}r(sr,"configOverrides");function lr(e){if(e.launchMode!=="toggle-only")return;let t=e.isOn;return typeof t=="function"?t():void 0}r(lr,"toggleIsOn");function cr({environment:e,userRole:t="admin",availableEnvironments:o,onEnvironmentSwitch:i,apps:n,modules:a=er,externalSync:s,requiredEnvVars:c,sentryGetClient:u,disableHints:d=false,headless:g=false,hidden:x=false,defaultFloatingTools:h,defaultDialTools:B,zustandStores:k,requiredStorageKeys:M,askBuoy:F}){let D=e??ar(),P=fe(()=>B?Io(B):void 0,[B]),[A,V]=pt(false),[S,R]=pt(false),[,_]=pt(0);G(()=>Js.subscribe(()=>_(l=>l+1)),[]);let T=Oo(false),E=at(),Q=fe(()=>sr(a,c,M,F),[a,c,M,F]),{allowedTools:Z}=Bo(),U=fe(()=>Fr(Ft([...go(a),...n??[],...Q]),Z),[n,a,Q,Z]),{openApps:q,close:re}=E;G(()=>{if(Z)for(let l of q)$r(l.id,Z)||re(l.instanceId)},[q,Z,re]);let ee=fe(()=>Object.entries(a).find(([l])=>l.replace(/^@buoy-gg\//,"").replace(/\/web$/,"")==="zustand")?.[1],[a]);G(()=>{if(!k||typeof ee?.watchStores!="function")return;let l=ee.watchStores(k);return typeof l=="function"?l:void 0},[k,ee]);let ne=rt(),xe=E.openApps.some(l=>!l.minimized);G(()=>{ne.setDialOpen(A)},[A,ne.setDialOpen]),G(()=>{ne.setToolOpen(xe||S)},[xe,S,ne.setToolOpen]);let{registerApps:ge}=E;G(()=>{ge(U.map(l=>{let v=l.icon;return{...l,icon:typeof v=="function"?({size:C})=>v(C):v}}))},[ge,U]);let ye=fe(()=>U.map(l=>({id:l.id,name:l.name,description:l.description,slot:l.slot})),[U]);Dr({availableTools:ye,storage:Ll}),G(()=>{let l=false;return r(async()=>{let[v,C]=await Promise.all([Oe.getItem(gt.dial.isOpen()),Oe.getItem(gt.settings.modalOpen())]);l||(v==="true"&&V(true),C==="true"&&(V(true),R(true)),T.current=true)},"restore")(),()=>{l=true}},[]),G(()=>{T.current&&Oe.setItem(gt.dial.isOpen(),A?"true":"false")},[A]),G(()=>{T.current&&Oe.setItem(gt.settings.modalOpen(),S?"true":"false")},[S]);let W=We(l=>{if(fn(l.id),l.launchMode==="toggle-only"){l.onPress?.(),_(v=>v+1);return}if(l.component){let v=typeof l.icon=="function"?l.icon(20):l.icon;E.open({id:l.id,title:l.name||mt(l.id),component:l.component,props:l.props,modal:l.modal,launchMode:l.launchMode||"self-modal",singleton:l.singleton??true,icon:v,color:l.color||Po(l.id)})}else l.onPress?.()},[E]),Te=Oo({tools:U,openApps:E.openApps,openTool:W});Te.current={tools:U,openApps:E.openApps,openTool:W},G(()=>Do(l=>{let{tools:v,openApps:C,openTool:J}=Te.current;if(C.some(m=>m.id===l))return false;let Y=v.find(m=>m.id===l);return!Y||Y.launchMode==="toggle-only"?false:(J(Y),true)}),[]);let be=fe(()=>ft(U,"dial").map(l=>{let v=l.color||Po(l.id),C;return typeof l.icon=="string"?C=l.icon:typeof l.icon=="function"?C=l.icon(32):C=null,{id:l.id,name:l.name||mt(l.id),icon:C,unavailable:!l.component&&!l.onPress,color:v,onPress:r(()=>{W(l),V(false)},"onPress")}}),[U,W]),Be=fe(()=>{if(!A)return be;let l=new Map(be.map(v=>[v.id,v]));return gn(be.map(v=>v.id)).map(v=>l.get(v)).filter(v=>!!v)},[A,be]),{settings:Ie}=Rn(),pe=fe(()=>ft(U,"row").filter(l=>(Ie.floatingTools[l.id]??false)===true&&(l.component||l.onPress)),[U,Ie.floatingTools]),oe=fe(()=>U.map(l=>({id:l.id,name:l.name||mt(l.id),description:l.description||Or(l.id),slot:l.slot,icon:l.icon,color:l.color})),[U]),[Me,me]=pt(false),Ce=E.openApps.some(l=>!l.minimized);G(()=>{if(d)return;let l=false,v=setTimeout(async()=>{let C=await Oe.getItem(tr);!l&&!C&&me(true)},1e3);return()=>{l=true,clearTimeout(v)}},[d]);let ae=We(()=>{me(false),Oe.setItem(tr,"true")},[]),ve=We(()=>{ae(),V(true)},[ae]),Ye=We(()=>{V(false),R(false)},[]),$e=We(()=>{R(l=>!l)},[]),ke=We(()=>R(false),[]),Re=!!(o?.length&&i),je=Ie.floatingTools.environment!==false,se=Me&&!A&&!Ce&&!x;G(()=>{if(!se)return;let l=r(C=>{(!(C.target instanceof Element)||!C.target.closest("[data-buoy-root]"))&&ae()},"onPointerDown"),v=r(C=>{C.key==="Escape"&&ae()},"onKeyDown");return document.addEventListener("pointerdown",l,true),document.addEventListener("keydown",v),()=>{document.removeEventListener("pointerdown",l,true),document.removeEventListener("keydown",v)}},[se,ae]);let O=E.openApps.some(l=>l.minimized&&l.launchMode!=="toggle-only"),w=$(Wi,{modules:a,apps:n,requiredEnvVars:c,externalSync:s,headless:g,sentryGetClient:u});return g?w:ct("div",{"data-buoy-root":"",style:{display:"contents"},children:[w,$(rr,{}),se&&$("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.85)",zIndex:1e4,pointerEvents:"none"}}),$("div",{style:x?{visibility:"hidden"}:{display:"contents"},"aria-hidden":x||void 0,children:ct(Fo,{enablePositionPersistence:!se,pushToSide:A||Ce,suspendPointerEvents:A,centerOnboarding:se,minimizedStack:O?$(mi,{}):void 0,hasMinimizedStack:O,children:[D&&je&&!Re&&$(Pr,{environment:D}),Re&&je&&$(Er,{currentEnvironment:D??"local",availableEnvironments:o,onSelect:i}),t?$($o,{userRole:t,onPress:ve}):$("button",{"aria-label":"Open dev tools",onClick:ve,style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"6px 8px",background:"none",border:"none",cursor:"pointer"},children:$(or,{})}),pe.map(l=>$("button",{"aria-label":l.name||mt(l.id),"aria-pressed":lr(l),title:l.description,onClick:()=>W(l),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"4px 6px",borderRadius:6,background:"none",border:"none",cursor:"pointer"},children:typeof l.icon=="function"?l.icon(16):l.icon},l.id))]})}),se&&$(Nt,{title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools.",onDismiss:ae}),A&&!x&&$(Kt,{icons:Be,onClose:Ye,centerLabel:"BUOY",onCenterPress:$e,settingsOpen:S,hintsDisabled:d,emptyNote:Z&&Be.length===0?jr:void 0}),S&&!x&&$(oo,{visible:true,onClose:ke,availableTools:oe,defaultFloatingTools:h,defaultDialTools:P,onSettingsChange:l=>{}}),!x&&ct(Co,{children:[$(Xn,{}),$(xr,{})]})]})}r(cr,"FloatingDevToolsInner");function dr(e){let t=e&&typeof e=="object"?e.appId:void 0,o=!!e;G(()=>{if(!o)return;let i=false,n=Tr.SessionManager;if(!n)return;let a=r(s=>{i||!s||(n.configure({audience:`app:${s}`}),n.load().catch(()=>{}))},"apply");return t?a(t):Ro().then(s=>a(s?.bundleId)).catch(()=>{}),()=>{i=true}},[o,t])}r(dr,"useCapacitorSignInAudience");function ur(e){let t=e&&typeof e=="object"?e.appId:void 0;G(()=>{let o=false;return t?Lt(t):Mo()?Ro().then(i=>{o||Lt(i?.bundleId)}).catch(()=>{}):typeof location<"u"&&location.origin&&location.origin!=="null"&&Lt(location.origin),()=>{o=true}},[t])}r(ur,"usePublishAppId");var pr=false;function mr(e){return e.modules?e:(!El&&!pr&&typeof console<"u"&&(pr=true,console.info("[Buoy] No tools loaded. Add buoy() from '@buoy-gg/core/vite' to your Vite plugins, or pass modules to FloatingDevTools.")),{...e,modules:Pl})}r(mr,"withInstalledTools");function gr(e){return $(wr,{children:$(fr,{...mr(e)})})}r(gr,"FloatingDevTools");function fr(e){let{access:t,isPro:o,licenseKey:i}=Bo();G(()=>{Ir.configure(e.licenseKey??Xi(Sr))},[e.licenseKey]);let n=e.licenseKey===void 0||Cr(e.licenseKey,i),a=kr(typeof He<"u"?He:process.env.NODE_ENV!=="production"),s=n&&t.status==="admitted";G(()=>{s&&Rr()},[s]),G(()=>{a||t.status==="initializing"||(o&&s?br():vr())},[a,o,s,t.status]);let c=Mo();return dr(c?e.signIn:void 0),ur(e.signIn),!a&&!o?!e.signIn||e.headless?null:c?$(To,{needsPlan:true}):$(Yi,{}):s?$(nr,{...e}):ct(Co,{children:[t.status==="initializing"&&$(ir,{modules:e.modules}),e.headless?null:e.signIn&&c?$(To,{}):$(Ar,{})]})}r(fr,"FloatingDevToolsContent");export{Lr as a,Eo as b,Ft as c,ft as d,Lo as e,Fo as f,Nr as g,$o as h,rn as i,Kt as j,oo as k,io as l,Nn as m,ro as n,rt as o,Yn as p,at as q,Xn as r,Ge as s,go as t,Hi as u,gr as v};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a as r}from"./chunk-LOPXJLVB.mjs";function t(){try{let e=import.meta.env.VITE_BUOY_KEY;if(e)return e}catch{}try{let e=process.env.NEXT_PUBLIC_BUOY_KEY;if(e)return e}catch{}}r(t,"bundlerKey");export{t as a};
|