@buoy-gg/shared-ui 2.1.1 → 2.1.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.
- package/lib/commonjs/clipboard/clipboard-impl.js +1 -1
- package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +20 -23
- package/lib/commonjs/hooks/safe-area-impl.js +1 -1
- package/lib/commonjs/index.js +98 -65
- package/lib/commonjs/license/DeviceLimitModal.js +479 -0
- package/lib/commonjs/license/FeatureGate.js +4 -9
- package/lib/commonjs/license/LicenseEntryModal.js +205 -770
- package/lib/commonjs/license/index.js +0 -7
- package/lib/commonjs/storage/devToolsStorageKeys.js +2 -0
- package/lib/commonjs/stores/BaseEventStore.js +257 -0
- package/lib/commonjs/stores/index.js +12 -0
- package/lib/commonjs/ui/components/PowerToggleButton.js +73 -0
- package/lib/commonjs/ui/components/index.js +7 -0
- package/lib/commonjs/utils/index.js +27 -1
- package/lib/commonjs/utils/subscribable.js +113 -0
- package/lib/commonjs/utils/subscriberCountNotifier.js +72 -0
- package/lib/module/JsModal.js +1 -1
- package/lib/module/clipboard/clipboard-impl.js +1 -1
- package/lib/module/dataViewer/VirtualizedDataExplorer.js +20 -23
- package/lib/module/hooks/safe-area-impl.js +1 -1
- package/lib/module/index.js +9 -2
- package/lib/module/license/DeviceLimitModal.js +473 -0
- package/lib/module/license/FeatureGate.js +4 -9
- package/lib/module/license/LicenseEntryModal.js +209 -773
- package/lib/module/license/index.js +0 -1
- package/lib/module/storage/devToolsStorageKeys.js +2 -0
- package/lib/module/stores/BaseEventStore.js +253 -0
- package/lib/module/stores/index.js +7 -0
- package/lib/module/ui/components/PowerToggleButton.js +69 -0
- package/lib/module/ui/components/index.js +1 -0
- package/lib/module/utils/index.js +3 -1
- package/lib/module/utils/subscribable.js +108 -0
- package/lib/module/utils/subscriberCountNotifier.js +66 -0
- package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/clipboard/clipboard-impl.d.ts +1 -1
- package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/commonjs/index.d.ts +4 -3
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/DeviceLimitModal.d.ts +23 -0
- package/lib/typescript/commonjs/license/DeviceLimitModal.d.ts.map +1 -0
- package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts +10 -62
- package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/index.d.ts +0 -2
- package/lib/typescript/commonjs/license/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +2 -0
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/BaseEventStore.d.ts +145 -0
- package/lib/typescript/commonjs/stores/BaseEventStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/stores/index.d.ts +5 -0
- package/lib/typescript/commonjs/stores/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/PowerToggleButton.d.ts +32 -0
- package/lib/typescript/commonjs/ui/components/PowerToggleButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/index.d.ts +2 -0
- package/lib/typescript/commonjs/ui/components/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/index.d.ts +2 -0
- package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/subscribable.d.ts +78 -0
- package/lib/typescript/commonjs/utils/subscribable.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/subscriberCountNotifier.d.ts +47 -0
- package/lib/typescript/commonjs/utils/subscriberCountNotifier.d.ts.map +1 -0
- package/lib/typescript/module/JsModal.d.ts.map +1 -1
- package/lib/typescript/module/clipboard/clipboard-impl.d.ts +1 -1
- package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
- package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/module/index.d.ts +4 -3
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/license/DeviceLimitModal.d.ts +23 -0
- package/lib/typescript/module/license/DeviceLimitModal.d.ts.map +1 -0
- package/lib/typescript/module/license/FeatureGate.d.ts.map +1 -1
- package/lib/typescript/module/license/LicenseEntryModal.d.ts +10 -62
- package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
- package/lib/typescript/module/license/index.d.ts +0 -2
- package/lib/typescript/module/license/index.d.ts.map +1 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +2 -0
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -1
- package/lib/typescript/module/stores/BaseEventStore.d.ts +145 -0
- package/lib/typescript/module/stores/BaseEventStore.d.ts.map +1 -0
- package/lib/typescript/module/stores/index.d.ts +5 -0
- package/lib/typescript/module/stores/index.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/PowerToggleButton.d.ts +32 -0
- package/lib/typescript/module/ui/components/PowerToggleButton.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/index.d.ts +2 -0
- package/lib/typescript/module/ui/components/index.d.ts.map +1 -1
- package/lib/typescript/module/utils/index.d.ts +2 -0
- package/lib/typescript/module/utils/index.d.ts.map +1 -1
- package/lib/typescript/module/utils/subscribable.d.ts +78 -0
- package/lib/typescript/module/utils/subscribable.d.ts.map +1 -0
- package/lib/typescript/module/utils/subscriberCountNotifier.d.ts +47 -0
- package/lib/typescript/module/utils/subscriberCountNotifier.d.ts.map +1 -0
- package/package.json +3 -3
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
export { FeatureGate, UpgradePrompt, useFeatureGate, ProFeatureBanner, UpgradeModal, ProBadge, ProUpgradeModal } from "./FeatureGate.js";
|
|
4
4
|
export { LicenseEntryModal } from "./LicenseEntryModal.js";
|
|
5
|
-
export { ManageDevicesModal } from "./ManageDevicesModal.js";
|
|
6
5
|
// Centralized lazy loading for license hooks to avoid duplication across packages
|
|
7
6
|
// This is the SINGLE source of truth - all packages should import from here
|
|
8
7
|
let _useIsPro = null;
|
|
@@ -164,6 +164,8 @@ export const devToolsStorageKeys = {
|
|
|
164
164
|
modal: () => `${devToolsStorageKeys.events.root()}_modal`,
|
|
165
165
|
/** Selected badge/source filters */
|
|
166
166
|
enabledSources: () => `${devToolsStorageKeys.events.root()}_enabled_sources`,
|
|
167
|
+
/** Whether event capturing is active */
|
|
168
|
+
isCapturing: () => `${devToolsStorageKeys.events.root()}_is_capturing`,
|
|
167
169
|
/** Copy/export settings */
|
|
168
170
|
copySettings: () => `${devToolsStorageKeys.events.root()}_copy_settings`
|
|
169
171
|
}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* BaseEventStore - Abstract base class for event aggregation stores
|
|
5
|
+
*
|
|
6
|
+
* Handles dual subscription patterns (array listeners + individual event callbacks)
|
|
7
|
+
* and automatically manages start/stop lifecycle based on subscriber count.
|
|
8
|
+
*
|
|
9
|
+
* Follows TanStack Query's Subscribable pattern with extensions for:
|
|
10
|
+
* - Array subscriptions (get full event list on each update)
|
|
11
|
+
* - Individual event subscriptions (get each event as it occurs)
|
|
12
|
+
* - Auto-start capturing when first subscriber joins
|
|
13
|
+
* - Auto-stop capturing when last subscriber leaves
|
|
14
|
+
* - Subscriber count notifications for debugging UI
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* class StorageEventStore extends BaseEventStore<StorageEvent> {
|
|
19
|
+
* protected storeName = 'storage';
|
|
20
|
+
*
|
|
21
|
+
* protected startCapturing(): void {
|
|
22
|
+
* // Start listening to storage changes
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* protected stopCapturing(): void {
|
|
26
|
+
* // Stop listening to storage changes
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
* isCapturing(): boolean {
|
|
30
|
+
* return this.unsubscribe !== null;
|
|
31
|
+
* }
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
import { Subscribable } from "../utils/subscribable.js";
|
|
37
|
+
import { notifySubscriberCountChange } from "../utils/subscriberCountNotifier.js";
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Callback type for receiving full events array
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Callback type for receiving individual events
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Configuration options for BaseEventStore
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Abstract base class for event stores.
|
|
53
|
+
*
|
|
54
|
+
* Subclasses must implement:
|
|
55
|
+
* - `startCapturing()` - Begin listening to the underlying event source
|
|
56
|
+
* - `stopCapturing()` - Stop listening to the underlying event source
|
|
57
|
+
* - `isCapturing()` - Check if currently capturing events
|
|
58
|
+
*/
|
|
59
|
+
export class BaseEventStore extends Subscribable {
|
|
60
|
+
events = [];
|
|
61
|
+
arrayListeners = new Set();
|
|
62
|
+
constructor(options) {
|
|
63
|
+
super();
|
|
64
|
+
this.maxEvents = options.maxEvents ?? 500;
|
|
65
|
+
this.storeName = options.storeName;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ===========================================================================
|
|
69
|
+
// ABSTRACT METHODS - Must be implemented by subclasses
|
|
70
|
+
// ===========================================================================
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Start capturing events from the underlying source.
|
|
74
|
+
* Called automatically when first subscriber joins.
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Stop capturing events from the underlying source.
|
|
79
|
+
* Called automatically when last subscriber leaves.
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Check if the store is actively capturing events.
|
|
84
|
+
*/
|
|
85
|
+
|
|
86
|
+
// ===========================================================================
|
|
87
|
+
// LIFECYCLE HOOKS - Called by Subscribable base class
|
|
88
|
+
// ===========================================================================
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Called when first subscriber joins (via onEvent).
|
|
92
|
+
* Starts capturing if no one was subscribed.
|
|
93
|
+
*/
|
|
94
|
+
onSubscribe() {
|
|
95
|
+
if (this.getTotalSubscriberCount() === 1) {
|
|
96
|
+
this.startCapturing();
|
|
97
|
+
}
|
|
98
|
+
notifySubscriberCountChange(this.storeName);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Called when a subscriber leaves (via onEvent unsubscribe).
|
|
103
|
+
* Stops capturing if no one is subscribed anymore.
|
|
104
|
+
*/
|
|
105
|
+
onUnsubscribe() {
|
|
106
|
+
if (this.getTotalSubscriberCount() === 0) {
|
|
107
|
+
this.stopCapturing();
|
|
108
|
+
}
|
|
109
|
+
notifySubscriberCountChange(this.storeName);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ===========================================================================
|
|
113
|
+
// SUBSCRIPTION METHODS
|
|
114
|
+
// ===========================================================================
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Get total count of all subscribers (both individual and array listeners)
|
|
118
|
+
*/
|
|
119
|
+
getTotalSubscriberCount() {
|
|
120
|
+
return this.listeners.size + this.arrayListeners.size;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Subscribe to the full events array.
|
|
125
|
+
* Automatically starts capturing when first subscriber joins.
|
|
126
|
+
*
|
|
127
|
+
* @param listener - Callback that receives the full events array on each update
|
|
128
|
+
* @returns Unsubscribe function
|
|
129
|
+
*/
|
|
130
|
+
subscribeToEvents(listener) {
|
|
131
|
+
const wasEmpty = this.getTotalSubscriberCount() === 0;
|
|
132
|
+
this.arrayListeners.add(listener);
|
|
133
|
+
|
|
134
|
+
// Start capturing if this is the first subscriber
|
|
135
|
+
if (wasEmpty) {
|
|
136
|
+
this.startCapturing();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Notify subscriber count change
|
|
140
|
+
notifySubscriberCountChange(this.storeName);
|
|
141
|
+
|
|
142
|
+
// Immediately call with current events
|
|
143
|
+
listener(this.getEvents());
|
|
144
|
+
|
|
145
|
+
// Return unsubscribe function
|
|
146
|
+
return () => {
|
|
147
|
+
this.arrayListeners.delete(listener);
|
|
148
|
+
|
|
149
|
+
// Stop capturing if no one is subscribed anymore
|
|
150
|
+
if (this.getTotalSubscriberCount() === 0) {
|
|
151
|
+
this.stopCapturing();
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Notify subscriber count change
|
|
155
|
+
notifySubscriberCountChange(this.storeName);
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Subscribe to individual events as they occur.
|
|
161
|
+
* Automatically starts capturing when first subscriber joins.
|
|
162
|
+
*
|
|
163
|
+
* @param callback - Callback that receives each event as it occurs
|
|
164
|
+
* @returns Unsubscribe function
|
|
165
|
+
*/
|
|
166
|
+
onEvent(callback) {
|
|
167
|
+
// Use Subscribable's subscribe method (triggers onSubscribe hook)
|
|
168
|
+
return this.subscribe(callback);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// ===========================================================================
|
|
172
|
+
// EVENT MANAGEMENT
|
|
173
|
+
// ===========================================================================
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Add an event to the store.
|
|
177
|
+
* Call this from subclasses when a new event is received.
|
|
178
|
+
*
|
|
179
|
+
* @param event - The event to add
|
|
180
|
+
*/
|
|
181
|
+
addEvent(event) {
|
|
182
|
+
// Add to beginning (newest first) and limit to maxEvents
|
|
183
|
+
this.events = [event, ...this.events].slice(0, this.maxEvents);
|
|
184
|
+
|
|
185
|
+
// Notify individual event callbacks (via Subscribable)
|
|
186
|
+
this.notify(event);
|
|
187
|
+
|
|
188
|
+
// Notify array listeners
|
|
189
|
+
this.notifyArrayListeners();
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Notify all array listeners of changes
|
|
194
|
+
*/
|
|
195
|
+
notifyArrayListeners() {
|
|
196
|
+
const events = this.getEvents();
|
|
197
|
+
this.arrayListeners.forEach(listener => {
|
|
198
|
+
try {
|
|
199
|
+
listener(events);
|
|
200
|
+
} catch {
|
|
201
|
+
// Ignore listener errors
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Get all events (newest first)
|
|
208
|
+
*/
|
|
209
|
+
getEvents() {
|
|
210
|
+
return this.events;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Get event count
|
|
215
|
+
*/
|
|
216
|
+
getEventCount() {
|
|
217
|
+
return this.events.length;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Clear all events
|
|
222
|
+
*/
|
|
223
|
+
clearEvents() {
|
|
224
|
+
this.events = [];
|
|
225
|
+
this.notifyArrayListeners();
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Set maximum number of events to keep
|
|
230
|
+
*/
|
|
231
|
+
setMaxEvents(max) {
|
|
232
|
+
this.maxEvents = max;
|
|
233
|
+
if (this.events.length > max) {
|
|
234
|
+
this.events = this.events.slice(0, max);
|
|
235
|
+
this.notifyArrayListeners();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// ===========================================================================
|
|
240
|
+
// DEBUGGING
|
|
241
|
+
// ===========================================================================
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Get current subscriber counts for debugging
|
|
245
|
+
*/
|
|
246
|
+
getSubscriberCounts() {
|
|
247
|
+
return {
|
|
248
|
+
eventCallbacks: this.listeners.size,
|
|
249
|
+
arrayListeners: this.arrayListeners.size,
|
|
250
|
+
total: this.getTotalSubscriberCount()
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* PowerToggleButton Component
|
|
5
|
+
*
|
|
6
|
+
* A reusable power button for toggling capture/recording state across dev tools.
|
|
7
|
+
* Displays green when enabled, red when disabled.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { TouchableOpacity, StyleSheet } from "react-native";
|
|
11
|
+
import { Power } from "../../icons/index.js";
|
|
12
|
+
import { macOSColors } from "../gameUI/constants/macOSDesignSystemColors.js";
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
/**
|
|
15
|
+
* Power toggle button used across dev tools for start/stop functionality.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <PowerToggleButton
|
|
20
|
+
* isEnabled={isRecording}
|
|
21
|
+
* onToggle={() => setIsRecording(!isRecording)}
|
|
22
|
+
* accessibilityLabel="Toggle network recording"
|
|
23
|
+
* />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function PowerToggleButton({
|
|
27
|
+
isEnabled,
|
|
28
|
+
onToggle,
|
|
29
|
+
size = "medium",
|
|
30
|
+
accessibilityLabel,
|
|
31
|
+
disabled = false
|
|
32
|
+
}) {
|
|
33
|
+
const buttonSize = size === "small" ? 28 : 32;
|
|
34
|
+
const iconSize = size === "small" ? 12 : 14;
|
|
35
|
+
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
36
|
+
onPress: onToggle,
|
|
37
|
+
disabled: disabled,
|
|
38
|
+
accessibilityLabel: accessibilityLabel,
|
|
39
|
+
accessibilityRole: "button",
|
|
40
|
+
style: [styles.button, {
|
|
41
|
+
width: buttonSize,
|
|
42
|
+
height: buttonSize
|
|
43
|
+
}, isEnabled ? styles.enabledButton : styles.disabledButton, disabled && styles.buttonDisabled],
|
|
44
|
+
activeOpacity: 0.7,
|
|
45
|
+
children: /*#__PURE__*/_jsx(Power, {
|
|
46
|
+
size: iconSize,
|
|
47
|
+
color: isEnabled ? macOSColors.semantic.success : macOSColors.semantic.error
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const styles = StyleSheet.create({
|
|
52
|
+
button: {
|
|
53
|
+
borderRadius: 8,
|
|
54
|
+
borderWidth: 1,
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
justifyContent: "center"
|
|
57
|
+
},
|
|
58
|
+
enabledButton: {
|
|
59
|
+
backgroundColor: macOSColors.semantic.successBackground,
|
|
60
|
+
borderColor: macOSColors.semantic.success + "40"
|
|
61
|
+
},
|
|
62
|
+
disabledButton: {
|
|
63
|
+
backgroundColor: macOSColors.semantic.errorBackground,
|
|
64
|
+
borderColor: macOSColors.semantic.error + "40"
|
|
65
|
+
},
|
|
66
|
+
buttonDisabled: {
|
|
67
|
+
opacity: 0.55
|
|
68
|
+
}
|
|
69
|
+
});
|
|
@@ -30,5 +30,6 @@ export { DynamicFilterView } from "./DynamicFilterView.js";
|
|
|
30
30
|
export { WindowControls } from "./WindowControls.js";
|
|
31
31
|
export { EventStepperFooter } from "./EventStepperFooter.js";
|
|
32
32
|
export { ExpandablePopover } from "./ExpandablePopover.js";
|
|
33
|
+
export { PowerToggleButton } from "./PowerToggleButton.js";
|
|
33
34
|
// EventHistoryViewer components
|
|
34
35
|
export { EventHistoryViewer, ViewToggleCards, DiffModeTabs, CompareBar, EventPickerModal } from "./EventHistoryViewer/index.js";
|
|
@@ -6,4 +6,6 @@ export { persistentStorage, isUsingPersistentStorage, getStorageBackendType } fr
|
|
|
6
6
|
export { safeStringify } from "./safeStringify.js";
|
|
7
7
|
export { getValueType, isPrimitive, isJsonSerializable, isValidJson, getConstructorName, isEmpty, getValueSize } from "./typeHelpers.js";
|
|
8
8
|
export { parseValue, formatValue, getTypeColor, truncateText, flattenObject, formatPath } from "./valueFormatting.js";
|
|
9
|
-
export { loadOptionalModule, getCachedOptionalModule } from "./loadOptionalModule.js";
|
|
9
|
+
export { loadOptionalModule, getCachedOptionalModule } from "./loadOptionalModule.js";
|
|
10
|
+
export { Subscribable } from "./subscribable.js";
|
|
11
|
+
export { subscriberCountNotifier, subscribeToSubscriberCountChanges, notifySubscriberCountChange } from "./subscriberCountNotifier.js";
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Subscribable - Base class for pub/sub pattern with lifecycle hooks
|
|
5
|
+
*
|
|
6
|
+
* Ported from TanStack Query's subscription architecture.
|
|
7
|
+
* Provides a foundation for self-managing listeners that automatically
|
|
8
|
+
* start when the first subscriber joins and stop when the last leaves.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class NetworkEventStore extends Subscribable<NetworkEventListener> {
|
|
13
|
+
* protected onSubscribe(): void {
|
|
14
|
+
* if (this.listeners.size === 1) {
|
|
15
|
+
* // First subscriber - start listening
|
|
16
|
+
* this.startNetworkListener();
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* protected onUnsubscribe(): void {
|
|
21
|
+
* if (this.listeners.size === 0) {
|
|
22
|
+
* // Last subscriber left - stop listening
|
|
23
|
+
* this.stopNetworkListener();
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
+
|
|
32
|
+
export class Subscribable {
|
|
33
|
+
listeners = new Set();
|
|
34
|
+
constructor() {
|
|
35
|
+
this.subscribe = this.subscribe.bind(this);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Subscribe to updates.
|
|
40
|
+
* @param listener - Callback function to receive updates
|
|
41
|
+
* @returns Unsubscribe function
|
|
42
|
+
*/
|
|
43
|
+
subscribe(listener) {
|
|
44
|
+
this.listeners.add(listener);
|
|
45
|
+
this.onSubscribe();
|
|
46
|
+
return () => {
|
|
47
|
+
this.listeners.delete(listener);
|
|
48
|
+
this.onUnsubscribe();
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Check if there are any active listeners.
|
|
54
|
+
*/
|
|
55
|
+
hasListeners() {
|
|
56
|
+
return this.listeners.size > 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get the current number of listeners.
|
|
61
|
+
*/
|
|
62
|
+
getListenerCount() {
|
|
63
|
+
return this.listeners.size;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Notify all listeners with given arguments.
|
|
68
|
+
*/
|
|
69
|
+
notify(...args) {
|
|
70
|
+
this.listeners.forEach(listener => {
|
|
71
|
+
listener(...args);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Called when a listener is added.
|
|
77
|
+
* Override to start resources when first subscriber joins.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* protected onSubscribe(): void {
|
|
82
|
+
* if (this.listeners.size === 1) {
|
|
83
|
+
* this.startCapturing();
|
|
84
|
+
* }
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
onSubscribe() {
|
|
89
|
+
// Override in subclasses
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Called when a listener is removed.
|
|
94
|
+
* Override to stop resources when last subscriber leaves.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* protected onUnsubscribe(): void {
|
|
99
|
+
* if (this.listeners.size === 0) {
|
|
100
|
+
* this.stopCapturing();
|
|
101
|
+
* }
|
|
102
|
+
* }
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
onUnsubscribe() {
|
|
106
|
+
// Override in subclasses
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Subscriber Count Notifier
|
|
5
|
+
*
|
|
6
|
+
* Global notification system for subscriber count changes across all event stores.
|
|
7
|
+
* Follows TanStack Query's pattern where stores notify when observers are added/removed,
|
|
8
|
+
* allowing UI to update instantly instead of polling.
|
|
9
|
+
*
|
|
10
|
+
* This is in shared-ui to avoid circular dependencies between packages.
|
|
11
|
+
*
|
|
12
|
+
* Usage in event stores:
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { notifySubscriberCountChange } from '@buoy-gg/shared-ui';
|
|
15
|
+
*
|
|
16
|
+
* protected onSubscribe(): void {
|
|
17
|
+
* // ... existing logic
|
|
18
|
+
* notifySubscriberCountChange('storage');
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* Usage in UI:
|
|
23
|
+
* ```typescript
|
|
24
|
+
* useEffect(() => {
|
|
25
|
+
* return subscribeToSubscriberCountChanges(() => {
|
|
26
|
+
* // Refresh subscriber counts
|
|
27
|
+
* });
|
|
28
|
+
* }, []);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
class SubscriberCountNotifier {
|
|
33
|
+
listeners = new Set();
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Subscribe to subscriber count changes.
|
|
37
|
+
* Called whenever any event store's subscriber count changes.
|
|
38
|
+
*/
|
|
39
|
+
subscribe(listener) {
|
|
40
|
+
this.listeners.add(listener);
|
|
41
|
+
return () => {
|
|
42
|
+
this.listeners.delete(listener);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Notify all listeners that a store's subscriber count changed.
|
|
48
|
+
* Called by event stores in their onSubscribe/onUnsubscribe hooks.
|
|
49
|
+
*/
|
|
50
|
+
notify(sourceId) {
|
|
51
|
+
this.listeners.forEach(listener => {
|
|
52
|
+
try {
|
|
53
|
+
listener(sourceId);
|
|
54
|
+
} catch {
|
|
55
|
+
// Ignore listener errors
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Singleton instance
|
|
62
|
+
export const subscriberCountNotifier = new SubscriberCountNotifier();
|
|
63
|
+
|
|
64
|
+
// Convenience exports
|
|
65
|
+
export const subscribeToSubscriberCountChanges = listener => subscriberCountNotifier.subscribe(listener);
|
|
66
|
+
export const notifySubscriberCountChange = sourceId => subscriberCountNotifier.notify(sourceId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsModal.d.ts","sourceRoot":"","sources":["../../../src/JsModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAUL,SAAS,EAEV,MAAM,OAAO,CAAC;AACf,OAAO,EAML,QAAQ,EAGR,SAAS,EAEV,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"JsModal.d.ts","sourceRoot":"","sources":["../../../src/JsModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAUL,SAAS,EAEV,MAAM,OAAO,CAAC;AACf,OAAO,EAML,QAAQ,EAGR,SAAS,EAEV,MAAM,cAAc,CAAC;AA6FtB,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEnD,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IAChC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uBAAuB,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAErD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gIAAgI;IAChI,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA8hDD,eAAO,MAAM,OAAO,oDAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedDataExplorer.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/VirtualizedDataExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAOL,EAAE,EAEH,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VirtualizedDataExplorer.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/VirtualizedDataExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAOL,EAAE,EAEH,MAAM,OAAO,CAAC;AAo+Bf,UAAU,4BAA4B;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,4BAA4B,CA6PpE,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from "./ui";
|
|
2
|
-
export
|
|
2
|
+
export * from "./stores";
|
|
3
|
+
export { displayValue, parseDisplayValue, getSafeAreaInsets, persistentStorage, isUsingPersistentStorage, getStorageBackendType, safeStringify, getValueType, isPrimitive, isJsonSerializable, isValidJson, getConstructorName, isEmpty, getValueSize, parseValue, formatValue, getTypeColor, truncateText, flattenObject, formatPath, loadOptionalModule, getCachedOptionalModule, Subscribable, type SubscribableListener, subscriberCountNotifier, subscribeToSubscriberCountChanges, notifySubscriberCountChange, } from "./utils";
|
|
3
4
|
export * from "./utils/formatting";
|
|
4
5
|
export * from "./utils/time";
|
|
5
6
|
export { isPlainObject as isPlainObjectUtil } from "./utils/typeHelpers";
|
|
@@ -24,6 +25,6 @@ export type { EnvironmentSelectorInlineProps } from "./env/EnvironmentSelectorIn
|
|
|
24
25
|
export type { Environment } from "./types/types";
|
|
25
26
|
export { HintsProvider, useHintsDisabled, useHintsContext } from "./context";
|
|
26
27
|
export * from "./history";
|
|
27
|
-
export { FeatureGate, UpgradePrompt, useFeatureGate, ProFeatureBanner, UpgradeModal, LicenseEntryModal,
|
|
28
|
-
export type { FeatureGateProps, ProFeatureBannerProps, UpgradeModalProps, LicenseEntryModalProps,
|
|
28
|
+
export { FeatureGate, UpgradePrompt, useFeatureGate, ProFeatureBanner, UpgradeModal, LicenseEntryModal, ProBadge, ProUpgradeModal, getUseIsPro, getUseLicense } from "./license";
|
|
29
|
+
export type { FeatureGateProps, ProFeatureBannerProps, UpgradeModalProps, LicenseEntryModalProps, ProUpgradeModalProps } from "./license";
|
|
29
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,MAAM,CAAC;AAGrB,OAAO,EAEL,YAAY,EACZ,iBAAiB,EAEjB,iBAAiB,EAEjB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EAErB,aAAa,EAEb,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,YAAY,EAEZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EAEV,kBAAkB,EAClB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,MAAM,CAAC;AAGrB,cAAc,UAAU,CAAC;AAGzB,OAAO,EAEL,YAAY,EACZ,iBAAiB,EAEjB,iBAAiB,EAEjB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EAErB,aAAa,EAEb,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,YAAY,EAEZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EAEV,kBAAkB,EAClB,uBAAuB,EAEvB,YAAY,EACZ,KAAK,oBAAoB,EAEzB,uBAAuB,EACvB,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AAGjB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,YAAY,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACtF,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG7E,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACjL,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeviceLimitModal - Shown when device limit is exceeded
|
|
3
|
+
*
|
|
4
|
+
* Displays registered devices and allows removing one to free up a slot.
|
|
5
|
+
*/
|
|
6
|
+
import React from "react";
|
|
7
|
+
export interface RegisteredDevice {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
platform: string;
|
|
11
|
+
model: string | null;
|
|
12
|
+
registeredAt: Date;
|
|
13
|
+
lastSeenAt: Date;
|
|
14
|
+
isCurrentDevice: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface DeviceLimitModalProps {
|
|
17
|
+
visible: boolean;
|
|
18
|
+
onClose: () => void;
|
|
19
|
+
onRetry: () => void;
|
|
20
|
+
maxDevices: number;
|
|
21
|
+
}
|
|
22
|
+
export declare const DeviceLimitModal: ({ visible, onClose, onRetry, maxDevices, }: DeviceLimitModalProps) => React.JSX.Element;
|
|
23
|
+
//# sourceMappingURL=DeviceLimitModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeviceLimitModal.d.ts","sourceRoot":"","sources":["../../../../src/license/DeviceLimitModal.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;AAsBhE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,IAAI,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAgBD,eAAO,MAAM,gBAAgB,GAAI,4CAK9B,qBAAqB,sBAyNvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureGate.d.ts","sourceRoot":"","sources":["../../../../src/license/FeatureGate.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAyB,MAAM,OAAO,CAAC;AAShE;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,sBAIrD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,GAAI,oCAI7B,oBAAoB,sBAUtB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,2CAI3B;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,
|
|
1
|
+
{"version":3,"file":"FeatureGate.d.ts","sourceRoot":"","sources":["../../../../src/license/FeatureGate.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAyB,MAAM,OAAO,CAAC;AAShE;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,sBAIrD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,GAAI,oCAI7B,oBAAoB,sBAUtB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,2CAI3B;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,sBA6DA,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GAAI,mEAMzB,gBAAgB,sBAiClB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,IAAI;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAYA;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,GAAI,yCAI9B,qBAAqB,sBAyDvB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,GAAI,2DAM1B,iBAAiB,6BAiHnB,CAAC"}
|