@buoy-gg/floating-tools-react 2.1.15 → 3.0.1
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/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FloatingToolsOptions, FloatingToolsState, FloatingToolsStore, DragEventData, Position, DragEndResult, AvailableToolConfig, StorageAdapter, DevToolsSettings, DevToolsStateManager, DevToolsState, SettingsTabKey, WebToolConfig, Environment, UserRole } from '@buoy-gg/floating-tools-core';
|
|
2
|
-
export { ANIMATION_DURATION, AvailableToolConfig, BaseToolConfig, DIAL_BUTTON_SIZE, DIAL_GRID_LINE_COUNT, DIAL_ICON_PADDING, DIAL_ICON_SIZE, DIAL_START_ANGLE, DRAG_THRESHOLD, DevToolsAction, DevToolsSettings, DevToolsState, DevToolsStateManager, DialAnimationConfigType, DialCSSBezierKey, DialColorKey, DialEasingName, DialLayout, DialLayoutConfig, DragEndResult, DragEventData, EDGE_PADDING, EasingFunction, Environment, FloatingToolsState, FloatingToolsStore, GlobalDevToolsSettings, GlobalSettingConfig, GripIconLayout, IconPosition, MAX_DIAL_SLOTS, MAX_SETTINGS_DIAL_SLOTS, MergeSettingsOptions, Position, SETTINGS_STORAGE_KEY, SettingsColorKey, SettingsEventBus, SettingsTab, SettingsTabKey, Size, SpiralPosition, SpringConfig, StorageAdapter, ToolMetadata, ToolSlot, UserRole, UserStatusConfig, VISIBLE_HANDLE_WIDTH, WebToolConfig, canEnableDialTool, countEnabledTools, 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, interpolate, interpolatePosition, mergeSettingsWithDefaults, sanitizeFloatingSettings, settingsColors, settingsEventBus, settingsStyles, settingsTabs, toolColors, toolDescriptions, toolLabels, withAlpha } from '@buoy-gg/floating-tools-core';
|
|
2
|
+
export { ANIMATION_DURATION, AvailableToolConfig, BaseToolConfig, DIAL_BUTTON_SIZE, DIAL_GRID_LINE_COUNT, DIAL_ICON_PADDING, DIAL_ICON_SIZE, DIAL_START_ANGLE, DRAG_THRESHOLD, DevToolsAction, DevToolsSettings, DevToolsState, DevToolsStateManager, DialAnimationConfigType, DialCSSBezierKey, DialColorKey, DialEasingName, DialLayout, DialLayoutConfig, DragEndResult, DragEventData, EDGE_PADDING, EasingFunction, Environment, FloatingToolsState, FloatingToolsStore, GlobalDevToolsSettings, GlobalSettingConfig, GripIconLayout, IconPosition, MAX_DIAL_SLOTS, MAX_SETTINGS_DIAL_SLOTS, MergeSettingsOptions, Position, SETTINGS_STORAGE_KEY, SettingsColorKey, SettingsEventBus, SettingsTab, SettingsTabKey, Size, SpiralPosition, SpringConfig, StorageAdapter, ToolMetadata, ToolSlot, USAGE_HALF_LIFE_MS, USAGE_MIN_SCORE, UsageEntry, UsageMap, UserRole, UserStatusConfig, VISIBLE_HANDLE_WIDTH, WebToolConfig, 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, interpolate, interpolatePosition, mergeSettingsWithDefaults, pruneUsage, rankToolIds, recordUsage, sanitizeFloatingSettings, settingsColors, settingsEventBus, settingsStyles, settingsTabs, toolColors, toolDescriptions, toolLabels, withAlpha } from '@buoy-gg/floating-tools-core';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import * as react from 'react';
|
|
5
5
|
import { ReactNode, ReactElement } from 'react';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FloatingToolsOptions, FloatingToolsState, FloatingToolsStore, DragEventData, Position, DragEndResult, AvailableToolConfig, StorageAdapter, DevToolsSettings, DevToolsStateManager, DevToolsState, SettingsTabKey, WebToolConfig, Environment, UserRole } from '@buoy-gg/floating-tools-core';
|
|
2
|
-
export { ANIMATION_DURATION, AvailableToolConfig, BaseToolConfig, DIAL_BUTTON_SIZE, DIAL_GRID_LINE_COUNT, DIAL_ICON_PADDING, DIAL_ICON_SIZE, DIAL_START_ANGLE, DRAG_THRESHOLD, DevToolsAction, DevToolsSettings, DevToolsState, DevToolsStateManager, DialAnimationConfigType, DialCSSBezierKey, DialColorKey, DialEasingName, DialLayout, DialLayoutConfig, DragEndResult, DragEventData, EDGE_PADDING, EasingFunction, Environment, FloatingToolsState, FloatingToolsStore, GlobalDevToolsSettings, GlobalSettingConfig, GripIconLayout, IconPosition, MAX_DIAL_SLOTS, MAX_SETTINGS_DIAL_SLOTS, MergeSettingsOptions, Position, SETTINGS_STORAGE_KEY, SettingsColorKey, SettingsEventBus, SettingsTab, SettingsTabKey, Size, SpiralPosition, SpringConfig, StorageAdapter, ToolMetadata, ToolSlot, UserRole, UserStatusConfig, VISIBLE_HANDLE_WIDTH, WebToolConfig, canEnableDialTool, countEnabledTools, 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, interpolate, interpolatePosition, mergeSettingsWithDefaults, sanitizeFloatingSettings, settingsColors, settingsEventBus, settingsStyles, settingsTabs, toolColors, toolDescriptions, toolLabels, withAlpha } from '@buoy-gg/floating-tools-core';
|
|
2
|
+
export { ANIMATION_DURATION, AvailableToolConfig, BaseToolConfig, DIAL_BUTTON_SIZE, DIAL_GRID_LINE_COUNT, DIAL_ICON_PADDING, DIAL_ICON_SIZE, DIAL_START_ANGLE, DRAG_THRESHOLD, DevToolsAction, DevToolsSettings, DevToolsState, DevToolsStateManager, DialAnimationConfigType, DialCSSBezierKey, DialColorKey, DialEasingName, DialLayout, DialLayoutConfig, DragEndResult, DragEventData, EDGE_PADDING, EasingFunction, Environment, FloatingToolsState, FloatingToolsStore, GlobalDevToolsSettings, GlobalSettingConfig, GripIconLayout, IconPosition, MAX_DIAL_SLOTS, MAX_SETTINGS_DIAL_SLOTS, MergeSettingsOptions, Position, SETTINGS_STORAGE_KEY, SettingsColorKey, SettingsEventBus, SettingsTab, SettingsTabKey, Size, SpiralPosition, SpringConfig, StorageAdapter, ToolMetadata, ToolSlot, USAGE_HALF_LIFE_MS, USAGE_MIN_SCORE, UsageEntry, UsageMap, UserRole, UserStatusConfig, VISIBLE_HANDLE_WIDTH, WebToolConfig, 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, interpolate, interpolatePosition, mergeSettingsWithDefaults, pruneUsage, rankToolIds, recordUsage, sanitizeFloatingSettings, settingsColors, settingsEventBus, settingsStyles, settingsTabs, toolColors, toolDescriptions, toolLabels, withAlpha } from '@buoy-gg/floating-tools-core';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import * as react from 'react';
|
|
5
5
|
import { ReactNode, ReactElement } from 'react';
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var k=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var Ee=Object.getOwnPropertyNames;var he=Object.prototype.hasOwnProperty;var Pe=(t,o)=>{for(var s in o)k(t,s,{get:o[s],enumerable:!0})},Ae=(t,o,s,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of Ee(o))!he.call(t,a)&&a!==s&&k(t,a,{get:()=>o[a],enumerable:!(n=ye(o,a))||n.enumerable});return t};var Fe=t=>Ae(k({},"__esModule",{value:!0}),t);var Re={};Pe(Re,{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:()=>R,DevToolsProvider:()=>le,DevToolsStateManager:()=>L.DevToolsStateManager,EDGE_PADDING:()=>e.EDGE_PADDING,FloatingToolsContext:()=>z,FloatingToolsProvider:()=>$,FloatingToolsStore:()=>e.FloatingToolsStore,MAX_DIAL_SLOTS:()=>e.MAX_DIAL_SLOTS,MAX_SETTINGS_DIAL_SLOTS:()=>G.MAX_SETTINGS_DIAL_SLOTS,SETTINGS_STORAGE_KEY:()=>G.SETTINGS_STORAGE_KEY,SettingsContext:()=>U,SettingsEventBus:()=>H.SettingsEventBus,SettingsProvider:()=>Q,VISIBLE_HANDLE_WIDTH:()=>e.VISIBLE_HANDLE_WIDTH,canEnableDialTool:()=>c.canEnableDialTool,countEnabledTools:()=>c.countEnabledTools,devToolsReducer:()=>L.devToolsReducer,devToolsStateManager:()=>L.devToolsStateManager,dialAnimationConfig:()=>e.dialAnimationConfig,dialCSSBeziers:()=>e.dialCSSBeziers,dialColors:()=>e.dialColors,dialStyles:()=>e.dialStyles,easing:()=>e.easing,enforceDialLimit:()=>c.enforceDialLimit,floatingToolsColors:()=>e.floatingToolsColors,generateDefaultSettings:()=>c.generateDefaultSettings,generateDialCSSKeyframes:()=>e.generateDialCSSKeyframes,getAllIconPositions:()=>e.getAllIconPositions,getDialCSSAnimationStyles:()=>e.getDialCSSAnimationStyles,getDialCSSKeyframesString:()=>e.getDialCSSKeyframesString,getDialLayout:()=>e.getDialLayout,getEnabledToolIds:()=>c.getEnabledToolIds,getGridLineRotations:()=>e.getGridLineRotations,getGripIconLayout:()=>e.getGripIconLayout,getIconAngle:()=>e.getIconAngle,getIconPosition:()=>e.getIconPosition,getIconStaggerInputRange:()=>e.getIconStaggerInputRange,getSpiralAnimationPosition:()=>e.getSpiralAnimationPosition,getStaggeredIconProgress:()=>e.getStaggeredIconProgress,getToolColor:()=>C.getToolColor,getToolDescription:()=>y.getToolDescription,getToolLabel:()=>y.getToolLabel,getUserStatusConfig:()=>e.getUserStatusConfig,globalSettingsConfig:()=>pe.globalSettingsConfig,interleaveWithDividers:()=>ve,interpolate:()=>e.interpolate,interpolatePosition:()=>e.interpolatePosition,mergeSettingsWithDefaults:()=>c.mergeSettingsWithDefaults,sanitizeFloatingSettings:()=>c.sanitizeFloatingSettings,settingsColors:()=>C.settingsColors,settingsEventBus:()=>H.settingsEventBus,settingsStyles:()=>C.settingsStyles,settingsTabs:()=>de.settingsTabs,toolColors:()=>C.toolColors,toolDescriptions:()=>y.toolDescriptions,toolLabels:()=>y.toolLabels,useDevTools:()=>ge,useDevToolsContext:()=>O,useDevToolsDial:()=>Se,useDevToolsEnvironment:()=>re,useDevToolsSettings:()=>Te,useDevToolsState:()=>I,useDialState:()=>ne,useFloatingTools:()=>J,useFloatingToolsContext:()=>Z,useOptionalDevToolsContext:()=>ae,useOptionalSettingsContext:()=>ee,useSettings:()=>F,useSettingsContext:()=>j,useSettingsModalState:()=>se,withAlpha:()=>e.withAlpha});module.exports=Fe(Re);var D=require("react"),X=require("@buoy-gg/floating-tools-core"),Y=require("react");function J(t){let{screenSize:o,...s}=t,n=(0,D.useMemo)(()=>new X.FloatingToolsStore({...s,screenWidth:o.width,screenHeight:o.height}),[s.enablePositionPersistence,s.storage,s.visibleHandleWidth,s.dragThreshold,s.edgePadding]),a=(0,D.useRef)(!1),[v,f]=(0,Y.useState)(!1);(0,D.useEffect)(()=>(a.current||(a.current=!0,n.initialize().then(()=>{f(!0)})),()=>{n.destroy()}),[n]),(0,D.useEffect)(()=>{n.setScreenSize(o.width,o.height)},[n,o.width,o.height]);let p=(0,D.useSyncExternalStore)(n.subscribe,n.getSnapshot),T=(0,D.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,E)=>n.setScreenSize(S,E),setMinPosition:S=>n.setMinPosition(S)}),[n]);return{state:p,store:n,isInitialized:v,actions:T}}var _=require("react"),q=require("react/jsx-runtime"),Ie={isDragging:!1,isHidden:!1},z=(0,_.createContext)(Ie);function Z(){return(0,_.useContext)(z)}function $({value:t,children:o}){return(0,q.jsx)(z.Provider,{value:t,children:o})}var r=require("react"),g=require("@buoy-gg/floating-tools-core");function F(t={}){let{availableTools:o=[],defaultFloatingTools:s,defaultDialTools:n,storage:a,initialSettings:v,onSettingsChange:f,subscribeToEventBus:p=!0}=t,T=(0,r.useMemo)(()=>(0,g.generateDefaultSettings)(o,s,n),[o,s,n]),S=(0,r.useMemo)(()=>Object.keys(T.dialTools),[T]),E=(0,r.useMemo)(()=>Object.keys(T.floatingTools).filter(i=>i!=="environment"),[T]),[l,b]=(0,r.useState)(v??T),[N,P]=(0,r.useState)(!0),[w,M]=(0,r.useState)(!1),[A,K]=(0,r.useState)(null),W=(0,r.useCallback)(async()=>{if(!a){P(!1),M(!0);return}try{P(!0),K(null);let i=await a.getItem(g.SETTINGS_STORAGE_KEY);if(i){let u=JSON.parse(i),m=(0,g.mergeSettingsWithDefaults)(T,u,{allowedDialKeys:S,allowedFloatingKeys:E});b(m)}else b(T)}catch(i){console.error("Failed to load dev tools settings:",i),K(i instanceof Error?i.message:"Failed to load settings"),b(T)}finally{P(!1),M(!0)}},[a,T,S,E]),d=(0,r.useCallback)(async i=>{let u={...i,dialTools:(0,g.enforceDialLimit)(i.dialTools)};try{a&&await a.setItem(g.SETTINGS_STORAGE_KEY,JSON.stringify(u)),b(u),f?.(u),g.settingsEventBus.emit(u)}catch(m){throw console.error("Failed to save dev tools settings:",m),K(m instanceof Error?m.message:"Failed to save settings"),m}},[a,f]),De=(0,r.useCallback)(i=>{let u=(0,g.countEnabledTools)(l.dialTools);if(!l.dialTools[i]&&u>=g.MAX_SETTINGS_DIAL_SLOTS)return;let B={...l,dialTools:{...l.dialTools,[i]:!l.dialTools[i]}};d(B)},[l,d]),fe=(0,r.useCallback)(i=>{let u={...l,floatingTools:{...l.floatingTools,[i]:!l.floatingTools[i]}};d(u)},[l,d]),me=(0,r.useCallback)(()=>{let i={...l,floatingTools:{...l.floatingTools,environment:!l.floatingTools.environment}};d(i)},[l,d]),be=(0,r.useCallback)(i=>{let u={...l,globalSettings:{...l.globalSettings,[i]:!l.globalSettings?.[i]}};d(u)},[l,d]),xe=(0,r.useCallback)(async()=>{await d(T)},[T,d]);(0,r.useEffect)(()=>{W()},[W]),(0,r.useEffect)(()=>p?g.settingsEventBus.addListener(u=>{b(u)}):void 0,[p]);let Ce=(0,r.useMemo)(()=>{let i=(0,g.countEnabledTools)(l.dialTools),{dial:u,floating:m}=(0,g.getEnabledToolIds)(l);return{dialToolCount:i,isDialFull:i>=g.MAX_SETTINGS_DIAL_SLOTS,enabledDialTools:u,enabledFloatingTools:m,canEnableDialTool:B=>l.dialTools[B]?!0:i<g.MAX_SETTINGS_DIAL_SLOTS}},[l]);return{settings:l,isLoading:N,isInitialized:w,error:A,actions:{toggleDialTool:De,toggleFloatingTool:fe,toggleEnvironment:me,toggleGlobalSetting:be,saveSettings:d,resetToDefaults:xe,reloadSettings:W},helpers:Ce}}var h=require("react");var te=require("react/jsx-runtime"),U=(0,h.createContext)(null);function Q({children:t,availableTools:o=[],defaultFloatingTools:s,defaultDialTools:n,storage:a,initialSettings:v,onSettingsChange:f}){let p=F({availableTools:o,defaultFloatingTools:s,defaultDialTools:n,storage:a,initialSettings:v,onSettingsChange:f}),T=(0,h.useMemo)(()=>({...p,availableTools:o}),[p,o]);return(0,te.jsx)(U.Provider,{value:T,children:t})}function j(){let t=(0,h.useContext)(U);if(!t)throw new Error("useSettingsContext must be used within a SettingsProvider");return t}function ee(){return(0,h.useContext)(U)}var V=require("react"),oe=require("@buoy-gg/floating-tools-core");function I(t={}){let{manager:o=oe.devToolsStateManager}=t,s=(0,V.useSyncExternalStore)(o.subscribe,o.getState,o.getServerState),n=(0,V.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 ne(t={}){let{state:o,actions:s}=I(t);return{isOpen:o.isDialOpen,open:s.openDial,close:s.closeDial,toggle:s.toggleDial}}function se(t={}){let{state:o,actions:s}=I(t);return{isOpen:o.isSettingsOpen,activeTab:o.activeSettingsTab,open:s.openSettings,close:s.closeSettings,setTab:s.setSettingsTab}}var x=require("react"),ie=require("@buoy-gg/floating-tools-core");var ue=require("react/jsx-runtime"),R=(0,x.createContext)(null);R.displayName="DevToolsContext";function le({children:t,tools:o=[],defaultFloatingTools:s,defaultDialTools:n,environment:a,userRole:v,availableEnvironments:f,onEnvironmentSwitch:p,stateManager:T=ie.devToolsStateManager}){let{state:S,actions:E}=I({manager:T}),l=(0,x.useMemo)(()=>o.map(A=>({id:A.id,name:A.name,description:A.description,slot:A.slot})),[o]),{settings:b,isLoading:N,actions:P,helpers:w}=F({availableTools:l,defaultFloatingTools:s,defaultDialTools:n}),M=(0,x.useMemo)(()=>({devToolsState:S,devToolsActions:E,settings:b,isSettingsLoading:N,settingsActions:P,settingsHelpers:w,tools:o,environment:a,userRole:v,availableEnvironments:f,onEnvironmentSwitch:p}),[S,E,b,N,P,w,o,a,v,f,p]);return(0,ue.jsx)(R.Provider,{value:M,children:t})}function O(){let t=(0,x.useContext)(R);if(!t)throw new Error("useDevToolsContext must be used within a DevToolsProvider. Wrap your app with <DevToolsProvider> or <FloatingDevTools>.");return t}function ae(){return(0,x.useContext)(R)}function re(){let t=O();return{environment:t.environment,userRole:t.userRole,availableEnvironments:t.availableEnvironments,onEnvironmentSwitch:t.onEnvironmentSwitch}}function ge(){let t=O();return{tools:t.tools,settings:t.settings,isLoading:t.isSettingsLoading}}function Se(){let t=O();return{isOpen:t.devToolsState.isDialOpen,open:t.devToolsActions.openDial,close:t.devToolsActions.closeDial,toggle:t.devToolsActions.toggleDial}}function Te(){let t=O();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 ce=require("@buoy-gg/floating-tools-core");function ve(t,o){let s=(0,ce.filterValidChildren)(t),n=[];return s.forEach((a,v)=>{n.push(a),v<s.length-1&&n.push(o(`divider-${v}`))}),n}var L=require("@buoy-gg/floating-tools-core"),e=require("@buoy-gg/floating-tools-core"),G=require("@buoy-gg/floating-tools-core"),de=require("@buoy-gg/floating-tools-core"),C=require("@buoy-gg/floating-tools-core"),y=require("@buoy-gg/floating-tools-core"),pe=require("@buoy-gg/floating-tools-core"),c=require("@buoy-gg/floating-tools-core"),H=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,VISIBLE_HANDLE_WIDTH,canEnableDialTool,countEnabledTools,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,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 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:()=>N,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:()=>c.canEnableDialTool,countEnabledTools:()=>c.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:()=>c.enforceDialLimit,floatingToolsColors:()=>e.floatingToolsColors,generateDefaultSettings:()=>c.generateDefaultSettings,generateDialCSSKeyframes:()=>e.generateDialCSSKeyframes,getAllIconPositions:()=>e.getAllIconPositions,getDialCSSAnimationStyles:()=>e.getDialCSSAnimationStyles,getDialCSSKeyframesString:()=>e.getDialCSSKeyframesString,getDialLayout:()=>e.getDialLayout,getEnabledToolIds:()=>c.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:()=>c.mergeSettingsWithDefaults,pruneUsage:()=>v.pruneUsage,rankToolIds:()=>v.rankToolIds,recordUsage:()=>v.recordUsage,sanitizeFloatingSettings:()=>c.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:()=>ue,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"),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)}),[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),[_,A]=(0,r.useState)(!0),[w,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 u=JSON.parse(i),b=(0,g.mergeSettingsWithDefaults)(T,u,{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 u={...i,dialTools:(0,g.enforceDialLimit)(i.dialTools)};try{a&&await a.setItem(g.SETTINGS_STORAGE_KEY,JSON.stringify(u)),x(u),m?.(u),g.settingsEventBus.emit(u)}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 u=(0,g.countEnabledTools)(l.dialTools);if(!l.dialTools[i]&&u>=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 u={...l,floatingTools:{...l.floatingTools,[i]:!l.floatingTools[i]}};p(u)},[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 u={...l,globalSettings:{...l.globalSettings,[i]:!l.globalSettings?.[i]}};p(u)},[l,p]),Ce=(0,r.useCallback)(async()=>{await p(T)},[T,p]);(0,r.useEffect)(()=>{B()},[B]),(0,r.useEffect)(()=>D?g.settingsEventBus.addListener(u=>{x(u)}):void 0,[D]);let ye=(0,r.useMemo)(()=>{let i=(0,g.countEnabledTools)(l.dialTools),{dial:u,floating:b}=(0,g.getEnabledToolIds)(l);return{dialToolCount:i,isDialFull:i>=g.MAX_SETTINGS_DIAL_SLOTS,enabledDialTools:u,enabledFloatingTools:b,canEnableDialTool:k=>l.dialTools[k]?!0:i<g.MAX_SETTINGS_DIAL_SLOTS}},[l]);return{settings:l,isLoading:_,isInitialized:w,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"),N=(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)(N.Provider,{value:T,children:t})}function ee(){let t=(0,P.useContext)(N);if(!t)throw new Error("useSettingsContext must be used within a SettingsProvider");return t}function te(){return(0,P.useContext)(N)}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 ce=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:_,actions:A,helpers:w}=I({availableTools:l,defaultFloatingTools:s,defaultDialTools:n}),M=(0,C.useMemo)(()=>({devToolsState:S,devToolsActions:h,settings:x,isSettingsLoading:_,settingsActions:A,settingsHelpers:w,tools:o,environment:a,userRole:d,availableEnvironments:m,onEnvironmentSwitch:D}),[S,h,x,_,A,w,o,a,d,m,D]);return(0,ce.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 ue(){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");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"),c=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});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useMemo as w,useSyncExternalStore as $,useEffect as M,useRef as q}from"react";import{FloatingToolsStore as Q}from"@buoy-gg/floating-tools-core";import{useState as ee}from"react";function j(e){let{screenSize:t,...s}=e,o=w(()=>new Q({...s,screenWidth:t.width,screenHeight:t.height}),[s.enablePositionPersistence,s.storage,s.visibleHandleWidth,s.dragThreshold,s.edgePadding]),a=q(!1),[S,c]=ee(!1);M(()=>(a.current||(a.current=!0,o.initialize().then(()=>{c(!0)})),()=>{o.destroy()}),[o]),M(()=>{o.setScreenSize(t.width,t.height)},[o,t.width,t.height]);let u=$(o.subscribe,o.getSnapshot),r=w(()=>({handleDragStart:l=>o.handleDragStart(l),handleDragMove:l=>o.handleDragMove(l),handleDragEnd:l=>o.handleDragEnd(l),toggleHideShow:()=>o.toggleHideShow(),commitPosition:l=>o.commitPosition(l),setBubbleSize:l=>o.setBubbleSize(l),setScreenSize:(l,p)=>o.setScreenSize(l,p),setMinPosition:l=>o.setMinPosition(l)}),[o]);return{state:u,store:o,isInitialized:S,actions:r}}import{createContext as te,useContext as oe}from"react";import{jsx as le}from"react/jsx-runtime";var ne={isDragging:!1,isHidden:!1},U=te(ne);function se(){return oe(U)}function ie({value:e,children:t}){return le(U.Provider,{value:e,children:t})}import{useState as A,useEffect as _,useCallback as D,useMemo as F}from"react";import{settingsEventBus as z,SETTINGS_STORAGE_KEY as V,MAX_SETTINGS_DIAL_SLOTS as N,enforceDialLimit as ae,mergeSettingsWithDefaults as re,generateDefaultSettings as ge,countEnabledTools as G,getEnabledToolIds as Se}from"@buoy-gg/floating-tools-core";function b(e={}){let{availableTools:t=[],defaultFloatingTools:s,defaultDialTools:o,storage:a,initialSettings:S,onSettingsChange:c,subscribeToEventBus:u=!0}=e,r=F(()=>ge(t,s,o),[t,s,o]),l=F(()=>Object.keys(r.dialTools),[r]),p=F(()=>Object.keys(r.floatingTools).filter(n=>n!=="environment"),[r]),[i,d]=A(S??r),[E,f]=A(!0),[h,P]=A(!1),[m,R]=A(null),O=D(async()=>{if(!a){f(!1),P(!0);return}try{f(!0),R(null);let n=await a.getItem(V);if(n){let g=JSON.parse(n),v=re(r,g,{allowedDialKeys:l,allowedFloatingKeys:p});d(v)}else d(r)}catch(n){console.error("Failed to load dev tools settings:",n),R(n instanceof Error?n.message:"Failed to load settings"),d(r)}finally{f(!1),P(!0)}},[a,r,l,p]),T=D(async n=>{let g={...n,dialTools:ae(n.dialTools)};try{a&&await a.setItem(V,JSON.stringify(g)),d(g),c?.(g),z.emit(g)}catch(v){throw console.error("Failed to save dev tools settings:",v),R(v instanceof Error?v.message:"Failed to save settings"),v}},[a,c]),B=D(n=>{let g=G(i.dialTools);if(!i.dialTools[n]&&g>=N)return;let L={...i,dialTools:{...i.dialTools,[n]:!i.dialTools[n]}};T(L)},[i,T]),k=D(n=>{let g={...i,floatingTools:{...i.floatingTools,[n]:!i.floatingTools[n]}};T(g)},[i,T]),X=D(()=>{let n={...i,floatingTools:{...i.floatingTools,environment:!i.floatingTools.environment}};T(n)},[i,T]),J=D(n=>{let g={...i,globalSettings:{...i.globalSettings,[n]:!i.globalSettings?.[n]}};T(g)},[i,T]),Y=D(async()=>{await T(r)},[r,T]);_(()=>{O()},[O]),_(()=>u?z.addListener(g=>{d(g)}):void 0,[u]);let Z=F(()=>{let n=G(i.dialTools),{dial:g,floating:v}=Se(i);return{dialToolCount:n,isDialFull:n>=N,enabledDialTools:g,enabledFloatingTools:v,canEnableDialTool:L=>i.dialTools[L]?!0:n<N}},[i]);return{settings:i,isLoading:E,isInitialized:h,error:m,actions:{toggleDialTool:B,toggleFloatingTool:k,toggleEnvironment:X,toggleGlobalSetting:J,saveSettings:T,resetToDefaults:Y,reloadSettings:O},helpers:Z}}import{createContext as Te,useContext as H,useMemo as ue}from"react";import{jsx as pe}from"react/jsx-runtime";var I=Te(null);function ce({children:e,availableTools:t=[],defaultFloatingTools:s,defaultDialTools:o,storage:a,initialSettings:S,onSettingsChange:c}){let u=b({availableTools:t,defaultFloatingTools:s,defaultDialTools:o,storage:a,initialSettings:S,onSettingsChange:c}),r=ue(()=>({...u,availableTools:t}),[u,t]);return pe(I.Provider,{value:r,children:e})}function ve(){let e=H(I);if(!e)throw new Error("useSettingsContext must be used within a SettingsProvider");return e}function de(){return H(I)}import{useSyncExternalStore as De,useMemo as fe}from"react";import{devToolsStateManager as me}from"@buoy-gg/floating-tools-core";function x(e={}){let{manager:t=me}=e,s=De(t.subscribe,t.getState,t.getServerState),o=fe(()=>({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:o,manager:t}}function be(e={}){let{state:t,actions:s}=x(e);return{isOpen:t.isDialOpen,open:s.openDial,close:s.closeDial,toggle:s.toggleDial}}function xe(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 W,useMemo as K}from"react";import{devToolsStateManager as ye}from"@buoy-gg/floating-tools-core";import{jsx as Re}from"react/jsx-runtime";var C=Ce(null);C.displayName="DevToolsContext";function Ee({children:e,tools:t=[],defaultFloatingTools:s,defaultDialTools:o,environment:a,userRole:S,availableEnvironments:c,onEnvironmentSwitch:u,stateManager:r=ye}){let{state:l,actions:p}=x({manager:r}),i=K(()=>t.map(m=>({id:m.id,name:m.name,description:m.description,slot:m.slot})),[t]),{settings:d,isLoading:E,actions:f,helpers:h}=b({availableTools:i,defaultFloatingTools:s,defaultDialTools:o}),P=K(()=>({devToolsState:l,devToolsActions:p,settings:d,isSettingsLoading:E,settingsActions:f,settingsHelpers:h,tools:t,environment:a,userRole:S,availableEnvironments:c,onEnvironmentSwitch:u}),[l,p,d,E,f,h,t,a,S,c,u]);return Re(C.Provider,{value:P,children:e})}function y(){let e=W(C);if(!e)throw new Error("useDevToolsContext must be used within a DevToolsProvider. Wrap your app with <DevToolsProvider> or <FloatingDevTools>.");return e}function he(){return W(C)}function Pe(){let e=y();return{environment:e.environment,userRole:e.userRole,availableEnvironments:e.availableEnvironments,onEnvironmentSwitch:e.onEnvironmentSwitch}}function Ae(){let e=y();return{tools:e.tools,settings:e.settings,isLoading:e.isSettingsLoading}}function Fe(){let e=y();return{isOpen:e.devToolsState.isDialOpen,open:e.devToolsActions.openDial,close:e.devToolsActions.closeDial,toggle:e.devToolsActions.toggleDial}}function Ie(){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{filterValidChildren as Oe}from"@buoy-gg/floating-tools-core";function Le(e,t){let s=Oe(e),o=[];return s.forEach((a,S)=>{o.push(a),S<s.length-1&&o.push(t(`divider-${S}`))}),o}import{DevToolsStateManager as bt,devToolsStateManager as xt,devToolsReducer as Ct}from"@buoy-gg/floating-tools-core";import{FloatingToolsStore as Et,floatingToolsColors as ht,withAlpha as Pt,getUserStatusConfig as At,getGripIconLayout as Ft,easing as It,interpolate as Rt,interpolatePosition as Ot,VISIBLE_HANDLE_WIDTH as Lt,ANIMATION_DURATION as Ut,DRAG_THRESHOLD as Nt,EDGE_PADDING as wt,MAX_DIAL_SLOTS as Mt,DIAL_START_ANGLE as _t,DIAL_BUTTON_SIZE as zt,DIAL_ICON_SIZE as Vt,DIAL_ICON_PADDING as Gt,DIAL_GRID_LINE_COUNT as Ht,dialColors as Kt,dialStyles as Wt,getGridLineRotations as Bt,getDialLayout as kt,getIconAngle as Xt,getIconPosition as Jt,getAllIconPositions as Yt,dialAnimationConfig as Zt,getIconStaggerInputRange as $t,dialCSSBeziers as qt,generateDialCSSKeyframes as Qt,getDialCSSAnimationStyles as jt,getDialCSSKeyframesString as eo,getSpiralAnimationPosition as to,getStaggeredIconProgress as oo}from"@buoy-gg/floating-tools-core";import{SETTINGS_STORAGE_KEY as so,MAX_SETTINGS_DIAL_SLOTS as io}from"@buoy-gg/floating-tools-core";import{settingsTabs as ao}from"@buoy-gg/floating-tools-core";import{settingsColors as go,toolColors as So,getToolColor as To,settingsStyles as uo}from"@buoy-gg/floating-tools-core";import{toolLabels as vo,getToolLabel as po,toolDescriptions as Do,getToolDescription as fo}from"@buoy-gg/floating-tools-core";import{globalSettingsConfig as bo}from"@buoy-gg/floating-tools-core";import{enforceDialLimit as Co,sanitizeFloatingSettings as yo,mergeSettingsWithDefaults as Eo,generateDefaultSettings as ho,countEnabledTools as Po,canEnableDialTool as Ao,getEnabledToolIds as Fo}from"@buoy-gg/floating-tools-core";import{SettingsEventBus as Ro,settingsEventBus as Oo}from"@buoy-gg/floating-tools-core";export{Ut as ANIMATION_DURATION,zt as DIAL_BUTTON_SIZE,Ht as DIAL_GRID_LINE_COUNT,Gt as DIAL_ICON_PADDING,Vt as DIAL_ICON_SIZE,_t as DIAL_START_ANGLE,Nt as DRAG_THRESHOLD,C as DevToolsContext,Ee as DevToolsProvider,bt as DevToolsStateManager,wt as EDGE_PADDING,U as FloatingToolsContext,ie as FloatingToolsProvider,Et as FloatingToolsStore,Mt as MAX_DIAL_SLOTS,io as MAX_SETTINGS_DIAL_SLOTS,so as SETTINGS_STORAGE_KEY,I as SettingsContext,Ro as SettingsEventBus,ce as SettingsProvider,Lt as VISIBLE_HANDLE_WIDTH,Ao as canEnableDialTool,Po as countEnabledTools,Ct as devToolsReducer,xt as devToolsStateManager,Zt as dialAnimationConfig,qt as dialCSSBeziers,Kt as dialColors,Wt as dialStyles,It as easing,Co as enforceDialLimit,ht as floatingToolsColors,ho as generateDefaultSettings,Qt as generateDialCSSKeyframes,Yt as getAllIconPositions,jt as getDialCSSAnimationStyles,eo as getDialCSSKeyframesString,kt as getDialLayout,Fo as getEnabledToolIds,Bt as getGridLineRotations,Ft as getGripIconLayout,Xt as getIconAngle,Jt as getIconPosition,$t as getIconStaggerInputRange,to as getSpiralAnimationPosition,oo as getStaggeredIconProgress,To as getToolColor,fo as getToolDescription,po as getToolLabel,At as getUserStatusConfig,bo as globalSettingsConfig,Le as interleaveWithDividers,Rt as interpolate,Ot as interpolatePosition,Eo as mergeSettingsWithDefaults,yo as sanitizeFloatingSettings,go as settingsColors,Oo as settingsEventBus,uo as settingsStyles,ao as settingsTabs,So as toolColors,Do as toolDescriptions,vo as toolLabels,Ae as useDevTools,y as useDevToolsContext,Fe as useDevToolsDial,Pe as useDevToolsEnvironment,Ie as useDevToolsSettings,x as useDevToolsState,be as useDialState,j as useFloatingTools,se as useFloatingToolsContext,he as useOptionalDevToolsContext,de as useOptionalSettingsContext,b as useSettings,ve as useSettingsContext,xe as useSettingsModalState,Pt as withAlpha};
|
|
1
|
+
import{useMemo as _,useSyncExternalStore as $,useEffect as w,useRef as q}from"react";import{FloatingToolsStore as Q}from"@buoy-gg/floating-tools-core";import{useState as ee}from"react";function j(e){let{screenSize:t,...s}=e,o=_(()=>new Q({...s,screenWidth:t.width,screenHeight:t.height}),[s.enablePositionPersistence,s.storage,s.visibleHandleWidth,s.dragThreshold,s.edgePadding]),a=q(!1),[S,c]=ee(!1);w(()=>(a.current||(a.current=!0,o.initialize().then(()=>{c(!0)})),()=>{o.destroy()}),[o]),w(()=>{o.setScreenSize(t.width,t.height)},[o,t.width,t.height]);let u=$(o.subscribe,o.getSnapshot),r=_(()=>({handleDragStart:l=>o.handleDragStart(l),handleDragMove:l=>o.handleDragMove(l),handleDragEnd:l=>o.handleDragEnd(l),toggleHideShow:()=>o.toggleHideShow(),commitPosition:l=>o.commitPosition(l),setBubbleSize:l=>o.setBubbleSize(l),setScreenSize:(l,p)=>o.setScreenSize(l,p),setMinPosition:l=>o.setMinPosition(l)}),[o]);return{state:u,store:o,isInitialized:S,actions:r}}import{createContext as te,useContext as oe}from"react";import{jsx as le}from"react/jsx-runtime";var ne={isDragging:!1,isHidden:!1},L=te(ne);function se(){return oe(L)}function ie({value:e,children:t}){return le(L.Provider,{value:e,children:t})}import{useState as A,useEffect as M,useCallback as D,useMemo as F}from"react";import{settingsEventBus as z,SETTINGS_STORAGE_KEY as V,MAX_SETTINGS_DIAL_SLOTS as N,enforceDialLimit as ae,mergeSettingsWithDefaults as re,generateDefaultSettings as ge,countEnabledTools as G,getEnabledToolIds as Se}from"@buoy-gg/floating-tools-core";function b(e={}){let{availableTools:t=[],defaultFloatingTools:s,defaultDialTools:o,storage:a,initialSettings:S,onSettingsChange:c,subscribeToEventBus:u=!0}=e,r=F(()=>ge(t,s,o),[t,s,o]),l=F(()=>Object.keys(r.dialTools),[r]),p=F(()=>Object.keys(r.floatingTools).filter(n=>n!=="environment"),[r]),[i,d]=A(S??r),[E,f]=A(!0),[h,P]=A(!1),[m,R]=A(null),O=D(async()=>{if(!a){f(!1),P(!0);return}try{f(!0),R(null);let n=await a.getItem(V);if(n){let g=JSON.parse(n),v=re(r,g,{allowedDialKeys:l,allowedFloatingKeys:p});d(v)}else d(r)}catch(n){console.error("Failed to load dev tools settings:",n),R(n instanceof Error?n.message:"Failed to load settings"),d(r)}finally{f(!1),P(!0)}},[a,r,l,p]),T=D(async n=>{let g={...n,dialTools:ae(n.dialTools)};try{a&&await a.setItem(V,JSON.stringify(g)),d(g),c?.(g),z.emit(g)}catch(v){throw console.error("Failed to save dev tools settings:",v),R(v instanceof Error?v.message:"Failed to save settings"),v}},[a,c]),B=D(n=>{let g=G(i.dialTools);if(!i.dialTools[n]&&g>=N)return;let U={...i,dialTools:{...i.dialTools,[n]:!i.dialTools[n]}};T(U)},[i,T]),k=D(n=>{let g={...i,floatingTools:{...i.floatingTools,[n]:!i.floatingTools[n]}};T(g)},[i,T]),X=D(()=>{let n={...i,floatingTools:{...i.floatingTools,environment:!i.floatingTools.environment}};T(n)},[i,T]),J=D(n=>{let g={...i,globalSettings:{...i.globalSettings,[n]:!i.globalSettings?.[n]}};T(g)},[i,T]),Y=D(async()=>{await T(r)},[r,T]);M(()=>{O()},[O]),M(()=>u?z.addListener(g=>{d(g)}):void 0,[u]);let Z=F(()=>{let n=G(i.dialTools),{dial:g,floating:v}=Se(i);return{dialToolCount:n,isDialFull:n>=N,enabledDialTools:g,enabledFloatingTools:v,canEnableDialTool:U=>i.dialTools[U]?!0:n<N}},[i]);return{settings:i,isLoading:E,isInitialized:h,error:m,actions:{toggleDialTool:B,toggleFloatingTool:k,toggleEnvironment:X,toggleGlobalSetting:J,saveSettings:T,resetToDefaults:Y,reloadSettings:O},helpers:Z}}import{createContext as Te,useContext as H,useMemo as ue}from"react";import{jsx as pe}from"react/jsx-runtime";var I=Te(null);function ce({children:e,availableTools:t=[],defaultFloatingTools:s,defaultDialTools:o,storage:a,initialSettings:S,onSettingsChange:c}){let u=b({availableTools:t,defaultFloatingTools:s,defaultDialTools:o,storage:a,initialSettings:S,onSettingsChange:c}),r=ue(()=>({...u,availableTools:t}),[u,t]);return pe(I.Provider,{value:r,children:e})}function ve(){let e=H(I);if(!e)throw new Error("useSettingsContext must be used within a SettingsProvider");return e}function de(){return H(I)}import{useSyncExternalStore as De,useMemo as fe}from"react";import{devToolsStateManager as me}from"@buoy-gg/floating-tools-core";function x(e={}){let{manager:t=me}=e,s=De(t.subscribe,t.getState,t.getServerState),o=fe(()=>({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:o,manager:t}}function be(e={}){let{state:t,actions:s}=x(e);return{isOpen:t.isDialOpen,open:s.openDial,close:s.closeDial,toggle:s.toggleDial}}function xe(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 W,useMemo as K}from"react";import{devToolsStateManager as ye}from"@buoy-gg/floating-tools-core";import{jsx as Re}from"react/jsx-runtime";var C=Ce(null);C.displayName="DevToolsContext";function Ee({children:e,tools:t=[],defaultFloatingTools:s,defaultDialTools:o,environment:a,userRole:S,availableEnvironments:c,onEnvironmentSwitch:u,stateManager:r=ye}){let{state:l,actions:p}=x({manager:r}),i=K(()=>t.map(m=>({id:m.id,name:m.name,description:m.description,slot:m.slot})),[t]),{settings:d,isLoading:E,actions:f,helpers:h}=b({availableTools:i,defaultFloatingTools:s,defaultDialTools:o}),P=K(()=>({devToolsState:l,devToolsActions:p,settings:d,isSettingsLoading:E,settingsActions:f,settingsHelpers:h,tools:t,environment:a,userRole:S,availableEnvironments:c,onEnvironmentSwitch:u}),[l,p,d,E,f,h,t,a,S,c,u]);return Re(C.Provider,{value:P,children:e})}function y(){let e=W(C);if(!e)throw new Error("useDevToolsContext must be used within a DevToolsProvider. Wrap your app with <DevToolsProvider> or <FloatingDevTools>.");return e}function he(){return W(C)}function Pe(){let e=y();return{environment:e.environment,userRole:e.userRole,availableEnvironments:e.availableEnvironments,onEnvironmentSwitch:e.onEnvironmentSwitch}}function Ae(){let e=y();return{tools:e.tools,settings:e.settings,isLoading:e.isSettingsLoading}}function Fe(){let e=y();return{isOpen:e.devToolsState.isDialOpen,open:e.devToolsActions.openDial,close:e.devToolsActions.closeDial,toggle:e.devToolsActions.toggleDial}}function Ie(){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{filterValidChildren as Oe}from"@buoy-gg/floating-tools-core";function Ue(e,t){let s=Oe(e),o=[];return s.forEach((a,S)=>{o.push(a),S<s.length-1&&o.push(t(`divider-${S}`))}),o}import{DevToolsStateManager as bt,devToolsStateManager as xt,devToolsReducer as Ct}from"@buoy-gg/floating-tools-core";import{FloatingToolsStore as Et,floatingToolsColors as ht,withAlpha as Pt,getUserStatusConfig as At,getGripIconLayout as Ft,easing as It,interpolate as Rt,interpolatePosition as Ot,VISIBLE_HANDLE_WIDTH as Ut,ANIMATION_DURATION as Lt,DRAG_THRESHOLD as Nt,EDGE_PADDING as _t,MAX_DIAL_SLOTS as wt,DIAL_START_ANGLE as Mt,DIAL_BUTTON_SIZE as zt,DIAL_ICON_SIZE as Vt,DIAL_ICON_PADDING as Gt,DIAL_GRID_LINE_COUNT as Ht,dialColors as Kt,dialStyles as Wt,getGridLineRotations as Bt,getDialLayout as kt,getIconAngle as Xt,getIconPosition as Jt,getAllIconPositions as Yt,dialAnimationConfig as Zt,getIconStaggerInputRange as $t,dialCSSBeziers as qt,generateDialCSSKeyframes as Qt,getDialCSSAnimationStyles as jt,getDialCSSKeyframesString as eo,getSpiralAnimationPosition as to,getStaggeredIconProgress as oo}from"@buoy-gg/floating-tools-core";import{USAGE_HALF_LIFE_MS as so,USAGE_MIN_SCORE as io,decayScore as lo,recordUsage as ao,rankToolIds as ro,pruneUsage as go}from"@buoy-gg/floating-tools-core";import{SETTINGS_STORAGE_KEY as To,MAX_SETTINGS_DIAL_SLOTS as uo}from"@buoy-gg/floating-tools-core";import{settingsTabs as vo}from"@buoy-gg/floating-tools-core";import{settingsColors as Do,toolColors as fo,getToolColor as mo,settingsStyles as bo}from"@buoy-gg/floating-tools-core";import{toolLabels as Co,getToolLabel as yo,toolDescriptions as Eo,getToolDescription as ho}from"@buoy-gg/floating-tools-core";import{globalSettingsConfig as Ao}from"@buoy-gg/floating-tools-core";import{enforceDialLimit as Io,sanitizeFloatingSettings as Ro,mergeSettingsWithDefaults as Oo,generateDefaultSettings as Uo,countEnabledTools as Lo,canEnableDialTool as No,getEnabledToolIds as _o}from"@buoy-gg/floating-tools-core";import{SettingsEventBus as Mo,settingsEventBus as zo}from"@buoy-gg/floating-tools-core";export{Lt as ANIMATION_DURATION,zt as DIAL_BUTTON_SIZE,Ht as DIAL_GRID_LINE_COUNT,Gt as DIAL_ICON_PADDING,Vt as DIAL_ICON_SIZE,Mt as DIAL_START_ANGLE,Nt as DRAG_THRESHOLD,C as DevToolsContext,Ee as DevToolsProvider,bt as DevToolsStateManager,_t as EDGE_PADDING,L as FloatingToolsContext,ie as FloatingToolsProvider,Et as FloatingToolsStore,wt as MAX_DIAL_SLOTS,uo as MAX_SETTINGS_DIAL_SLOTS,To as SETTINGS_STORAGE_KEY,I as SettingsContext,Mo as SettingsEventBus,ce as SettingsProvider,so as USAGE_HALF_LIFE_MS,io as USAGE_MIN_SCORE,Ut as VISIBLE_HANDLE_WIDTH,No as canEnableDialTool,Lo as countEnabledTools,lo as decayScore,Ct as devToolsReducer,xt as devToolsStateManager,Zt as dialAnimationConfig,qt as dialCSSBeziers,Kt as dialColors,Wt as dialStyles,It as easing,Io as enforceDialLimit,ht as floatingToolsColors,Uo as generateDefaultSettings,Qt as generateDialCSSKeyframes,Yt as getAllIconPositions,jt as getDialCSSAnimationStyles,eo as getDialCSSKeyframesString,kt as getDialLayout,_o as getEnabledToolIds,Bt as getGridLineRotations,Ft as getGripIconLayout,Xt as getIconAngle,Jt as getIconPosition,$t as getIconStaggerInputRange,to as getSpiralAnimationPosition,oo as getStaggeredIconProgress,mo as getToolColor,ho as getToolDescription,yo as getToolLabel,At as getUserStatusConfig,Ao as globalSettingsConfig,Ue as interleaveWithDividers,Rt as interpolate,Ot as interpolatePosition,Oo as mergeSettingsWithDefaults,go as pruneUsage,ro as rankToolIds,ao as recordUsage,Ro as sanitizeFloatingSettings,Do as settingsColors,zo as settingsEventBus,bo as settingsStyles,vo as settingsTabs,fo as toolColors,Eo as toolDescriptions,Co as toolLabels,Ae as useDevTools,y as useDevToolsContext,Fe as useDevToolsDial,Pe as useDevToolsEnvironment,Ie as useDevToolsSettings,x as useDevToolsState,be as useDialState,j as useFloatingTools,se as useFloatingToolsContext,he as useOptionalDevToolsContext,de as useOptionalSettingsContext,b as useSettings,ve as useSettingsContext,xe as useSettingsModalState,Pt as withAlpha};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-gg/floating-tools-react",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
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",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@buoy-gg/floating-tools-core": "
|
|
19
|
+
"@buoy-gg/floating-tools-core": "3.0.1"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"react": ">=17.0.0"
|