@buoy-gg/shared-ui 2.1.2 → 2.1.4-beta.3

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 (60) hide show
  1. package/lib/commonjs/clipboard/clipboard-impl.js +86 -10
  2. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  3. package/lib/commonjs/index.js +141 -59
  4. package/lib/commonjs/storage/devToolsStorageKeys.js +8 -1
  5. package/lib/commonjs/stores/BaseEventStore.js +257 -0
  6. package/lib/commonjs/stores/index.js +12 -0
  7. package/lib/commonjs/utils/index.js +64 -1
  8. package/lib/commonjs/utils/safeExpoRouter.js +141 -0
  9. package/lib/commonjs/utils/subscribable.js +113 -0
  10. package/lib/commonjs/utils/subscriberCountNotifier.js +72 -0
  11. package/lib/module/clipboard/clipboard-impl.js +85 -10
  12. package/lib/module/hooks/safe-area-impl.js +1 -1
  13. package/lib/module/index.js +10 -1
  14. package/lib/module/storage/devToolsStorageKeys.js +8 -1
  15. package/lib/module/stores/BaseEventStore.js +253 -0
  16. package/lib/module/stores/index.js +7 -0
  17. package/lib/module/utils/index.js +4 -1
  18. package/lib/module/utils/safeExpoRouter.js +132 -0
  19. package/lib/module/utils/subscribable.js +108 -0
  20. package/lib/module/utils/subscriberCountNotifier.js +66 -0
  21. package/lib/typescript/commonjs/clipboard/clipboard-impl.d.ts +15 -8
  22. package/lib/typescript/commonjs/clipboard/clipboard-impl.d.ts.map +1 -1
  23. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  24. package/lib/typescript/commonjs/index.d.ts +2 -1
  25. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +2 -0
  27. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/stores/BaseEventStore.d.ts +145 -0
  29. package/lib/typescript/commonjs/stores/BaseEventStore.d.ts.map +1 -0
  30. package/lib/typescript/commonjs/stores/index.d.ts +5 -0
  31. package/lib/typescript/commonjs/stores/index.d.ts.map +1 -0
  32. package/lib/typescript/commonjs/utils/index.d.ts +3 -0
  33. package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/utils/safeExpoRouter.d.ts +17 -0
  35. package/lib/typescript/commonjs/utils/safeExpoRouter.d.ts.map +1 -0
  36. package/lib/typescript/commonjs/utils/subscribable.d.ts +78 -0
  37. package/lib/typescript/commonjs/utils/subscribable.d.ts.map +1 -0
  38. package/lib/typescript/commonjs/utils/subscriberCountNotifier.d.ts +47 -0
  39. package/lib/typescript/commonjs/utils/subscriberCountNotifier.d.ts.map +1 -0
  40. package/lib/typescript/module/clipboard/clipboard-impl.d.ts +15 -8
  41. package/lib/typescript/module/clipboard/clipboard-impl.d.ts.map +1 -1
  42. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  43. package/lib/typescript/module/index.d.ts +2 -1
  44. package/lib/typescript/module/index.d.ts.map +1 -1
  45. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +2 -0
  46. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -1
  47. package/lib/typescript/module/stores/BaseEventStore.d.ts +145 -0
  48. package/lib/typescript/module/stores/BaseEventStore.d.ts.map +1 -0
  49. package/lib/typescript/module/stores/index.d.ts +5 -0
  50. package/lib/typescript/module/stores/index.d.ts.map +1 -0
  51. package/lib/typescript/module/utils/index.d.ts +3 -0
  52. package/lib/typescript/module/utils/index.d.ts.map +1 -1
  53. package/lib/typescript/module/utils/safeExpoRouter.d.ts +17 -0
  54. package/lib/typescript/module/utils/safeExpoRouter.d.ts.map +1 -0
  55. package/lib/typescript/module/utils/subscribable.d.ts +78 -0
  56. package/lib/typescript/module/utils/subscribable.d.ts.map +1 -0
  57. package/lib/typescript/module/utils/subscriberCountNotifier.d.ts +47 -0
  58. package/lib/typescript/module/utils/subscriberCountNotifier.d.ts.map +1 -0
  59. package/package.json +4 -7
  60. package/scripts/detect-clipboard.js +78 -126
