@buoy-gg/shared-ui 3.0.0 → 3.0.2
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/JsModal.js +2 -1
- package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +3 -5
- package/lib/commonjs/hooks/safe-area-impl.js +1 -1
- package/lib/commonjs/icons/lucide-icons.js +104 -22
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/license/DeviceLimitModal.js +2 -1
- package/lib/commonjs/license/LicenseEntryModal.js +2 -1
- package/lib/commonjs/license/ManageDevicesModal.js +2 -1
- package/lib/commonjs/stores/BaseEventStore.js +25 -1
- package/lib/commonjs/ui/components/CompactRow.js +62 -65
- package/lib/commonjs/ui/components/EventHistoryViewer/EventPickerModal.js +3 -2
- package/lib/commonjs/ui/components/ExpandableSectionWithModal.js +2 -1
- package/lib/commonjs/ui/console/CyberpunkConsoleSection.js +6 -5
- package/lib/commonjs/ui/console/GalaxyButton.js +2 -1
- package/lib/commonjs/ui/gameUI/components/GameUIStatusHeader.js +2 -1
- package/lib/commonjs/utils/absoluteFill.js +28 -0
- package/lib/commonjs/utils/index.js +7 -0
- package/lib/module/JsModal.js +2 -1
- package/lib/module/dataViewer/VirtualizedDataExplorer.js +3 -5
- package/lib/module/hooks/safe-area-impl.js +1 -1
- package/lib/module/icons/lucide-icons.js +100 -19
- package/lib/module/index.js +2 -0
- package/lib/module/license/DeviceLimitModal.js +2 -1
- package/lib/module/license/LicenseEntryModal.js +2 -1
- package/lib/module/license/ManageDevicesModal.js +2 -1
- package/lib/module/stores/BaseEventStore.js +25 -1
- package/lib/module/ui/components/CompactRow.js +62 -65
- package/lib/module/ui/components/EventHistoryViewer/EventPickerModal.js +3 -2
- package/lib/module/ui/components/ExpandableSectionWithModal.js +2 -1
- package/lib/module/ui/console/CyberpunkConsoleSection.js +6 -5
- package/lib/module/ui/console/GalaxyButton.js +2 -1
- package/lib/module/ui/gameUI/components/GameUIStatusHeader.js +2 -1
- package/lib/module/utils/absoluteFill.js +24 -0
- package/lib/module/utils/index.js +1 -0
- package/lib/typescript/commonjs/JsModal.d.ts.map +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/icons/lucide-icons.d.ts +4 -2
- package/lib/typescript/commonjs/icons/lucide-icons.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +1 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/DeviceLimitModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/ManageDevicesModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/BaseEventStore.d.ts +9 -0
- package/lib/typescript/commonjs/stores/BaseEventStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ExpandableSectionWithModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/console/CyberpunkConsoleSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/console/GalaxyButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/absoluteFill.d.ts +18 -0
- package/lib/typescript/commonjs/utils/absoluteFill.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/index.d.ts +1 -0
- package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
- package/lib/typescript/module/JsModal.d.ts.map +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/icons/lucide-icons.d.ts +4 -2
- package/lib/typescript/module/icons/lucide-icons.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +1 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/license/DeviceLimitModal.d.ts.map +1 -1
- package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
- package/lib/typescript/module/license/ManageDevicesModal.d.ts.map +1 -1
- package/lib/typescript/module/stores/BaseEventStore.d.ts +9 -0
- package/lib/typescript/module/stores/BaseEventStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ExpandableSectionWithModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/console/CyberpunkConsoleSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/console/GalaxyButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -1
- package/lib/typescript/module/utils/absoluteFill.d.ts +18 -0
- package/lib/typescript/module/utils/absoluteFill.d.ts.map +1 -0
- package/lib/typescript/module/utils/index.d.ts +1 -0
- package/lib/typescript/module/utils/index.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "Subscribable", {
|
|
|
9
9
|
return _subscribable.Subscribable;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "absoluteFill", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _absoluteFill.absoluteFill;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
Object.defineProperty(exports, "displayValue", {
|
|
13
19
|
enumerable: true,
|
|
14
20
|
get: function () {
|
|
@@ -195,6 +201,7 @@ Object.defineProperty(exports, "useSafeSegments", {
|
|
|
195
201
|
return _safeExpoRouter.useSafeSegments;
|
|
196
202
|
}
|
|
197
203
|
});
|
|
204
|
+
var _absoluteFill = require("./absoluteFill.js");
|
|
198
205
|
var _displayValue = require("./displayValue.js");
|
|
199
206
|
var _getSafeAreaInsets = require("./getSafeAreaInsets.js");
|
|
200
207
|
var _persistentStorage = require("./persistentStorage.js");
|
package/lib/module/JsModal.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
import { useState, useRef, useEffect, useMemo, useCallback, memo, isValidElement, cloneElement } from "react";
|
|
16
16
|
import { View, StyleSheet, TouchableWithoutFeedback, Dimensions, PanResponder, Animated, ScrollView, Text } from "react-native";
|
|
17
|
+
import { absoluteFill } from "./utils/absoluteFill.js";
|
|
17
18
|
import { useSafeAreaInsets } from "./hooks/useSafeAreaInsets.js";
|
|
18
19
|
import { gameUIColors, buoyColors } from "./ui/gameUI/index.js";
|
|
19
20
|
import { DraggableHeader, ModalHintBanner, WindowControls } from "./ui/components/index.js";
|
|
@@ -1237,7 +1238,7 @@ const JsModalComponent = ({
|
|
|
1237
1238
|
// ============================================================================
|
|
1238
1239
|
const styles = StyleSheet.create({
|
|
1239
1240
|
fullScreenContainer: {
|
|
1240
|
-
...
|
|
1241
|
+
...absoluteFill,
|
|
1241
1242
|
zIndex: 1000
|
|
1242
1243
|
},
|
|
1243
1244
|
bottomSheetWrapper: {
|
|
@@ -723,7 +723,6 @@ const useDataFlattening = (data, maxDepth = 10, autoExpandFirstLevel = false) =>
|
|
|
723
723
|
const VirtualizedItemComponent = ({
|
|
724
724
|
item,
|
|
725
725
|
onToggleExpanded,
|
|
726
|
-
data,
|
|
727
726
|
index,
|
|
728
727
|
onSelect,
|
|
729
728
|
isSelected
|
|
@@ -787,9 +786,9 @@ const VirtualizedItemComponent = ({
|
|
|
787
786
|
children: formatValue(item.value, item.valueType)
|
|
788
787
|
})]
|
|
789
788
|
})]
|
|
790
|
-
}), item.
|
|
791
|
-
value:
|
|
792
|
-
size:
|
|
789
|
+
}), item.value !== undefined ? /*#__PURE__*/_jsx(CopyButton, {
|
|
790
|
+
value: item.value,
|
|
791
|
+
size: 14,
|
|
793
792
|
buttonStyle: {
|
|
794
793
|
marginLeft: 8,
|
|
795
794
|
marginRight: 8
|
|
@@ -874,7 +873,6 @@ export const VirtualizedDataExplorer = ({
|
|
|
874
873
|
item: item,
|
|
875
874
|
index: index,
|
|
876
875
|
onToggleExpanded: toggleExpanded,
|
|
877
|
-
data: data,
|
|
878
876
|
onSelect: setSelectedIndex,
|
|
879
877
|
isSelected: selectedIndex === index
|
|
880
878
|
});
|
|
@@ -1361,7 +1361,65 @@ export const Plus = ({
|
|
|
1361
1361
|
strokeWidth: strokeWidth
|
|
1362
1362
|
})]
|
|
1363
1363
|
});
|
|
1364
|
+
|
|
1365
|
+
// Refresh / reload icon: a smooth 270° ring (open on the right) with a
|
|
1366
|
+
// clockwise triangle arrowhead. Built from the buoy icon-editor design
|
|
1367
|
+
// (smootharc ring + triangle) using the View-based border trick so it stays
|
|
1368
|
+
// crisp at any size. `strokeWidth` is accepted for API compatibility but the
|
|
1369
|
+
// proportions are fixed to keep the perfected look.
|
|
1364
1370
|
export const RefreshCw = ({
|
|
1371
|
+
size = 24,
|
|
1372
|
+
color = "currentColor",
|
|
1373
|
+
strokeWidth: _strokeWidth = 2,
|
|
1374
|
+
...props
|
|
1375
|
+
}) => {
|
|
1376
|
+
const RING_RADIUS = 7; // outer radius, centered in the 24x24 viewBox
|
|
1377
|
+
const RING_STROKE = 2.4;
|
|
1378
|
+
const ARROW_SIZE = 5.2;
|
|
1379
|
+
const ARROW_HALF = ARROW_SIZE * 0.577; // equilateral-ish half-width
|
|
1380
|
+
// Arrowhead anchor (from the editor design, mapped into the 0..24 viewBox)
|
|
1381
|
+
const arrowLeft = 12 + 3.162277660168379;
|
|
1382
|
+
const arrowTop = 12 - 2.846049894151541 - ARROW_HALF;
|
|
1383
|
+
return /*#__PURE__*/_jsxs(Svg, {
|
|
1384
|
+
width: size,
|
|
1385
|
+
height: size,
|
|
1386
|
+
viewBox: "0 0 24 24",
|
|
1387
|
+
...props,
|
|
1388
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
1389
|
+
style: {
|
|
1390
|
+
position: "absolute",
|
|
1391
|
+
left: 12 - RING_RADIUS,
|
|
1392
|
+
top: 12 - RING_RADIUS,
|
|
1393
|
+
width: RING_RADIUS * 2,
|
|
1394
|
+
height: RING_RADIUS * 2,
|
|
1395
|
+
borderRadius: RING_RADIUS,
|
|
1396
|
+
borderWidth: RING_STROKE,
|
|
1397
|
+
borderTopColor: color,
|
|
1398
|
+
borderLeftColor: color,
|
|
1399
|
+
borderBottomColor: color,
|
|
1400
|
+
borderRightColor: "transparent"
|
|
1401
|
+
}
|
|
1402
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
1403
|
+
style: {
|
|
1404
|
+
position: "absolute",
|
|
1405
|
+
left: arrowLeft,
|
|
1406
|
+
top: arrowTop,
|
|
1407
|
+
width: 0,
|
|
1408
|
+
height: 0,
|
|
1409
|
+
borderTopWidth: ARROW_HALF,
|
|
1410
|
+
borderBottomWidth: ARROW_HALF,
|
|
1411
|
+
borderLeftWidth: ARROW_SIZE,
|
|
1412
|
+
borderTopColor: "transparent",
|
|
1413
|
+
borderBottomColor: "transparent",
|
|
1414
|
+
borderLeftColor: color,
|
|
1415
|
+
transform: [{
|
|
1416
|
+
rotate: "45deg"
|
|
1417
|
+
}]
|
|
1418
|
+
}
|
|
1419
|
+
})]
|
|
1420
|
+
});
|
|
1421
|
+
};
|
|
1422
|
+
export const Home = ({
|
|
1365
1423
|
size = 24,
|
|
1366
1424
|
color = "currentColor",
|
|
1367
1425
|
strokeWidth = 2,
|
|
@@ -1372,41 +1430,64 @@ export const RefreshCw = ({
|
|
|
1372
1430
|
viewBox: "0 0 24 24",
|
|
1373
1431
|
...props,
|
|
1374
1432
|
children: [/*#__PURE__*/_jsx(Line, {
|
|
1375
|
-
x1:
|
|
1376
|
-
y1:
|
|
1377
|
-
x2:
|
|
1378
|
-
y2:
|
|
1433
|
+
x1: 3,
|
|
1434
|
+
y1: 10,
|
|
1435
|
+
x2: 12,
|
|
1436
|
+
y2: 3,
|
|
1379
1437
|
stroke: color,
|
|
1380
1438
|
strokeWidth: strokeWidth
|
|
1381
1439
|
}), /*#__PURE__*/_jsx(Line, {
|
|
1382
|
-
x1:
|
|
1383
|
-
y1:
|
|
1384
|
-
x2:
|
|
1440
|
+
x1: 12,
|
|
1441
|
+
y1: 3,
|
|
1442
|
+
x2: 21,
|
|
1385
1443
|
y2: 10,
|
|
1386
1444
|
stroke: color,
|
|
1387
1445
|
strokeWidth: strokeWidth
|
|
1388
1446
|
}), /*#__PURE__*/_jsx(Line, {
|
|
1389
|
-
x1:
|
|
1390
|
-
y1:
|
|
1391
|
-
x2:
|
|
1392
|
-
y2:
|
|
1447
|
+
x1: 5,
|
|
1448
|
+
y1: 9,
|
|
1449
|
+
x2: 5,
|
|
1450
|
+
y2: 21,
|
|
1393
1451
|
stroke: color,
|
|
1394
1452
|
strokeWidth: strokeWidth
|
|
1395
1453
|
}), /*#__PURE__*/_jsx(Line, {
|
|
1396
|
-
x1:
|
|
1397
|
-
y1:
|
|
1398
|
-
x2:
|
|
1399
|
-
y2:
|
|
1454
|
+
x1: 19,
|
|
1455
|
+
y1: 9,
|
|
1456
|
+
x2: 19,
|
|
1457
|
+
y2: 21,
|
|
1400
1458
|
stroke: color,
|
|
1401
1459
|
strokeWidth: strokeWidth
|
|
1402
|
-
}), /*#__PURE__*/_jsx(
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1460
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
1461
|
+
x1: 5,
|
|
1462
|
+
y1: 21,
|
|
1463
|
+
x2: 19,
|
|
1464
|
+
y2: 21,
|
|
1465
|
+
stroke: color,
|
|
1466
|
+
strokeWidth: strokeWidth
|
|
1467
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
1468
|
+
x1: 10,
|
|
1469
|
+
y1: 21,
|
|
1470
|
+
x2: 10,
|
|
1471
|
+
y2: 15,
|
|
1472
|
+
stroke: color,
|
|
1473
|
+
strokeWidth: strokeWidth
|
|
1474
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
1475
|
+
x1: 10,
|
|
1476
|
+
y1: 15,
|
|
1477
|
+
x2: 14,
|
|
1478
|
+
y2: 15,
|
|
1479
|
+
stroke: color,
|
|
1480
|
+
strokeWidth: strokeWidth
|
|
1481
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
1482
|
+
x1: 14,
|
|
1483
|
+
y1: 15,
|
|
1484
|
+
x2: 14,
|
|
1485
|
+
y2: 21,
|
|
1406
1486
|
stroke: color,
|
|
1407
1487
|
strokeWidth: strokeWidth
|
|
1408
1488
|
})]
|
|
1409
1489
|
});
|
|
1490
|
+
export const HomeIcon = Home;
|
|
1410
1491
|
export const Search = ({
|
|
1411
1492
|
size = 24,
|
|
1412
1493
|
color = "currentColor",
|
package/lib/module/index.js
CHANGED
|
@@ -8,6 +8,8 @@ export * from "./stores/index.js";
|
|
|
8
8
|
|
|
9
9
|
// Utils exports - selectively export to avoid conflicts
|
|
10
10
|
export {
|
|
11
|
+
// Absolute-fill style (replaces StyleSheet.absoluteFillObject, removed in RN 0.85)
|
|
12
|
+
absoluteFill,
|
|
11
13
|
// Display utilities
|
|
12
14
|
displayValue, parseDisplayValue,
|
|
13
15
|
// Safe area utilities
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
import React, { useState, useEffect, useCallback } from "react";
|
|
10
10
|
import { View, Text, TouchableOpacity, StyleSheet, Modal, ActivityIndicator, ScrollView, Alert, Platform, Linking } from "react-native";
|
|
11
|
+
import { absoluteFill } from "../utils/absoluteFill.js";
|
|
11
12
|
import { macOSColors } from "../ui/gameUI/constants/macOSDesignSystemColors.js";
|
|
12
13
|
import { X, Smartphone, Trash2, RefreshCw, AlertTriangle } from "../icons/lucide-icons.js";
|
|
13
14
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -266,7 +267,7 @@ const styles = StyleSheet.create({
|
|
|
266
267
|
alignItems: "center"
|
|
267
268
|
},
|
|
268
269
|
backdrop: {
|
|
269
|
-
...
|
|
270
|
+
...absoluteFill,
|
|
270
271
|
backgroundColor: "rgba(0, 0, 0, 0.8)"
|
|
271
272
|
},
|
|
272
273
|
modal: {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
import React, { useCallback } from "react";
|
|
12
12
|
import { View, Text, TouchableOpacity, StyleSheet, Linking, Modal, Platform } from "react-native";
|
|
13
|
+
import { absoluteFill } from "../utils/absoluteFill.js";
|
|
13
14
|
import { macOSColors } from "../ui/gameUI/constants/macOSDesignSystemColors.js";
|
|
14
15
|
import { X, Key, Link, FileCode, Copy } from "../icons/lucide-icons.js";
|
|
15
16
|
|
|
@@ -194,7 +195,7 @@ const styles = StyleSheet.create({
|
|
|
194
195
|
alignItems: "center"
|
|
195
196
|
},
|
|
196
197
|
backdrop: {
|
|
197
|
-
...
|
|
198
|
+
...absoluteFill,
|
|
198
199
|
backgroundColor: "rgba(0, 0, 0, 0.8)"
|
|
199
200
|
},
|
|
200
201
|
modal: {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import React, { useState, useCallback, useEffect } from "react";
|
|
11
11
|
import { View, Text, TouchableOpacity, StyleSheet, ActivityIndicator, Modal, ScrollView, Alert, Platform } from "react-native";
|
|
12
|
+
import { absoluteFill } from "../utils/absoluteFill.js";
|
|
12
13
|
import { gameUIColors } from "../ui/gameUI/constants/gameUIColors.js";
|
|
13
14
|
import { X, Smartphone, Trash2, RefreshCw, CheckCircle, AlertTriangle } from "../icons/lucide-icons.js";
|
|
14
15
|
|
|
@@ -337,7 +338,7 @@ const styles = StyleSheet.create({
|
|
|
337
338
|
alignItems: "center"
|
|
338
339
|
},
|
|
339
340
|
backdrop: {
|
|
340
|
-
...
|
|
341
|
+
...absoluteFill,
|
|
341
342
|
backgroundColor: "rgba(0, 0, 0, 0.7)"
|
|
342
343
|
},
|
|
343
344
|
modal: {
|
|
@@ -267,10 +267,34 @@ export class BaseEventStore extends Subscribable {
|
|
|
267
267
|
* mirror mode where full snapshots arrive from a synced device.
|
|
268
268
|
*/
|
|
269
269
|
replaceEvents(events) {
|
|
270
|
-
this.events = events.slice(0, this.maxEvents);
|
|
270
|
+
this.events = this.dedupeById(events).slice(0, this.maxEvents);
|
|
271
271
|
this.notifyArrayListeners();
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
+
/**
|
|
275
|
+
* Drop events that share an `id` with an earlier event, keeping the first
|
|
276
|
+
* (newest, since events are newest-first) occurrence. Remote snapshots can
|
|
277
|
+
* momentarily carry duplicate ids — e.g. a device's request counter resets
|
|
278
|
+
* on reload while older events with the same id are still in the buffer —
|
|
279
|
+
* which makes React list keys (keyed on `id`) collide. Events without an
|
|
280
|
+
* `id` are passed through untouched.
|
|
281
|
+
*/
|
|
282
|
+
dedupeById(events) {
|
|
283
|
+
const seen = new Set();
|
|
284
|
+
const result = [];
|
|
285
|
+
for (const event of events) {
|
|
286
|
+
const id = event?.id;
|
|
287
|
+
if (id == null) {
|
|
288
|
+
result.push(event);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (seen.has(id)) continue;
|
|
292
|
+
seen.add(id);
|
|
293
|
+
result.push(event);
|
|
294
|
+
}
|
|
295
|
+
return result;
|
|
296
|
+
}
|
|
297
|
+
|
|
274
298
|
/**
|
|
275
299
|
* Set maximum number of events to keep
|
|
276
300
|
*/
|
|
@@ -24,77 +24,77 @@ export function CompactRow({
|
|
|
24
24
|
}) {
|
|
25
25
|
return /*#__PURE__*/_jsx(View, {
|
|
26
26
|
style: styles.rowWrapper,
|
|
27
|
-
children: /*#__PURE__*/_jsxs(
|
|
27
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
28
28
|
style: [styles.row, isSelected && styles.selectedRow, isExpanded && [styles.expandedRowActive, {
|
|
29
29
|
borderColor: expandedGlowColor || buoyColors.primary,
|
|
30
30
|
shadowColor: expandedGlowColor || buoyColors.primary
|
|
31
31
|
}]],
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
33
|
+
onPress: onPress,
|
|
34
|
+
activeOpacity: 0.8,
|
|
35
|
+
disabled: disabled || !onPress,
|
|
36
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
37
|
+
style: styles.rowContent,
|
|
38
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
39
|
+
style: styles.statusSection,
|
|
40
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
41
|
+
style: [styles.statusDot, {
|
|
42
|
+
backgroundColor: statusDotColor
|
|
43
|
+
}]
|
|
44
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
45
|
+
style: styles.statusInfo,
|
|
46
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
47
|
+
style: [styles.statusLabel, {
|
|
48
|
+
color: statusDotColor
|
|
49
|
+
}],
|
|
50
|
+
numberOfLines: 1,
|
|
51
|
+
children: statusLabel
|
|
52
|
+
}), statusSublabel ? /*#__PURE__*/_jsx(Text, {
|
|
53
|
+
style: styles.observerText,
|
|
54
|
+
numberOfLines: 1,
|
|
55
|
+
children: statusSublabel
|
|
56
|
+
}) : null]
|
|
57
|
+
})]
|
|
43
58
|
}), /*#__PURE__*/_jsxs(View, {
|
|
44
|
-
style: styles.
|
|
59
|
+
style: styles.querySection,
|
|
45
60
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
46
|
-
style:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}), statusSublabel && /*#__PURE__*/_jsx(Text, {
|
|
52
|
-
style: styles.observerText,
|
|
61
|
+
style: styles.queryHash,
|
|
62
|
+
numberOfLines: isExpanded ? undefined : 2,
|
|
63
|
+
children: primaryText
|
|
64
|
+
}), !isExpanded && secondaryText ? /*#__PURE__*/_jsx(Text, {
|
|
65
|
+
style: styles.secondaryText,
|
|
53
66
|
numberOfLines: 1,
|
|
54
|
-
children:
|
|
67
|
+
children: secondaryText
|
|
68
|
+
}) : null]
|
|
69
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
70
|
+
style: styles.rightSection,
|
|
71
|
+
children: [(customBadge || badgeText !== undefined || !isExpanded && bottomRightText) && /*#__PURE__*/_jsxs(View, {
|
|
72
|
+
style: styles.badgeContainer,
|
|
73
|
+
children: [customBadge ? customBadge : badgeText !== undefined ? /*#__PURE__*/_jsx(Text, {
|
|
74
|
+
style: [styles.statusBadge, {
|
|
75
|
+
color: badgeColor || statusDotColor
|
|
76
|
+
}],
|
|
77
|
+
children: badgeText
|
|
78
|
+
}) : null, !isExpanded && bottomRightText ? /*#__PURE__*/_jsx(Text, {
|
|
79
|
+
style: styles.bottomRightText,
|
|
80
|
+
numberOfLines: 1,
|
|
81
|
+
children: bottomRightText
|
|
82
|
+
}) : null]
|
|
83
|
+
}), showChevron && /*#__PURE__*/_jsx(View, {
|
|
84
|
+
style: styles.chevronContainer,
|
|
85
|
+
children: isExpanded ? /*#__PURE__*/_jsx(ChevronDown, {
|
|
86
|
+
size: 14,
|
|
87
|
+
color: buoyColors.textMuted
|
|
88
|
+
}) : /*#__PURE__*/_jsx(ChevronRight, {
|
|
89
|
+
size: 14,
|
|
90
|
+
color: buoyColors.textMuted
|
|
91
|
+
})
|
|
55
92
|
})]
|
|
56
93
|
})]
|
|
57
|
-
})
|
|
58
|
-
style: styles.querySection,
|
|
59
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
60
|
-
style: styles.queryHash,
|
|
61
|
-
numberOfLines: isExpanded ? undefined : 2,
|
|
62
|
-
children: primaryText
|
|
63
|
-
}), !isExpanded && secondaryText && /*#__PURE__*/_jsx(Text, {
|
|
64
|
-
style: styles.secondaryText,
|
|
65
|
-
numberOfLines: 1,
|
|
66
|
-
children: secondaryText
|
|
67
|
-
})]
|
|
68
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
69
|
-
style: styles.rightSection,
|
|
70
|
-
children: [(customBadge || badgeText !== undefined) && /*#__PURE__*/_jsx(View, {
|
|
71
|
-
style: styles.badgeContainer,
|
|
72
|
-
children: customBadge ? customBadge : /*#__PURE__*/_jsx(Text, {
|
|
73
|
-
style: [styles.statusBadge, {
|
|
74
|
-
color: badgeColor || statusDotColor
|
|
75
|
-
}],
|
|
76
|
-
children: badgeText
|
|
77
|
-
})
|
|
78
|
-
}), showChevron && /*#__PURE__*/_jsx(View, {
|
|
79
|
-
style: styles.chevronContainer,
|
|
80
|
-
children: isExpanded ? /*#__PURE__*/_jsx(ChevronDown, {
|
|
81
|
-
size: 14,
|
|
82
|
-
color: buoyColors.textMuted
|
|
83
|
-
}) : /*#__PURE__*/_jsx(ChevronRight, {
|
|
84
|
-
size: 14,
|
|
85
|
-
color: buoyColors.textMuted
|
|
86
|
-
})
|
|
87
|
-
})]
|
|
88
|
-
})]
|
|
94
|
+
})
|
|
89
95
|
}), isExpanded && expandedContent && /*#__PURE__*/_jsx(View, {
|
|
90
96
|
style: styles.expandedContent,
|
|
91
97
|
children: expandedContent
|
|
92
|
-
}), !isExpanded && bottomRightText && /*#__PURE__*/_jsx(View, {
|
|
93
|
-
style: styles.bottomRightContainer,
|
|
94
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
95
|
-
style: styles.bottomRightText,
|
|
96
|
-
children: bottomRightText
|
|
97
|
-
})
|
|
98
98
|
})]
|
|
99
99
|
})
|
|
100
100
|
});
|
|
@@ -196,7 +196,9 @@ const styles = StyleSheet.create({
|
|
|
196
196
|
gap: 8
|
|
197
197
|
},
|
|
198
198
|
badgeContainer: {
|
|
199
|
-
|
|
199
|
+
flexDirection: "column",
|
|
200
|
+
alignItems: "flex-end",
|
|
201
|
+
gap: 2
|
|
200
202
|
},
|
|
201
203
|
statusBadge: {
|
|
202
204
|
fontSize: 12,
|
|
@@ -213,11 +215,6 @@ const styles = StyleSheet.create({
|
|
|
213
215
|
borderTopColor: buoyColors.border + "20",
|
|
214
216
|
marginLeft: 24 // Align with content after status dot
|
|
215
217
|
},
|
|
216
|
-
bottomRightContainer: {
|
|
217
|
-
position: "absolute",
|
|
218
|
-
bottom: 4,
|
|
219
|
-
right: 8
|
|
220
|
-
},
|
|
221
218
|
bottomRightText: {
|
|
222
219
|
fontSize: 9,
|
|
223
220
|
color: buoyColors.textMuted,
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
import React, { memo } from "react";
|
|
12
12
|
import { View, Text, TouchableOpacity, ScrollView, StyleSheet } from "react-native";
|
|
13
|
+
import { absoluteFill } from "../../../utils/absoluteFill.js";
|
|
13
14
|
import { macOSColors } from "../../gameUI/constants/macOSDesignSystemColors.js";
|
|
14
15
|
import { X } from "../../../icons/lucide-icons.js";
|
|
15
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -77,13 +78,13 @@ export const EventPickerModal = /*#__PURE__*/memo(function EventPickerModal({
|
|
|
77
78
|
});
|
|
78
79
|
const styles = StyleSheet.create({
|
|
79
80
|
overlay: {
|
|
80
|
-
...
|
|
81
|
+
...absoluteFill,
|
|
81
82
|
zIndex: 20,
|
|
82
83
|
justifyContent: "center",
|
|
83
84
|
alignItems: "center"
|
|
84
85
|
},
|
|
85
86
|
backdrop: {
|
|
86
|
-
...
|
|
87
|
+
...absoluteFill,
|
|
87
88
|
backgroundColor: "rgba(0,0,0,0.65)"
|
|
88
89
|
},
|
|
89
90
|
card: {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { Dimensions, Modal, ScrollView, StyleSheet, TouchableOpacity, View } from "react-native";
|
|
5
|
+
import { absoluteFill } from "../../utils/absoluteFill.js";
|
|
5
6
|
import { useSafeAreaInsets } from "../../hooks/useSafeAreaInsets.js";
|
|
6
7
|
import { X } from "../../icons/index.js";
|
|
7
8
|
import { ExpandableSection } from "./ExpandableSection.js";
|
|
@@ -121,7 +122,7 @@ const styles = StyleSheet.create({
|
|
|
121
122
|
flex: 1
|
|
122
123
|
},
|
|
123
124
|
backdrop: {
|
|
124
|
-
...
|
|
125
|
+
...absoluteFill,
|
|
125
126
|
backgroundColor: "rgba(0, 0, 0, 0.8)"
|
|
126
127
|
},
|
|
127
128
|
backdropTouchable: {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useEffect, useRef } from "react";
|
|
4
4
|
import { View, Text, StyleSheet, Pressable, Animated, Easing } from "react-native";
|
|
5
|
+
import { absoluteFill } from "../../utils/absoluteFill.js";
|
|
5
6
|
import { ChevronRight } from "../../icons/index.js";
|
|
6
7
|
import { gameUIColors } from "../gameUI/index.js";
|
|
7
8
|
|
|
@@ -481,31 +482,31 @@ const styles = StyleSheet.create({
|
|
|
481
482
|
backgroundColor: "rgba(5, 5, 10, 0.6)" // Darker glass background
|
|
482
483
|
},
|
|
483
484
|
glassLayer1: {
|
|
484
|
-
...
|
|
485
|
+
...absoluteFill,
|
|
485
486
|
backgroundColor: "rgba(10, 10, 15, 0.7)",
|
|
486
487
|
opacity: 0.8
|
|
487
488
|
},
|
|
488
489
|
glassLayer2: {
|
|
489
|
-
...
|
|
490
|
+
...absoluteFill,
|
|
490
491
|
backgroundColor: "rgba(15, 15, 25, 0.5)",
|
|
491
492
|
opacity: 0.6,
|
|
492
493
|
top: "20%",
|
|
493
494
|
left: "20%"
|
|
494
495
|
},
|
|
495
496
|
glassLayer3: {
|
|
496
|
-
...
|
|
497
|
+
...absoluteFill,
|
|
497
498
|
backgroundColor: "rgba(20, 20, 35, 0.3)",
|
|
498
499
|
opacity: 0.4,
|
|
499
500
|
top: "40%",
|
|
500
501
|
left: "40%"
|
|
501
502
|
},
|
|
502
503
|
glassShimmer: {
|
|
503
|
-
...
|
|
504
|
+
...absoluteFill,
|
|
504
505
|
backgroundColor: "rgba(255, 255, 255, 0.03)",
|
|
505
506
|
opacity: 0.6
|
|
506
507
|
},
|
|
507
508
|
glitchOverlayLayer: {
|
|
508
|
-
...
|
|
509
|
+
...absoluteFill,
|
|
509
510
|
borderRadius: 12,
|
|
510
511
|
borderWidth: 1,
|
|
511
512
|
justifyContent: "center",
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useEffect, useRef } from "react";
|
|
4
4
|
import { View, StyleSheet, Animated, Pressable, Dimensions } from "react-native";
|
|
5
|
+
import { absoluteFill } from "../../utils/absoluteFill.js";
|
|
5
6
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
7
|
const {
|
|
7
8
|
width: screenWidth
|
|
@@ -72,7 +73,7 @@ const styles = StyleSheet.create({
|
|
|
72
73
|
overflow: "hidden"
|
|
73
74
|
},
|
|
74
75
|
starsContainer: {
|
|
75
|
-
...
|
|
76
|
+
...absoluteFill,
|
|
76
77
|
overflow: "hidden"
|
|
77
78
|
},
|
|
78
79
|
starsLayer: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { StyleSheet, Text, View, Animated } from "react-native";
|
|
4
|
+
import { absoluteFill } from "../../../utils/absoluteFill.js";
|
|
4
5
|
import { gameUIColors } from "../constants/gameUIColors.js";
|
|
5
6
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
7
|
/**
|
|
@@ -78,7 +79,7 @@ const styles = StyleSheet.create({
|
|
|
78
79
|
overflow: "hidden"
|
|
79
80
|
},
|
|
80
81
|
glow: {
|
|
81
|
-
...
|
|
82
|
+
...absoluteFill,
|
|
82
83
|
opacity: 0.5
|
|
83
84
|
},
|
|
84
85
|
content: {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Spreadable absolute-fill style.
|
|
5
|
+
*
|
|
6
|
+
* Replaces `StyleSheet.absoluteFillObject`, which was REMOVED in React Native
|
|
7
|
+
* 0.85 (returns `undefined` there). Spreading `undefined` is a silent no-op, so
|
|
8
|
+
* any overlay/backdrop/full-screen Pressable that relied on it collapses to zero
|
|
9
|
+
* size on RN 0.85+ — invisible and untappable.
|
|
10
|
+
*
|
|
11
|
+
* `StyleSheet.absoluteFill` is not a safe replacement for the spread pattern
|
|
12
|
+
* because its type changed across versions: it's a registered style *number* on
|
|
13
|
+
* RN <= 0.84 (spreading a number yields `{}`) and a frozen object only on 0.85+.
|
|
14
|
+
*
|
|
15
|
+
* This plain object works identically on every RN version, whether spread
|
|
16
|
+
* (`{ ...absoluteFill }`) or passed directly (`style={absoluteFill}`).
|
|
17
|
+
*/
|
|
18
|
+
export const absoluteFill = {
|
|
19
|
+
position: "absolute",
|
|
20
|
+
top: 0,
|
|
21
|
+
left: 0,
|
|
22
|
+
right: 0,
|
|
23
|
+
bottom: 0
|
|
24
|
+
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
export { absoluteFill } from "./absoluteFill.js";
|
|
3
4
|
export { displayValue, parseDisplayValue } from "./displayValue.js";
|
|
4
5
|
export { getSafeAreaInsets } from "./getSafeAreaInsets.js";
|
|
5
6
|
export { persistentStorage, isUsingPersistentStorage, getStorageBackendType } from "./persistentStorage.js";
|
|
@@ -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;AA8FtB,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,CAkQpE,CAAC"}
|