@noya-app/noya-multiplayer-react 0.1.73 → 0.1.75
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/.turbo/turbo-build.log +11 -11
- package/CHANGELOG.md +16 -0
- package/dist/index.bundle.js +28 -28
- package/dist/index.d.mts +10 -9
- package/dist/index.d.ts +10 -9
- package/dist/index.js +323 -212
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +270 -152
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/NoyaStateContext.tsx +26 -42
- package/src/__tests__/noyaApp.test.ts +40 -0
- package/src/inspector/StateInspector.tsx +143 -57
- package/src/inspector/sections/EventsSection.tsx +22 -1
- package/src/inspector/sections/ServerScriptLogsSection.tsx +18 -2
- package/src/inspector/usePausedStream.ts +33 -0
- package/src/noyaApp.ts +28 -0
- package/src/singleton.tsx +2 -3
package/dist/index.js
CHANGED
|
@@ -1532,8 +1532,6 @@ __export(src_exports, {
|
|
|
1532
1532
|
useBindNoyaManager: () => useBindNoyaManager,
|
|
1533
1533
|
useCallableAITools: () => useCallableAITools,
|
|
1534
1534
|
useColorScheme: () => useColorScheme,
|
|
1535
|
-
useConnectedUser: () => useConnectedUser,
|
|
1536
|
-
useConnectedUsers: () => useConnectedUsers,
|
|
1537
1535
|
useEnqueueInput: () => useEnqueueInput,
|
|
1538
1536
|
useFileName: () => useFileName,
|
|
1539
1537
|
useFilePropertyManager: () => useFilePropertyManager,
|
|
@@ -1544,14 +1542,15 @@ __export(src_exports, {
|
|
|
1544
1542
|
useManagedHistory: () => useManagedHistory,
|
|
1545
1543
|
useManagedState: () => useManagedState,
|
|
1546
1544
|
useMultiplayerState: () => useMultiplayerState,
|
|
1545
|
+
useNoyaActiveUsers: () => useNoyaActiveUsers,
|
|
1547
1546
|
useNoyaAssetTranscription: () => useNoyaAssetTranscription,
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
useNoyaId: () => useNoyaId,
|
|
1547
|
+
useNoyaCurrentUser: () => useNoyaCurrentUser,
|
|
1548
|
+
useNoyaCurrentUserId: () => useNoyaCurrentUserId,
|
|
1551
1549
|
useNoyaStateInternal: () => useNoyaStateInternal,
|
|
1552
1550
|
useNoyaTranscriptionManager: () => useNoyaTranscriptionManager,
|
|
1553
1551
|
useNoyaUser: () => useNoyaUser,
|
|
1554
|
-
|
|
1552
|
+
useNoyaUserManager: () => useNoyaUserManager,
|
|
1553
|
+
useNoyaUsers: () => useNoyaUsers,
|
|
1555
1554
|
useObservable: () => useObservable,
|
|
1556
1555
|
useOutputTransforms: () => useOutputTransforms,
|
|
1557
1556
|
usePipelineManager: () => usePipelineManager,
|
|
@@ -1564,14 +1563,13 @@ __export(src_exports, {
|
|
|
1564
1563
|
useSecrets: () => useSecrets,
|
|
1565
1564
|
useSetFileNameState: () => useSetFileNameState,
|
|
1566
1565
|
useStateInspector: () => useStateInspector,
|
|
1567
|
-
useUserManager: () => useUserManager,
|
|
1568
1566
|
useViewType: () => useViewType
|
|
1569
1567
|
});
|
|
1570
1568
|
module.exports = __toCommonJS(src_exports);
|
|
1571
1569
|
__reExport(src_exports, require("@noya-app/state-manager"), module.exports);
|
|
1572
1570
|
|
|
1573
1571
|
// src/ai.ts
|
|
1574
|
-
var
|
|
1572
|
+
var import_react22 = require("react");
|
|
1575
1573
|
|
|
1576
1574
|
// ../../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs
|
|
1577
1575
|
var TransformKind = Symbol.for("TypeBox.Transform");
|
|
@@ -2101,7 +2099,7 @@ function Literal(value, options = {}) {
|
|
|
2101
2099
|
}
|
|
2102
2100
|
|
|
2103
2101
|
// ../../node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs
|
|
2104
|
-
function
|
|
2102
|
+
function Boolean2(options = {}) {
|
|
2105
2103
|
return {
|
|
2106
2104
|
...options,
|
|
2107
2105
|
[Kind]: "Boolean",
|
|
@@ -2135,7 +2133,7 @@ function String2(options = {}) {
|
|
|
2135
2133
|
// ../../node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs
|
|
2136
2134
|
function* FromUnion(syntax) {
|
|
2137
2135
|
const trim = syntax.trim().replace(/"|'/g, "");
|
|
2138
|
-
return trim === "boolean" ? yield
|
|
2136
|
+
return trim === "boolean" ? yield Boolean2() : trim === "number" ? yield Number2() : trim === "bigint" ? yield BigInt2() : trim === "string" ? yield String2() : yield (() => {
|
|
2139
2137
|
const literals = trim.split("|").map((literal) => Literal(literal.trim()));
|
|
2140
2138
|
return literals.length === 0 ? Never() : literals.length === 1 ? literals[0] : UnionEvaluated(literals);
|
|
2141
2139
|
})();
|
|
@@ -3927,7 +3925,7 @@ __export(type_exports3, {
|
|
|
3927
3925
|
AsyncIterator: () => AsyncIterator,
|
|
3928
3926
|
Awaited: () => Awaited,
|
|
3929
3927
|
BigInt: () => BigInt2,
|
|
3930
|
-
Boolean: () =>
|
|
3928
|
+
Boolean: () => Boolean2,
|
|
3931
3929
|
Capitalize: () => Capitalize,
|
|
3932
3930
|
Composite: () => Composite,
|
|
3933
3931
|
Const: () => Const,
|
|
@@ -4688,15 +4686,16 @@ format_exports.Set("uuid", validateUUID);
|
|
|
4688
4686
|
// src/NoyaStateContext.tsx
|
|
4689
4687
|
var import_observable = require("@noya-app/observable");
|
|
4690
4688
|
var import_react_utils3 = require("@noya-app/react-utils");
|
|
4691
|
-
var
|
|
4689
|
+
var import_state_manager5 = require("@noya-app/state-manager");
|
|
4690
|
+
var import_react21 = __toESM(require("react"));
|
|
4692
4691
|
|
|
4693
4692
|
// src/noyaApp.ts
|
|
4694
4693
|
var import_state_manager3 = require("@noya-app/state-manager");
|
|
4695
|
-
var
|
|
4694
|
+
var import_react19 = require("react");
|
|
4696
4695
|
|
|
4697
4696
|
// src/hooks.ts
|
|
4698
4697
|
var import_state_manager2 = require("@noya-app/state-manager");
|
|
4699
|
-
var
|
|
4698
|
+
var import_react18 = require("react");
|
|
4700
4699
|
var import_client2 = require("react-dom/client");
|
|
4701
4700
|
|
|
4702
4701
|
// src/components/ErrorOverlay.tsx
|
|
@@ -4774,7 +4773,7 @@ var ErrorOverlay = React.memo(function ErrorOverlay2({
|
|
|
4774
4773
|
});
|
|
4775
4774
|
|
|
4776
4775
|
// src/inspector/useStateInspector.tsx
|
|
4777
|
-
var
|
|
4776
|
+
var import_react17 = __toESM(require("react"));
|
|
4778
4777
|
var import_client = require("react-dom/client");
|
|
4779
4778
|
var import_react_utils2 = require("@noya-app/react-utils");
|
|
4780
4779
|
|
|
@@ -4908,7 +4907,7 @@ function uuid() {
|
|
|
4908
4907
|
|
|
4909
4908
|
// src/inspector/StateInspector.tsx
|
|
4910
4909
|
var import_react_utils = require("@noya-app/react-utils");
|
|
4911
|
-
var
|
|
4910
|
+
var import_react16 = __toESM(require("react"));
|
|
4912
4911
|
var import_react_inspector7 = require("react-inspector");
|
|
4913
4912
|
|
|
4914
4913
|
// src/useObservable.ts
|
|
@@ -5302,7 +5301,9 @@ function EventsSection({
|
|
|
5302
5301
|
setShowEvents,
|
|
5303
5302
|
colorScheme,
|
|
5304
5303
|
eventsContainerRef,
|
|
5305
|
-
connectionEvents
|
|
5304
|
+
connectionEvents,
|
|
5305
|
+
paused,
|
|
5306
|
+
onTogglePaused
|
|
5306
5307
|
}) {
|
|
5307
5308
|
const theme = getStateInspectorTheme(colorScheme);
|
|
5308
5309
|
return /* @__PURE__ */ import_react9.default.createElement(
|
|
@@ -5311,9 +5312,20 @@ function EventsSection({
|
|
|
5311
5312
|
open: showEvents,
|
|
5312
5313
|
setOpen: setShowEvents,
|
|
5313
5314
|
title: "Events",
|
|
5314
|
-
colorScheme
|
|
5315
|
+
colorScheme,
|
|
5316
|
+
right: /* @__PURE__ */ import_react9.default.createElement(StateInspectorButton, { theme, onClick: onTogglePaused }, paused ? "Resume" : "Pause")
|
|
5315
5317
|
},
|
|
5316
|
-
/* @__PURE__ */ import_react9.default.createElement(StateInspectorDisclosureRowInner, { ref: eventsContainerRef },
|
|
5318
|
+
/* @__PURE__ */ import_react9.default.createElement(StateInspectorDisclosureRowInner, { ref: eventsContainerRef }, paused && /* @__PURE__ */ import_react9.default.createElement(
|
|
5319
|
+
"div",
|
|
5320
|
+
{
|
|
5321
|
+
style: {
|
|
5322
|
+
padding: "4px 12px",
|
|
5323
|
+
fontSize: "11px",
|
|
5324
|
+
opacity: 0.7
|
|
5325
|
+
}
|
|
5326
|
+
},
|
|
5327
|
+
"Event streaming paused"
|
|
5328
|
+
), connectionEvents?.map(
|
|
5317
5329
|
(event, index) => event.type === "stateChange" ? /* @__PURE__ */ import_react9.default.createElement(StateInspectorRow, { key: index, colorScheme }, "connection:", " ", /* @__PURE__ */ import_react9.default.createElement("span", { style: { fontStyle: "italic" } }, event.state.toLowerCase())) : /* @__PURE__ */ import_react9.default.createElement(
|
|
5318
5330
|
StateInspectorRow,
|
|
5319
5331
|
{
|
|
@@ -5344,7 +5356,7 @@ function EventsSection({
|
|
|
5344
5356
|
}
|
|
5345
5357
|
)
|
|
5346
5358
|
)
|
|
5347
|
-
), !connectionEvents && /* @__PURE__ */ import_react9.default.createElement(
|
|
5359
|
+
), !connectionEvents?.length && /* @__PURE__ */ import_react9.default.createElement(
|
|
5348
5360
|
"div",
|
|
5349
5361
|
{
|
|
5350
5362
|
style: {
|
|
@@ -5598,7 +5610,8 @@ function ServerScriptLogsSection({
|
|
|
5598
5610
|
logs,
|
|
5599
5611
|
containerRef,
|
|
5600
5612
|
paused,
|
|
5601
|
-
onTogglePaused
|
|
5613
|
+
onTogglePaused,
|
|
5614
|
+
title = "Server Script Logs"
|
|
5602
5615
|
}) {
|
|
5603
5616
|
const theme = getStateInspectorTheme(colorScheme);
|
|
5604
5617
|
return /* @__PURE__ */ import_react11.default.createElement(
|
|
@@ -5606,7 +5619,7 @@ function ServerScriptLogsSection({
|
|
|
5606
5619
|
{
|
|
5607
5620
|
open: showLogs,
|
|
5608
5621
|
setOpen: setShowLogs,
|
|
5609
|
-
title
|
|
5622
|
+
title,
|
|
5610
5623
|
colorScheme,
|
|
5611
5624
|
right: /* @__PURE__ */ import_react11.default.createElement(StateInspectorButton, { theme, onClick: onTogglePaused }, paused ? "Resume" : "Pause")
|
|
5612
5625
|
},
|
|
@@ -5635,6 +5648,18 @@ function ServerScriptLogsSection({
|
|
|
5635
5648
|
},
|
|
5636
5649
|
/* @__PURE__ */ import_react11.default.createElement("span", null, formatTimestamp(log.timestamp)),
|
|
5637
5650
|
/* @__PURE__ */ import_react11.default.createElement("span", { style: { color: levelColors[log.level] } }, log.level),
|
|
5651
|
+
(log.origin || log.target || log.mode) && /* @__PURE__ */ import_react11.default.createElement(
|
|
5652
|
+
"span",
|
|
5653
|
+
{
|
|
5654
|
+
style: {
|
|
5655
|
+
fontFamily: "monospace",
|
|
5656
|
+
textTransform: "none",
|
|
5657
|
+
fontSize: "10px",
|
|
5658
|
+
opacity: 0.75
|
|
5659
|
+
}
|
|
5660
|
+
},
|
|
5661
|
+
[log.origin ?? log.target, log.mode].filter(Boolean).join(" / ")
|
|
5662
|
+
),
|
|
5638
5663
|
/* @__PURE__ */ import_react11.default.createElement(
|
|
5639
5664
|
"span",
|
|
5640
5665
|
{
|
|
@@ -5660,8 +5685,7 @@ function ServerScriptLogsSection({
|
|
|
5660
5685
|
{
|
|
5661
5686
|
key: index,
|
|
5662
5687
|
data: value,
|
|
5663
|
-
theme
|
|
5664
|
-
expandLevel: 3
|
|
5688
|
+
theme
|
|
5665
5689
|
}
|
|
5666
5690
|
)) : /* @__PURE__ */ import_react11.default.createElement("span", { style: { fontSize: "11px", opacity: 0.7 } }, "No data")
|
|
5667
5691
|
))), !logs?.length && /* @__PURE__ */ import_react11.default.createElement(
|
|
@@ -6330,6 +6354,31 @@ function useLocalStorageState(key, defaultValue) {
|
|
|
6330
6354
|
return [state, setLocalStorageState];
|
|
6331
6355
|
}
|
|
6332
6356
|
|
|
6357
|
+
// src/inspector/usePausedStream.ts
|
|
6358
|
+
var import_react15 = __toESM(require("react"));
|
|
6359
|
+
function usePausedStream(items) {
|
|
6360
|
+
const [paused, setPaused] = import_react15.default.useState(false);
|
|
6361
|
+
const [visibleItems, setVisibleItems] = import_react15.default.useState(items ?? []);
|
|
6362
|
+
const togglePaused = import_react15.default.useCallback(() => {
|
|
6363
|
+
setPaused((value) => {
|
|
6364
|
+
if (!value) {
|
|
6365
|
+
setVisibleItems(items ?? []);
|
|
6366
|
+
}
|
|
6367
|
+
return !value;
|
|
6368
|
+
});
|
|
6369
|
+
}, [items]);
|
|
6370
|
+
import_react15.default.useEffect(() => {
|
|
6371
|
+
if (paused) return;
|
|
6372
|
+
setVisibleItems(items ?? []);
|
|
6373
|
+
}, [items, paused]);
|
|
6374
|
+
return {
|
|
6375
|
+
paused,
|
|
6376
|
+
setPaused,
|
|
6377
|
+
togglePaused,
|
|
6378
|
+
visibleItems
|
|
6379
|
+
};
|
|
6380
|
+
}
|
|
6381
|
+
|
|
6333
6382
|
// src/inspector/StateInspector.tsx
|
|
6334
6383
|
var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector2({
|
|
6335
6384
|
noyaManager,
|
|
@@ -6352,16 +6401,17 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6352
6401
|
activityEventsManager,
|
|
6353
6402
|
logManager
|
|
6354
6403
|
} = noyaManager;
|
|
6355
|
-
const [didMount, setDidMount] =
|
|
6404
|
+
const [didMount, setDidMount] = import_react16.default.useState(false);
|
|
6356
6405
|
const tasks = useObservable(taskManager.tasks$);
|
|
6357
6406
|
const inputs = useObservable(ioManager.inputs$);
|
|
6358
6407
|
const outputTransforms = useObservable(ioManager.outputTransforms$);
|
|
6359
|
-
(0,
|
|
6408
|
+
(0, import_react16.useLayoutEffect)(() => {
|
|
6360
6409
|
setDidMount(true);
|
|
6361
6410
|
}, []);
|
|
6362
|
-
const eventsContainerRef =
|
|
6363
|
-
const activityEventsContainerRef =
|
|
6364
|
-
const serverLogsContainerRef =
|
|
6411
|
+
const eventsContainerRef = import_react16.default.useRef(null);
|
|
6412
|
+
const activityEventsContainerRef = import_react16.default.useRef(null);
|
|
6413
|
+
const serverLogsContainerRef = import_react16.default.useRef(null);
|
|
6414
|
+
const serverSimulationLogsContainerRef = import_react16.default.useRef(null);
|
|
6365
6415
|
const [showInspector, setShowInspector] = useLocalStorageState(
|
|
6366
6416
|
"noya-multiplayer-react-show-inspector",
|
|
6367
6417
|
true
|
|
@@ -6378,6 +6428,10 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6378
6428
|
"noya-multiplayer-react-show-users",
|
|
6379
6429
|
true
|
|
6380
6430
|
);
|
|
6431
|
+
const [showUserDetails, setShowUserDetails] = useLocalStorageState(
|
|
6432
|
+
"noya-multiplayer-react-show-user-details",
|
|
6433
|
+
false
|
|
6434
|
+
);
|
|
6381
6435
|
const [showData, setShowData] = useLocalStorageState(
|
|
6382
6436
|
"noya-multiplayer-react-show-data",
|
|
6383
6437
|
true
|
|
@@ -6418,35 +6472,51 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6418
6472
|
"noya-multiplayer-react-show-server-logs",
|
|
6419
6473
|
false
|
|
6420
6474
|
);
|
|
6475
|
+
const [showServerSimulationLogs, setShowServerSimulationLogs] = useLocalStorageState(
|
|
6476
|
+
"noya-multiplayer-react-show-server-simulation-logs",
|
|
6477
|
+
false
|
|
6478
|
+
);
|
|
6479
|
+
const [showSimulation, setShowSimulation] = useLocalStorageState(
|
|
6480
|
+
"noya-multiplayer-react-show-simulation",
|
|
6481
|
+
false
|
|
6482
|
+
);
|
|
6421
6483
|
const connectionEvents = useObservable(connectionEventManager.events$);
|
|
6422
|
-
|
|
6484
|
+
const {
|
|
6485
|
+
visibleItems: visibleConnectionEvents,
|
|
6486
|
+
paused: connectionEventsPaused,
|
|
6487
|
+
togglePaused: toggleConnectionEventsPaused
|
|
6488
|
+
} = usePausedStream(connectionEvents);
|
|
6489
|
+
(0, import_react16.useEffect)(() => {
|
|
6423
6490
|
if (eventsContainerRef.current) {
|
|
6424
6491
|
eventsContainerRef.current.scrollTop = eventsContainerRef.current.scrollHeight;
|
|
6425
6492
|
}
|
|
6426
|
-
}, [
|
|
6493
|
+
}, [visibleConnectionEvents]);
|
|
6427
6494
|
const serverLogs = useObservable(logManager.logs$);
|
|
6428
|
-
const
|
|
6429
|
-
|
|
6430
|
-
|
|
6495
|
+
const {
|
|
6496
|
+
visibleItems: visibleServerLogs,
|
|
6497
|
+
paused: serverLogsPaused,
|
|
6498
|
+
togglePaused: toggleServerLogsPaused
|
|
6499
|
+
} = usePausedStream(serverLogs);
|
|
6500
|
+
const serverSimulationLogs = useObservable(
|
|
6501
|
+
multiplayerStateManager.serverSimulationLogs$
|
|
6431
6502
|
);
|
|
6432
|
-
const
|
|
6433
|
-
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
});
|
|
6439
|
-
}, [serverLogs]);
|
|
6440
|
-
(0, import_react15.useEffect)(() => {
|
|
6441
|
-
if (serverLogsPaused) return;
|
|
6442
|
-
setVisibleServerLogs(serverLogs ?? []);
|
|
6443
|
-
}, [serverLogs, serverLogsPaused]);
|
|
6444
|
-
(0, import_react15.useEffect)(() => {
|
|
6503
|
+
const {
|
|
6504
|
+
visibleItems: visibleServerSimulationLogs,
|
|
6505
|
+
paused: serverSimulationLogsPaused,
|
|
6506
|
+
togglePaused: toggleServerSimulationLogsPaused
|
|
6507
|
+
} = usePausedStream(serverSimulationLogs);
|
|
6508
|
+
(0, import_react16.useEffect)(() => {
|
|
6445
6509
|
if (!showServerLogs) return;
|
|
6446
6510
|
if (serverLogsContainerRef.current) {
|
|
6447
6511
|
serverLogsContainerRef.current.scrollTop = serverLogsContainerRef.current.scrollHeight;
|
|
6448
6512
|
}
|
|
6449
6513
|
}, [showServerLogs, visibleServerLogs]);
|
|
6514
|
+
(0, import_react16.useEffect)(() => {
|
|
6515
|
+
if (!showServerSimulationLogs) return;
|
|
6516
|
+
if (serverSimulationLogsContainerRef.current) {
|
|
6517
|
+
serverSimulationLogsContainerRef.current.scrollTop = serverSimulationLogsContainerRef.current.scrollHeight;
|
|
6518
|
+
}
|
|
6519
|
+
}, [showServerSimulationLogs, visibleServerSimulationLogs]);
|
|
6450
6520
|
const multipeerStateInitialized = useObservable(
|
|
6451
6521
|
multiplayerStateManager.isInitialized$
|
|
6452
6522
|
);
|
|
@@ -6458,8 +6528,10 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6458
6528
|
const assetsInitialized = useObservable(assetManager.isInitialized$);
|
|
6459
6529
|
const secrets = useObservable(secretManager.secrets$);
|
|
6460
6530
|
const secretsInitialized = useObservable(secretManager.isInitialized$);
|
|
6461
|
-
const connectedUsers = useObservable(userManager.
|
|
6531
|
+
const connectedUsers = useObservable(userManager.allUsers$);
|
|
6462
6532
|
const connectionId = useObservable(userManager.currentConnectionId$);
|
|
6533
|
+
const simulationDiagnostics = multiplayerStateManager.getServerSimulationDiagnostics?.() ?? null;
|
|
6534
|
+
const showSimulationLogsSection = (simulationDiagnostics?.simulateLocally ?? false) || visibleServerSimulationLogs.length > 0;
|
|
6463
6535
|
const state = useObservable(multiplayerStateManager.optimisticState$);
|
|
6464
6536
|
const inputsInitialized = useObservable(ioManager.inputsInitialized$);
|
|
6465
6537
|
const outputTransformsInitialized = useObservable(
|
|
@@ -6486,11 +6558,11 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6486
6558
|
zIndex: 9999,
|
|
6487
6559
|
lineHeight: "13px"
|
|
6488
6560
|
};
|
|
6489
|
-
const handleExportAll = (0,
|
|
6561
|
+
const handleExportAll = (0, import_react16.useCallback)(async () => {
|
|
6490
6562
|
const buffer = await exportAll(noyaManager);
|
|
6491
6563
|
(0, import_react_utils.downloadBlob)(new Blob([buffer]), "state.zip");
|
|
6492
6564
|
}, [noyaManager]);
|
|
6493
|
-
const handleImportAll = (0,
|
|
6565
|
+
const handleImportAll = (0, import_react16.useCallback)(async () => {
|
|
6494
6566
|
const file = await uploadFile();
|
|
6495
6567
|
const buffer = await file.arrayBuffer();
|
|
6496
6568
|
importAll(buffer, noyaManager, {
|
|
@@ -6503,7 +6575,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6503
6575
|
}, [noyaManager]);
|
|
6504
6576
|
if (!didMount) return null;
|
|
6505
6577
|
if (!showInspector) {
|
|
6506
|
-
return /* @__PURE__ */
|
|
6578
|
+
return /* @__PURE__ */ import_react16.default.createElement(
|
|
6507
6579
|
"div",
|
|
6508
6580
|
{
|
|
6509
6581
|
...props,
|
|
@@ -6515,7 +6587,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6515
6587
|
},
|
|
6516
6588
|
onClick: () => setShowInspector(true)
|
|
6517
6589
|
},
|
|
6518
|
-
/* @__PURE__ */
|
|
6590
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6519
6591
|
StateInspectorToggleButton,
|
|
6520
6592
|
{
|
|
6521
6593
|
showInspector,
|
|
@@ -6526,7 +6598,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6526
6598
|
)
|
|
6527
6599
|
);
|
|
6528
6600
|
}
|
|
6529
|
-
return /* @__PURE__ */
|
|
6601
|
+
return /* @__PURE__ */ import_react16.default.createElement(
|
|
6530
6602
|
"div",
|
|
6531
6603
|
{
|
|
6532
6604
|
...props,
|
|
@@ -6535,7 +6607,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6535
6607
|
...props.style
|
|
6536
6608
|
}
|
|
6537
6609
|
},
|
|
6538
|
-
/* @__PURE__ */
|
|
6610
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6539
6611
|
StateInspectorDisclosureSection,
|
|
6540
6612
|
{
|
|
6541
6613
|
isFirst: true,
|
|
@@ -6545,9 +6617,17 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6545
6617
|
colorScheme,
|
|
6546
6618
|
style: {
|
|
6547
6619
|
flex: "0 0 auto",
|
|
6548
|
-
maxHeight: "
|
|
6620
|
+
maxHeight: "50%",
|
|
6621
|
+
overflowY: "auto"
|
|
6549
6622
|
},
|
|
6550
|
-
right: /* @__PURE__ */
|
|
6623
|
+
right: /* @__PURE__ */ import_react16.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6624
|
+
StateInspectorButton,
|
|
6625
|
+
{
|
|
6626
|
+
theme,
|
|
6627
|
+
onClick: () => setShowUserDetails(!showUserDetails)
|
|
6628
|
+
},
|
|
6629
|
+
"Toggle details"
|
|
6630
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
6551
6631
|
StateInspectorToggleButton,
|
|
6552
6632
|
{
|
|
6553
6633
|
showInspector,
|
|
@@ -6555,19 +6635,21 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6555
6635
|
theme,
|
|
6556
6636
|
anchor
|
|
6557
6637
|
}
|
|
6558
|
-
)
|
|
6638
|
+
))
|
|
6559
6639
|
},
|
|
6560
|
-
/* @__PURE__ */
|
|
6561
|
-
|
|
6562
|
-
return /* @__PURE__ */ import_react15.default.createElement(
|
|
6640
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, { style: { flex: "0 0 auto" } }, connectedUsers?.filter((user) => showUserDetails || !user.inactive).map((user, index, array) => {
|
|
6641
|
+
return /* @__PURE__ */ import_react16.default.createElement(
|
|
6563
6642
|
StateInspectorRow,
|
|
6564
6643
|
{
|
|
6565
6644
|
key: user.connectionId,
|
|
6566
6645
|
colorScheme,
|
|
6567
6646
|
variant: user.connectionId === connectionId ? "up" : void 0,
|
|
6568
|
-
bordered: index !== array.length - 1
|
|
6647
|
+
bordered: index !== array.length - 1,
|
|
6648
|
+
style: {
|
|
6649
|
+
opacity: user.inactive ? 0.5 : 1
|
|
6650
|
+
}
|
|
6569
6651
|
},
|
|
6570
|
-
user.image && /* @__PURE__ */
|
|
6652
|
+
user.image && /* @__PURE__ */ import_react16.default.createElement(
|
|
6571
6653
|
"img",
|
|
6572
6654
|
{
|
|
6573
6655
|
src: user.image,
|
|
@@ -6584,12 +6666,9 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6584
6666
|
}
|
|
6585
6667
|
}
|
|
6586
6668
|
),
|
|
6587
|
-
user.name
|
|
6588
|
-
" (",
|
|
6589
|
-
ellipsis(identifier, 8, "middle"),
|
|
6590
|
-
")"
|
|
6669
|
+
showUserDetails ? /* @__PURE__ */ import_react16.default.createElement(import_react_inspector7.ObjectInspector, { data: user, theme }) : user.name
|
|
6591
6670
|
);
|
|
6592
|
-
}), !connectedUsers && /* @__PURE__ */
|
|
6671
|
+
}), !connectedUsers && /* @__PURE__ */ import_react16.default.createElement(
|
|
6593
6672
|
"div",
|
|
6594
6673
|
{
|
|
6595
6674
|
style: {
|
|
@@ -6600,13 +6679,13 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6600
6679
|
gap: "4px"
|
|
6601
6680
|
}
|
|
6602
6681
|
},
|
|
6603
|
-
/* @__PURE__ */
|
|
6682
|
+
/* @__PURE__ */ import_react16.default.createElement("span", null, "No connected users")
|
|
6604
6683
|
))
|
|
6605
6684
|
),
|
|
6606
|
-
/* @__PURE__ */
|
|
6685
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6607
6686
|
StateInspectorDisclosureSection,
|
|
6608
6687
|
{
|
|
6609
|
-
title: /* @__PURE__ */
|
|
6688
|
+
title: /* @__PURE__ */ import_react16.default.createElement(StateInspectorTitleLabel, null, "Data", /* @__PURE__ */ import_react16.default.createElement(
|
|
6610
6689
|
ColoredDot,
|
|
6611
6690
|
{
|
|
6612
6691
|
type: multipeerStateInitialized ? "success" : "error"
|
|
@@ -6615,7 +6694,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6615
6694
|
colorScheme,
|
|
6616
6695
|
setOpen: setShowData,
|
|
6617
6696
|
open: showData,
|
|
6618
|
-
right: /* @__PURE__ */
|
|
6697
|
+
right: /* @__PURE__ */ import_react16.default.createElement(
|
|
6619
6698
|
"span",
|
|
6620
6699
|
{
|
|
6621
6700
|
style: {
|
|
@@ -6623,9 +6702,9 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6623
6702
|
gap: "12px"
|
|
6624
6703
|
}
|
|
6625
6704
|
},
|
|
6626
|
-
/* @__PURE__ */
|
|
6627
|
-
/* @__PURE__ */
|
|
6628
|
-
/* @__PURE__ */
|
|
6705
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorButton, { theme, onClick: handleImportAll }, "Import"),
|
|
6706
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorButton, { theme, onClick: handleExportAll }, "Export"),
|
|
6707
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6629
6708
|
StateInspectorButton,
|
|
6630
6709
|
{
|
|
6631
6710
|
theme,
|
|
@@ -6637,14 +6716,14 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6637
6716
|
)
|
|
6638
6717
|
)
|
|
6639
6718
|
},
|
|
6640
|
-
/* @__PURE__ */
|
|
6719
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6641
6720
|
import_react_inspector7.ObjectInspector,
|
|
6642
6721
|
{
|
|
6643
6722
|
name: multiplayerStateManager.schema ? "state" : void 0,
|
|
6644
6723
|
data: state,
|
|
6645
6724
|
theme
|
|
6646
6725
|
}
|
|
6647
|
-
)), multiplayerStateManager.schema && /* @__PURE__ */
|
|
6726
|
+
)), multiplayerStateManager.schema && /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6648
6727
|
import_react_inspector7.ObjectInspector,
|
|
6649
6728
|
{
|
|
6650
6729
|
name: "schema",
|
|
@@ -6653,7 +6732,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6653
6732
|
}
|
|
6654
6733
|
)))
|
|
6655
6734
|
),
|
|
6656
|
-
/* @__PURE__ */
|
|
6735
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6657
6736
|
HistorySection,
|
|
6658
6737
|
{
|
|
6659
6738
|
showHistory,
|
|
@@ -6663,14 +6742,14 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6663
6742
|
multiplayerStateManager
|
|
6664
6743
|
}
|
|
6665
6744
|
),
|
|
6666
|
-
/* @__PURE__ */
|
|
6745
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6667
6746
|
StateInspectorDisclosureSection,
|
|
6668
6747
|
{
|
|
6669
6748
|
open: showAssets,
|
|
6670
6749
|
setOpen: setShowAssets,
|
|
6671
|
-
title: /* @__PURE__ */
|
|
6750
|
+
title: /* @__PURE__ */ import_react16.default.createElement(StateInspectorTitleLabel, null, "Assets (", assets.length, ")", /* @__PURE__ */ import_react16.default.createElement(ColoredDot, { type: assetsInitialized ? "success" : "error" })),
|
|
6672
6751
|
colorScheme,
|
|
6673
|
-
right: /* @__PURE__ */
|
|
6752
|
+
right: /* @__PURE__ */ import_react16.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6674
6753
|
StateInspectorButton,
|
|
6675
6754
|
{
|
|
6676
6755
|
theme,
|
|
@@ -6685,7 +6764,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6685
6764
|
}
|
|
6686
6765
|
},
|
|
6687
6766
|
"Delete all"
|
|
6688
|
-
), /* @__PURE__ */
|
|
6767
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
6689
6768
|
StateInspectorButton,
|
|
6690
6769
|
{
|
|
6691
6770
|
theme,
|
|
@@ -6698,7 +6777,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6698
6777
|
}
|
|
6699
6778
|
},
|
|
6700
6779
|
"Reload"
|
|
6701
|
-
), /* @__PURE__ */
|
|
6780
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
6702
6781
|
StateInspectorButton,
|
|
6703
6782
|
{
|
|
6704
6783
|
theme,
|
|
@@ -6722,14 +6801,14 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6722
6801
|
"Upload"
|
|
6723
6802
|
))
|
|
6724
6803
|
},
|
|
6725
|
-
/* @__PURE__ */
|
|
6804
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, assets.map((asset) => /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { key: asset.id, colorScheme }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6726
6805
|
import_react_inspector7.ObjectInspector,
|
|
6727
6806
|
{
|
|
6728
6807
|
name: asset.id,
|
|
6729
6808
|
data: truncateAsset(asset),
|
|
6730
6809
|
theme
|
|
6731
6810
|
}
|
|
6732
|
-
), /* @__PURE__ */
|
|
6811
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
6733
6812
|
StateInspectorButton,
|
|
6734
6813
|
{
|
|
6735
6814
|
theme,
|
|
@@ -6738,14 +6817,14 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6738
6817
|
"Delete"
|
|
6739
6818
|
))))
|
|
6740
6819
|
),
|
|
6741
|
-
advanced && /* @__PURE__ */
|
|
6820
|
+
advanced && /* @__PURE__ */ import_react16.default.createElement(
|
|
6742
6821
|
StateInspectorDisclosureSection,
|
|
6743
6822
|
{
|
|
6744
|
-
title: /* @__PURE__ */
|
|
6823
|
+
title: /* @__PURE__ */ import_react16.default.createElement(StateInspectorTitleLabel, null, "Resources (", resources.length, ")", /* @__PURE__ */ import_react16.default.createElement(ColoredDot, { type: resourcesInitialized ? "success" : "error" })),
|
|
6745
6824
|
colorScheme,
|
|
6746
6825
|
open: showResources,
|
|
6747
6826
|
setOpen: setShowResources,
|
|
6748
|
-
right: /* @__PURE__ */
|
|
6827
|
+
right: /* @__PURE__ */ import_react16.default.createElement("span", { style: { display: "flex", gap: "10px" } }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6749
6828
|
StateInspectorButton,
|
|
6750
6829
|
{
|
|
6751
6830
|
theme,
|
|
@@ -6760,7 +6839,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6760
6839
|
}
|
|
6761
6840
|
},
|
|
6762
6841
|
"Delete all"
|
|
6763
|
-
), /* @__PURE__ */
|
|
6842
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
6764
6843
|
StateInspectorButton,
|
|
6765
6844
|
{
|
|
6766
6845
|
theme,
|
|
@@ -6773,7 +6852,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6773
6852
|
}
|
|
6774
6853
|
},
|
|
6775
6854
|
"Create Directory"
|
|
6776
|
-
), /* @__PURE__ */
|
|
6855
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
6777
6856
|
StateInspectorButton,
|
|
6778
6857
|
{
|
|
6779
6858
|
theme,
|
|
@@ -6793,21 +6872,21 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6793
6872
|
"Create Asset"
|
|
6794
6873
|
))
|
|
6795
6874
|
},
|
|
6796
|
-
/* @__PURE__ */
|
|
6875
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, resources?.map((resource) => /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { key: resource.id, colorScheme }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6797
6876
|
import_react_inspector7.ObjectInspector,
|
|
6798
6877
|
{
|
|
6799
6878
|
name: resource.path,
|
|
6800
6879
|
data: resource,
|
|
6801
6880
|
theme
|
|
6802
6881
|
}
|
|
6803
|
-
), /* @__PURE__ */
|
|
6882
|
+
), /* @__PURE__ */ import_react16.default.createElement("div", { style: { display: "flex", gap: "4px" } }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6804
6883
|
StateInspectorButton,
|
|
6805
6884
|
{
|
|
6806
6885
|
theme,
|
|
6807
6886
|
onClick: () => resourceManager.deleteResource({ id: resource.id })
|
|
6808
6887
|
},
|
|
6809
6888
|
"Delete"
|
|
6810
|
-
), /* @__PURE__ */
|
|
6889
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
6811
6890
|
StateInspectorButton,
|
|
6812
6891
|
{
|
|
6813
6892
|
theme,
|
|
@@ -6820,14 +6899,14 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6820
6899
|
"Rename"
|
|
6821
6900
|
)))))
|
|
6822
6901
|
),
|
|
6823
|
-
advanced && /* @__PURE__ */
|
|
6902
|
+
advanced && /* @__PURE__ */ import_react16.default.createElement(
|
|
6824
6903
|
StateInspectorDisclosureSection,
|
|
6825
6904
|
{
|
|
6826
|
-
title: /* @__PURE__ */
|
|
6905
|
+
title: /* @__PURE__ */ import_react16.default.createElement(StateInspectorTitleLabel, null, "Secrets", /* @__PURE__ */ import_react16.default.createElement(ColoredDot, { type: secretsInitialized ? "success" : "error" })),
|
|
6827
6906
|
colorScheme,
|
|
6828
6907
|
open: showSecrets,
|
|
6829
6908
|
setOpen: setShowSecrets,
|
|
6830
|
-
right: /* @__PURE__ */
|
|
6909
|
+
right: /* @__PURE__ */ import_react16.default.createElement(
|
|
6831
6910
|
StateInspectorButton,
|
|
6832
6911
|
{
|
|
6833
6912
|
theme,
|
|
@@ -6842,7 +6921,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6842
6921
|
"Create"
|
|
6843
6922
|
)
|
|
6844
6923
|
},
|
|
6845
|
-
/* @__PURE__ */
|
|
6924
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, secrets.map((secret) => /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { key: secret.id, colorScheme }, /* @__PURE__ */ import_react16.default.createElement(import_react_inspector7.ObjectInspector, { data: secret, theme }), /* @__PURE__ */ import_react16.default.createElement(
|
|
6846
6925
|
StateInspectorButton,
|
|
6847
6926
|
{
|
|
6848
6927
|
theme,
|
|
@@ -6851,15 +6930,15 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6851
6930
|
"Delete"
|
|
6852
6931
|
))))
|
|
6853
6932
|
),
|
|
6854
|
-
advanced && /* @__PURE__ */
|
|
6933
|
+
advanced && /* @__PURE__ */ import_react16.default.createElement(
|
|
6855
6934
|
StateInspectorDisclosureSection,
|
|
6856
6935
|
{
|
|
6857
6936
|
open: showInputs,
|
|
6858
6937
|
setOpen: setShowInputs,
|
|
6859
|
-
title: /* @__PURE__ */
|
|
6938
|
+
title: /* @__PURE__ */ import_react16.default.createElement(StateInspectorTitleLabel, null, "Inputs", /* @__PURE__ */ import_react16.default.createElement(ColoredDot, { type: inputsInitialized ? "success" : "error" })),
|
|
6860
6939
|
colorScheme
|
|
6861
6940
|
},
|
|
6862
|
-
/* @__PURE__ */
|
|
6941
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, inputs?.map((input) => /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { key: input.id, colorScheme }, /* @__PURE__ */ import_react16.default.createElement(import_react_inspector7.ObjectInspector, { data: input, theme }))), !inputs?.length && /* @__PURE__ */ import_react16.default.createElement(
|
|
6863
6942
|
"div",
|
|
6864
6943
|
{
|
|
6865
6944
|
style: {
|
|
@@ -6870,15 +6949,15 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6870
6949
|
gap: "4px"
|
|
6871
6950
|
}
|
|
6872
6951
|
},
|
|
6873
|
-
/* @__PURE__ */
|
|
6952
|
+
/* @__PURE__ */ import_react16.default.createElement("span", null, "No inputs")
|
|
6874
6953
|
))
|
|
6875
6954
|
),
|
|
6876
|
-
advanced && /* @__PURE__ */
|
|
6955
|
+
advanced && /* @__PURE__ */ import_react16.default.createElement(
|
|
6877
6956
|
StateInspectorDisclosureSection,
|
|
6878
6957
|
{
|
|
6879
6958
|
open: showOutputTransforms,
|
|
6880
6959
|
setOpen: setShowOutputTransforms,
|
|
6881
|
-
title: /* @__PURE__ */
|
|
6960
|
+
title: /* @__PURE__ */ import_react16.default.createElement(StateInspectorTitleLabel, null, "Output Transforms", /* @__PURE__ */ import_react16.default.createElement(
|
|
6882
6961
|
ColoredDot,
|
|
6883
6962
|
{
|
|
6884
6963
|
type: outputTransformsInitialized ? "success" : "error"
|
|
@@ -6886,7 +6965,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6886
6965
|
)),
|
|
6887
6966
|
colorScheme
|
|
6888
6967
|
},
|
|
6889
|
-
/* @__PURE__ */
|
|
6968
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, outputTransforms?.map((transform) => /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { key: transform.id, colorScheme }, /* @__PURE__ */ import_react16.default.createElement(import_react_inspector7.ObjectInspector, { data: transform, theme }))), !outputTransforms?.length && /* @__PURE__ */ import_react16.default.createElement(
|
|
6890
6969
|
"div",
|
|
6891
6970
|
{
|
|
6892
6971
|
style: {
|
|
@@ -6897,10 +6976,10 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6897
6976
|
gap: "4px"
|
|
6898
6977
|
}
|
|
6899
6978
|
},
|
|
6900
|
-
/* @__PURE__ */
|
|
6979
|
+
/* @__PURE__ */ import_react16.default.createElement("span", null, "No output transforms")
|
|
6901
6980
|
))
|
|
6902
6981
|
),
|
|
6903
|
-
advanced && /* @__PURE__ */
|
|
6982
|
+
advanced && /* @__PURE__ */ import_react16.default.createElement(
|
|
6904
6983
|
StateInspectorDisclosureSection,
|
|
6905
6984
|
{
|
|
6906
6985
|
title: "Tasks",
|
|
@@ -6908,7 +6987,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6908
6987
|
open: showTasks,
|
|
6909
6988
|
setOpen: setShowTasks
|
|
6910
6989
|
},
|
|
6911
|
-
/* @__PURE__ */
|
|
6990
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, tasks?.map((task) => /* @__PURE__ */ import_react16.default.createElement(
|
|
6912
6991
|
StateInspectorRow,
|
|
6913
6992
|
{
|
|
6914
6993
|
key: task.id,
|
|
@@ -6917,7 +6996,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6917
6996
|
backgroundColor: task.status === "done" ? "rgba(0,255,0,0.2)" : task.status === "error" ? "rgba(255,0,0,0.2)" : void 0
|
|
6918
6997
|
}
|
|
6919
6998
|
},
|
|
6920
|
-
/* @__PURE__ */
|
|
6999
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6921
7000
|
import_react_inspector7.ObjectInspector,
|
|
6922
7001
|
{
|
|
6923
7002
|
name: task.name,
|
|
@@ -6927,7 +7006,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6927
7006
|
)
|
|
6928
7007
|
)))
|
|
6929
7008
|
),
|
|
6930
|
-
/* @__PURE__ */
|
|
7009
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6931
7010
|
StateInspectorDisclosureSection,
|
|
6932
7011
|
{
|
|
6933
7012
|
open: showShared,
|
|
@@ -6935,7 +7014,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6935
7014
|
title: "Shared Connection Data",
|
|
6936
7015
|
colorScheme
|
|
6937
7016
|
},
|
|
6938
|
-
/* @__PURE__ */
|
|
7017
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, Object.entries(shared).map(([key, value]) => /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { key, colorScheme }, /* @__PURE__ */ import_react16.default.createElement(
|
|
6939
7018
|
import_react_inspector7.ObjectInspector,
|
|
6940
7019
|
{
|
|
6941
7020
|
name: key,
|
|
@@ -6945,7 +7024,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6945
7024
|
}
|
|
6946
7025
|
))))
|
|
6947
7026
|
),
|
|
6948
|
-
/* @__PURE__ */
|
|
7027
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6949
7028
|
ServerScriptLogsSection,
|
|
6950
7029
|
{
|
|
6951
7030
|
colorScheme,
|
|
@@ -6957,7 +7036,44 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6957
7036
|
containerRef: serverLogsContainerRef
|
|
6958
7037
|
}
|
|
6959
7038
|
),
|
|
6960
|
-
|
|
7039
|
+
showSimulationLogsSection && /* @__PURE__ */ import_react16.default.createElement(
|
|
7040
|
+
ServerScriptLogsSection,
|
|
7041
|
+
{
|
|
7042
|
+
title: "Server Script Simulation Logs",
|
|
7043
|
+
colorScheme,
|
|
7044
|
+
showLogs: showServerSimulationLogs,
|
|
7045
|
+
setShowLogs: setShowServerSimulationLogs,
|
|
7046
|
+
logs: visibleServerSimulationLogs,
|
|
7047
|
+
paused: serverSimulationLogsPaused,
|
|
7048
|
+
onTogglePaused: toggleServerSimulationLogsPaused,
|
|
7049
|
+
containerRef: serverSimulationLogsContainerRef
|
|
7050
|
+
}
|
|
7051
|
+
),
|
|
7052
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
7053
|
+
StateInspectorDisclosureSection,
|
|
7054
|
+
{
|
|
7055
|
+
open: showSimulation,
|
|
7056
|
+
setOpen: setShowSimulation,
|
|
7057
|
+
title: "Server Simulation",
|
|
7058
|
+
colorScheme
|
|
7059
|
+
},
|
|
7060
|
+
/* @__PURE__ */ import_react16.default.createElement(StateInspectorDisclosureRowInner, null, /* @__PURE__ */ import_react16.default.createElement(StateInspectorRow, { colorScheme }, /* @__PURE__ */ import_react16.default.createElement(
|
|
7061
|
+
import_react_inspector7.ObjectInspector,
|
|
7062
|
+
{
|
|
7063
|
+
name: "status",
|
|
7064
|
+
data: simulationDiagnostics ?? {
|
|
7065
|
+
simulateLocally: false,
|
|
7066
|
+
simulatorActive: false,
|
|
7067
|
+
clockSkewMs: 0,
|
|
7068
|
+
invocations: [],
|
|
7069
|
+
pendingPredictions: []
|
|
7070
|
+
},
|
|
7071
|
+
theme,
|
|
7072
|
+
expandLevel: 2
|
|
7073
|
+
}
|
|
7074
|
+
)))
|
|
7075
|
+
),
|
|
7076
|
+
advanced && /* @__PURE__ */ import_react16.default.createElement(
|
|
6961
7077
|
ActivityEventsSection,
|
|
6962
7078
|
{
|
|
6963
7079
|
colorScheme,
|
|
@@ -6967,10 +7083,12 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6967
7083
|
activityEventsManager
|
|
6968
7084
|
}
|
|
6969
7085
|
),
|
|
6970
|
-
/* @__PURE__ */
|
|
7086
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
6971
7087
|
EventsSection,
|
|
6972
7088
|
{
|
|
6973
|
-
connectionEvents,
|
|
7089
|
+
connectionEvents: visibleConnectionEvents,
|
|
7090
|
+
paused: connectionEventsPaused,
|
|
7091
|
+
onTogglePaused: toggleConnectionEventsPaused,
|
|
6974
7092
|
colorScheme,
|
|
6975
7093
|
eventsContainerRef,
|
|
6976
7094
|
showEvents,
|
|
@@ -7013,7 +7131,7 @@ function useStateInspector({
|
|
|
7013
7131
|
colorScheme,
|
|
7014
7132
|
anchor
|
|
7015
7133
|
}) {
|
|
7016
|
-
const [root, setRoot] =
|
|
7134
|
+
const [root, setRoot] = import_react17.default.useState(null);
|
|
7017
7135
|
(0, import_react_utils2.useIsomorphicLayoutEffect)(() => {
|
|
7018
7136
|
if (disabled) return;
|
|
7019
7137
|
const { root: root2, unmount } = createStateInspectorRoot();
|
|
@@ -7023,7 +7141,7 @@ function useStateInspector({
|
|
|
7023
7141
|
(0, import_react_utils2.useIsomorphicLayoutEffect)(() => {
|
|
7024
7142
|
if (!root) return;
|
|
7025
7143
|
root.render(
|
|
7026
|
-
/* @__PURE__ */
|
|
7144
|
+
/* @__PURE__ */ import_react17.default.createElement(
|
|
7027
7145
|
StateInspector,
|
|
7028
7146
|
{
|
|
7029
7147
|
colorScheme,
|
|
@@ -7038,18 +7156,18 @@ function useStateInspector({
|
|
|
7038
7156
|
|
|
7039
7157
|
// src/hooks.ts
|
|
7040
7158
|
function useManagedState(createInitialState, options) {
|
|
7041
|
-
const [stateManager] = (0,
|
|
7159
|
+
const [stateManager] = (0, import_react18.useState)(
|
|
7042
7160
|
() => new import_state_manager2.StateManager(createInitialState(), options)
|
|
7043
7161
|
);
|
|
7044
|
-
const getSnapshot = (0,
|
|
7162
|
+
const getSnapshot = (0, import_react18.useCallback)(() => {
|
|
7045
7163
|
return stateManager.getState();
|
|
7046
7164
|
}, [stateManager]);
|
|
7047
|
-
const state = (0,
|
|
7165
|
+
const state = (0, import_react18.useSyncExternalStore)(
|
|
7048
7166
|
stateManager.addListener,
|
|
7049
7167
|
getSnapshot,
|
|
7050
7168
|
getSnapshot
|
|
7051
7169
|
);
|
|
7052
|
-
const setState = (0,
|
|
7170
|
+
const setState = (0, import_react18.useCallback)(
|
|
7053
7171
|
(...args) => {
|
|
7054
7172
|
const [metadata, action] = args.length === 1 ? [void 0, args[0]] : args;
|
|
7055
7173
|
if (metadata === void 0) {
|
|
@@ -7085,7 +7203,7 @@ function useManagedState(createInitialState, options) {
|
|
|
7085
7203
|
return [state, setState, stateManager];
|
|
7086
7204
|
}
|
|
7087
7205
|
function useManagedHistory(stateManager) {
|
|
7088
|
-
return (0,
|
|
7206
|
+
return (0, import_react18.useSyncExternalStore)(
|
|
7089
7207
|
stateManager.historyEmittor.addListener,
|
|
7090
7208
|
stateManager.getHistorySnapshot,
|
|
7091
7209
|
stateManager.getHistorySnapshot
|
|
@@ -7096,7 +7214,7 @@ function useBindNoyaManager(noyaManager, options) {
|
|
|
7096
7214
|
noyaManager.multiplayerStateManager.optimisticState$
|
|
7097
7215
|
);
|
|
7098
7216
|
const assets = useObservable(noyaManager.assetManager.assets$);
|
|
7099
|
-
const extras = (0,
|
|
7217
|
+
const extras = (0, import_react18.useMemo)(() => {
|
|
7100
7218
|
return {
|
|
7101
7219
|
noyaManager,
|
|
7102
7220
|
taskManager: noyaManager.taskManager,
|
|
@@ -7115,8 +7233,8 @@ function useBindNoyaManager(noyaManager, options) {
|
|
|
7115
7233
|
assets
|
|
7116
7234
|
};
|
|
7117
7235
|
}, [noyaManager, assets]);
|
|
7118
|
-
const syncRef = (0,
|
|
7119
|
-
(0,
|
|
7236
|
+
const syncRef = (0, import_react18.useRef)(options?.sync);
|
|
7237
|
+
(0, import_react18.useEffect)(() => {
|
|
7120
7238
|
if (syncRef.current) {
|
|
7121
7239
|
return syncRef.current({ noyaManager });
|
|
7122
7240
|
}
|
|
@@ -7136,7 +7254,7 @@ function useMultiplayerState(initialState, options) {
|
|
|
7136
7254
|
inspector,
|
|
7137
7255
|
...rest
|
|
7138
7256
|
} = options ?? {};
|
|
7139
|
-
const [noyaManager] = (0,
|
|
7257
|
+
const [noyaManager] = (0, import_react18.useState)(
|
|
7140
7258
|
() => new import_state_manager2.NoyaManager(initialState, rest)
|
|
7141
7259
|
);
|
|
7142
7260
|
return useBindNoyaManager(noyaManager, {
|
|
@@ -7146,13 +7264,13 @@ function useMultiplayerState(initialState, options) {
|
|
|
7146
7264
|
}
|
|
7147
7265
|
function useErrorOverlay(noyaManager) {
|
|
7148
7266
|
const unrecoverableError = useObservable(noyaManager.unrecoverableError);
|
|
7149
|
-
(0,
|
|
7267
|
+
(0, import_react18.useEffect)(() => {
|
|
7150
7268
|
if (!unrecoverableError) return;
|
|
7151
7269
|
const el = document.createElement("div");
|
|
7152
7270
|
el.id = "noya-multiplayer-react-error-overlay";
|
|
7153
7271
|
document.body.appendChild(el);
|
|
7154
7272
|
const root = (0, import_client2.createRoot)(el);
|
|
7155
|
-
root.render((0,
|
|
7273
|
+
root.render((0, import_react18.createElement)(ErrorOverlay, { error: unrecoverableError }));
|
|
7156
7274
|
return () => {
|
|
7157
7275
|
root.unmount();
|
|
7158
7276
|
el.remove();
|
|
@@ -7192,6 +7310,17 @@ function parseAppDataParameter(options) {
|
|
|
7192
7310
|
return null;
|
|
7193
7311
|
}
|
|
7194
7312
|
}
|
|
7313
|
+
function applyClientIdentityFromAppData(appData) {
|
|
7314
|
+
if (appData.clientId !== void 0) {
|
|
7315
|
+
(0, import_state_manager3.setClientId)(appData.clientId);
|
|
7316
|
+
}
|
|
7317
|
+
if (appData.clientName !== void 0) {
|
|
7318
|
+
(0, import_state_manager3.setClientName)(appData.clientName);
|
|
7319
|
+
}
|
|
7320
|
+
if (appData.clientImage !== void 0) {
|
|
7321
|
+
(0, import_state_manager3.setClientImage)(appData.clientImage);
|
|
7322
|
+
}
|
|
7323
|
+
}
|
|
7195
7324
|
function getAppData(initialState, schema, options) {
|
|
7196
7325
|
const resolvedInitialState = initialState instanceof Function ? initialState() : initialState;
|
|
7197
7326
|
let appData = parseAppDataParameter(options) ?? createDefaultAppData(resolvedInitialState);
|
|
@@ -7202,6 +7331,7 @@ function getAppData(initialState, schema, options) {
|
|
|
7202
7331
|
appData.isDemo = appData.isDemo ?? false;
|
|
7203
7332
|
const fallbackAccess = appData.viewType === "editable" ? "write" : "read";
|
|
7204
7333
|
appData.access = appData.access ?? fallbackAccess;
|
|
7334
|
+
applyClientIdentityFromAppData(appData);
|
|
7205
7335
|
return appData;
|
|
7206
7336
|
}
|
|
7207
7337
|
function getSyncAdapter(params) {
|
|
@@ -7230,12 +7360,12 @@ function useNoyaStateInternal(...args) {
|
|
|
7230
7360
|
isDemo,
|
|
7231
7361
|
access
|
|
7232
7362
|
}
|
|
7233
|
-
] = (0,
|
|
7363
|
+
] = (0, import_react19.useState)(() => {
|
|
7234
7364
|
return getAppData(initialState, options?.schema, {
|
|
7235
7365
|
overrideExistingState: options?.overrideExistingState
|
|
7236
7366
|
});
|
|
7237
7367
|
});
|
|
7238
|
-
const basePolicyAuthContext = (0,
|
|
7368
|
+
const basePolicyAuthContext = (0, import_react19.useMemo)(() => {
|
|
7239
7369
|
if (!access && userId === void 0) return void 0;
|
|
7240
7370
|
const context = {};
|
|
7241
7371
|
if (access) {
|
|
@@ -7246,7 +7376,7 @@ function useNoyaStateInternal(...args) {
|
|
|
7246
7376
|
}
|
|
7247
7377
|
return context;
|
|
7248
7378
|
}, [access, userId]);
|
|
7249
|
-
const sync = (0,
|
|
7379
|
+
const sync = (0, import_react19.useMemo)(() => {
|
|
7250
7380
|
return getSyncAdapter({
|
|
7251
7381
|
multiplayerUrl,
|
|
7252
7382
|
offlineStorageKey: options?.offlineStorageKey,
|
|
@@ -7259,16 +7389,16 @@ function useNoyaStateInternal(...args) {
|
|
|
7259
7389
|
options?.debug,
|
|
7260
7390
|
basePolicyAuthContext
|
|
7261
7391
|
]);
|
|
7262
|
-
const [noyaManager] = (0,
|
|
7392
|
+
const [noyaManager] = (0, import_react19.useState)(
|
|
7263
7393
|
() => new import_state_manager3.NoyaManager(noyaAppInitialState, options)
|
|
7264
7394
|
);
|
|
7265
|
-
(0,
|
|
7395
|
+
(0, import_react19.useEffect)(() => {
|
|
7266
7396
|
if (!userId) return;
|
|
7267
7397
|
noyaManager.sharedConnectionDataManager.setCurrentConnectionId(userId);
|
|
7268
7398
|
noyaManager.userManager.setCurrentConnectionId(userId);
|
|
7269
7399
|
noyaManager.userManager.setCurrentUserId(userId);
|
|
7270
7400
|
}, [noyaManager, userId]);
|
|
7271
|
-
(0,
|
|
7401
|
+
(0, import_react19.useEffect)(() => {
|
|
7272
7402
|
if (!basePolicyAuthContext) return;
|
|
7273
7403
|
noyaManager.multiplayerStateManager.setPolicyAuthContext(
|
|
7274
7404
|
basePolicyAuthContext
|
|
@@ -7279,7 +7409,7 @@ function useNoyaStateInternal(...args) {
|
|
|
7279
7409
|
sync: options?.sync ?? sync
|
|
7280
7410
|
});
|
|
7281
7411
|
const [, , extras] = result;
|
|
7282
|
-
const mergedExtras = (0,
|
|
7412
|
+
const mergedExtras = (0, import_react19.useMemo)(() => {
|
|
7283
7413
|
return { ...extras, theme, viewType, isDemo };
|
|
7284
7414
|
}, [extras, theme, viewType, isDemo]);
|
|
7285
7415
|
return [result[0], result[1], mergedExtras];
|
|
@@ -7287,7 +7417,7 @@ function useNoyaStateInternal(...args) {
|
|
|
7287
7417
|
|
|
7288
7418
|
// src/singleton.tsx
|
|
7289
7419
|
var import_state_manager4 = require("@noya-app/state-manager");
|
|
7290
|
-
var
|
|
7420
|
+
var import_react20 = __toESM(require("react"));
|
|
7291
7421
|
var noyaManagerSingleton;
|
|
7292
7422
|
var noyaSingletonBindings;
|
|
7293
7423
|
function initializeNoyaSingleton(options) {
|
|
@@ -7304,7 +7434,6 @@ function initializeNoyaSingleton(options) {
|
|
|
7304
7434
|
viewType,
|
|
7305
7435
|
offlineStorageKey,
|
|
7306
7436
|
multiplayerUrl,
|
|
7307
|
-
serverScripts,
|
|
7308
7437
|
...managerOptions
|
|
7309
7438
|
} = options ?? {};
|
|
7310
7439
|
const appData = getAppData(
|
|
@@ -7331,7 +7460,7 @@ function initializeNoyaSingleton(options) {
|
|
|
7331
7460
|
multiplayerUrl: multiplayerUrl ?? appData.multiplayerUrl,
|
|
7332
7461
|
offlineStorageKey,
|
|
7333
7462
|
debug: managerOptions?.debug,
|
|
7334
|
-
serverScripts,
|
|
7463
|
+
serverScripts: managerOptions?.serverScripts,
|
|
7335
7464
|
policyAuthContext
|
|
7336
7465
|
});
|
|
7337
7466
|
try {
|
|
@@ -7345,7 +7474,7 @@ function initializeNoyaSingleton(options) {
|
|
|
7345
7474
|
if (resolvedInspector) {
|
|
7346
7475
|
const { root } = createStateInspectorRoot();
|
|
7347
7476
|
root.render(
|
|
7348
|
-
/* @__PURE__ */
|
|
7477
|
+
/* @__PURE__ */ import_react20.default.createElement(
|
|
7349
7478
|
StateInspector,
|
|
7350
7479
|
{
|
|
7351
7480
|
noyaManager: noyaManagerSingleton,
|
|
@@ -7446,9 +7575,9 @@ function buildResourcePatchPayload({
|
|
|
7446
7575
|
}
|
|
7447
7576
|
return patch;
|
|
7448
7577
|
}
|
|
7449
|
-
var AnyNoyaStateContext = (0,
|
|
7578
|
+
var AnyNoyaStateContext = (0, import_react21.createContext)(void 0);
|
|
7450
7579
|
function useAnyNoyaStateContext() {
|
|
7451
|
-
const value = (0,
|
|
7580
|
+
const value = (0, import_react21.useContext)(AnyNoyaStateContext);
|
|
7452
7581
|
if (!value) {
|
|
7453
7582
|
const bindings = getNoyaSingletonBindings();
|
|
7454
7583
|
if (bindings) {
|
|
@@ -7482,7 +7611,7 @@ function useAssets() {
|
|
|
7482
7611
|
}
|
|
7483
7612
|
function useAsset(id) {
|
|
7484
7613
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7485
|
-
const observable = (0,
|
|
7614
|
+
const observable = (0, import_react21.useMemo)(
|
|
7486
7615
|
() => noyaManager.assetManager.assets$.map(
|
|
7487
7616
|
(assets) => assets.find((a) => a.stableId === id) ?? assets.find((a) => a.id === id)
|
|
7488
7617
|
),
|
|
@@ -7493,7 +7622,7 @@ function useAsset(id) {
|
|
|
7493
7622
|
function useAssetManager() {
|
|
7494
7623
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7495
7624
|
const isInitialized = useObservable(noyaManager.assetManager.isInitialized$);
|
|
7496
|
-
return (0,
|
|
7625
|
+
return (0, import_react21.useMemo)(
|
|
7497
7626
|
() => ({
|
|
7498
7627
|
create: noyaManager.assetManager.create,
|
|
7499
7628
|
delete: noyaManager.assetManager.delete,
|
|
@@ -7518,7 +7647,7 @@ function useSecret(name) {
|
|
|
7518
7647
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7519
7648
|
return useObservable(
|
|
7520
7649
|
noyaManager.secretManager.secrets$,
|
|
7521
|
-
(0,
|
|
7650
|
+
(0, import_react21.useCallback)((secrets) => secrets.find((s) => s.name === name), [name])
|
|
7522
7651
|
);
|
|
7523
7652
|
}
|
|
7524
7653
|
function useInputs() {
|
|
@@ -7536,7 +7665,7 @@ function useIOManager() {
|
|
|
7536
7665
|
function usePublish(callback) {
|
|
7537
7666
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7538
7667
|
const stableCallback = (0, import_react_utils3.useStableCallback)(callback);
|
|
7539
|
-
(0,
|
|
7668
|
+
(0, import_react21.useEffect)(() => {
|
|
7540
7669
|
noyaManager.publishingManager.setPublishingEnabled(true);
|
|
7541
7670
|
noyaManager.publishingManager.getFilesToPublish = stableCallback;
|
|
7542
7671
|
return () => {
|
|
@@ -7547,7 +7676,7 @@ function usePublish(callback) {
|
|
|
7547
7676
|
}
|
|
7548
7677
|
function useIsInitialized() {
|
|
7549
7678
|
const { noyaManager, viewType } = useAnyNoyaStateContext();
|
|
7550
|
-
const isInitializedObservable = (0,
|
|
7679
|
+
const isInitializedObservable = (0, import_react21.useMemo)(
|
|
7551
7680
|
() => import_observable.Observable.combine(
|
|
7552
7681
|
[
|
|
7553
7682
|
...viewType === "preview" ? [] : [noyaManager.multiplayerStateManager.isInitialized$],
|
|
@@ -7564,29 +7693,33 @@ function usePipelineManager() {
|
|
|
7564
7693
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7565
7694
|
return noyaManager.pipelineManager;
|
|
7566
7695
|
}
|
|
7567
|
-
function
|
|
7696
|
+
function useNoyaUserManager() {
|
|
7568
7697
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7569
7698
|
return noyaManager.userManager;
|
|
7570
7699
|
}
|
|
7571
|
-
function
|
|
7572
|
-
const userManager =
|
|
7573
|
-
return useObservable(userManager?.
|
|
7700
|
+
function useNoyaUsers() {
|
|
7701
|
+
const userManager = useNoyaUserManager();
|
|
7702
|
+
return useObservable(userManager?.allUsers$);
|
|
7574
7703
|
}
|
|
7575
|
-
function
|
|
7576
|
-
const userManager =
|
|
7704
|
+
function useNoyaUser(id) {
|
|
7705
|
+
const userManager = useNoyaUserManager();
|
|
7577
7706
|
return useObservable(
|
|
7578
|
-
userManager?.
|
|
7579
|
-
(0,
|
|
7580
|
-
(users) => {
|
|
7581
|
-
return users.find((user) => {
|
|
7582
|
-
const prefix = user.connectionId.slice(0, 8);
|
|
7583
|
-
return userId?.includes(prefix);
|
|
7584
|
-
});
|
|
7585
|
-
},
|
|
7586
|
-
[userId]
|
|
7587
|
-
)
|
|
7707
|
+
userManager?.allUsers$,
|
|
7708
|
+
(0, import_react21.useCallback)((users) => (0, import_state_manager5.findNoyaUser)(users, id), [id])
|
|
7588
7709
|
);
|
|
7589
7710
|
}
|
|
7711
|
+
function useNoyaActiveUsers() {
|
|
7712
|
+
const userManager = useNoyaUserManager();
|
|
7713
|
+
return useObservable(userManager?.connectedUsers$);
|
|
7714
|
+
}
|
|
7715
|
+
function useNoyaCurrentUser() {
|
|
7716
|
+
const userManager = useNoyaUserManager();
|
|
7717
|
+
return useObservable(userManager?.currentUser$);
|
|
7718
|
+
}
|
|
7719
|
+
function useNoyaCurrentUserId() {
|
|
7720
|
+
const userManager = useNoyaUserManager();
|
|
7721
|
+
return useObservable(userManager?.currentId$);
|
|
7722
|
+
}
|
|
7590
7723
|
function useAnySharedConnectionData() {
|
|
7591
7724
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7592
7725
|
return noyaManager.sharedConnectionDataManager;
|
|
@@ -7595,26 +7728,6 @@ function useEnqueueInput() {
|
|
|
7595
7728
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7596
7729
|
return noyaManager.enqueueInput;
|
|
7597
7730
|
}
|
|
7598
|
-
function useNoyaUser() {
|
|
7599
|
-
const userManager = useUserManager();
|
|
7600
|
-
return useObservable(userManager?.currentUser$);
|
|
7601
|
-
}
|
|
7602
|
-
function useNoyaId() {
|
|
7603
|
-
const userManager = useUserManager();
|
|
7604
|
-
return useObservable(userManager?.currentId$);
|
|
7605
|
-
}
|
|
7606
|
-
function useNoyaUserId() {
|
|
7607
|
-
const userManager = useUserManager();
|
|
7608
|
-
return useObservable(userManager?.currentUserId$);
|
|
7609
|
-
}
|
|
7610
|
-
function useNoyaConnectionId() {
|
|
7611
|
-
const userManager = useUserManager();
|
|
7612
|
-
return useObservable(userManager?.currentConnectionId$);
|
|
7613
|
-
}
|
|
7614
|
-
function useNoyaClientId() {
|
|
7615
|
-
const userManager = useUserManager();
|
|
7616
|
-
return useObservable(userManager?.currentClientId$);
|
|
7617
|
-
}
|
|
7618
7731
|
function useIsProcessing() {
|
|
7619
7732
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7620
7733
|
return useObservable(noyaManager.isProcessing$);
|
|
@@ -7642,7 +7755,7 @@ function useNoyaTranscriptionManager() {
|
|
|
7642
7755
|
}
|
|
7643
7756
|
function useNoyaAssetTranscription(assetId, options) {
|
|
7644
7757
|
const transcriptionManager = useNoyaTranscriptionManager();
|
|
7645
|
-
const observable = (0,
|
|
7758
|
+
const observable = (0, import_react21.useMemo)(() => {
|
|
7646
7759
|
if (!assetId) return void 0;
|
|
7647
7760
|
return transcriptionManager.getAssetTranscription$(assetId, {
|
|
7648
7761
|
endpoint: options?.endpoint,
|
|
@@ -7668,13 +7781,13 @@ function useResources({
|
|
|
7668
7781
|
const assetManager = useAssetManager();
|
|
7669
7782
|
const resourceMap = useObservable(
|
|
7670
7783
|
resourceManager.optimisticResources$,
|
|
7671
|
-
(0,
|
|
7784
|
+
(0, import_react21.useCallback)((resources) => {
|
|
7672
7785
|
return Object.fromEntries(
|
|
7673
7786
|
resources.map((resource) => [resource.path, resource])
|
|
7674
7787
|
);
|
|
7675
7788
|
}, [])
|
|
7676
7789
|
);
|
|
7677
|
-
const setResourceMap = (0,
|
|
7790
|
+
const setResourceMap = (0, import_react21.useCallback)(
|
|
7678
7791
|
async (action) => {
|
|
7679
7792
|
const newResourceMap = action instanceof Function ? action(resourceMap) : action;
|
|
7680
7793
|
const { addedResources, removedResources, modifiedResources } = diffResourceMaps(resourceMap, newResourceMap, "id");
|
|
@@ -7708,9 +7821,9 @@ function useActivityEvents(streamFilter) {
|
|
|
7708
7821
|
);
|
|
7709
7822
|
}
|
|
7710
7823
|
function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
7711
|
-
const [streamId, setStreamId] = (0,
|
|
7824
|
+
const [streamId, setStreamId] = (0, import_react21.useState)(void 0);
|
|
7712
7825
|
const stableStreamFilter = (0, import_react_utils3.useJsonMemo)(streamFilter);
|
|
7713
|
-
(0,
|
|
7826
|
+
(0, import_react21.useEffect)(() => {
|
|
7714
7827
|
if (!stableStreamFilter) return;
|
|
7715
7828
|
const streamId2 = activityEventsManager.subscribe(stableStreamFilter);
|
|
7716
7829
|
setStreamId(streamId2);
|
|
@@ -7741,7 +7854,7 @@ function createNoyaContext({
|
|
|
7741
7854
|
children,
|
|
7742
7855
|
contextValue
|
|
7743
7856
|
}) {
|
|
7744
|
-
return /* @__PURE__ */
|
|
7857
|
+
return /* @__PURE__ */ import_react21.default.createElement(AnyNoyaStateContext.Provider, { value: contextValue }, children);
|
|
7745
7858
|
}
|
|
7746
7859
|
function NoyaStateProvider({
|
|
7747
7860
|
children,
|
|
@@ -7756,7 +7869,7 @@ function createNoyaContext({
|
|
|
7756
7869
|
safeEval,
|
|
7757
7870
|
...options
|
|
7758
7871
|
});
|
|
7759
|
-
const contextValue = (0,
|
|
7872
|
+
const contextValue = (0, import_react21.useMemo)(
|
|
7760
7873
|
() => ({
|
|
7761
7874
|
noyaManager,
|
|
7762
7875
|
theme,
|
|
@@ -7764,12 +7877,12 @@ function createNoyaContext({
|
|
|
7764
7877
|
}),
|
|
7765
7878
|
[noyaManager, theme, viewType]
|
|
7766
7879
|
);
|
|
7767
|
-
return /* @__PURE__ */
|
|
7880
|
+
return /* @__PURE__ */ import_react21.default.createElement(NoyaContextProvider, { contextValue }, options.fallback !== void 0 ? /* @__PURE__ */ import_react21.default.createElement(FallbackUntilInitialized, { fallback: options.fallback }, children) : children);
|
|
7768
7881
|
}
|
|
7769
7882
|
function useValue(path2, options) {
|
|
7770
7883
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7771
7884
|
let actualPath = typeof path2 === "function" || !path2 ? "" : path2;
|
|
7772
|
-
const mappedObservable = (0,
|
|
7885
|
+
const mappedObservable = (0, import_react21.useMemo)(() => {
|
|
7773
7886
|
if (typeof path2 === "function") {
|
|
7774
7887
|
return noyaManager.multiplayerStateManager.optimisticState$.map(path2, {
|
|
7775
7888
|
isEqual: options?.isEqual
|
|
@@ -7782,7 +7895,7 @@ function createNoyaContext({
|
|
|
7782
7895
|
}
|
|
7783
7896
|
function useSetValue(path2) {
|
|
7784
7897
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7785
|
-
const setValue = (0,
|
|
7898
|
+
const setValue = (0, import_react21.useCallback)(
|
|
7786
7899
|
(...args) => {
|
|
7787
7900
|
const [metadata, value] = args.length === 2 ? args : [{}, args[0]];
|
|
7788
7901
|
noyaManager.multiplayerStateManager.setStateAtPath(
|
|
@@ -7818,7 +7931,7 @@ function createNoyaContext({
|
|
|
7818
7931
|
}
|
|
7819
7932
|
function useSetLeftMenuItems(leftMenuItems) {
|
|
7820
7933
|
const { menuManager } = useNoyaManager();
|
|
7821
|
-
(0,
|
|
7934
|
+
(0, import_react21.useEffect)(() => {
|
|
7822
7935
|
if (leftMenuItems) {
|
|
7823
7936
|
menuManager.setLeftMenuItems(leftMenuItems);
|
|
7824
7937
|
}
|
|
@@ -7830,7 +7943,7 @@ function createNoyaContext({
|
|
|
7830
7943
|
}
|
|
7831
7944
|
function useSetRightMenuItems(rightMenuItems) {
|
|
7832
7945
|
const { menuManager } = useNoyaManager();
|
|
7833
|
-
(0,
|
|
7946
|
+
(0, import_react21.useEffect)(() => {
|
|
7834
7947
|
if (rightMenuItems) {
|
|
7835
7948
|
menuManager.setRightMenuItems(rightMenuItems);
|
|
7836
7949
|
}
|
|
@@ -7838,19 +7951,19 @@ function createNoyaContext({
|
|
|
7838
7951
|
}
|
|
7839
7952
|
function useHandleMenuItem(callback) {
|
|
7840
7953
|
const { menuManager } = useNoyaManager();
|
|
7841
|
-
(0,
|
|
7954
|
+
(0, import_react21.useEffect)(() => {
|
|
7842
7955
|
return menuManager.addListener(callback);
|
|
7843
7956
|
}, [menuManager, callback]);
|
|
7844
7957
|
}
|
|
7845
7958
|
function useOnSelectMenuItemCallback() {
|
|
7846
7959
|
const { menuManager } = useNoyaManager();
|
|
7847
|
-
return (0,
|
|
7960
|
+
return (0, import_react21.useCallback)((type) => menuManager.emit(type), [menuManager]);
|
|
7848
7961
|
}
|
|
7849
7962
|
function useMenu(options) {
|
|
7850
7963
|
const { leftMenuItems, rightMenuItems, onSelectMenuItem } = options;
|
|
7851
7964
|
useSetLeftMenuItems(leftMenuItems);
|
|
7852
7965
|
useSetRightMenuItems(rightMenuItems);
|
|
7853
|
-
const noop = (0,
|
|
7966
|
+
const noop = (0, import_react21.useCallback)(() => {
|
|
7854
7967
|
}, []);
|
|
7855
7968
|
useHandleMenuItem(onSelectMenuItem ?? noop);
|
|
7856
7969
|
}
|
|
@@ -7877,7 +7990,7 @@ function createNoyaContext({
|
|
|
7877
7990
|
// src/ai.ts
|
|
7878
7991
|
function useRegisterAITool(tool) {
|
|
7879
7992
|
const aiManager = useAIManager();
|
|
7880
|
-
(0,
|
|
7993
|
+
(0, import_react22.useEffect)(() => {
|
|
7881
7994
|
return aiManager.registerTool(tool);
|
|
7882
7995
|
}, [aiManager, tool]);
|
|
7883
7996
|
}
|
|
@@ -7889,7 +8002,7 @@ function useCallableAITools() {
|
|
|
7889
8002
|
// src/components/UserPointersOverlay.tsx
|
|
7890
8003
|
var import_observable2 = require("@noya-app/observable");
|
|
7891
8004
|
var import_react_utils4 = require("@noya-app/react-utils");
|
|
7892
|
-
var
|
|
8005
|
+
var import_react23 = __toESM(require("react"));
|
|
7893
8006
|
function shouldShow(hideAfter, updatedAt) {
|
|
7894
8007
|
return !!updatedAt && Date.now() - updatedAt < hideAfter;
|
|
7895
8008
|
}
|
|
@@ -7899,7 +8012,7 @@ var UserPointerInternal = (0, import_react_utils4.memoGeneric)(function UserPoin
|
|
|
7899
8012
|
hideAfter = 5e3,
|
|
7900
8013
|
renderUserPointer
|
|
7901
8014
|
}) {
|
|
7902
|
-
const observable = (0,
|
|
8015
|
+
const observable = (0, import_react23.useMemo)(() => {
|
|
7903
8016
|
const metadata$ = sharedConnectionDataManager.metadata$.observePath([user.connectionId]).throttle(50);
|
|
7904
8017
|
const data$ = sharedConnectionDataManager.data$.observePath([user.connectionId]).throttle(50);
|
|
7905
8018
|
return import_observable2.Observable.combine([metadata$, data$], ([metadata2, data2]) => {
|
|
@@ -7907,10 +8020,10 @@ var UserPointerInternal = (0, import_react_utils4.memoGeneric)(function UserPoin
|
|
|
7907
8020
|
});
|
|
7908
8021
|
}, [sharedConnectionDataManager, user.connectionId]);
|
|
7909
8022
|
const { metadata, data } = useObservable(observable);
|
|
7910
|
-
const [, setForceUpdate] = (0,
|
|
8023
|
+
const [, setForceUpdate] = (0, import_react23.useState)(0);
|
|
7911
8024
|
const updatedAt = metadata?.updatedAt ?? 0;
|
|
7912
8025
|
const show = shouldShow(hideAfter, updatedAt);
|
|
7913
|
-
(0,
|
|
8026
|
+
(0, import_react23.useEffect)(() => {
|
|
7914
8027
|
if (!show) return;
|
|
7915
8028
|
const timeoutId = setTimeout(() => {
|
|
7916
8029
|
setForceUpdate((prev) => prev + 1);
|
|
@@ -7934,9 +8047,9 @@ var UserPointersOverlay = (0, import_react_utils4.memoGeneric)(function UserPoin
|
|
|
7934
8047
|
sharedConnectionDataManager.currentConnectionId$
|
|
7935
8048
|
);
|
|
7936
8049
|
const connectedUsers = useObservable(userManager.connectedUsers$);
|
|
7937
|
-
return /* @__PURE__ */
|
|
8050
|
+
return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, connectedUsers.map((user) => {
|
|
7938
8051
|
if (user.connectionId === currentConnectionId) return null;
|
|
7939
|
-
return /* @__PURE__ */
|
|
8052
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
7940
8053
|
UserPointerInternal,
|
|
7941
8054
|
{
|
|
7942
8055
|
key: user.connectionId,
|
|
@@ -7949,17 +8062,17 @@ var UserPointersOverlay = (0, import_react_utils4.memoGeneric)(function UserPoin
|
|
|
7949
8062
|
});
|
|
7950
8063
|
|
|
7951
8064
|
// src/WebSocketConnection.ts
|
|
7952
|
-
var
|
|
8065
|
+
var import_state_manager6 = require("@noya-app/state-manager");
|
|
7953
8066
|
var WebSocketConnection = class {
|
|
7954
8067
|
constructor(url, options = {}) {
|
|
7955
8068
|
this.url = url;
|
|
7956
8069
|
this.options = options;
|
|
7957
|
-
this.ws = new
|
|
8070
|
+
this.ws = new import_state_manager6.ReconnectingWebSocket({
|
|
7958
8071
|
debug: options.debug,
|
|
7959
8072
|
onopen: this.handleOpen,
|
|
7960
8073
|
onmessage: this.handleMessage,
|
|
7961
8074
|
onclose: this.handleClose,
|
|
7962
|
-
activityDetector: new
|
|
8075
|
+
activityDetector: new import_state_manager6.UserActivityDetector()
|
|
7963
8076
|
});
|
|
7964
8077
|
}
|
|
7965
8078
|
ws;
|
|
@@ -8064,8 +8177,6 @@ var WebSocketConnection = class {
|
|
|
8064
8177
|
useBindNoyaManager,
|
|
8065
8178
|
useCallableAITools,
|
|
8066
8179
|
useColorScheme,
|
|
8067
|
-
useConnectedUser,
|
|
8068
|
-
useConnectedUsers,
|
|
8069
8180
|
useEnqueueInput,
|
|
8070
8181
|
useFileName,
|
|
8071
8182
|
useFilePropertyManager,
|
|
@@ -8076,14 +8187,15 @@ var WebSocketConnection = class {
|
|
|
8076
8187
|
useManagedHistory,
|
|
8077
8188
|
useManagedState,
|
|
8078
8189
|
useMultiplayerState,
|
|
8190
|
+
useNoyaActiveUsers,
|
|
8079
8191
|
useNoyaAssetTranscription,
|
|
8080
|
-
|
|
8081
|
-
|
|
8082
|
-
useNoyaId,
|
|
8192
|
+
useNoyaCurrentUser,
|
|
8193
|
+
useNoyaCurrentUserId,
|
|
8083
8194
|
useNoyaStateInternal,
|
|
8084
8195
|
useNoyaTranscriptionManager,
|
|
8085
8196
|
useNoyaUser,
|
|
8086
|
-
|
|
8197
|
+
useNoyaUserManager,
|
|
8198
|
+
useNoyaUsers,
|
|
8087
8199
|
useObservable,
|
|
8088
8200
|
useOutputTransforms,
|
|
8089
8201
|
usePipelineManager,
|
|
@@ -8096,7 +8208,6 @@ var WebSocketConnection = class {
|
|
|
8096
8208
|
useSecrets,
|
|
8097
8209
|
useSetFileNameState,
|
|
8098
8210
|
useStateInspector,
|
|
8099
|
-
useUserManager,
|
|
8100
8211
|
useViewType,
|
|
8101
8212
|
...require("@noya-app/state-manager")
|
|
8102
8213
|
});
|