@@ -5,22 +5,98 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.isClipboardAvailable = exports.clipboardType = exports.clipboardFunction = void 0;
7
7
  /**
8
- * Auto-generated clipboard implementation
9
- * Detected: none
10
- * Generated at: 2026-01-29T01:02:34.738Z
8
+ * Runtime clipboard implementation
11
9
  *
12
- * DO NOT EDIT - This file is generated by scripts/detect-clipboard.js
10
+ * Uses Metro's allowOptionalDependencies with top-level try-catch
11
+ * so Metro marks these requires as optional (skipped if not installed).
13
12
  *
14
- * No clipboard library found. Install one of:
15
- * - expo-clipboard (for Expo projects)
16
- * - @react-native-clipboard/clipboard (for RN CLI projects)
13
+ * We grab module references eagerly (for Metro), but detect which one
14
+ * actually works lazily on first use — by trying to call it. This avoids
15
+ * NativeModules checks which don't work with TurboModules/new architecture.
16
+ *
17
+ * Consumers must set `transformer.allowOptionalDependencies = true`
18
+ * in their metro.config.js for this to work.
19
+ *
20
+ * Fallback chain:
21
+ * 1. expo-clipboard
22
+ * 2. @react-native-clipboard/clipboard
23
+ * 3. Graceful failure
17
24
  */
18
25
 
19
- const clipboardType = exports.clipboardType = null;
20
- const isClipboardAvailable = () => false;
26
+ // Grab module references at load time (top-level try-catch for Metro)
27
+ // Always require both we decide which actually works at call time
28
+ let _expoClipboard = null;
29
+ try {
30
+ _expoClipboard = require("expo-clipboard");
31
+ } catch {}
32
+ let _rnClipboard = null;
33
+ try {
34
+ const mod = require("@react-native-clipboard/clipboard");
35
+ _rnClipboard = mod.default || mod;
36
+ } catch {}
37
+
38
+ // Lazy detection: resolved on first clipboardFunction() call
39
+ let _detectedType = null;
40
+ let _clipboardFn = null;
41
+ let _detected = false;
42
+ async function detect(text) {
43
+ // 1. Try expo-clipboard by actually calling it
44
+ if (_expoClipboard && typeof _expoClipboard.setStringAsync === "function") {
45
+ try {
46
+ await _expoClipboard.setStringAsync(text);
47
+ _detectedType = "expo";
48
+ _clipboardFn = async t => {
49
+ await _expoClipboard.setStringAsync(t);
50
+ return true;
51
+ };
52
+ _detected = true;
53
+ return true;
54
+ } catch {}
55
+ }
56
+
57
+ // 2. Try @react-native-clipboard/clipboard
58
+ if (_rnClipboard && typeof _rnClipboard.setString === "function") {
59
+ try {
60
+ _rnClipboard.setString(text);
61
+ _detectedType = "react-native";
62
+ _clipboardFn = async t => {
63
+ _rnClipboard.setString(t);
64
+ return true;
65
+ };
66
+ _detected = true;
67
+ return true;
68
+ } catch {}
69
+ }
70
+ _detected = true;
71
+ return false;
72
+ }
73
+ const clipboardType = () => {
74
+ return _detectedType;
75
+ };
76
+ exports.clipboardType = clipboardType;
77
+ const isClipboardAvailable = () => {
78
+ // Before first use, optimistically return true if we have a module ref
79
+ if (!_detected) return _expoClipboard != null || _rnClipboard != null;
80
+ return _clipboardFn != null;
81
+ };
21
82
  exports.isClipboardAvailable = isClipboardAvailable;
22
83
  const clipboardFunction = async text => {
23
- console.error("[RnBetterDevTools] Copy failed: No clipboard library found.\n" + `Attempted to copy: ${text.substring(0, 50)}${text.length > 50 ? "..." : ""}\n` + "Install expo-clipboard or @react-native-clipboard/clipboard, or provide a custom onCopy function.");
84
+ // If already detected, use the cached function
85
+ if (_detected && _clipboardFn) {
86
+ try {
87
+ return await _clipboardFn(text);
88
+ } catch (error) {
89
+ console.error("[buoy] Clipboard copy failed:", error);
90
+ return false;
91
+ }
92
+ }
93
+
94
+ // First call: detect which clipboard works by actually trying it
95
+ if (!_detected) {
96
+ const result = await detect(text);
97
+ if (result) return true;
98
+ }
99
+ console.warn("[buoy] No clipboard library available. Install expo-clipboard or @react-native-clipboard/clipboard.");
24
100
  return false;
25
101
  };
