@buoy-gg/core 1.7.7 → 2.1.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.
Files changed (77) hide show
  1. package/lib/commonjs/floatingMenu/AppHost.js +3 -3
  2. package/lib/commonjs/floatingMenu/DevToolsSettingsModal.js +25 -13
  3. package/lib/commonjs/floatingMenu/DevToolsSettingsModal.web.js +746 -0
  4. package/lib/commonjs/floatingMenu/FloatingDevTools.js +16 -4
  5. package/lib/commonjs/floatingMenu/FloatingDevTools.web.js +153 -0
  6. package/lib/commonjs/floatingMenu/FloatingMenu.js +8 -8
  7. package/lib/commonjs/floatingMenu/MinimizedToolsContext.js +2 -2
  8. package/lib/commonjs/floatingMenu/autoDiscoverPresets.js +30 -0
  9. package/lib/commonjs/floatingMenu/defaultConfig.js +14 -7
  10. package/lib/commonjs/floatingMenu/dial/DialDevTools.js +12 -6
  11. package/lib/commonjs/floatingMenu/dial/DialDevTools.web.js +593 -0
  12. package/lib/commonjs/floatingMenu/floatingTools.js +218 -38
  13. package/lib/commonjs/floatingMenu/floatingTools.web.js +357 -0
  14. package/lib/commonjs/index.js +2 -2
  15. package/lib/commonjs/index.web.js +131 -0
  16. package/lib/commonjs/utils/autoDiscoverPresets.web.js +181 -0
  17. package/lib/module/floatingMenu/AppHost.js +4 -4
  18. package/lib/module/floatingMenu/DevToolsSettingsModal.js +28 -16
  19. package/lib/module/floatingMenu/DevToolsSettingsModal.web.js +756 -0
  20. package/lib/module/floatingMenu/FloatingDevTools.js +17 -5
  21. package/lib/module/floatingMenu/FloatingDevTools.web.js +149 -0
  22. package/lib/module/floatingMenu/FloatingMenu.js +9 -9
  23. package/lib/module/floatingMenu/MinimizedToolsContext.js +3 -3
  24. package/lib/module/floatingMenu/autoDiscoverPresets.js +30 -0
  25. package/lib/module/floatingMenu/defaultConfig.js +14 -7
  26. package/lib/module/floatingMenu/dial/DialDevTools.js +13 -7
  27. package/lib/module/floatingMenu/dial/DialDevTools.web.js +590 -0
  28. package/lib/module/floatingMenu/floatingTools.js +219 -39
  29. package/lib/module/floatingMenu/floatingTools.web.js +357 -0
  30. package/lib/module/index.js +2 -2
  31. package/lib/module/index.web.js +24 -0
  32. package/lib/module/utils/autoDiscoverPresets.web.js +174 -0
  33. package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.web.d.ts +23 -0
  35. package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.web.d.ts.map +1 -0
  36. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts +1 -1
  37. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts +48 -0
  39. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts.map +1 -0
  40. package/lib/typescript/commonjs/floatingMenu/FloatingMenu.d.ts.map +1 -1
  41. package/lib/typescript/commonjs/floatingMenu/autoDiscoverPresets.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts +8 -7
  43. package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts.map +1 -1
  44. package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.d.ts.map +1 -1
  45. package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.web.d.ts +26 -0
  46. package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.web.d.ts.map +1 -0
  47. package/lib/typescript/commonjs/floatingMenu/floatingTools.d.ts +1 -1
  48. package/lib/typescript/commonjs/floatingMenu/floatingTools.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/floatingMenu/floatingTools.web.d.ts +27 -0
  50. package/lib/typescript/commonjs/floatingMenu/floatingTools.web.d.ts.map +1 -0
  51. package/lib/typescript/commonjs/index.web.d.ts +20 -0
  52. package/lib/typescript/commonjs/index.web.d.ts.map +1 -0
  53. package/lib/typescript/commonjs/utils/autoDiscoverPresets.web.d.ts +58 -0
  54. package/lib/typescript/commonjs/utils/autoDiscoverPresets.web.d.ts.map +1 -0
  55. package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.d.ts.map +1 -1
  56. package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.web.d.ts +23 -0
  57. package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.web.d.ts.map +1 -0
  58. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts +1 -1
  59. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts.map +1 -1
  60. package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts +48 -0
  61. package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts.map +1 -0
  62. package/lib/typescript/module/floatingMenu/FloatingMenu.d.ts.map +1 -1
  63. package/lib/typescript/module/floatingMenu/autoDiscoverPresets.d.ts.map +1 -1
  64. package/lib/typescript/module/floatingMenu/defaultConfig.d.ts +8 -7
  65. package/lib/typescript/module/floatingMenu/defaultConfig.d.ts.map +1 -1
  66. package/lib/typescript/module/floatingMenu/dial/DialDevTools.d.ts.map +1 -1
  67. package/lib/typescript/module/floatingMenu/dial/DialDevTools.web.d.ts +26 -0
  68. package/lib/typescript/module/floatingMenu/dial/DialDevTools.web.d.ts.map +1 -0
  69. package/lib/typescript/module/floatingMenu/floatingTools.d.ts +1 -1
  70. package/lib/typescript/module/floatingMenu/floatingTools.d.ts.map +1 -1
  71. package/lib/typescript/module/floatingMenu/floatingTools.web.d.ts +27 -0
  72. package/lib/typescript/module/floatingMenu/floatingTools.web.d.ts.map +1 -0
  73. package/lib/typescript/module/index.web.d.ts +20 -0
  74. package/lib/typescript/module/index.web.d.ts.map +1 -0
  75. package/lib/typescript/module/utils/autoDiscoverPresets.web.d.ts +58 -0
  76. package/lib/typescript/module/utils/autoDiscoverPresets.web.d.ts.map +1 -0
  77. package/package.json +5 -4
