@buoy-gg/floating-tools-react 7.0.40 → 7.0.42

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.
@@ -1 +1 @@
1
- import{useMemo as a,useSyncExternalStore as p,useEffect as l,useRef as f}from"react";import{FloatingToolsStore as m}from"@buoy-gg/floating-tools-core/floating";import{useState as v}from"react";function E(n){let{screenSize:o,...i}=n,e=a(()=>new m({...i,screenWidth:o.width,screenHeight:o.height}),[i.enablePositionPersistence,i.storage,i.visibleHandleWidth,i.dragThreshold,i.edgePadding]),r=f(!1),[s,d]=v(!1);l(()=>(r.current||(r.current=!0,e.initialize().then(()=>{d(!0)})),()=>{e.destroy()}),[e]),l(()=>{e.setScreenSize(o.width,o.height)},[e,o.width,o.height]);let c=p(e.subscribe,e.getSnapshot),h=a(()=>({handleDragStart:t=>e.handleDragStart(t),handleDragMove:t=>e.handleDragMove(t),handleDragEnd:t=>e.handleDragEnd(t),toggleHideShow:()=>e.toggleHideShow(),commitPosition:t=>e.commitPosition(t),setBubbleSize:t=>e.setBubbleSize(t),setScreenSize:(t,u)=>e.setScreenSize(t,u),setMinPosition:t=>e.setMinPosition(t),forceHide:()=>e.forceHide(),forceShow:()=>e.forceShow()}),[e]);return{state:c,store:e,isInitialized:s,actions:h}}import{createContext as S,useContext as D}from"react";import{jsx as b}from"react/jsx-runtime";var P={isDragging:!1,isHidden:!1},g=S(P);function C(){return D(g)}function H({value:n,children:o}){return b(g.Provider,{value:n,children:o})}import{filterValidChildren as T}from"@buoy-gg/floating-tools-core/floating";function N(n,o){let i=T(n),e=[];return i.forEach((r,s)=>{e.push(r),s<i.length-1&&e.push(o(`divider-${s}`))}),e}export{E as a,g as b,C as c,H as d,N as e};
1
+ import{useMemo as d,useSyncExternalStore as S,useEffect as h,useRef as f}from"react";import{FloatingToolsStore as m}from"@buoy-gg/floating-tools-core/floating";import{useState as p}from"react";function b(o){let{screenSize:i,...r}=o,e=d(()=>new m({...r,screenWidth:i.width,screenHeight:i.height}),[r.enablePositionPersistence,r.storage,r.visibleHandleWidth,r.dragThreshold,r.edgePadding]),n=f(false),[s,l]=p(false);h(()=>(n.current||(n.current=true,e.initialize().then(()=>{l(true)})),()=>{e.destroy()}),[e]),h(()=>{e.setScreenSize(i.width,i.height)},[e,i.width,i.height]);let c=S(e.subscribe,e.getSnapshot),g=d(()=>({handleDragStart:t=>e.handleDragStart(t),handleDragMove:t=>e.handleDragMove(t),handleDragEnd:t=>e.handleDragEnd(t),toggleHideShow:()=>e.toggleHideShow(),commitPosition:t=>e.commitPosition(t),setBubbleSize:t=>e.setBubbleSize(t),setScreenSize:(t,u)=>e.setScreenSize(t,u),setMinPosition:t=>e.setMinPosition(t),forceHide:()=>e.forceHide(),forceShow:()=>e.forceShow()}),[e]);return{state:c,store:e,isInitialized:s,actions:g}}import{createContext as v,useContext as P}from"react";import{jsx as w}from"react/jsx-runtime";var z={isDragging:false,isHidden:false},a=v(z);function D(){return P(a)}function H({value:o,children:i}){return w(a.Provider,{value:o,children:i})}import{filterValidChildren as E}from"@buoy-gg/floating-tools-core/floating";function x(o,i){let r=E(o),e=[];return r.forEach((n,s)=>{e.push(n),s<r.length-1&&e.push(i(`divider-${s}`))}),e}export{b as a,a as b,D as c,H as d,x as e};
package/dist/floating.js CHANGED
@@ -1 +1 @@
1
- "use strict";var h=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var z=(i,t)=>{for(var o in t)h(i,o,{get:t[o],enumerable:!0})},c=(i,t,o,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of F(t))!E.call(i,r)&&r!==o&&h(i,r,{get:()=>t[r],enumerable:!(e=T(t,r))||e.enumerable});return i},l=(i,t,o)=>(c(i,t,"default"),o&&c(o,t,"default"));var w=i=>c(h({},"__esModule",{value:!0}),i);var a={};z(a,{FloatingToolsContext:()=>u,FloatingToolsProvider:()=>y,interleaveWithDividers:()=>D,useFloatingTools:()=>R,useFloatingToolsContext:()=>H});module.exports=w(a);var s=require("react"),p=require("@buoy-gg/floating-tools-core/floating"),f=require("react");function R(i){let{screenSize:t,...o}=i,e=(0,s.useMemo)(()=>new p.FloatingToolsStore({...o,screenWidth:t.width,screenHeight:t.height}),[o.enablePositionPersistence,o.storage,o.visibleHandleWidth,o.dragThreshold,o.edgePadding]),r=(0,s.useRef)(!1),[g,S]=(0,f.useState)(!1);(0,s.useEffect)(()=>(r.current||(r.current=!0,e.initialize().then(()=>{S(!0)})),()=>{e.destroy()}),[e]),(0,s.useEffect)(()=>{e.setScreenSize(t.width,t.height)},[e,t.width,t.height]);let P=(0,s.useSyncExternalStore)(e.subscribe,e.getSnapshot),b=(0,s.useMemo)(()=>({handleDragStart:n=>e.handleDragStart(n),handleDragMove:n=>e.handleDragMove(n),handleDragEnd:n=>e.handleDragEnd(n),toggleHideShow:()=>e.toggleHideShow(),commitPosition:n=>e.commitPosition(n),setBubbleSize:n=>e.setBubbleSize(n),setScreenSize:(n,x)=>e.setScreenSize(n,x),setMinPosition:n=>e.setMinPosition(n),forceHide:()=>e.forceHide(),forceShow:()=>e.forceShow()}),[e]);return{state:P,store:e,isInitialized:g,actions:b}}var d=require("react"),m=require("react/jsx-runtime"),C={isDragging:!1,isHidden:!1},u=(0,d.createContext)(C);function H(){return(0,d.useContext)(u)}function y({value:i,children:t}){return(0,m.jsx)(u.Provider,{value:i,children:t})}var v=require("@buoy-gg/floating-tools-core/floating");function D(i,t){let o=(0,v.filterValidChildren)(i),e=[];return o.forEach((r,g)=>{e.push(r),g<o.length-1&&e.push(t(`divider-${g}`))}),e}l(a,require("@buoy-gg/floating-tools-core/floating"),module.exports);0&&(module.exports={FloatingToolsContext,FloatingToolsProvider,interleaveWithDividers,useFloatingTools,useFloatingToolsContext,...require("@buoy-gg/floating-tools-core/floating")});
1
+ "use strict";var h=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var z=(r,t)=>{for(var o in t)h(r,o,{get:t[o],enumerable:true})},c=(r,t,o,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of F(t))!E.call(r,n)&&n!==o&&h(r,n,{get:()=>t[n],enumerable:!(e=T(t,n))||e.enumerable});return r},l=(r,t,o)=>(c(r,t,"default"),o&&c(o,t,"default"));var w=r=>c(h({},"__esModule",{value:true}),r);var a={};z(a,{FloatingToolsContext:()=>u,FloatingToolsProvider:()=>y,interleaveWithDividers:()=>D,useFloatingTools:()=>R,useFloatingToolsContext:()=>H});module.exports=w(a);var s=require("react"),p=require("@buoy-gg/floating-tools-core/floating"),f=require("react");function R(r){let{screenSize:t,...o}=r,e=(0,s.useMemo)(()=>new p.FloatingToolsStore({...o,screenWidth:t.width,screenHeight:t.height}),[o.enablePositionPersistence,o.storage,o.visibleHandleWidth,o.dragThreshold,o.edgePadding]),n=(0,s.useRef)(false),[g,b]=(0,f.useState)(false);(0,s.useEffect)(()=>(n.current||(n.current=true,e.initialize().then(()=>{b(true)})),()=>{e.destroy()}),[e]),(0,s.useEffect)(()=>{e.setScreenSize(t.width,t.height)},[e,t.width,t.height]);let S=(0,s.useSyncExternalStore)(e.subscribe,e.getSnapshot),P=(0,s.useMemo)(()=>({handleDragStart:i=>e.handleDragStart(i),handleDragMove:i=>e.handleDragMove(i),handleDragEnd:i=>e.handleDragEnd(i),toggleHideShow:()=>e.toggleHideShow(),commitPosition:i=>e.commitPosition(i),setBubbleSize:i=>e.setBubbleSize(i),setScreenSize:(i,x)=>e.setScreenSize(i,x),setMinPosition:i=>e.setMinPosition(i),forceHide:()=>e.forceHide(),forceShow:()=>e.forceShow()}),[e]);return{state:S,store:e,isInitialized:g,actions:P}}var d=require("react"),m=require("react/jsx-runtime"),C={isDragging:false,isHidden:false},u=(0,d.createContext)(C);function H(){return(0,d.useContext)(u)}function y({value:r,children:t}){return(0,m.jsx)(u.Provider,{value:r,children:t})}var v=require("@buoy-gg/floating-tools-core/floating");function D(r,t){let o=(0,v.filterValidChildren)(r),e=[];return o.forEach((n,g)=>{e.push(n),g<o.length-1&&e.push(t(`divider-${g}`))}),e}l(a,require("@buoy-gg/floating-tools-core/floating"),module.exports);
package/dist/floating.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,b as o,c as t,d as f,e as r}from"./chunk-2OZZBOHY.mjs";export*from"@buoy-gg/floating-tools-core/floating";export{o as FloatingToolsContext,f as FloatingToolsProvider,r as interleaveWithDividers,e as useFloatingTools,t as useFloatingToolsContext};
1
+ import{a as o,b as s,c as a,d as t,e}from"./chunk-2OZZBOHY.mjs";export*from"@buoy-gg/floating-tools-core/floating";export{s as FloatingToolsContext,t as FloatingToolsProvider,e as interleaveWithDividers,o as useFloatingTools,a as useFloatingToolsContext};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var X=Object.defineProperty;var Ee=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var Pe=Object.prototype.hasOwnProperty;var Ae=(t,o)=>{for(var s in o)X(t,s,{get:o[s],enumerable:!0})},Fe=(t,o,s,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of he(o))!Pe.call(t,a)&&a!==s&&X(t,a,{get:()=>o[a],enumerable:!(n=Ee(o,a))||n.enumerable});return t};var Ie=t=>Fe(X({},"__esModule",{value:!0}),t);var Oe={};Ae(Oe,{ANIMATION_DURATION:()=>e.ANIMATION_DURATION,DIAL_BUTTON_SIZE:()=>e.DIAL_BUTTON_SIZE,DIAL_GRID_LINE_COUNT:()=>e.DIAL_GRID_LINE_COUNT,DIAL_ICON_PADDING:()=>e.DIAL_ICON_PADDING,DIAL_ICON_SIZE:()=>e.DIAL_ICON_SIZE,DIAL_START_ANGLE:()=>e.DIAL_START_ANGLE,DRAG_THRESHOLD:()=>e.DRAG_THRESHOLD,DevToolsContext:()=>O,DevToolsProvider:()=>ae,DevToolsStateManager:()=>L.DevToolsStateManager,EDGE_PADDING:()=>e.EDGE_PADDING,FloatingToolsContext:()=>V,FloatingToolsProvider:()=>q,FloatingToolsStore:()=>e.FloatingToolsStore,MAX_DIAL_SLOTS:()=>e.MAX_DIAL_SLOTS,MAX_SETTINGS_DIAL_SLOTS:()=>H.MAX_SETTINGS_DIAL_SLOTS,SETTINGS_STORAGE_KEY:()=>H.SETTINGS_STORAGE_KEY,SettingsContext:()=>w,SettingsEventBus:()=>K.SettingsEventBus,SettingsProvider:()=>j,USAGE_HALF_LIFE_MS:()=>v.USAGE_HALF_LIFE_MS,USAGE_MIN_SCORE:()=>v.USAGE_MIN_SCORE,VISIBLE_HANDLE_WIDTH:()=>e.VISIBLE_HANDLE_WIDTH,canEnableDialTool:()=>u.canEnableDialTool,countEnabledTools:()=>u.countEnabledTools,decayScore:()=>v.decayScore,devToolsReducer:()=>L.devToolsReducer,devToolsStateManager:()=>L.devToolsStateManager,dialAnimationConfig:()=>e.dialAnimationConfig,dialCSSBeziers:()=>e.dialCSSBeziers,dialColors:()=>e.dialColors,dialStyles:()=>e.dialStyles,easing:()=>e.easing,enforceDialLimit:()=>u.enforceDialLimit,floatingToolsColors:()=>e.floatingToolsColors,generateDefaultSettings:()=>u.generateDefaultSettings,generateDialCSSKeyframes:()=>e.generateDialCSSKeyframes,getAllIconPositions:()=>e.getAllIconPositions,getDialCSSAnimationStyles:()=>e.getDialCSSAnimationStyles,getDialCSSKeyframesString:()=>e.getDialCSSKeyframesString,getDialLayout:()=>e.getDialLayout,getEnabledToolIds:()=>u.getEnabledToolIds,getGridLineRotations:()=>e.getGridLineRotations,getGripIconLayout:()=>e.getGripIconLayout,getIconAngle:()=>e.getIconAngle,getIconPosition:()=>e.getIconPosition,getIconStaggerInputRange:()=>e.getIconStaggerInputRange,getSpiralAnimationPosition:()=>e.getSpiralAnimationPosition,getStaggeredIconProgress:()=>e.getStaggeredIconProgress,getToolColor:()=>y.getToolColor,getToolDescription:()=>E.getToolDescription,getToolLabel:()=>E.getToolLabel,getUserStatusConfig:()=>e.getUserStatusConfig,globalSettingsConfig:()=>De.globalSettingsConfig,interleaveWithDividers:()=>de,interpolate:()=>e.interpolate,interpolatePosition:()=>e.interpolatePosition,mergeSettingsWithDefaults:()=>u.mergeSettingsWithDefaults,pruneUsage:()=>v.pruneUsage,rankToolIds:()=>v.rankToolIds,recordUsage:()=>v.recordUsage,sanitizeFloatingSettings:()=>u.sanitizeFloatingSettings,settingsColors:()=>y.settingsColors,settingsEventBus:()=>K.settingsEventBus,settingsStyles:()=>y.settingsStyles,settingsTabs:()=>pe.settingsTabs,toolColors:()=>y.toolColors,toolDescriptions:()=>E.toolDescriptions,toolLabels:()=>E.toolLabels,useDevTools:()=>Se,useDevToolsContext:()=>U,useDevToolsDial:()=>Te,useDevToolsEnvironment:()=>ge,useDevToolsSettings:()=>ce,useDevToolsState:()=>R,useDialState:()=>se,useFloatingTools:()=>Y,useFloatingToolsContext:()=>$,useOptionalDevToolsContext:()=>re,useOptionalSettingsContext:()=>te,useSettings:()=>I,useSettingsContext:()=>ee,useSettingsModalState:()=>ie,withAlpha:()=>e.withAlpha});module.exports=Ie(Oe);var f=require("react"),J=require("@buoy-gg/floating-tools-core/floating"),Z=require("react");function Y(t){let{screenSize:o,...s}=t,n=(0,f.useMemo)(()=>new J.FloatingToolsStore({...s,screenWidth:o.width,screenHeight:o.height}),[s.enablePositionPersistence,s.storage,s.visibleHandleWidth,s.dragThreshold,s.edgePadding]),a=(0,f.useRef)(!1),[d,m]=(0,Z.useState)(!1);(0,f.useEffect)(()=>(a.current||(a.current=!0,n.initialize().then(()=>{m(!0)})),()=>{n.destroy()}),[n]),(0,f.useEffect)(()=>{n.setScreenSize(o.width,o.height)},[n,o.width,o.height]);let D=(0,f.useSyncExternalStore)(n.subscribe,n.getSnapshot),T=(0,f.useMemo)(()=>({handleDragStart:S=>n.handleDragStart(S),handleDragMove:S=>n.handleDragMove(S),handleDragEnd:S=>n.handleDragEnd(S),toggleHideShow:()=>n.toggleHideShow(),commitPosition:S=>n.commitPosition(S),setBubbleSize:S=>n.setBubbleSize(S),setScreenSize:(S,h)=>n.setScreenSize(S,h),setMinPosition:S=>n.setMinPosition(S),forceHide:()=>n.forceHide(),forceShow:()=>n.forceShow()}),[n]);return{state:D,store:n,isInitialized:d,actions:T}}var z=require("react"),Q=require("react/jsx-runtime"),Re={isDragging:!1,isHidden:!1},V=(0,z.createContext)(Re);function $(){return(0,z.useContext)(V)}function q({value:t,children:o}){return(0,Q.jsx)(V.Provider,{value:t,children:o})}var r=require("react"),g=require("@buoy-gg/floating-tools-core");function I(t={}){let{availableTools:o=[],defaultFloatingTools:s,defaultDialTools:n,storage:a,initialSettings:d,onSettingsChange:m,subscribeToEventBus:D=!0}=t,T=(0,r.useMemo)(()=>(0,g.generateDefaultSettings)(o,s,n),[o,s,n]),S=(0,r.useMemo)(()=>Object.keys(T.dialTools),[T]),h=(0,r.useMemo)(()=>Object.keys(T.floatingTools).filter(i=>i!=="environment"),[T]),[l,x]=(0,r.useState)(d??T),[N,A]=(0,r.useState)(!0),[_,M]=(0,r.useState)(!1),[F,W]=(0,r.useState)(null),B=(0,r.useCallback)(async()=>{if(!a){A(!1),M(!0);return}try{A(!0),W(null);let i=await a.getItem(g.SETTINGS_STORAGE_KEY);if(i){let c=JSON.parse(i),b=(0,g.mergeSettingsWithDefaults)(T,c,{allowedDialKeys:S,allowedFloatingKeys:h});x(b)}else x(T)}catch(i){console.error("Failed to load dev tools settings:",i),W(i instanceof Error?i.message:"Failed to load settings"),x(T)}finally{A(!1),M(!0)}},[a,T,S,h]),p=(0,r.useCallback)(async i=>{let c={...i,dialTools:(0,g.enforceDialLimit)(i.dialTools)};try{a&&await a.setItem(g.SETTINGS_STORAGE_KEY,JSON.stringify(c)),x(c),m?.(c),g.settingsEventBus.emit(c)}catch(b){throw console.error("Failed to save dev tools settings:",b),W(b instanceof Error?b.message:"Failed to save settings"),b}},[a,m]),fe=(0,r.useCallback)(i=>{let c=(0,g.countEnabledTools)(l.dialTools);if(!l.dialTools[i]&&c>=g.MAX_SETTINGS_DIAL_SLOTS)return;let k={...l,dialTools:{...l.dialTools,[i]:!l.dialTools[i]}};p(k)},[l,p]),me=(0,r.useCallback)(i=>{let c={...l,floatingTools:{...l.floatingTools,[i]:!l.floatingTools[i]}};p(c)},[l,p]),be=(0,r.useCallback)(()=>{let i={...l,floatingTools:{...l.floatingTools,environment:!l.floatingTools.environment}};p(i)},[l,p]),xe=(0,r.useCallback)(i=>{let c={...l,globalSettings:{...l.globalSettings,[i]:!l.globalSettings?.[i]}};p(c)},[l,p]),Ce=(0,r.useCallback)(async()=>{await p(T)},[T,p]);(0,r.useEffect)(()=>{B()},[B]),(0,r.useEffect)(()=>D?g.settingsEventBus.addListener(c=>{x(c)}):void 0,[D]);let ye=(0,r.useMemo)(()=>{let i=(0,g.countEnabledTools)(l.dialTools),{dial:c,floating:b}=(0,g.getEnabledToolIds)(l);return{dialToolCount:i,isDialFull:i>=g.MAX_SETTINGS_DIAL_SLOTS,enabledDialTools:c,enabledFloatingTools:b,canEnableDialTool:k=>l.dialTools[k]?!0:i<g.MAX_SETTINGS_DIAL_SLOTS}},[l]);return{settings:l,isLoading:N,isInitialized:_,error:F,actions:{toggleDialTool:fe,toggleFloatingTool:me,toggleEnvironment:be,toggleGlobalSetting:xe,saveSettings:p,resetToDefaults:Ce,reloadSettings:B},helpers:ye}}var P=require("react");var oe=require("react/jsx-runtime"),w=(0,P.createContext)(null);function j({children:t,availableTools:o=[],defaultFloatingTools:s,defaultDialTools:n,storage:a,initialSettings:d,onSettingsChange:m}){let D=I({availableTools:o,defaultFloatingTools:s,defaultDialTools:n,storage:a,initialSettings:d,onSettingsChange:m}),T=(0,P.useMemo)(()=>({...D,availableTools:o}),[D,o]);return(0,oe.jsx)(w.Provider,{value:T,children:t})}function ee(){let t=(0,P.useContext)(w);if(!t)throw new Error("useSettingsContext must be used within a SettingsProvider");return t}function te(){return(0,P.useContext)(w)}var G=require("react"),ne=require("@buoy-gg/floating-tools-core");function R(t={}){let{manager:o=ne.devToolsStateManager}=t,s=(0,G.useSyncExternalStore)(o.subscribe,o.getState,o.getServerState),n=(0,G.useMemo)(()=>({openDial:()=>o.openDial(),closeDial:()=>o.closeDial(),toggleDial:()=>o.toggleDial(),openSettings:()=>o.openSettings(),closeSettings:()=>o.closeSettings(),setSettingsTab:a=>o.setSettingsTab(a),initialize:()=>o.initialize(),reset:()=>o.reset()}),[o]);return{state:s,actions:n,manager:o}}function se(t={}){let{state:o,actions:s}=R(t);return{isOpen:o.isDialOpen,open:s.openDial,close:s.closeDial,toggle:s.toggleDial}}function ie(t={}){let{state:o,actions:s}=R(t);return{isOpen:o.isSettingsOpen,activeTab:o.activeSettingsTab,open:s.openSettings,close:s.closeSettings,setTab:s.setSettingsTab}}var C=require("react"),le=require("@buoy-gg/floating-tools-core");var ue=require("react/jsx-runtime"),O=(0,C.createContext)(null);O.displayName="DevToolsContext";function ae({children:t,tools:o=[],defaultFloatingTools:s,defaultDialTools:n,environment:a,userRole:d,availableEnvironments:m,onEnvironmentSwitch:D,stateManager:T=le.devToolsStateManager}){let{state:S,actions:h}=R({manager:T}),l=(0,C.useMemo)(()=>o.map(F=>({id:F.id,name:F.name,description:F.description,slot:F.slot})),[o]),{settings:x,isLoading:N,actions:A,helpers:_}=I({availableTools:l,defaultFloatingTools:s,defaultDialTools:n}),M=(0,C.useMemo)(()=>({devToolsState:S,devToolsActions:h,settings:x,isSettingsLoading:N,settingsActions:A,settingsHelpers:_,tools:o,environment:a,userRole:d,availableEnvironments:m,onEnvironmentSwitch:D}),[S,h,x,N,A,_,o,a,d,m,D]);return(0,ue.jsx)(O.Provider,{value:M,children:t})}function U(){let t=(0,C.useContext)(O);if(!t)throw new Error("useDevToolsContext must be used within a DevToolsProvider. Wrap your app with <DevToolsProvider> or <FloatingDevTools>.");return t}function re(){return(0,C.useContext)(O)}function ge(){let t=U();return{environment:t.environment,userRole:t.userRole,availableEnvironments:t.availableEnvironments,onEnvironmentSwitch:t.onEnvironmentSwitch}}function Se(){let t=U();return{tools:t.tools,settings:t.settings,isLoading:t.isSettingsLoading}}function Te(){let t=U();return{isOpen:t.devToolsState.isDialOpen,open:t.devToolsActions.openDial,close:t.devToolsActions.closeDial,toggle:t.devToolsActions.toggleDial}}function ce(){let t=U();return{isOpen:t.devToolsState.isSettingsOpen,activeTab:t.devToolsState.activeSettingsTab,open:t.devToolsActions.openSettings,close:t.devToolsActions.closeSettings,setTab:t.devToolsActions.setSettingsTab,settings:t.settings,actions:t.settingsActions,helpers:t.settingsHelpers}}var ve=require("@buoy-gg/floating-tools-core/floating");function de(t,o){let s=(0,ve.filterValidChildren)(t),n=[];return s.forEach((a,d)=>{n.push(a),d<s.length-1&&n.push(o(`divider-${d}`))}),n}var L=require("@buoy-gg/floating-tools-core"),e=require("@buoy-gg/floating-tools-core"),v=require("@buoy-gg/floating-tools-core"),H=require("@buoy-gg/floating-tools-core"),pe=require("@buoy-gg/floating-tools-core"),y=require("@buoy-gg/floating-tools-core"),E=require("@buoy-gg/floating-tools-core"),De=require("@buoy-gg/floating-tools-core"),u=require("@buoy-gg/floating-tools-core"),K=require("@buoy-gg/floating-tools-core");0&&(module.exports={ANIMATION_DURATION,DIAL_BUTTON_SIZE,DIAL_GRID_LINE_COUNT,DIAL_ICON_PADDING,DIAL_ICON_SIZE,DIAL_START_ANGLE,DRAG_THRESHOLD,DevToolsContext,DevToolsProvider,DevToolsStateManager,EDGE_PADDING,FloatingToolsContext,FloatingToolsProvider,FloatingToolsStore,MAX_DIAL_SLOTS,MAX_SETTINGS_DIAL_SLOTS,SETTINGS_STORAGE_KEY,SettingsContext,SettingsEventBus,SettingsProvider,USAGE_HALF_LIFE_MS,USAGE_MIN_SCORE,VISIBLE_HANDLE_WIDTH,canEnableDialTool,countEnabledTools,decayScore,devToolsReducer,devToolsStateManager,dialAnimationConfig,dialCSSBeziers,dialColors,dialStyles,easing,enforceDialLimit,floatingToolsColors,generateDefaultSettings,generateDialCSSKeyframes,getAllIconPositions,getDialCSSAnimationStyles,getDialCSSKeyframesString,getDialLayout,getEnabledToolIds,getGridLineRotations,getGripIconLayout,getIconAngle,getIconPosition,getIconStaggerInputRange,getSpiralAnimationPosition,getStaggeredIconProgress,getToolColor,getToolDescription,getToolLabel,getUserStatusConfig,globalSettingsConfig,interleaveWithDividers,interpolate,interpolatePosition,mergeSettingsWithDefaults,pruneUsage,rankToolIds,recordUsage,sanitizeFloatingSettings,settingsColors,settingsEventBus,settingsStyles,settingsTabs,toolColors,toolDescriptions,toolLabels,useDevTools,useDevToolsContext,useDevToolsDial,useDevToolsEnvironment,useDevToolsSettings,useDevToolsState,useDialState,useFloatingTools,useFloatingToolsContext,useOptionalDevToolsContext,useOptionalSettingsContext,useSettings,useSettingsContext,useSettingsModalState,withAlpha});
1
+ "use strict";var X=Object.defineProperty;var Ee=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var Pe=Object.prototype.hasOwnProperty;var Ae=(t,o)=>{for(var n in o)X(t,n,{get:o[n],enumerable:true})},Fe=(t,o,n,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of he(o))!Pe.call(t,a)&&a!==n&&X(t,a,{get:()=>o[a],enumerable:!(i=Ee(o,a))||i.enumerable});return t};var Ie=t=>Fe(X({},"__esModule",{value:true}),t);var Oe={};Ae(Oe,{ANIMATION_DURATION:()=>e.ANIMATION_DURATION,DIAL_BUTTON_SIZE:()=>e.DIAL_BUTTON_SIZE,DIAL_GRID_LINE_COUNT:()=>e.DIAL_GRID_LINE_COUNT,DIAL_ICON_PADDING:()=>e.DIAL_ICON_PADDING,DIAL_ICON_SIZE:()=>e.DIAL_ICON_SIZE,DIAL_START_ANGLE:()=>e.DIAL_START_ANGLE,DRAG_THRESHOLD:()=>e.DRAG_THRESHOLD,DevToolsContext:()=>O,DevToolsProvider:()=>ae,DevToolsStateManager:()=>L.DevToolsStateManager,EDGE_PADDING:()=>e.EDGE_PADDING,FloatingToolsContext:()=>V,FloatingToolsProvider:()=>q,FloatingToolsStore:()=>e.FloatingToolsStore,MAX_DIAL_SLOTS:()=>e.MAX_DIAL_SLOTS,MAX_SETTINGS_DIAL_SLOTS:()=>H.MAX_SETTINGS_DIAL_SLOTS,SETTINGS_STORAGE_KEY:()=>H.SETTINGS_STORAGE_KEY,SettingsContext:()=>w,SettingsEventBus:()=>K.SettingsEventBus,SettingsProvider:()=>j,USAGE_HALF_LIFE_MS:()=>v.USAGE_HALF_LIFE_MS,USAGE_MIN_SCORE:()=>v.USAGE_MIN_SCORE,VISIBLE_HANDLE_WIDTH:()=>e.VISIBLE_HANDLE_WIDTH,canEnableDialTool:()=>u.canEnableDialTool,countEnabledTools:()=>u.countEnabledTools,decayScore:()=>v.decayScore,devToolsReducer:()=>L.devToolsReducer,devToolsStateManager:()=>L.devToolsStateManager,dialAnimationConfig:()=>e.dialAnimationConfig,dialCSSBeziers:()=>e.dialCSSBeziers,dialColors:()=>e.dialColors,dialStyles:()=>e.dialStyles,easing:()=>e.easing,enforceDialLimit:()=>u.enforceDialLimit,floatingToolsColors:()=>e.floatingToolsColors,generateDefaultSettings:()=>u.generateDefaultSettings,generateDialCSSKeyframes:()=>e.generateDialCSSKeyframes,getAllIconPositions:()=>e.getAllIconPositions,getDialCSSAnimationStyles:()=>e.getDialCSSAnimationStyles,getDialCSSKeyframesString:()=>e.getDialCSSKeyframesString,getDialLayout:()=>e.getDialLayout,getEnabledToolIds:()=>u.getEnabledToolIds,getGridLineRotations:()=>e.getGridLineRotations,getGripIconLayout:()=>e.getGripIconLayout,getIconAngle:()=>e.getIconAngle,getIconPosition:()=>e.getIconPosition,getIconStaggerInputRange:()=>e.getIconStaggerInputRange,getSpiralAnimationPosition:()=>e.getSpiralAnimationPosition,getStaggeredIconProgress:()=>e.getStaggeredIconProgress,getToolColor:()=>y.getToolColor,getToolDescription:()=>E.getToolDescription,getToolLabel:()=>E.getToolLabel,getUserStatusConfig:()=>e.getUserStatusConfig,globalSettingsConfig:()=>De.globalSettingsConfig,interleaveWithDividers:()=>de,interpolate:()=>e.interpolate,interpolatePosition:()=>e.interpolatePosition,mergeSettingsWithDefaults:()=>u.mergeSettingsWithDefaults,pruneUsage:()=>v.pruneUsage,rankToolIds:()=>v.rankToolIds,recordUsage:()=>v.recordUsage,sanitizeFloatingSettings:()=>u.sanitizeFloatingSettings,settingsColors:()=>y.settingsColors,settingsEventBus:()=>K.settingsEventBus,settingsStyles:()=>y.settingsStyles,settingsTabs:()=>pe.settingsTabs,toolColors:()=>y.toolColors,toolDescriptions:()=>E.toolDescriptions,toolLabels:()=>E.toolLabels,useDevTools:()=>Se,useDevToolsContext:()=>U,useDevToolsDial:()=>Te,useDevToolsEnvironment:()=>ge,useDevToolsSettings:()=>ce,useDevToolsState:()=>R,useDialState:()=>se,useFloatingTools:()=>Y,useFloatingToolsContext:()=>$,useOptionalDevToolsContext:()=>re,useOptionalSettingsContext:()=>te,useSettings:()=>I,useSettingsContext:()=>ee,useSettingsModalState:()=>ie,withAlpha:()=>e.withAlpha});module.exports=Ie(Oe);var f=require("react"),J=require("@buoy-gg/floating-tools-core/floating"),Z=require("react");function Y(t){let{screenSize:o,...n}=t,i=(0,f.useMemo)(()=>new J.FloatingToolsStore({...n,screenWidth:o.width,screenHeight:o.height}),[n.enablePositionPersistence,n.storage,n.visibleHandleWidth,n.dragThreshold,n.edgePadding]),a=(0,f.useRef)(false),[d,b]=(0,Z.useState)(false);(0,f.useEffect)(()=>(a.current||(a.current=true,i.initialize().then(()=>{b(true)})),()=>{i.destroy()}),[i]),(0,f.useEffect)(()=>{i.setScreenSize(o.width,o.height)},[i,o.width,o.height]);let A=(0,f.useSyncExternalStore)(i.subscribe,i.getSnapshot),T=(0,f.useMemo)(()=>({handleDragStart:S=>i.handleDragStart(S),handleDragMove:S=>i.handleDragMove(S),handleDragEnd:S=>i.handleDragEnd(S),toggleHideShow:()=>i.toggleHideShow(),commitPosition:S=>i.commitPosition(S),setBubbleSize:S=>i.setBubbleSize(S),setScreenSize:(S,p)=>i.setScreenSize(S,p),setMinPosition:S=>i.setMinPosition(S),forceHide:()=>i.forceHide(),forceShow:()=>i.forceShow()}),[i]);return{state:A,store:i,isInitialized:d,actions:T}}var z=require("react"),Q=require("react/jsx-runtime"),Re={isDragging:false,isHidden:false},V=(0,z.createContext)(Re);function $(){return(0,z.useContext)(V)}function q({value:t,children:o}){return(0,Q.jsx)(V.Provider,{value:t,children:o})}var r=require("react"),g=require("@buoy-gg/floating-tools-core");function I(t={}){let{availableTools:o=[],defaultFloatingTools:n,defaultDialTools:i,storage:a,initialSettings:d,onSettingsChange:b,subscribeToEventBus:A=true}=t,T=(0,r.useMemo)(()=>(0,g.generateDefaultSettings)(o,n,i),[o,n,i]),S=(0,r.useMemo)(()=>Object.keys(T.dialTools),[T]),p=(0,r.useMemo)(()=>Object.keys(T.floatingTools).filter(s=>s!=="environment"),[T]),[l,m]=(0,r.useState)(d??T),[M,h]=(0,r.useState)(true),[x,F]=(0,r.useState)(false),[N,B]=(0,r.useState)(null),k=(0,r.useCallback)(async()=>{if(!a){h(false),F(true);return}try{h(true),B(null);let s=await a.getItem(g.SETTINGS_STORAGE_KEY);if(s){let c=JSON.parse(s),_=(0,g.mergeSettingsWithDefaults)(T,c,{allowedDialKeys:S,allowedFloatingKeys:p});m(_)}else m(T)}catch(s){console.error("Failed to load dev tools settings:",s),B(s instanceof Error?s.message:"Failed to load settings"),m(T)}finally{h(false),F(true)}},[a,T,S,p]),D=(0,r.useCallback)(async s=>{let c={...s,dialTools:(0,g.enforceDialLimit)(s.dialTools)};try{a&&await a.setItem(g.SETTINGS_STORAGE_KEY,JSON.stringify(c)),m(c),b?.(c),g.settingsEventBus.emit(c)}catch(_){throw console.error("Failed to save dev tools settings:",_),B(_ instanceof Error?_.message:"Failed to save settings"),_}},[a,b]),W=(0,r.useCallback)(s=>{let c=(0,g.countEnabledTools)(l.dialTools);if(!l.dialTools[s]&&c>=g.MAX_SETTINGS_DIAL_SLOTS)return;let _={...l,dialTools:{...l.dialTools,[s]:!l.dialTools[s]}};D(_)},[l,D]),fe=(0,r.useCallback)(s=>{let c={...l,floatingTools:{...l.floatingTools,[s]:!l.floatingTools[s]}};D(c)},[l,D]),_e=(0,r.useCallback)(()=>{let s={...l,floatingTools:{...l.floatingTools,environment:!l.floatingTools.environment}};D(s)},[l,D]),be=(0,r.useCallback)(s=>{let c={...l,globalSettings:{...l.globalSettings,[s]:!l.globalSettings?.[s]}};D(c)},[l,D]),Ce=(0,r.useCallback)(async()=>{await D(T)},[T,D]);(0,r.useEffect)(()=>{k()},[k]),(0,r.useEffect)(()=>A?g.settingsEventBus.addListener(s=>{m(s)}):void 0,[A]);let me=(0,r.useMemo)(()=>{let s=(0,g.countEnabledTools)(l.dialTools),{dial:c,floating:_}=(0,g.getEnabledToolIds)(l);return{dialToolCount:s,isDialFull:s>=g.MAX_SETTINGS_DIAL_SLOTS,enabledDialTools:c,enabledFloatingTools:_,canEnableDialTool:Le=>l.dialTools[Le]?true:s<g.MAX_SETTINGS_DIAL_SLOTS}},[l]);return{settings:l,isLoading:M,isInitialized:x,error:N,actions:{toggleDialTool:W,toggleFloatingTool:fe,toggleEnvironment:_e,toggleGlobalSetting:be,saveSettings:D,resetToDefaults:Ce,reloadSettings:k},helpers:me}}var P=require("react");var oe=require("react/jsx-runtime"),w=(0,P.createContext)(null);function j({children:t,availableTools:o=[],defaultFloatingTools:n,defaultDialTools:i,storage:a,initialSettings:d,onSettingsChange:b}){let A=I({availableTools:o,defaultFloatingTools:n,defaultDialTools:i,storage:a,initialSettings:d,onSettingsChange:b}),T=(0,P.useMemo)(()=>({...A,availableTools:o}),[A,o]);return(0,oe.jsx)(w.Provider,{value:T,children:t})}function ee(){let t=(0,P.useContext)(w);if(!t)throw new Error("useSettingsContext must be used within a SettingsProvider");return t}function te(){return(0,P.useContext)(w)}var G=require("react"),ne=require("@buoy-gg/floating-tools-core");function R(t={}){let{manager:o=ne.devToolsStateManager}=t,n=(0,G.useSyncExternalStore)(o.subscribe,o.getState,o.getServerState),i=(0,G.useMemo)(()=>({openDial:()=>o.openDial(),closeDial:()=>o.closeDial(),toggleDial:()=>o.toggleDial(),openSettings:()=>o.openSettings(),closeSettings:()=>o.closeSettings(),setSettingsTab:a=>o.setSettingsTab(a),initialize:()=>o.initialize(),reset:()=>o.reset()}),[o]);return{state:n,actions:i,manager:o}}function se(t={}){let{state:o,actions:n}=R(t);return{isOpen:o.isDialOpen,open:n.openDial,close:n.closeDial,toggle:n.toggleDial}}function ie(t={}){let{state:o,actions:n}=R(t);return{isOpen:o.isSettingsOpen,activeTab:o.activeSettingsTab,open:n.openSettings,close:n.closeSettings,setTab:n.setSettingsTab}}var C=require("react"),le=require("@buoy-gg/floating-tools-core");var ue=require("react/jsx-runtime"),O=(0,C.createContext)(null);O.displayName="DevToolsContext";function ae({children:t,tools:o=[],defaultFloatingTools:n,defaultDialTools:i,environment:a,userRole:d,availableEnvironments:b,onEnvironmentSwitch:A,stateManager:T=le.devToolsStateManager}){let{state:S,actions:p}=R({manager:T}),l=(0,C.useMemo)(()=>o.map(N=>({id:N.id,name:N.name,description:N.description,slot:N.slot})),[o]),{settings:m,isLoading:M,actions:h,helpers:x}=I({availableTools:l,defaultFloatingTools:n,defaultDialTools:i}),F=(0,C.useMemo)(()=>({devToolsState:S,devToolsActions:p,settings:m,isSettingsLoading:M,settingsActions:h,settingsHelpers:x,tools:o,environment:a,userRole:d,availableEnvironments:b,onEnvironmentSwitch:A}),[S,p,m,M,h,x,o,a,d,b,A]);return(0,ue.jsx)(O.Provider,{value:F,children:t})}function U(){let t=(0,C.useContext)(O);if(!t)throw new Error("useDevToolsContext must be used within a DevToolsProvider. Wrap your app with <DevToolsProvider> or <FloatingDevTools>.");return t}function re(){return(0,C.useContext)(O)}function ge(){let t=U();return{environment:t.environment,userRole:t.userRole,availableEnvironments:t.availableEnvironments,onEnvironmentSwitch:t.onEnvironmentSwitch}}function Se(){let t=U();return{tools:t.tools,settings:t.settings,isLoading:t.isSettingsLoading}}function Te(){let t=U();return{isOpen:t.devToolsState.isDialOpen,open:t.devToolsActions.openDial,close:t.devToolsActions.closeDial,toggle:t.devToolsActions.toggleDial}}function ce(){let t=U();return{isOpen:t.devToolsState.isSettingsOpen,activeTab:t.devToolsState.activeSettingsTab,open:t.devToolsActions.openSettings,close:t.devToolsActions.closeSettings,setTab:t.devToolsActions.setSettingsTab,settings:t.settings,actions:t.settingsActions,helpers:t.settingsHelpers}}var ve=require("@buoy-gg/floating-tools-core/floating");function de(t,o){let n=(0,ve.filterValidChildren)(t),i=[];return n.forEach((a,d)=>{i.push(a),d<n.length-1&&i.push(o(`divider-${d}`))}),i}var L=require("@buoy-gg/floating-tools-core"),e=require("@buoy-gg/floating-tools-core"),v=require("@buoy-gg/floating-tools-core"),H=require("@buoy-gg/floating-tools-core"),pe=require("@buoy-gg/floating-tools-core"),y=require("@buoy-gg/floating-tools-core"),E=require("@buoy-gg/floating-tools-core"),De=require("@buoy-gg/floating-tools-core"),u=require("@buoy-gg/floating-tools-core"),K=require("@buoy-gg/floating-tools-core");
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{a as J,b as Y,c as Z,d as j,e as q}from"./chunk-2OZZBOHY.mjs";import{useState as O,useEffect as N,useCallback as u,useMemo as P}from"react";import{settingsEventBus as h,SETTINGS_STORAGE_KEY as M,MAX_SETTINGS_DIAL_SLOTS as F,enforceDialLimit as Q,mergeSettingsWithDefaults as $,generateDefaultSettings as ee,countEnabledTools as w,getEnabledToolIds as te}from"@buoy-gg/floating-tools-core";function b(e={}){let{availableTools:t=[],defaultFloatingTools:s,defaultDialTools:S,storage:a,initialSettings:p,onSettingsChange:c,subscribeToEventBus:T=!0}=e,l=P(()=>ee(t,s,S),[t,s,S]),f=P(()=>Object.keys(l.dialTools),[l]),m=P(()=>Object.keys(l.floatingTools).filter(o=>o!=="environment"),[l]),[n,v]=O(p??l),[E,D]=O(!0),[A,I]=O(!1),[d,U]=O(null),R=u(async()=>{if(!a){D(!1),I(!0);return}try{D(!0),U(null);let o=await a.getItem(M);if(o){let i=JSON.parse(o),g=$(l,i,{allowedDialKeys:f,allowedFloatingKeys:m});v(g)}else v(l)}catch(o){console.error("Failed to load dev tools settings:",o),U(o instanceof Error?o.message:"Failed to load settings"),v(l)}finally{D(!1),I(!0)}},[a,l,f,m]),r=u(async o=>{let i={...o,dialTools:Q(o.dialTools)};try{a&&await a.setItem(M,JSON.stringify(i)),v(i),c?.(i),h.emit(i)}catch(g){throw console.error("Failed to save dev tools settings:",g),U(g instanceof Error?g.message:"Failed to save settings"),g}},[a,c]),z=u(o=>{let i=w(n.dialTools);if(!n.dialTools[o]&&i>=F)return;let _={...n,dialTools:{...n.dialTools,[o]:!n.dialTools[o]}};r(_)},[n,r]),B=u(o=>{let i={...n,floatingTools:{...n.floatingTools,[o]:!n.floatingTools[o]}};r(i)},[n,r]),W=u(()=>{let o={...n,floatingTools:{...n.floatingTools,environment:!n.floatingTools.environment}};r(o)},[n,r]),H=u(o=>{let i={...n,globalSettings:{...n.globalSettings,[o]:!n.globalSettings?.[o]}};r(i)},[n,r]),k=u(async()=>{await r(l)},[l,r]);N(()=>{R()},[R]),N(()=>T?h.addListener(i=>{v(i)}):void 0,[T]);let X=P(()=>{let o=w(n.dialTools),{dial:i,floating:g}=te(n);return{dialToolCount:o,isDialFull:o>=F,enabledDialTools:i,enabledFloatingTools:g,canEnableDialTool:_=>n.dialTools[_]?!0:o<F}},[n]);return{settings:n,isLoading:E,isInitialized:A,error:d,actions:{toggleDialTool:z,toggleFloatingTool:B,toggleEnvironment:W,toggleGlobalSetting:H,saveSettings:r,resetToDefaults:k,reloadSettings:R},helpers:X}}import{createContext as oe,useContext as G,useMemo as ne}from"react";import{jsx as ae}from"react/jsx-runtime";var L=oe(null);function se({children:e,availableTools:t=[],defaultFloatingTools:s,defaultDialTools:S,storage:a,initialSettings:p,onSettingsChange:c}){let T=b({availableTools:t,defaultFloatingTools:s,defaultDialTools:S,storage:a,initialSettings:p,onSettingsChange:c}),l=ne(()=>({...T,availableTools:t}),[T,t]);return ae(L.Provider,{value:l,children:e})}function ie(){let e=G(L);if(!e)throw new Error("useSettingsContext must be used within a SettingsProvider");return e}function le(){return G(L)}import{useSyncExternalStore as re,useMemo as ge}from"react";import{devToolsStateManager as Se}from"@buoy-gg/floating-tools-core";function x(e={}){let{manager:t=Se}=e,s=re(t.subscribe,t.getState,t.getServerState),S=ge(()=>({openDial:()=>t.openDial(),closeDial:()=>t.closeDial(),toggleDial:()=>t.toggleDial(),openSettings:()=>t.openSettings(),closeSettings:()=>t.closeSettings(),setSettingsTab:a=>t.setSettingsTab(a),initialize:()=>t.initialize(),reset:()=>t.reset()}),[t]);return{state:s,actions:S,manager:t}}function Te(e={}){let{state:t,actions:s}=x(e);return{isOpen:t.isDialOpen,open:s.openDial,close:s.closeDial,toggle:s.toggleDial}}function ve(e={}){let{state:t,actions:s}=x(e);return{isOpen:t.isSettingsOpen,activeTab:t.activeSettingsTab,open:s.openSettings,close:s.closeSettings,setTab:s.setSettingsTab}}import{createContext as ce,useContext as V,useMemo as K}from"react";import{devToolsStateManager as ue}from"@buoy-gg/floating-tools-core";import{jsx as xe}from"react/jsx-runtime";var C=ce(null);C.displayName="DevToolsContext";function pe({children:e,tools:t=[],defaultFloatingTools:s,defaultDialTools:S,environment:a,userRole:p,availableEnvironments:c,onEnvironmentSwitch:T,stateManager:l=ue}){let{state:f,actions:m}=x({manager:l}),n=K(()=>t.map(d=>({id:d.id,name:d.name,description:d.description,slot:d.slot})),[t]),{settings:v,isLoading:E,actions:D,helpers:A}=b({availableTools:n,defaultFloatingTools:s,defaultDialTools:S}),I=K(()=>({devToolsState:f,devToolsActions:m,settings:v,isSettingsLoading:E,settingsActions:D,settingsHelpers:A,tools:t,environment:a,userRole:p,availableEnvironments:c,onEnvironmentSwitch:T}),[f,m,v,E,D,A,t,a,p,c,T]);return xe(C.Provider,{value:I,children:e})}function y(){let e=V(C);if(!e)throw new Error("useDevToolsContext must be used within a DevToolsProvider. Wrap your app with <DevToolsProvider> or <FloatingDevTools>.");return e}function De(){return V(C)}function de(){let e=y();return{environment:e.environment,userRole:e.userRole,availableEnvironments:e.availableEnvironments,onEnvironmentSwitch:e.onEnvironmentSwitch}}function fe(){let e=y();return{tools:e.tools,settings:e.settings,isLoading:e.isSettingsLoading}}function me(){let e=y();return{isOpen:e.devToolsState.isDialOpen,open:e.devToolsActions.openDial,close:e.devToolsActions.closeDial,toggle:e.devToolsActions.toggleDial}}function be(){let e=y();return{isOpen:e.devToolsState.isSettingsOpen,activeTab:e.devToolsState.activeSettingsTab,open:e.devToolsActions.openSettings,close:e.devToolsActions.closeSettings,setTab:e.devToolsActions.setSettingsTab,settings:e.settings,actions:e.settingsActions,helpers:e.settingsHelpers}}import{DevToolsStateManager as Qe,devToolsStateManager as $e,devToolsReducer as et}from"@buoy-gg/floating-tools-core";import{FloatingToolsStore as ot,floatingToolsColors as nt,withAlpha as st,getUserStatusConfig as it,getGripIconLayout as lt,easing as at,interpolate as rt,interpolatePosition as gt,VISIBLE_HANDLE_WIDTH as St,ANIMATION_DURATION as Tt,DRAG_THRESHOLD as vt,EDGE_PADDING as ct,MAX_DIAL_SLOTS as ut,DIAL_START_ANGLE as pt,DIAL_BUTTON_SIZE as Dt,DIAL_ICON_SIZE as dt,DIAL_ICON_PADDING as ft,DIAL_GRID_LINE_COUNT as mt,dialColors as bt,dialStyles as xt,getGridLineRotations as Ct,getDialLayout as yt,getIconAngle as Et,getIconPosition as At,getAllIconPositions as It,dialAnimationConfig as Ot,getIconStaggerInputRange as Pt,dialCSSBeziers as Lt,generateDialCSSKeyframes as Ut,getDialCSSAnimationStyles as Rt,getDialCSSKeyframesString as _t,getSpiralAnimationPosition as Ft,getStaggeredIconProgress as Nt}from"@buoy-gg/floating-tools-core";import{USAGE_HALF_LIFE_MS as Mt,USAGE_MIN_SCORE as wt,decayScore as Gt,recordUsage as Kt,rankToolIds as Vt,pruneUsage as zt}from"@buoy-gg/floating-tools-core";import{SETTINGS_STORAGE_KEY as Wt,MAX_SETTINGS_DIAL_SLOTS as Ht}from"@buoy-gg/floating-tools-core";import{settingsTabs as Xt}from"@buoy-gg/floating-tools-core";import{settingsColors as Yt,toolColors as Zt,getToolColor as jt,settingsStyles as qt}from"@buoy-gg/floating-tools-core";import{toolLabels as $t,getToolLabel as eo,toolDescriptions as to,getToolDescription as oo}from"@buoy-gg/floating-tools-core";import{globalSettingsConfig as so}from"@buoy-gg/floating-tools-core";import{enforceDialLimit as lo,sanitizeFloatingSettings as ao,mergeSettingsWithDefaults as ro,generateDefaultSettings as go,countEnabledTools as So,canEnableDialTool as To,getEnabledToolIds as vo}from"@buoy-gg/floating-tools-core";import{SettingsEventBus as uo,settingsEventBus as po}from"@buoy-gg/floating-tools-core";export{Tt as ANIMATION_DURATION,Dt as DIAL_BUTTON_SIZE,mt as DIAL_GRID_LINE_COUNT,ft as DIAL_ICON_PADDING,dt as DIAL_ICON_SIZE,pt as DIAL_START_ANGLE,vt as DRAG_THRESHOLD,C as DevToolsContext,pe as DevToolsProvider,Qe as DevToolsStateManager,ct as EDGE_PADDING,Y as FloatingToolsContext,j as FloatingToolsProvider,ot as FloatingToolsStore,ut as MAX_DIAL_SLOTS,Ht as MAX_SETTINGS_DIAL_SLOTS,Wt as SETTINGS_STORAGE_KEY,L as SettingsContext,uo as SettingsEventBus,se as SettingsProvider,Mt as USAGE_HALF_LIFE_MS,wt as USAGE_MIN_SCORE,St as VISIBLE_HANDLE_WIDTH,To as canEnableDialTool,So as countEnabledTools,Gt as decayScore,et as devToolsReducer,$e as devToolsStateManager,Ot as dialAnimationConfig,Lt as dialCSSBeziers,bt as dialColors,xt as dialStyles,at as easing,lo as enforceDialLimit,nt as floatingToolsColors,go as generateDefaultSettings,Ut as generateDialCSSKeyframes,It as getAllIconPositions,Rt as getDialCSSAnimationStyles,_t as getDialCSSKeyframesString,yt as getDialLayout,vo as getEnabledToolIds,Ct as getGridLineRotations,lt as getGripIconLayout,Et as getIconAngle,At as getIconPosition,Pt as getIconStaggerInputRange,Ft as getSpiralAnimationPosition,Nt as getStaggeredIconProgress,jt as getToolColor,oo as getToolDescription,eo as getToolLabel,it as getUserStatusConfig,so as globalSettingsConfig,q as interleaveWithDividers,rt as interpolate,gt as interpolatePosition,ro as mergeSettingsWithDefaults,zt as pruneUsage,Vt as rankToolIds,Kt as recordUsage,ao as sanitizeFloatingSettings,Yt as settingsColors,po as settingsEventBus,qt as settingsStyles,Xt as settingsTabs,Zt as toolColors,to as toolDescriptions,$t as toolLabels,fe as useDevTools,y as useDevToolsContext,me as useDevToolsDial,de as useDevToolsEnvironment,be as useDevToolsSettings,x as useDevToolsState,Te as useDialState,J as useFloatingTools,Z as useFloatingToolsContext,De as useOptionalDevToolsContext,le as useOptionalSettingsContext,b as useSettings,ie as useSettingsContext,ve as useSettingsModalState,st as withAlpha};
1
+ import{a as Z,b as Y,c as V,d as J,e as $}from"./chunk-2OZZBOHY.mjs";import{useState as L,useEffect as R,useCallback as d,useMemo as C}from"react";import{settingsEventBus as M,SETTINGS_STORAGE_KEY as P,MAX_SETTINGS_DIAL_SLOTS as h,enforceDialLimit as q,mergeSettingsWithDefaults as Q,generateDefaultSettings as tt,countEnabledTools as x,getEnabledToolIds as et}from"@buoy-gg/floating-tools-core";function F(t={}){let{availableTools:e=[],defaultFloatingTools:a,defaultDialTools:S,storage:l,initialSettings:D,onSettingsChange:c,subscribeToEventBus:T=true}=t,i=C(()=>tt(e,a,S),[e,a,S]),f=C(()=>Object.keys(i.dialTools),[i]),I=C(()=>Object.keys(i.floatingTools).filter(s=>s!=="environment"),[i]),[o,u]=L(D??i),[A,m]=L(true),[_,b]=L(false),[v,y]=L(null),G=d(async()=>{if(!l){m(false),b(true);return}try{m(true),y(null);let s=await l.getItem(P);if(s){let n=JSON.parse(s),g=Q(i,n,{allowedDialKeys:f,allowedFloatingKeys:I});u(g)}else u(i)}catch(s){console.error("Failed to load dev tools settings:",s),y(s instanceof Error?s.message:"Failed to load settings"),u(i)}finally{m(false),b(true)}},[l,i,f,I]),r=d(async s=>{let n={...s,dialTools:q(s.dialTools)};try{l&&await l.setItem(P,JSON.stringify(n)),u(n),c?.(n),M.emit(n)}catch(g){throw console.error("Failed to save dev tools settings:",g),y(g instanceof Error?g.message:"Failed to save settings"),g}},[l,c]),B=d(s=>{let n=x(o.dialTools);if(!o.dialTools[s]&&n>=h)return;let g={...o,dialTools:{...o.dialTools,[s]:!o.dialTools[s]}};r(g)},[o,r]),K=d(s=>{let n={...o,floatingTools:{...o.floatingTools,[s]:!o.floatingTools[s]}};r(n)},[o,r]),z=d(()=>{let s={...o,floatingTools:{...o.floatingTools,environment:!o.floatingTools.environment}};r(s)},[o,r]),W=d(s=>{let n={...o,globalSettings:{...o.globalSettings,[s]:!o.globalSettings?.[s]}};r(n)},[o,r]),X=d(async()=>{await r(i)},[i,r]);R(()=>{G()},[G]),R(()=>T?M.addListener(s=>{u(s)}):void 0,[T]);let j=C(()=>{let s=x(o.dialTools),{dial:n,floating:g}=et(o);return{dialToolCount:s,isDialFull:s>=h,enabledDialTools:n,enabledFloatingTools:g,canEnableDialTool:k=>o.dialTools[k]?true:s<h}},[o]);return{settings:o,isLoading:A,isInitialized:_,error:v,actions:{toggleDialTool:B,toggleFloatingTool:K,toggleEnvironment:z,toggleGlobalSetting:W,saveSettings:r,resetToDefaults:X,reloadSettings:G},helpers:j}}import{createContext as st,useContext as w,useMemo as ot}from"react";import{jsx as at}from"react/jsx-runtime";var O=st(null);function it({children:t,availableTools:e=[],defaultFloatingTools:a,defaultDialTools:S,storage:l,initialSettings:D,onSettingsChange:c}){let T=F({availableTools:e,defaultFloatingTools:a,defaultDialTools:S,storage:l,initialSettings:D,onSettingsChange:c}),i=ot(()=>({...T,availableTools:e}),[T,e]);return at(O.Provider,{value:i,children:t})}function nt(){let t=w(O);if(!t)throw new Error("useSettingsContext must be used within a SettingsProvider");return t}function lt(){return w(O)}import{useSyncExternalStore as rt,useMemo as gt}from"react";import{devToolsStateManager as St}from"@buoy-gg/floating-tools-core";function N(t={}){let{manager:e=St}=t,a=rt(e.subscribe,e.getState,e.getServerState),S=gt(()=>({openDial:()=>e.openDial(),closeDial:()=>e.closeDial(),toggleDial:()=>e.toggleDial(),openSettings:()=>e.openSettings(),closeSettings:()=>e.closeSettings(),setSettingsTab:l=>e.setSettingsTab(l),initialize:()=>e.initialize(),reset:()=>e.reset()}),[e]);return{state:a,actions:S,manager:e}}function Tt(t={}){let{state:e,actions:a}=N(t);return{isOpen:e.isDialOpen,open:a.openDial,close:a.closeDial,toggle:a.toggleDial}}function ut(t={}){let{state:e,actions:a}=N(t);return{isOpen:e.isSettingsOpen,activeTab:e.activeSettingsTab,open:a.openSettings,close:a.closeSettings,setTab:a.setSettingsTab}}import{createContext as ct,useContext as U,useMemo as H}from"react";import{devToolsStateManager as dt}from"@buoy-gg/floating-tools-core";import{jsx as Dt}from"react/jsx-runtime";var p=ct(null);p.displayName="DevToolsContext";function mt({children:t,tools:e=[],defaultFloatingTools:a,defaultDialTools:S,environment:l,userRole:D,availableEnvironments:c,onEnvironmentSwitch:T,stateManager:i=dt}){let{state:f,actions:I}=N({manager:i}),o=H(()=>e.map(v=>({id:v.id,name:v.name,description:v.description,slot:v.slot})),[e]),{settings:u,isLoading:A,actions:m,helpers:_}=F({availableTools:o,defaultFloatingTools:a,defaultDialTools:S}),b=H(()=>({devToolsState:f,devToolsActions:I,settings:u,isSettingsLoading:A,settingsActions:m,settingsHelpers:_,tools:e,environment:l,userRole:D,availableEnvironments:c,onEnvironmentSwitch:T}),[f,I,u,A,m,_,e,l,D,c,T]);return Dt(p.Provider,{value:b,children:t})}function E(){let t=U(p);if(!t)throw new Error("useDevToolsContext must be used within a DevToolsProvider. Wrap your app with <DevToolsProvider> or <FloatingDevTools>.");return t}function vt(){return U(p)}function ft(){let t=E();return{environment:t.environment,userRole:t.userRole,availableEnvironments:t.availableEnvironments,onEnvironmentSwitch:t.onEnvironmentSwitch}}function It(){let t=E();return{tools:t.tools,settings:t.settings,isLoading:t.isSettingsLoading}}function pt(){let t=E();return{isOpen:t.devToolsState.isDialOpen,open:t.devToolsActions.openDial,close:t.devToolsActions.closeDial,toggle:t.devToolsActions.toggleDial}}function Et(){let t=E();return{isOpen:t.devToolsState.isSettingsOpen,activeTab:t.devToolsState.activeSettingsTab,open:t.devToolsActions.openSettings,close:t.devToolsActions.closeSettings,setTab:t.devToolsActions.setSettingsTab,settings:t.settings,actions:t.settingsActions,helpers:t.settingsHelpers}}import{DevToolsStateManager as At,devToolsStateManager as _t,devToolsReducer as bt}from"@buoy-gg/floating-tools-core";import{FloatingToolsStore as Lt,floatingToolsColors as Ct,withAlpha as Ot,getUserStatusConfig as Nt,getGripIconLayout as yt,easing as Gt,interpolate as ht,interpolatePosition as Ft,VISIBLE_HANDLE_WIDTH as Rt,ANIMATION_DURATION as Mt,DRAG_THRESHOLD as Pt,EDGE_PADDING as xt,MAX_DIAL_SLOTS as wt,DIAL_START_ANGLE as Ut,DIAL_BUTTON_SIZE as Ht,DIAL_ICON_SIZE as Bt,DIAL_ICON_PADDING as Kt,DIAL_GRID_LINE_COUNT as zt,dialColors as Wt,dialStyles as Xt,getGridLineRotations as jt,getDialLayout as kt,getIconAngle as Zt,getIconPosition as Yt,getAllIconPositions as Vt,dialAnimationConfig as Jt,getIconStaggerInputRange as $t,dialCSSBeziers as qt,generateDialCSSKeyframes as Qt,getDialCSSAnimationStyles as te,getDialCSSKeyframesString as ee,getSpiralAnimationPosition as se,getStaggeredIconProgress as oe}from"@buoy-gg/floating-tools-core";import{USAGE_HALF_LIFE_MS as ae,USAGE_MIN_SCORE as ie,decayScore as ne,recordUsage as le,rankToolIds as re,pruneUsage as ge}from"@buoy-gg/floating-tools-core";import{SETTINGS_STORAGE_KEY as Se,MAX_SETTINGS_DIAL_SLOTS as Te}from"@buoy-gg/floating-tools-core";import{settingsTabs as ue}from"@buoy-gg/floating-tools-core";import{settingsColors as ce,toolColors as de,getToolColor as De,settingsStyles as me}from"@buoy-gg/floating-tools-core";import{toolLabels as ve,getToolLabel as fe,toolDescriptions as Ie,getToolDescription as pe}from"@buoy-gg/floating-tools-core";import{globalSettingsConfig as Ee}from"@buoy-gg/floating-tools-core";import{enforceDialLimit as Ae,sanitizeFloatingSettings as _e,mergeSettingsWithDefaults as be,generateDefaultSettings as Le,countEnabledTools as Ce,canEnableDialTool as Oe,getEnabledToolIds as Ne}from"@buoy-gg/floating-tools-core";import{SettingsEventBus as ye,settingsEventBus as Ge}from"@buoy-gg/floating-tools-core";export{Mt as ANIMATION_DURATION,Ht as DIAL_BUTTON_SIZE,zt as DIAL_GRID_LINE_COUNT,Kt as DIAL_ICON_PADDING,Bt as DIAL_ICON_SIZE,Ut as DIAL_START_ANGLE,Pt as DRAG_THRESHOLD,p as DevToolsContext,mt as DevToolsProvider,At as DevToolsStateManager,xt as EDGE_PADDING,Y as FloatingToolsContext,J as FloatingToolsProvider,Lt as FloatingToolsStore,wt as MAX_DIAL_SLOTS,Te as MAX_SETTINGS_DIAL_SLOTS,Se as SETTINGS_STORAGE_KEY,O as SettingsContext,ye as SettingsEventBus,it as SettingsProvider,ae as USAGE_HALF_LIFE_MS,ie as USAGE_MIN_SCORE,Rt as VISIBLE_HANDLE_WIDTH,Oe as canEnableDialTool,Ce as countEnabledTools,ne as decayScore,bt as devToolsReducer,_t as devToolsStateManager,Jt as dialAnimationConfig,qt as dialCSSBeziers,Wt as dialColors,Xt as dialStyles,Gt as easing,Ae as enforceDialLimit,Ct as floatingToolsColors,Le as generateDefaultSettings,Qt as generateDialCSSKeyframes,Vt as getAllIconPositions,te as getDialCSSAnimationStyles,ee as getDialCSSKeyframesString,kt as getDialLayout,Ne as getEnabledToolIds,jt as getGridLineRotations,yt as getGripIconLayout,Zt as getIconAngle,Yt as getIconPosition,$t as getIconStaggerInputRange,se as getSpiralAnimationPosition,oe as getStaggeredIconProgress,De as getToolColor,pe as getToolDescription,fe as getToolLabel,Nt as getUserStatusConfig,Ee as globalSettingsConfig,$ as interleaveWithDividers,ht as interpolate,Ft as interpolatePosition,be as mergeSettingsWithDefaults,ge as pruneUsage,re as rankToolIds,le as recordUsage,_e as sanitizeFloatingSettings,ce as settingsColors,Ge as settingsEventBus,me as settingsStyles,ue as settingsTabs,de as toolColors,Ie as toolDescriptions,ve as toolLabels,It as useDevTools,E as useDevToolsContext,pt as useDevToolsDial,ft as useDevToolsEnvironment,Et as useDevToolsSettings,N as useDevToolsState,Tt as useDialState,Z as useFloatingTools,V as useFloatingToolsContext,vt as useOptionalDevToolsContext,lt as useOptionalSettingsContext,F as useSettings,nt as useSettingsContext,ut as useSettingsModalState,Ot as withAlpha};
@@ -0,0 +1 @@
1
+ "use client";typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis);import{useMemo as l,useSyncExternalStore as f,useEffect as d,useRef as S}from"react";import{FloatingToolsStore as m}from"@buoy-gg/floating-tools-core/web/floating";import{useState as b}from"react";function p(r){let{screenSize:i,...o}=r,e=l(()=>new m({...o,screenWidth:i.width,screenHeight:i.height}),[o.enablePositionPersistence,o.storage,o.visibleHandleWidth,o.dragThreshold,o.edgePadding]),s=S(false),[n,h]=b(false);d(()=>(s.current||(s.current=true,e.initialize().then(()=>{h(true)})),()=>{e.destroy()}),[e]),d(()=>{e.setScreenSize(i.width,i.height)},[e,i.width,i.height]);let c=f(e.subscribe,e.getSnapshot),g=l(()=>({handleDragStart:t=>e.handleDragStart(t),handleDragMove:t=>e.handleDragMove(t),handleDragEnd:t=>e.handleDragEnd(t),toggleHideShow:()=>e.toggleHideShow(),commitPosition:t=>e.commitPosition(t),setBubbleSize:t=>e.setBubbleSize(t),setScreenSize:(t,u)=>e.setScreenSize(t,u),setMinPosition:t=>e.setMinPosition(t),forceHide:()=>e.forceHide(),forceShow:()=>e.forceShow()}),[e]);return{state:c,store:e,isInitialized:n,actions:g}}import{createContext as w,useContext as v}from"react";import{jsx as z}from"react/jsx-runtime";var P={isDragging:false,isHidden:false},a=w(P);function D(){return v(a)}function H({value:r,children:i}){return z(a.Provider,{value:r,children:i})}import{filterValidChildren as T}from"@buoy-gg/floating-tools-core/web/floating";function x(r,i){let o=T(r),e=[];return o.forEach((s,n)=>{e.push(s),n<o.length-1&&e.push(i(`divider-${n}`))}),e}export{p as a,a as b,D as c,H as d,x as e};
@@ -0,0 +1 @@
1
+ "use client";import{a as o,b as s,c as a,d as e,e as t}from"./chunks/chunk-PD42JYT2.mjs";export*from"@buoy-gg/floating-tools-core/web/floating";export{s as FloatingToolsContext,e as FloatingToolsProvider,t as interleaveWithDividers,o as useFloatingTools,a as useFloatingToolsContext};
@@ -0,0 +1 @@
1
+ "use client";import{a as Z,b as J,c as V,d as Y,e as Q}from"./chunks/chunk-PD42JYT2.mjs";import{useState as b,useEffect as R,useCallback as d,useMemo as L}from"react";import{settingsEventBus as M,SETTINGS_STORAGE_KEY as P,MAX_SETTINGS_DIAL_SLOTS as G,enforceDialLimit as q,mergeSettingsWithDefaults as $,generateDefaultSettings as ee,countEnabledTools as x,getEnabledToolIds as te}from"@buoy-gg/floating-tools-core/web";function F(e={}){let{availableTools:t=[],defaultFloatingTools:a,defaultDialTools:S,storage:l,initialSettings:D,onSettingsChange:c,subscribeToEventBus:T=true}=e,i=L(()=>ee(t,a,S),[t,a,S]),f=L(()=>Object.keys(i.dialTools),[i]),I=L(()=>Object.keys(i.floatingTools).filter(s=>s!=="environment"),[i]),[o,u]=b(D??i),[A,m]=b(true),[_,C]=b(false),[v,h]=b(null),y=d(async()=>{if(!l){m(false),C(true);return}try{m(true),h(null);let s=await l.getItem(P);if(s){let n=JSON.parse(s),g=$(i,n,{allowedDialKeys:f,allowedFloatingKeys:I});u(g)}else u(i)}catch(s){console.error("Failed to load dev tools settings:",s),h(s instanceof Error?s.message:"Failed to load settings"),u(i)}finally{m(false),C(true)}},[l,i,f,I]),r=d(async s=>{let n={...s,dialTools:q(s.dialTools)};try{l&&await l.setItem(P,JSON.stringify(n)),u(n),c?.(n),M.emit(n)}catch(g){throw console.error("Failed to save dev tools settings:",g),h(g instanceof Error?g.message:"Failed to save settings"),g}},[l,c]),H=d(s=>{let n=x(o.dialTools);if(!o.dialTools[s]&&n>=G)return;let g={...o,dialTools:{...o.dialTools,[s]:!o.dialTools[s]}};r(g)},[o,r]),K=d(s=>{let n={...o,floatingTools:{...o.floatingTools,[s]:!o.floatingTools[s]}};r(n)},[o,r]),W=d(()=>{let s={...o,floatingTools:{...o.floatingTools,environment:!o.floatingTools.environment}};r(s)},[o,r]),z=d(s=>{let n={...o,globalSettings:{...o.globalSettings,[s]:!o.globalSettings?.[s]}};r(n)},[o,r]),k=d(async()=>{await r(i)},[i,r]);R(()=>{y()},[y]),R(()=>T?M.addListener(s=>{u(s)}):void 0,[T]);let X=L(()=>{let s=x(o.dialTools),{dial:n,floating:g}=te(o);return{dialToolCount:s,isDialFull:s>=G,enabledDialTools:n,enabledFloatingTools:g,canEnableDialTool:j=>o.dialTools[j]?true:s<G}},[o]);return{settings:o,isLoading:A,isInitialized:_,error:v,actions:{toggleDialTool:H,toggleFloatingTool:K,toggleEnvironment:W,toggleGlobalSetting:z,saveSettings:r,resetToDefaults:k,reloadSettings:y},helpers:X}}import{createContext as se,useContext as w,useMemo as oe}from"react";import{jsx as ae}from"react/jsx-runtime";var O=se(null);function ie({children:e,availableTools:t=[],defaultFloatingTools:a,defaultDialTools:S,storage:l,initialSettings:D,onSettingsChange:c}){let T=F({availableTools:t,defaultFloatingTools:a,defaultDialTools:S,storage:l,initialSettings:D,onSettingsChange:c}),i=oe(()=>({...T,availableTools:t}),[T,t]);return ae(O.Provider,{value:i,children:e})}function ne(){let e=w(O);if(!e)throw new Error("useSettingsContext must be used within a SettingsProvider");return e}function le(){return w(O)}import{useSyncExternalStore as re,useMemo as ge}from"react";import{devToolsStateManager as Se}from"@buoy-gg/floating-tools-core/web";function N(e={}){let{manager:t=Se}=e,a=re(t.subscribe,t.getState,t.getServerState),S=ge(()=>({openDial:()=>t.openDial(),closeDial:()=>t.closeDial(),toggleDial:()=>t.toggleDial(),openSettings:()=>t.openSettings(),closeSettings:()=>t.closeSettings(),setSettingsTab:l=>t.setSettingsTab(l),initialize:()=>t.initialize(),reset:()=>t.reset()}),[t]);return{state:a,actions:S,manager:t}}function Te(e={}){let{state:t,actions:a}=N(e);return{isOpen:t.isDialOpen,open:a.openDial,close:a.closeDial,toggle:a.toggleDial}}function ue(e={}){let{state:t,actions:a}=N(e);return{isOpen:t.isSettingsOpen,activeTab:t.activeSettingsTab,open:a.openSettings,close:a.closeSettings,setTab:a.setSettingsTab}}import{createContext as ce,useContext as U,useMemo as B}from"react";import{devToolsStateManager as de}from"@buoy-gg/floating-tools-core/web";import{jsx as De}from"react/jsx-runtime";var p=ce(null);p.displayName="DevToolsContext";function me({children:e,tools:t=[],defaultFloatingTools:a,defaultDialTools:S,environment:l,userRole:D,availableEnvironments:c,onEnvironmentSwitch:T,stateManager:i=de}){let{state:f,actions:I}=N({manager:i}),o=B(()=>t.map(v=>({id:v.id,name:v.name,description:v.description,slot:v.slot})),[t]),{settings:u,isLoading:A,actions:m,helpers:_}=F({availableTools:o,defaultFloatingTools:a,defaultDialTools:S}),C=B(()=>({devToolsState:f,devToolsActions:I,settings:u,isSettingsLoading:A,settingsActions:m,settingsHelpers:_,tools:t,environment:l,userRole:D,availableEnvironments:c,onEnvironmentSwitch:T}),[f,I,u,A,m,_,t,l,D,c,T]);return De(p.Provider,{value:C,children:e})}function E(){let e=U(p);if(!e)throw new Error("useDevToolsContext must be used within a DevToolsProvider. Wrap your app with <DevToolsProvider> or <FloatingDevTools>.");return e}function ve(){return U(p)}function fe(){let e=E();return{environment:e.environment,userRole:e.userRole,availableEnvironments:e.availableEnvironments,onEnvironmentSwitch:e.onEnvironmentSwitch}}function Ie(){let e=E();return{tools:e.tools,settings:e.settings,isLoading:e.isSettingsLoading}}function pe(){let e=E();return{isOpen:e.devToolsState.isDialOpen,open:e.devToolsActions.openDial,close:e.devToolsActions.closeDial,toggle:e.devToolsActions.toggleDial}}function Ee(){let e=E();return{isOpen:e.devToolsState.isSettingsOpen,activeTab:e.devToolsState.activeSettingsTab,open:e.devToolsActions.openSettings,close:e.devToolsActions.closeSettings,setTab:e.devToolsActions.setSettingsTab,settings:e.settings,actions:e.settingsActions,helpers:e.settingsHelpers}}import{DevToolsStateManager as Ae,devToolsStateManager as _e,devToolsReducer as Ce}from"@buoy-gg/floating-tools-core/web";import{FloatingToolsStore as be,floatingToolsColors as Le,withAlpha as Oe,getUserStatusConfig as Ne,getGripIconLayout as he,easing as ye,interpolate as Ge,interpolatePosition as Fe,VISIBLE_HANDLE_WIDTH as Re,ANIMATION_DURATION as Me,DRAG_THRESHOLD as Pe,EDGE_PADDING as xe,MAX_DIAL_SLOTS as we,DIAL_START_ANGLE as Ue,DIAL_BUTTON_SIZE as Be,DIAL_ICON_SIZE as He,DIAL_ICON_PADDING as Ke,DIAL_GRID_LINE_COUNT as We,dialColors as ze,dialStyles as ke,getGridLineRotations as Xe,getDialLayout as je,getIconAngle as Ze,getIconPosition as Je,getAllIconPositions as Ve,dialAnimationConfig as Ye,getIconStaggerInputRange as Qe,dialCSSBeziers as qe,generateDialCSSKeyframes as $e,getDialCSSAnimationStyles as et,getDialCSSKeyframesString as tt,getSpiralAnimationPosition as st,getStaggeredIconProgress as ot}from"@buoy-gg/floating-tools-core/web";import{USAGE_HALF_LIFE_MS as at,USAGE_MIN_SCORE as it,decayScore as nt,recordUsage as lt,rankToolIds as rt,pruneUsage as gt}from"@buoy-gg/floating-tools-core/web";import{SETTINGS_STORAGE_KEY as St,MAX_SETTINGS_DIAL_SLOTS as Tt}from"@buoy-gg/floating-tools-core/web";import{settingsTabs as ut}from"@buoy-gg/floating-tools-core/web";import{settingsColors as ct,toolColors as dt,getToolColor as Dt,settingsStyles as mt}from"@buoy-gg/floating-tools-core/web";import{toolLabels as vt,getToolLabel as ft,toolDescriptions as It,getToolDescription as pt}from"@buoy-gg/floating-tools-core/web";import{globalSettingsConfig as Et}from"@buoy-gg/floating-tools-core/web";import{enforceDialLimit as At,sanitizeFloatingSettings as _t,mergeSettingsWithDefaults as Ct,generateDefaultSettings as bt,countEnabledTools as Lt,canEnableDialTool as Ot,getEnabledToolIds as Nt}from"@buoy-gg/floating-tools-core/web";import{SettingsEventBus as ht,settingsEventBus as yt}from"@buoy-gg/floating-tools-core/web";export{Me as ANIMATION_DURATION,Be as DIAL_BUTTON_SIZE,We as DIAL_GRID_LINE_COUNT,Ke as DIAL_ICON_PADDING,He as DIAL_ICON_SIZE,Ue as DIAL_START_ANGLE,Pe as DRAG_THRESHOLD,p as DevToolsContext,me as DevToolsProvider,Ae as DevToolsStateManager,xe as EDGE_PADDING,J as FloatingToolsContext,Y as FloatingToolsProvider,be as FloatingToolsStore,we as MAX_DIAL_SLOTS,Tt as MAX_SETTINGS_DIAL_SLOTS,St as SETTINGS_STORAGE_KEY,O as SettingsContext,ht as SettingsEventBus,ie as SettingsProvider,at as USAGE_HALF_LIFE_MS,it as USAGE_MIN_SCORE,Re as VISIBLE_HANDLE_WIDTH,Ot as canEnableDialTool,Lt as countEnabledTools,nt as decayScore,Ce as devToolsReducer,_e as devToolsStateManager,Ye as dialAnimationConfig,qe as dialCSSBeziers,ze as dialColors,ke as dialStyles,ye as easing,At as enforceDialLimit,Le as floatingToolsColors,bt as generateDefaultSettings,$e as generateDialCSSKeyframes,Ve as getAllIconPositions,et as getDialCSSAnimationStyles,tt as getDialCSSKeyframesString,je as getDialLayout,Nt as getEnabledToolIds,Xe as getGridLineRotations,he as getGripIconLayout,Ze as getIconAngle,Je as getIconPosition,Qe as getIconStaggerInputRange,st as getSpiralAnimationPosition,ot as getStaggeredIconProgress,Dt as getToolColor,pt as getToolDescription,ft as getToolLabel,Ne as getUserStatusConfig,Et as globalSettingsConfig,Q as interleaveWithDividers,Ge as interpolate,Fe as interpolatePosition,Ct as mergeSettingsWithDefaults,gt as pruneUsage,rt as rankToolIds,lt as recordUsage,_t as sanitizeFloatingSettings,ct as settingsColors,yt as settingsEventBus,mt as settingsStyles,ut as settingsTabs,dt as toolColors,It as toolDescriptions,vt as toolLabels,Ie as useDevTools,E as useDevToolsContext,pe as useDevToolsDial,fe as useDevToolsEnvironment,Ee as useDevToolsSettings,N as useDevToolsState,Te as useDialState,Z as useFloatingTools,V as useFloatingToolsContext,ve as useOptionalDevToolsContext,le as useOptionalSettingsContext,F as useSettings,ne as useSettingsContext,ue as useSettingsModalState,Oe as withAlpha};
package/package.json CHANGED
@@ -1,27 +1,43 @@
1
1
  {
2
2
  "name": "@buoy-gg/floating-tools-react",
3
- "version": "7.0.40",
3
+ "version": "7.0.42",
4
4
  "description": "React bindings for floating tools - shared hooks and context for web and React Native",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
+ "browser": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/web/index.mjs"
13
+ },
10
14
  "types": "./dist/index.d.ts",