26
102
  exports.clipboardFunction = clipboardFunction;
@@ -7,7 +7,7 @@ exports.useNativeSafeAreaInsets = exports.safeAreaType = exports.hasSafeAreaPack
7
7
  /**
8
8
  * Auto-generated safe area implementation
9
9
  * Detected: none
10
- * Generated at: 2026-01-29T01:02:34.764Z
10
+ * Generated at: 2026-02-10T20:29:38.101Z
11
11
  *
12
12
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
13
13
  *
@@ -26,6 +26,16 @@ var _exportNames = {
26
26
  formatPath: true,
27
27
  loadOptionalModule: true,
28
28
  getCachedOptionalModule: true,
29
+ Subscribable: true,
30
+ subscriberCountNotifier: true,
31
+ subscribeToSubscriberCountChanges: true,
32
+ notifySubscriberCountChange: true,
33
+ useSafeRouter: true,
34
+ useSafePathname: true,
35
+ useSafeSegments: true,
36
+ useSafeGlobalSearchParams: true,
37
+ getSafeRouter: true,
38
+ isExpoRouterAvailable: true,
29
39
  isPlainObjectUtil: true,
30
40
  useSafeAreaInsets: true,
31
41
  useFilterManager: true,
@@ -75,13 +85,13 @@ Object.defineProperty(exports, "EnvironmentSelectorInline", {
75
85
  Object.defineProperty(exports, "FeatureGate", {
76
86
  enumerable: true,
77
87
  get: function () {
78
- return _index11.FeatureGate;
88
+ return _index12.FeatureGate;
79
89
  }
80
90
  });
81
91
  Object.defineProperty(exports, "HintsProvider", {
82
92
  enumerable: true,
83
93
  get: function () {
84
- return _index1.HintsProvider;
94
+ return _index10.HintsProvider;
85
95
  }
86
96
  });
87
97
  Object.defineProperty(exports, "JsModal", {
@@ -93,37 +103,43 @@ Object.defineProperty(exports, "JsModal", {
93
103
  Object.defineProperty(exports, "LicenseEntryModal", {
94
104
  enumerable: true,
95
105
  get: function () {
96
- return _index11.LicenseEntryModal;
106
+ return _index12.LicenseEntryModal;
97
107
  }
98
108
  });
99
109
  Object.defineProperty(exports, "ProBadge", {
100
110
  enumerable: true,
101
111
  get: function () {
102
- return _index11.ProBadge;
112
+ return _index12.ProBadge;
103
113
  }
104
114
  });
105
115
  Object.defineProperty(exports, "ProFeatureBanner", {
106
116
  enumerable: true,
107
117
  get: function () {
108
- return _index11.ProFeatureBanner;
118
+ return _index12.ProFeatureBanner;
109
119
  }
110
120
  });
111
121
  Object.defineProperty(exports, "ProUpgradeModal", {
112
122
  enumerable: true,
113
123
  get: function () {
114
- return _index11.ProUpgradeModal;
124
+ return _index12.ProUpgradeModal;
125
+ }
126
+ });
127
+ Object.defineProperty(exports, "Subscribable", {
128
+ enumerable: true,
129
+ get: function () {
130
+ return _index3.Subscribable;
115
131
  }
116
132
  });
117
133
  Object.defineProperty(exports, "UpgradeModal", {
118
134
  enumerable: true,
119
135
  get: function () {
120
- return _index11.UpgradeModal;
136
+ return _index12.UpgradeModal;
121
137
  }
122
138
  });
123
139
  Object.defineProperty(exports, "UpgradePrompt", {
124
140
  enumerable: true,
125
141
  get: function () {
126
- return _index11.UpgradePrompt;
142
+ return _index12.UpgradePrompt;
127
143
  }
128
144
  });
129
145
  Object.defineProperty(exports, "buoyColors", {
@@ -141,25 +157,25 @@ Object.defineProperty(exports, "dialColors", {
141
157
  Object.defineProperty(exports, "displayValue", {
142
158
  enumerable: true,
143
159
  get: function () {
144
- return _index2.displayValue;
160
+ return _index3.displayValue;
145
161
  }
146
162
  });
147
163
  Object.defineProperty(exports, "flattenObject", {
148
164
  enumerable: true,
149
165
  get: function () {
150
- return _index2.flattenObject;
166
+ return _index3.flattenObject;
151
167
  }
152
168
  });
153
169
  Object.defineProperty(exports, "formatPath", {
154
170
  enumerable: true,
155
171
  get: function () {
156
- return _index2.formatPath;
172
+ return _index3.formatPath;
157
173
  }
158
174
  });
159
175
  Object.defineProperty(exports, "formatValue", {
160
176
  enumerable: true,
161
177
  get: function () {
162
- return _index2.formatValue;
178
+ return _index3.formatValue;
163
179
  }
164
180
  });
165
181
  Object.defineProperty(exports, "gameUIColors", {
@@ -171,73 +187,85 @@ Object.defineProperty(exports, "gameUIColors", {
171
187
  Object.defineProperty(exports, "getCachedOptionalModule", {
172
188
  enumerable: true,
173
189
  get: function () {
174
- return _index2.getCachedOptionalModule;
190
+ return _index3.getCachedOptionalModule;
175
191
  }
176
192
  });
177
193
  Object.defineProperty(exports, "getConstructorName", {
178
194
  enumerable: true,
179
195
  get: function () {
180
- return _index2.getConstructorName;
196
+ return _index3.getConstructorName;
181
197
  }
182
198
  });
183
199
  Object.defineProperty(exports, "getDeviceInfo", {
184
200
  enumerable: true,
185
201
  get: function () {
186
- return _index0.getDeviceInfo;
202
+ return _index1.getDeviceInfo;
187
203
  }
188
204
  });
189
205
  Object.defineProperty(exports, "getSafeAreaInsets", {
190
206
  enumerable: true,
191
207
  get: function () {
192
- return _index2.getSafeAreaInsets;
208
+ return _index3.getSafeAreaInsets;
209
+ }
210
+ });
211
+ Object.defineProperty(exports, "getSafeRouter", {
212
+ enumerable: true,
213
+ get: function () {
214
+ return _index3.getSafeRouter;
193
215
  }
194
216
  });
195
217
  Object.defineProperty(exports, "getStorageBackendType", {
196
218
  enumerable: true,
197
219
  get: function () {
198
- return _index2.getStorageBackendType;
220
+ return _index3.getStorageBackendType;
199
221
  }
200
222
  });
201
223
  Object.defineProperty(exports, "getTypeColor", {
202
224
  enumerable: true,
203
225
  get: function () {
204
- return _index2.getTypeColor;
226
+ return _index3.getTypeColor;
205
227
  }
206
228
  });
207
229
  Object.defineProperty(exports, "getUseIsPro", {
208
230
  enumerable: true,
209
231
  get: function () {
210
- return _index11.getUseIsPro;
232
+ return _index12.getUseIsPro;
211
233
  }
212
234
  });
213
235
  Object.defineProperty(exports, "getUseLicense", {
214
236
  enumerable: true,
215
237
  get: function () {
216
- return _index11.getUseLicense;
238
+ return _index12.getUseLicense;
217
239
  }
218
240
  });
219
241
  Object.defineProperty(exports, "getValueSize", {
220
242
  enumerable: true,
221
243
  get: function () {
222
- return _index2.getValueSize;
244
+ return _index3.getValueSize;
223
245
  }
224
246
  });
225
247
  Object.defineProperty(exports, "getValueType", {
226
248
  enumerable: true,
227
249
  get: function () {
228
- return _index2.getValueType;
250
+ return _index3.getValueType;
229
251
  }
230
252
  });
231
253
  Object.defineProperty(exports, "isEmpty", {
232
254
  enumerable: true,
233
255
  get: function () {
234
- return _index2.isEmpty;
256
+ return _index3.isEmpty;
257
+ }
258
+ });
259
+ Object.defineProperty(exports, "isExpoRouterAvailable", {
260
+ enumerable: true,
261
+ get: function () {
262
+ return _index3.isExpoRouterAvailable;
235
263
  }
236
264
  });
237
265
  Object.defineProperty(exports, "isJsonSerializable", {
238
266
  enumerable: true,
239
267
  get: function () {
240
- return _index2.isJsonSerializable;
268
+ return _index3.isJsonSerializable;
241
269
  }
242
270
  });
243
271
  Object.defineProperty(exports, "isPlainObjectUtil", {
@@ -249,31 +277,31 @@ Object.defineProperty(exports, "isPlainObjectUtil", {
249
277
  Object.defineProperty(exports, "isPrimitive", {
250
278
  enumerable: true,
251
279
  get: function () {
252
- return _index2.isPrimitive;
280
+ return _index3.isPrimitive;
253
281
  }
254
282
  });
255
283
  Object.defineProperty(exports, "isUsingPersistentStorage", {
256
284
  enumerable: true,
257
285
  get: function () {
258
- return _index2.isUsingPersistentStorage;
286
+ return _index3.isUsingPersistentStorage;
259
287
  }
260
288
  });
261
289
  Object.defineProperty(exports, "isValidJson", {
262
290
  enumerable: true,
263
291
  get: function () {
264
- return _index2.isValidJson;
292
+ return _index3.isValidJson;
265
293
  }
266
294
  });
267
295
  Object.defineProperty(exports, "loadOptionalModule", {
268
296
  enumerable: true,
269
297
  get: function () {
270
- return _index2.loadOptionalModule;
298
+ return _index3.loadOptionalModule;
271
299
  }
272
300
  });
273
301
  Object.defineProperty(exports, "logDeviceInfo", {
274
302
  enumerable: true,
275
303
  get: function () {
276
- return _index0.logDeviceInfo;
304
+ return _index1.logDeviceInfo;
277
305
  }
278
306
  });
279
307
  Object.defineProperty(exports, "macOSColors", {
@@ -282,70 +310,112 @@ Object.defineProperty(exports, "macOSColors", {
282
310
  return _macOSDesignSystemColors.macOSColors;
283
311
  }
284
312
  });
313
+ Object.defineProperty(exports, "notifySubscriberCountChange", {
314
+ enumerable: true,
315
+ get: function () {
316
+ return _index3.notifySubscriberCountChange;
317
+ }
318
+ });
285
319
  Object.defineProperty(exports, "parseDisplayValue", {
286
320
  enumerable: true,
287
321
  get: function () {
288
- return _index2.parseDisplayValue;
322
+ return _index3.parseDisplayValue;
289
323
  }
290
324
  });
291
325
  Object.defineProperty(exports, "parseValue", {
292
326
  enumerable: true,
293
327
  get: function () {
294
- return _index2.parseValue;
328
+ return _index3.parseValue;
295
329
  }
296
330
  });
297
331
  Object.defineProperty(exports, "persistentStorage", {
298
332
  enumerable: true,
299
333
  get: function () {
300
- return _index2.persistentStorage;
334
+ return _index3.persistentStorage;
301
335
  }
302
336
  });
303
337
  Object.defineProperty(exports, "safeStringify", {
304
338
  enumerable: true,
305
339
  get: function () {
306
- return _index2.safeStringify;
340
+ return _index3.safeStringify;
341
+ }
342
+ });
343
+ Object.defineProperty(exports, "subscribeToSubscriberCountChanges", {
344
+ enumerable: true,
345
+ get: function () {
346
+ return _index3.subscribeToSubscriberCountChanges;
347
+ }
348
+ });
349
+ Object.defineProperty(exports, "subscriberCountNotifier", {
350
+ enumerable: true,
351
+ get: function () {
352
+ return _index3.subscriberCountNotifier;
307
353
  }
308
354
  });
309
355
  Object.defineProperty(exports, "truncateText", {
310
356
  enumerable: true,
311
357
  get: function () {
312
- return _index2.truncateText;
358
+ return _index3.truncateText;
313
359
  }
314
360
  });
315
361
  Object.defineProperty(exports, "useDeviceInfo", {
316
362
  enumerable: true,
317
363
  get: function () {
318
- return _index0.useDeviceInfo;
364
+ return _index1.useDeviceInfo;
319
365
  }
320
366
  });
321
367
  Object.defineProperty(exports, "useFeatureGate", {
322
368
  enumerable: true,
323
369
  get: function () {
324
- return _index11.useFeatureGate;
370
+ return _index12.useFeatureGate;
325
371
  }
326
372
  });
327
373
  Object.defineProperty(exports, "useFilterManager", {
328
374
  enumerable: true,
329
375
  get: function () {
330
- return _index0.useFilterManager;
376
+ return _index1.useFilterManager;
331
377
  }
332
378
  });
333
379
  Object.defineProperty(exports, "useHintsContext", {
334
380
  enumerable: true,
335
381
  get: function () {
336
- return _index1.useHintsContext;
382
+ return _index10.useHintsContext;
337
383
  }
338
384
  });
339
385
  Object.defineProperty(exports, "useHintsDisabled", {
340
386
  enumerable: true,
341
387
  get: function () {
342
- return _index1.useHintsDisabled;
388
+ return _index10.useHintsDisabled;
343
389
  }
344
390
  });
345
391
  Object.defineProperty(exports, "useSafeAreaInsets", {
346
392
  enumerable: true,
347
393
  get: function () {
348
- return _index0.useSafeAreaInsets;
394
+ return _index1.useSafeAreaInsets;
395
+ }
396
+ });
397
+ Object.defineProperty(exports, "useSafeGlobalSearchParams", {
398
+ enumerable: true,
399
+ get: function () {
400
+ return _index3.useSafeGlobalSearchParams;
401
+ }
402
+ });
403
+ Object.defineProperty(exports, "useSafePathname", {
404
+ enumerable: true,
405
+ get: function () {
406
+ return _index3.useSafePathname;
407
+ }
408
+ });
409
+ Object.defineProperty(exports, "useSafeRouter", {
410
+ enumerable: true,
411
+ get: function () {
412
+ return _index3.useSafeRouter;
413
+ }
414
+ });
415
+ Object.defineProperty(exports, "useSafeSegments", {
416
+ enumerable: true,
417
+ get: function () {
418
+ return _index3.useSafeSegments;
349
419
  }
350
420
  });
351
421
  var _index = require("./ui/index.js");
@@ -360,20 +430,20 @@ Object.keys(_index).forEach(function (key) {
360
430
  }
361
431
  });
362
432
  });
363
- var _index2 = require("./utils/index.js");
364
- var _index3 = require("./utils/formatting/index.js");
365
- Object.keys(_index3).forEach(function (key) {
433
+ var _index2 = require("./stores/index.js");
434
+ Object.keys(_index2).forEach(function (key) {
366
435
  if (key === "default" || key === "__esModule") return;
367
436
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
368
- if (key in exports && exports[key] === _index3[key]) return;
437
+ if (key in exports && exports[key] === _index2[key]) return;
369
438
  Object.defineProperty(exports, key, {
370
439
  enumerable: true,
371
440
  get: function () {
372
- return _index3[key];
441
+ return _index2[key];
373
442
  }
374
443
  });
375
444
  });
376
- var _index4 = require("./utils/time/index.js");
445
+ var _index3 = require("./utils/index.js");
446
+ var _index4 = require("./utils/formatting/index.js");
377
447
  Object.keys(_index4).forEach(function (key) {
378
448
  if (key === "default" || key === "__esModule") return;
379
449
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -385,8 +455,7 @@ Object.keys(_index4).forEach(function (key) {
385
455
  }
386
456
  });
387
457
  });
388
- var _typeHelpers = require("./utils/typeHelpers.js");
389
- var _index5 = require("./icons/index.js");
458
+ var _index5 = require("./utils/time/index.js");
390
459
  Object.keys(_index5).forEach(function (key) {
391
460
  if (key === "default" || key === "__esModule") return;
392
461
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -398,7 +467,8 @@ Object.keys(_index5).forEach(function (key) {
398
467
  }
399
468
  });
400
469
  });
401
- var _index6 = require("./clipboard/index.js");
470
+ var _typeHelpers = require("./utils/typeHelpers.js");
471
+ var _index6 = require("./icons/index.js");
402
472
  Object.keys(_index6).forEach(function (key) {
403
473
  if (key === "default" || key === "__esModule") return;
404
474
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -410,7 +480,7 @@ Object.keys(_index6).forEach(function (key) {
410
480
  }
411
481
  });
412
482
  });
413
- var _index7 = require("./logger/index.js");
483
+ var _index7 = require("./clipboard/index.js");
414
484
  Object.keys(_index7).forEach(function (key) {
415
485
  if (key === "default" || key === "__esModule") return;
416
486
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -422,7 +492,7 @@ Object.keys(_index7).forEach(function (key) {
422
492
  }
423
493
  });
424
494
  });
425
- var _index8 = require("./settings/index.js");
495
+ var _index8 = require("./logger/index.js");
426
496
  Object.keys(_index8).forEach(function (key) {
427
497
  if (key === "default" || key === "__esModule") return;
428
498
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -434,7 +504,7 @@ Object.keys(_index8).forEach(function (key) {
434
504
  }
435
505
  });
436
506
  });
437
- var _index9 = require("./storage/index.js");
507
+ var _index9 = require("./settings/index.js");
438
508
  Object.keys(_index9).forEach(function (key) {
439
509
  if (key === "default" || key === "__esModule") return;
440
510
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -446,24 +516,36 @@ Object.keys(_index9).forEach(function (key) {
446
516
  }
447
517
  });
448
518
  });
449
- var _index0 = require("./hooks/index.js");
519
+ var _index0 = require("./storage/index.js");
520
+ Object.keys(_index0).forEach(function (key) {
521
+ if (key === "default" || key === "__esModule") return;
522
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
523
+ if (key in exports && exports[key] === _index0[key]) return;
524
+ Object.defineProperty(exports, key, {
525
+ enumerable: true,
526
+ get: function () {
527
+ return _index0[key];
528
+ }
529
+ });
530
+ });
531
+ var _index1 = require("./hooks/index.js");
450
532
  var _JsModal = require("./JsModal.js");
451
533
  var _gameUIColors = require("./ui/gameUI/constants/gameUIColors.js");
452
534
  var _macOSDesignSystemColors = require("./ui/gameUI/constants/macOSDesignSystemColors.js");
453
535
  var _EnvironmentIndicator = require("./env/EnvironmentIndicator.js");
454
536
  var _EnvironmentSelector = require("./env/EnvironmentSelector.js");
455
537
  var _EnvironmentSelectorInline = require("./env/EnvironmentSelectorInline.js");
456
- var _index1 = require("./context/index.js");
457
- var _index10 = require("./history/index.js");
458
- Object.keys(_index10).forEach(function (key) {
538
+ var _index10 = require("./context/index.js");
539
+ var _index11 = require("./history/index.js");
540
+ Object.keys(_index11).forEach(function (key) {
459
541
  if (key === "default" || key === "__esModule") return;
460
542
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
461
- if (key in exports && exports[key] === _index10[key]) return;
543
+ if (key in exports && exports[key] === _index11[key]) return;
462
544
  Object.defineProperty(exports, key, {
463
545
  enumerable: true,
464
546
  get: function () {
465
- return _index10[key];
547
+ return _index11[key];
466
548
  }
467
549
  });
468
550
  });
469
- var _index11 = require("./license/index.js");
551
+ var _index12 = require("./license/index.js");
@@ -171,6 +171,8 @@ const devToolsStorageKeys = exports.devToolsStorageKeys = {
171
171
  modal: () => `${devToolsStorageKeys.events.root()}_modal`,
172
172
  /** Selected badge/source filters */
173
173
  enabledSources: () => `${devToolsStorageKeys.events.root()}_enabled_sources`,
174
+ /** Whether event capturing is active */
175
+ isCapturing: () => `${devToolsStorageKeys.events.root()}_is_capturing`,
174
176
  /** Copy/export settings */
175
177
  copySettings: () => `${devToolsStorageKeys.events.root()}_copy_settings`
176
178
  }
@@ -195,11 +197,16 @@ const LEGACY_DEV_TOOL_PATTERNS = ["@devtools", "@dev_tools_", "@modal_state_",
195
197
  function isDevToolsStorageKey(key) {
196
198
  if (!key) return false;
197
199
 
198
- // Check if it starts with our base prefix
200
+ // Check if it starts with our base prefix (@react_buoy)
199
201
  if (key.startsWith(devToolsStorageKeys.base)) {
200
202
  return true;
201
203
  }
202
204
 
205
+ // Check for buoy- prefixed keys (modal persistence, license, etc.)
206
+ if (key.startsWith("buoy-")) {
207
+ return true;
208
+ }
209
+
203
210
  // Check for legacy dev tool keys that need cleanup
204
211
  for (const pattern of LEGACY_DEV_TOOL_PATTERNS) {
205
212
  if (key.startsWith(pattern)) {