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

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.
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis);import{useMemo as a,useSyncExternalStore as f,useEffect as l,useRef as m}from"react";import{FloatingToolsStore as v}from"@buoy-gg/floating-tools-core/web/floating";import{useState as D}from"react";function z(n){let{screenSize:o,...i}=n,e=a(()=>new v({...i,screenWidth:o.width,screenHeight:o.height}),[i.enablePositionPersistence,i.storage,i.visibleHandleWidth,i.dragThreshold,i.edgePadding]),r=m(!1),[s,c]=D(!1);l(()=>(r.current||(r.current=!0,e.initialize().then(()=>{c(!0)})),()=>{e.destroy()}),[e]),l(()=>{e.setScreenSize(o.width,o.height)},[e,o.width,o.height]);let h=f(e.subscribe,e.getSnapshot),u=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,p)=>e.setScreenSize(t,p),setMinPosition:t=>e.setMinPosition(t),forceHide:()=>e.forceHide(),forceShow:()=>e.forceShow()}),[e]);return{state:h,store:e,isInitialized:s,actions:u}}import{createContext as b,useContext as S}from"react";import{jsx as T}from"react/jsx-runtime";var P={isDragging:!1,isHidden:!1},d=b(P);function V(){return S(d)}function N({value:n,children:o}){return T(d.Provider,{value:n,children:o})}import{filterValidChildren as F}from"@buoy-gg/floating-tools-core/web/floating";function U(n,o){let i=F(n),e=[];return i.forEach((r,s)=>{e.push(r),s<i.length-1&&e.push(o(`divider-${s}`))}),e}export{z as a,d as b,V as c,N as d,U as e};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{a as e,b as o,c as t,d as f,e as r}from"./chunks/chunk-PD42JYT2.mjs";export*from"@buoy-gg/floating-tools-core/web/floating";export{o as FloatingToolsContext,f as FloatingToolsProvider,r as interleaveWithDividers,e as useFloatingTools,t as useFloatingToolsContext};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{a as Y,b as Z,c as j,d as q,e as Q}from"./chunks/chunk-PD42JYT2.mjs";import{useState as O,useEffect as h,useCallback as u,useMemo as P}from"react";import{settingsEventBus as M,SETTINGS_STORAGE_KEY as w,MAX_SETTINGS_DIAL_SLOTS as N,enforceDialLimit as $,mergeSettingsWithDefaults as ee,generateDefaultSettings as te,countEnabledTools as G,getEnabledToolIds as oe}from"@buoy-gg/floating-tools-core/web";function b(e={}){let{availableTools:t=[],defaultFloatingTools:s,defaultDialTools:S,storage:a,initialSettings:p,onSettingsChange:c,subscribeToEventBus:T=!0}=e,l=P(()=>te(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,R]=O(null),_=u(async()=>{if(!a){D(!1),I(!0);return}try{D(!0),R(null);let o=await a.getItem(w);if(o){let i=JSON.parse(o),g=ee(l,i,{allowedDialKeys:f,allowedFloatingKeys:m});v(g)}else v(l)}catch(o){console.error("Failed to load dev tools settings:",o),R(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:$(o.dialTools)};try{a&&await a.setItem(w,JSON.stringify(i)),v(i),c?.(i),M.emit(i)}catch(g){throw console.error("Failed to save dev tools settings:",g),R(g instanceof Error?g.message:"Failed to save settings"),g}},[a,c]),B=u(o=>{let i=G(n.dialTools);if(!n.dialTools[o]&&i>=N)return;let F={...n,dialTools:{...n.dialTools,[o]:!n.dialTools[o]}};r(F)},[n,r]),W=u(o=>{let i={...n,floatingTools:{...n.floatingTools,[o]:!n.floatingTools[o]}};r(i)},[n,r]),H=u(()=>{let o={...n,floatingTools:{...n.floatingTools,environment:!n.floatingTools.environment}};r(o)},[n,r]),k=u(o=>{let i={...n,globalSettings:{...n.globalSettings,[o]:!n.globalSettings?.[o]}};r(i)},[n,r]),X=u(async()=>{await r(l)},[l,r]);h(()=>{_()},[_]),h(()=>T?M.addListener(i=>{v(i)}):void 0,[T]);let J=P(()=>{let o=G(n.dialTools),{dial:i,floating:g}=oe(n);return{dialToolCount:o,isDialFull:o>=N,enabledDialTools:i,enabledFloatingTools:g,canEnableDialTool:F=>n.dialTools[F]?!0:o<N}},[n]);return{settings:n,isLoading:E,isInitialized:A,error:d,actions:{toggleDialTool:B,toggleFloatingTool:W,toggleEnvironment:H,toggleGlobalSetting:k,saveSettings:r,resetToDefaults:X,reloadSettings:_},helpers:J}}import{createContext as ne,useContext as K,useMemo as se}from"react";import{jsx as re}from"react/jsx-runtime";var U=ne(null);function ie({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=se(()=>({...T,availableTools:t}),[T,t]);return re(U.Provider,{value:l,children:e})}function le(){let e=K(U);if(!e)throw new Error("useSettingsContext must be used within a SettingsProvider");return e}function ae(){return K(U)}import{useSyncExternalStore as ge,useMemo as Se}from"react";import{devToolsStateManager as Te}from"@buoy-gg/floating-tools-core/web";function x(e={}){let{manager:t=Te}=e,s=ge(t.subscribe,t.getState,t.getServerState),S=Se(()=>({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 ve(e={}){let{state:t,actions:s}=x(e);return{isOpen:t.isDialOpen,open:s.openDial,close:s.closeDial,toggle:s.toggleDial}}function ce(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 ue,useContext as z,useMemo as V}from"react";import{devToolsStateManager as pe}from"@buoy-gg/floating-tools-core/web";import{jsx as Ce}from"react/jsx-runtime";var C=ue(null);C.displayName="DevToolsContext";function De({children:e,tools:t=[],defaultFloatingTools:s,defaultDialTools:S,environment:a,userRole:p,availableEnvironments:c,onEnvironmentSwitch:T,stateManager:l=pe}){let{state:f,actions:m}=x({manager:l}),n=V(()=>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=V(()=>({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 Ce(C.Provider,{value:I,children:e})}function y(){let e=z(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 z(C)}function fe(){let e=y();return{environment:e.environment,userRole:e.userRole,availableEnvironments:e.availableEnvironments,onEnvironmentSwitch:e.onEnvironmentSwitch}}function me(){let e=y();return{tools:e.tools,settings:e.settings,isLoading:e.isSettingsLoading}}function be(){let e=y();return{isOpen:e.devToolsState.isDialOpen,open:e.devToolsActions.openDial,close:e.devToolsActions.closeDial,toggle:e.devToolsActions.toggleDial}}function xe(){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 st,devToolsStateManager as it,devToolsReducer as lt}from"@buoy-gg/floating-tools-core/web";import{FloatingToolsStore as rt,floatingToolsColors as gt,withAlpha as St,getUserStatusConfig as Tt,getGripIconLayout as vt,easing as ct,interpolate as ut,interpolatePosition as pt,VISIBLE_HANDLE_WIDTH as Dt,ANIMATION_DURATION as dt,DRAG_THRESHOLD as ft,EDGE_PADDING as mt,MAX_DIAL_SLOTS as bt,DIAL_START_ANGLE as xt,DIAL_BUTTON_SIZE as Ct,DIAL_ICON_SIZE as yt,DIAL_ICON_PADDING as Et,DIAL_GRID_LINE_COUNT as At,dialColors as It,dialStyles as Ot,getGridLineRotations as Pt,getDialLayout as Lt,getIconAngle as Ut,getIconPosition as Rt,getAllIconPositions as _t,dialAnimationConfig as Ft,getIconStaggerInputRange as Nt,dialCSSBeziers as ht,generateDialCSSKeyframes as Mt,getDialCSSAnimationStyles as wt,getDialCSSKeyframesString as Gt,getSpiralAnimationPosition as Kt,getStaggeredIconProgress as Vt}from"@buoy-gg/floating-tools-core/web";import{USAGE_HALF_LIFE_MS as Bt,USAGE_MIN_SCORE as Wt,decayScore as Ht,recordUsage as kt,rankToolIds as Xt,pruneUsage as Jt}from"@buoy-gg/floating-tools-core/web";import{SETTINGS_STORAGE_KEY as Zt,MAX_SETTINGS_DIAL_SLOTS as jt}from"@buoy-gg/floating-tools-core/web";import{settingsTabs as Qt}from"@buoy-gg/floating-tools-core/web";import{settingsColors as eo,toolColors as to,getToolColor as oo,settingsStyles as no}from"@buoy-gg/floating-tools-core/web";import{toolLabels as io,getToolLabel as lo,toolDescriptions as ao,getToolDescription as ro}from"@buoy-gg/floating-tools-core/web";import{globalSettingsConfig as So}from"@buoy-gg/floating-tools-core/web";import{enforceDialLimit as vo,sanitizeFloatingSettings as co,mergeSettingsWithDefaults as uo,generateDefaultSettings as po,countEnabledTools as Do,canEnableDialTool as fo,getEnabledToolIds as mo}from"@buoy-gg/floating-tools-core/web";import{SettingsEventBus as xo,settingsEventBus as Co}from"@buoy-gg/floating-tools-core/web";export{dt as ANIMATION_DURATION,Ct as DIAL_BUTTON_SIZE,At as DIAL_GRID_LINE_COUNT,Et as DIAL_ICON_PADDING,yt as DIAL_ICON_SIZE,xt as DIAL_START_ANGLE,ft as DRAG_THRESHOLD,C as DevToolsContext,De as DevToolsProvider,st as DevToolsStateManager,mt as EDGE_PADDING,Z as FloatingToolsContext,q as FloatingToolsProvider,rt as FloatingToolsStore,bt as MAX_DIAL_SLOTS,jt as MAX_SETTINGS_DIAL_SLOTS,Zt as SETTINGS_STORAGE_KEY,U as SettingsContext,xo as SettingsEventBus,ie as SettingsProvider,Bt as USAGE_HALF_LIFE_MS,Wt as USAGE_MIN_SCORE,Dt as VISIBLE_HANDLE_WIDTH,fo as canEnableDialTool,Do as countEnabledTools,Ht as decayScore,lt as devToolsReducer,it as devToolsStateManager,Ft as dialAnimationConfig,ht as dialCSSBeziers,It as dialColors,Ot as dialStyles,ct as easing,vo as enforceDialLimit,gt as floatingToolsColors,po as generateDefaultSettings,Mt as generateDialCSSKeyframes,_t as getAllIconPositions,wt as getDialCSSAnimationStyles,Gt as getDialCSSKeyframesString,Lt as getDialLayout,mo as getEnabledToolIds,Pt as getGridLineRotations,vt as getGripIconLayout,Ut as getIconAngle,Rt as getIconPosition,Nt as getIconStaggerInputRange,Kt as getSpiralAnimationPosition,Vt as getStaggeredIconProgress,oo as getToolColor,ro as getToolDescription,lo as getToolLabel,Tt as getUserStatusConfig,So as globalSettingsConfig,Q as interleaveWithDividers,ut as interpolate,pt as interpolatePosition,uo as mergeSettingsWithDefaults,Jt as pruneUsage,Xt as rankToolIds,kt as recordUsage,co as sanitizeFloatingSettings,eo as settingsColors,Co as settingsEventBus,no as settingsStyles,Qt as settingsTabs,to as toolColors,ao as toolDescriptions,io as toolLabels,me as useDevTools,y as useDevToolsContext,be as useDevToolsDial,fe as useDevToolsEnvironment,xe as useDevToolsSettings,x as useDevToolsState,ve as useDialState,Y as useFloatingTools,j as useFloatingToolsContext,de as useOptionalDevToolsContext,ae as useOptionalSettingsContext,b as useSettings,le as useSettingsContext,ce as useSettingsModalState,St 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.41",
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.41"
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
  }