11
15
  "import": "./dist/index.mjs",
12
16
  "require": "./dist/index.js"
13
17
  },
14
18
  "./floating": {
19
+ "browser": {
20
+ "types": "./dist/floating.d.ts",
21
+ "default": "./dist/web/floating.mjs"
22
+ },
15
23
  "types": "./dist/floating.d.ts",
16
24
  "import": "./dist/floating.mjs",
17
25
  "require": "./dist/floating.js"
26
+ },
27
+ "./web": {
28
+ "types": "./dist/index.d.ts",
29
+ "default": "./dist/web/index.mjs"
30
+ },
31
+ "./web/floating": {
32
+ "types": "./dist/floating.d.ts",
33
+ "default": "./dist/web/floating.mjs"
18
34
  }
19
35
  },
20
36
  "files": [
21
37
  "dist"
22
38
  ],
23
39
  "dependencies": {
24
- "@buoy-gg/floating-tools-core": "^7.0.40"
40
+ "@buoy-gg/floating-tools-core": "^7.0.42"
25
41
  },
26
42
  "peerDependencies": {
27
43
  "react": ">=17.0.0"
@@ -49,8 +65,9 @@
49
65
  }
50
66
  },
51
67
  "scripts": {
52
- "build": "tsup src/index.ts src/floating.ts --format cjs,esm --dts --clean --no-sourcemap --minify",
68
+ "build": "tsup src/index.ts src/floating.ts --format cjs,esm --dts --clean --no-sourcemap --minify && pnpm run build:web",
53
69
  "dev": "tsup src/index.ts --format cjs,esm --dts --watch",
54
- "typecheck": "tsc --noEmit"
70
+ "typecheck": "tsc --noEmit",
71
+ "build:web": "node ../../scripts/build-web.mjs floating-tools-react"
55
72
  }
56
73
  }