@@ -9,7 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactNative = require("react-native");
10
10
  var _AppHostLogic = require("./AppHostLogic.js");
11
11
  var _MinimizedToolsContext = require("./MinimizedToolsContext.js");
12
- var _DevToolsSettingsModal = require("./DevToolsSettingsModal.js");
12
+ var _DevToolsSettingsModal = require("./DevToolsSettingsModal");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
15
  const AppHostContext = /*#__PURE__*/(0, _react.createContext)(null);
@@ -92,7 +92,7 @@ const AppHostProvider = ({
92
92
  (0, _react.useEffect)(() => {
93
93
  const restoreOpenApps = async () => {
94
94
  try {
95
- const saved = await (0, _sharedUi.safeGetItem)(STORAGE_KEY_OPEN_APPS);
95
+ const saved = await _sharedUi.persistentStorage.getItem(STORAGE_KEY_OPEN_APPS);
96
96
  if (saved) {
97
97
  const parsed = JSON.parse(saved);
98
98
  // Handle both old format (string[]) and new format (PersistedAppState[])
@@ -138,7 +138,7 @@ const AppHostProvider = ({
138
138
  id: app.id,
139
139
  minimized: app.minimized ?? false
140
140
  }));
141
- (0, _sharedUi.safeSetItem)(STORAGE_KEY_OPEN_APPS, JSON.stringify(appStates));
141
+ _sharedUi.persistentStorage.setItem(STORAGE_KEY_OPEN_APPS, JSON.stringify(appStates));
142
142
  }, PERSISTENCE_DELAY);
143
143
  return () => {
144
144
  if (persistenceTimeoutRef.current) {
@@ -114,6 +114,7 @@ const mergeWithDefaults = (defaults, stored, options) => {
114
114
  * @param availableApps - List of available apps from auto-discovery
115
115
  * @param defaultFloatingTools - Optional array of tool IDs to enable by default in floating bubble
116
116
  * @param defaultDialTools - Optional array of tool IDs to enable by default in dial menu
117
+ * If not provided, all dial-compatible tools are enabled by default (up to 6)
117
118
  */
118
119
  const generateDefaultSettings = (availableApps = [], defaultFloatingTools, defaultDialTools) => {
119
120
  const dialDefaults = {};
@@ -123,14 +124,17 @@ const generateDefaultSettings = (availableApps = [], defaultFloatingTools, defau
123
124
  // Cast to Set<string> to allow comparison with any tool ID (including custom tools)
124
125
  const enabledFloatingSet = new Set(defaultFloatingTools ?? []);
125
126
  const enabledDialSet = new Set(defaultDialTools ?? []);
127
+
128
+ // If no defaultDialTools specified, auto-enable all dial-compatible tools
129
+ const autoEnableDialTools = !defaultDialTools || defaultDialTools.length === 0;
126
130
  for (const app of availableApps) {
127
131
  const {
128
132
  id,
129
133
  slot = "both"
130
134
  } = app;
131
135
  if (slot === "dial" || slot === "both") {
132
- // Enable if in defaultDialTools, otherwise false
133
- dialDefaults[id] = enabledDialSet.has(id);
136
+ // Auto-enable if no defaults specified, otherwise check the set
137
+ dialDefaults[id] = autoEnableDialTools ? true : enabledDialSet.has(id);
134
138
  }
135
139
  if (slot === "row" || slot === "both") {
136
140
  // Enable if in defaultFloatingTools, otherwise false
@@ -180,7 +184,7 @@ const DevToolsSettingsModal = ({
180
184
  (0, _react.useEffect)(() => {
181
185
  const loadActiveTab = async () => {
182
186
  try {
183
- const savedTab = await (0, _sharedUi.safeGetItem)(_sharedUi.devToolsStorageKeys.settings.activeTab());
187
+ const savedTab = await _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.settings.activeTab());
184
188
  if (savedTab && ["dial", "floating", "settings", "pro"].includes(savedTab)) {
185
189
  setActiveTab(savedTab);
186
190
  }
@@ -197,7 +201,7 @@ const DevToolsSettingsModal = ({
197
201
  (0, _react.useEffect)(() => {
198
202
  // Only persist after initial state is loaded to avoid overwriting with default
199
203
  if (!activeTabLoaded) return;
200
- (0, _sharedUi.safeSetItem)(_sharedUi.devToolsStorageKeys.settings.activeTab(), activeTab).catch(error => {
204
+ _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.settings.activeTab(), activeTab).catch(error => {
201
205
  // Failed to save active tab - continue without persistence
202
206
  console.warn("Failed to save settings active tab:", error);
203
207
  });
@@ -240,7 +244,7 @@ const DevToolsSettingsModal = ({
240
244
 
241
245
  const loadSettings = (0, _react.useCallback)(async () => {
242
246
  try {
243
- const savedSettings = await (0, _sharedUi.safeGetItem)(STORAGE_KEY);
247
+ const savedSettings = await _sharedUi.persistentStorage.getItem(STORAGE_KEY);
244
248
  if (savedSettings) {
245
249
  const parsed = JSON.parse(savedSettings);
246
250
  const merged = mergeWithDefaults(defaultSettings, parsed, {
@@ -284,7 +288,7 @@ const DevToolsSettingsModal = ({
284
288
  ...newSettings,
285
289
  dialTools: enforceDialLimit(newSettings.dialTools)
286
290
  };
287
- await (0, _sharedUi.safeSetItem)(STORAGE_KEY, JSON.stringify(limitedSettings));
291
+ await _sharedUi.persistentStorage.setItem(STORAGE_KEY, JSON.stringify(limitedSettings));
288
292
  setSettings(limitedSettings);
289
293
  onSettingsChange?.(limitedSettings);
290
294
  // Notify listeners (e.g., floating bubble) to refresh immediately
@@ -521,6 +525,10 @@ const DevToolsSettingsModal = ({
521
525
  size: 16,
522
526
  color: _sharedUi.buoyColors.textSecondary
523
527
  });
528
+ case "redux":
529
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.ReduxIcon, {
530
+ size: 16
531
+ });
524
532
  default:
525
533
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Info, {
526
534
  size: 16,
@@ -909,13 +917,10 @@ const DevToolsSettingsModal = ({
909
917
  style: styles.exportHintBanner,
910
918
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Zap, {
911
919
  size: 14,
912
- color: _sharedUi.buoyColors.warning
913
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
920
+ color: _sharedUi.buoyColors.textMuted
921
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
914
922
  style: styles.exportHintText,
915
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
916
- style: styles.exportHintBold,
917
- children: "New!"
918
- }), " Configure your tools above, then export to set team defaults."]
923
+ children: "Configure tools, then export as props for your team."
919
924
  })]
920
925
  }), isExportExpanded && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
921
926
  style: styles.exportCodeContainer,
@@ -1373,12 +1378,19 @@ const basicDefaultSettings = {
1373
1378
  /**
1374
1379
  * Creates default settings from the team configuration arrays.
1375
1380
  * Used by the hook when no stored settings exist.
1381
+ *
1382
+ * Note: This function doesn't have access to availableApps, so it can only
1383
+ * enable tools that are explicitly listed in the config arrays.
1384
+ * For auto-enabling all dial tools, the generateDefaultSettings function
1385
+ * (which has access to availableApps) handles that case.
1376
1386
  */
1377
1387
  const createDefaultsFromConfig = (defaultFloatingTools, defaultDialTools) => {
1378
1388
  const floatingSet = new Set(defaultFloatingTools ?? []);
1379
1389
  const dialSet = new Set(defaultDialTools ?? []);
1380
1390
 
1381
1391
  // Build dial tools record from defaults
1392
+ // Note: If no defaults specified, dialTools will be empty here
1393
+ // but generateDefaultSettings will auto-enable all tools when it has access to availableApps
1382
1394
  const dialTools = {};
1383
1395
  for (const id of dialSet) {
1384
1396
  dialTools[id] = true;
@@ -1426,7 +1438,7 @@ const useDevToolsSettings = () => {
1426
1438
  const [settings, setSettings] = (0, _react.useState)(effectiveDefaults);
1427
1439
  const loadSettings = (0, _react.useCallback)(async () => {
1428
1440
  try {
1429
- const savedSettings = await (0, _sharedUi.safeGetItem)(STORAGE_KEY);
1441
+ const savedSettings = await _sharedUi.persistentStorage.getItem(STORAGE_KEY);
1430
1442
  if (savedSettings) {
1431
1443
  const parsed = JSON.parse(savedSettings);
1432
1444
  const merged = mergeWithDefaults(effectiveDefaults, parsed);