@noya-app/noya-multiplayer-react 0.1.70 → 0.1.71
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 +8 -0
- package/dist/index.bundle.js +30 -20
- package/dist/index.d.mts +18 -9
- package/dist/index.d.ts +18 -9
- package/dist/index.js +58 -35
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +68 -45
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/NoyaStateContext.tsx +8 -8
- package/src/__tests__/noyaApp.test.ts +28 -0
- package/src/components/UserPointersOverlay.tsx +4 -4
- package/src/hooks.ts +3 -2
- package/src/inspector/StateInspector.tsx +239 -224
- package/src/inspector/StateInspectorRow.tsx +3 -1
- package/src/inspector/useStateInspector.tsx +8 -3
- package/src/noyaApp.ts +17 -3
- package/src/singleton.tsx +14 -0
package/dist/index.mjs
CHANGED
|
@@ -1493,7 +1493,7 @@ var require_lib2 = __commonJS({
|
|
|
1493
1493
|
export * from "@noya-app/state-manager";
|
|
1494
1494
|
|
|
1495
1495
|
// src/ai.ts
|
|
1496
|
-
import { useEffect as
|
|
1496
|
+
import { useEffect as useEffect6 } from "react";
|
|
1497
1497
|
|
|
1498
1498
|
// ../../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs
|
|
1499
1499
|
var TransformKind = Symbol.for("TypeBox.Transform");
|
|
@@ -4616,7 +4616,7 @@ import React17, {
|
|
|
4616
4616
|
createContext,
|
|
4617
4617
|
useCallback as useCallback3,
|
|
4618
4618
|
useContext,
|
|
4619
|
-
useEffect as
|
|
4619
|
+
useEffect as useEffect5,
|
|
4620
4620
|
useMemo as useMemo4,
|
|
4621
4621
|
useState as useState4
|
|
4622
4622
|
} from "react";
|
|
@@ -4632,7 +4632,7 @@ import {
|
|
|
4632
4632
|
TypeGuard,
|
|
4633
4633
|
webSocketSync
|
|
4634
4634
|
} from "@noya-app/state-manager";
|
|
4635
|
-
import { useMemo as useMemo3, useState as useState3 } from "react";
|
|
4635
|
+
import { useEffect as useEffect4, useMemo as useMemo3, useState as useState3 } from "react";
|
|
4636
4636
|
|
|
4637
4637
|
// src/hooks.ts
|
|
4638
4638
|
import {
|
|
@@ -5084,14 +5084,15 @@ function StateInspectorRow({
|
|
|
5084
5084
|
colorScheme,
|
|
5085
5085
|
selected,
|
|
5086
5086
|
style,
|
|
5087
|
-
variant
|
|
5087
|
+
variant,
|
|
5088
|
+
bordered = true
|
|
5088
5089
|
}) {
|
|
5089
5090
|
const solidBorderColor = colorScheme === "light" ? "rgb(223 223 223)" : "rgb(29 29 29)";
|
|
5090
5091
|
return /* @__PURE__ */ React6.createElement(
|
|
5091
5092
|
"div",
|
|
5092
5093
|
{
|
|
5093
5094
|
style: {
|
|
5094
|
-
borderBottom: `1px solid ${solidBorderColor}
|
|
5095
|
+
borderBottom: bordered ? `1px solid ${solidBorderColor}` : void 0,
|
|
5095
5096
|
fontSize: "12px",
|
|
5096
5097
|
fontFamily: "Menlo, monospace",
|
|
5097
5098
|
padding: "2px 12px 1px",
|
|
@@ -6193,12 +6194,13 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6193
6194
|
colorScheme = "light",
|
|
6194
6195
|
anchor = "right",
|
|
6195
6196
|
unstyled = false,
|
|
6197
|
+
advanced = false,
|
|
6196
6198
|
...props
|
|
6197
6199
|
}) {
|
|
6198
6200
|
const {
|
|
6199
6201
|
multiplayerStateManager,
|
|
6200
6202
|
assetManager,
|
|
6201
|
-
|
|
6203
|
+
userManager,
|
|
6202
6204
|
secretManager,
|
|
6203
6205
|
ephemeralUserDataManager,
|
|
6204
6206
|
connectionEventManager,
|
|
@@ -6285,8 +6287,8 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6285
6287
|
const assetsInitialized = useObservable(assetManager.isInitialized$);
|
|
6286
6288
|
const secrets = useObservable(secretManager.secrets$);
|
|
6287
6289
|
const secretsInitialized = useObservable(secretManager.isInitialized$);
|
|
6288
|
-
const connectedUsers = useObservable(
|
|
6289
|
-
const userId = useObservable(
|
|
6290
|
+
const connectedUsers = useObservable(userManager.connectedUsers$);
|
|
6291
|
+
const userId = useObservable(userManager.currentUserId$);
|
|
6290
6292
|
const state = useObservable(multiplayerStateManager.optimisticState$);
|
|
6291
6293
|
const inputsInitialized = useObservable(ioManager.inputsInitialized$);
|
|
6292
6294
|
const outputTransformsInitialized = useObservable(
|
|
@@ -6384,12 +6386,13 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6384
6386
|
}
|
|
6385
6387
|
)
|
|
6386
6388
|
},
|
|
6387
|
-
/* @__PURE__ */ React14.createElement(StateInspectorDisclosureRowInner, { style: { flex: "0 0 auto" } }, connectedUsers?.map((user) => /* @__PURE__ */ React14.createElement(
|
|
6389
|
+
/* @__PURE__ */ React14.createElement(StateInspectorDisclosureRowInner, { style: { flex: "0 0 auto" } }, connectedUsers?.map((user, index, array) => /* @__PURE__ */ React14.createElement(
|
|
6388
6390
|
StateInspectorRow,
|
|
6389
6391
|
{
|
|
6390
6392
|
key: user.id,
|
|
6391
6393
|
colorScheme,
|
|
6392
|
-
variant: user.id === userId ? "up" : void 0
|
|
6394
|
+
variant: user.id === userId ? "up" : void 0,
|
|
6395
|
+
bordered: index !== array.length - 1
|
|
6393
6396
|
},
|
|
6394
6397
|
user.image && /* @__PURE__ */ React14.createElement(
|
|
6395
6398
|
"img",
|
|
@@ -6561,7 +6564,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6561
6564
|
"Delete"
|
|
6562
6565
|
))))
|
|
6563
6566
|
),
|
|
6564
|
-
/* @__PURE__ */ React14.createElement(
|
|
6567
|
+
advanced && /* @__PURE__ */ React14.createElement(
|
|
6565
6568
|
StateInspectorDisclosureSection,
|
|
6566
6569
|
{
|
|
6567
6570
|
title: /* @__PURE__ */ React14.createElement(StateInspectorTitleLabel, null, "Resources (", resources.length, ")", /* @__PURE__ */ React14.createElement(ColoredDot, { type: resourcesInitialized ? "success" : "error" })),
|
|
@@ -6643,7 +6646,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6643
6646
|
"Rename"
|
|
6644
6647
|
)))))
|
|
6645
6648
|
),
|
|
6646
|
-
/* @__PURE__ */ React14.createElement(
|
|
6649
|
+
advanced && /* @__PURE__ */ React14.createElement(
|
|
6647
6650
|
StateInspectorDisclosureSection,
|
|
6648
6651
|
{
|
|
6649
6652
|
title: /* @__PURE__ */ React14.createElement(StateInspectorTitleLabel, null, "Secrets", /* @__PURE__ */ React14.createElement(ColoredDot, { type: secretsInitialized ? "success" : "error" })),
|
|
@@ -6674,8 +6677,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6674
6677
|
"Delete"
|
|
6675
6678
|
))))
|
|
6676
6679
|
),
|
|
6677
|
-
|
|
6678
|
-
/* @__PURE__ */ React14.createElement(
|
|
6680
|
+
advanced && /* @__PURE__ */ React14.createElement(
|
|
6679
6681
|
StateInspectorDisclosureSection,
|
|
6680
6682
|
{
|
|
6681
6683
|
open: showInputs,
|
|
@@ -6697,7 +6699,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6697
6699
|
/* @__PURE__ */ React14.createElement("span", null, "No inputs")
|
|
6698
6700
|
))
|
|
6699
6701
|
),
|
|
6700
|
-
/* @__PURE__ */ React14.createElement(
|
|
6702
|
+
advanced && /* @__PURE__ */ React14.createElement(
|
|
6701
6703
|
StateInspectorDisclosureSection,
|
|
6702
6704
|
{
|
|
6703
6705
|
open: showOutputTransforms,
|
|
@@ -6724,7 +6726,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6724
6726
|
/* @__PURE__ */ React14.createElement("span", null, "No output transforms")
|
|
6725
6727
|
))
|
|
6726
6728
|
),
|
|
6727
|
-
/* @__PURE__ */ React14.createElement(
|
|
6729
|
+
advanced && /* @__PURE__ */ React14.createElement(
|
|
6728
6730
|
StateInspectorDisclosureSection,
|
|
6729
6731
|
{
|
|
6730
6732
|
title: "Tasks",
|
|
@@ -6769,7 +6771,7 @@ var StateInspector = memoGeneric(function StateInspector2({
|
|
|
6769
6771
|
}
|
|
6770
6772
|
))))
|
|
6771
6773
|
),
|
|
6772
|
-
/* @__PURE__ */ React14.createElement(
|
|
6774
|
+
advanced && /* @__PURE__ */ React14.createElement(
|
|
6773
6775
|
ActivityEventsSection,
|
|
6774
6776
|
{
|
|
6775
6777
|
colorScheme,
|
|
@@ -6821,6 +6823,7 @@ function createStateInspectorRoot() {
|
|
|
6821
6823
|
function useStateInspector({
|
|
6822
6824
|
noyaManager,
|
|
6823
6825
|
disabled = false,
|
|
6826
|
+
advanced = false,
|
|
6824
6827
|
colorScheme,
|
|
6825
6828
|
anchor
|
|
6826
6829
|
}) {
|
|
@@ -6839,11 +6842,12 @@ function useStateInspector({
|
|
|
6839
6842
|
{
|
|
6840
6843
|
colorScheme,
|
|
6841
6844
|
anchor,
|
|
6842
|
-
noyaManager
|
|
6845
|
+
noyaManager,
|
|
6846
|
+
advanced
|
|
6843
6847
|
}
|
|
6844
6848
|
)
|
|
6845
6849
|
);
|
|
6846
|
-
}, [noyaManager, anchor, colorScheme, root]);
|
|
6850
|
+
}, [noyaManager, anchor, colorScheme, root, advanced]);
|
|
6847
6851
|
}
|
|
6848
6852
|
|
|
6849
6853
|
// src/hooks.ts
|
|
@@ -6911,7 +6915,7 @@ function useBindNoyaManager(noyaManager, options) {
|
|
|
6911
6915
|
noyaManager,
|
|
6912
6916
|
taskManager: noyaManager.taskManager,
|
|
6913
6917
|
connectionEventManager: noyaManager.connectionEventManager,
|
|
6914
|
-
|
|
6918
|
+
userManager: noyaManager.userManager,
|
|
6915
6919
|
ephemeralUserDataManager: noyaManager.ephemeralUserDataManager,
|
|
6916
6920
|
multiplayerStateManager: noyaManager.multiplayerStateManager,
|
|
6917
6921
|
assetManager: noyaManager.assetManager,
|
|
@@ -6935,6 +6939,7 @@ function useBindNoyaManager(noyaManager, options) {
|
|
|
6935
6939
|
useStateInspector({
|
|
6936
6940
|
noyaManager,
|
|
6937
6941
|
disabled: !options?.inspector,
|
|
6942
|
+
advanced: true,
|
|
6938
6943
|
...typeof options?.inspector === "object" && options?.inspector
|
|
6939
6944
|
});
|
|
6940
6945
|
return [state, noyaManager.multiplayerStateManager.setState, extras];
|
|
@@ -6972,7 +6977,8 @@ function createDefaultAppData(initialState) {
|
|
|
6972
6977
|
theme: "light",
|
|
6973
6978
|
viewType: "editable",
|
|
6974
6979
|
initialState,
|
|
6975
|
-
inspector: false
|
|
6980
|
+
inspector: false,
|
|
6981
|
+
isDemo: false
|
|
6976
6982
|
};
|
|
6977
6983
|
}
|
|
6978
6984
|
function enforceSchema(initialState, schema) {
|
|
@@ -7003,6 +7009,7 @@ function getAppData(initialState, schema, options) {
|
|
|
7003
7009
|
appData.initialState = resolvedInitialState;
|
|
7004
7010
|
}
|
|
7005
7011
|
appData.initialState = enforceSchema(appData.initialState, schema);
|
|
7012
|
+
appData.isDemo = appData.isDemo ?? false;
|
|
7006
7013
|
return appData;
|
|
7007
7014
|
}
|
|
7008
7015
|
function getSyncAdapter(params) {
|
|
@@ -7017,7 +7024,9 @@ function useNoyaStateInternal(...args) {
|
|
|
7017
7024
|
inspector,
|
|
7018
7025
|
initialState: noyaAppInitialState,
|
|
7019
7026
|
theme,
|
|
7020
|
-
viewType
|
|
7027
|
+
viewType,
|
|
7028
|
+
userId,
|
|
7029
|
+
isDemo
|
|
7021
7030
|
}
|
|
7022
7031
|
] = useState3(() => {
|
|
7023
7032
|
return getAppData(initialState, options?.schema, {
|
|
@@ -7034,14 +7043,19 @@ function useNoyaStateInternal(...args) {
|
|
|
7034
7043
|
const [noyaManager] = useState3(
|
|
7035
7044
|
() => new NoyaManager3(noyaAppInitialState, options)
|
|
7036
7045
|
);
|
|
7046
|
+
useEffect4(() => {
|
|
7047
|
+
if (!userId) return;
|
|
7048
|
+
noyaManager.ephemeralUserDataManager.setCurrentUserId(userId);
|
|
7049
|
+
noyaManager.userManager.setCurrentUserId(userId);
|
|
7050
|
+
}, [noyaManager, userId]);
|
|
7037
7051
|
const result = useBindNoyaManager(noyaManager, {
|
|
7038
7052
|
inspector: options?.inspector ?? inspector,
|
|
7039
7053
|
sync: options?.sync ?? sync
|
|
7040
7054
|
});
|
|
7041
7055
|
const [, , extras] = result;
|
|
7042
7056
|
const mergedExtras = useMemo3(() => {
|
|
7043
|
-
return { ...extras, theme, viewType };
|
|
7044
|
-
}, [extras, theme, viewType]);
|
|
7057
|
+
return { ...extras, theme, viewType, isDemo };
|
|
7058
|
+
}, [extras, theme, viewType, isDemo]);
|
|
7045
7059
|
return [result[0], result[1], mergedExtras];
|
|
7046
7060
|
}
|
|
7047
7061
|
|
|
@@ -7077,6 +7091,12 @@ function initializeNoyaSingleton(options) {
|
|
|
7077
7091
|
appData.initialState,
|
|
7078
7092
|
managerOptions
|
|
7079
7093
|
);
|
|
7094
|
+
if (appData.userId) {
|
|
7095
|
+
noyaManagerSingleton.ephemeralUserDataManager.setCurrentUserId(
|
|
7096
|
+
appData.userId
|
|
7097
|
+
);
|
|
7098
|
+
noyaManagerSingleton.userManager.setCurrentUserId(appData.userId);
|
|
7099
|
+
}
|
|
7080
7100
|
const resolvedSync = sync ?? getSyncAdapter({
|
|
7081
7101
|
multiplayerUrl: multiplayerUrl ?? appData.multiplayerUrl,
|
|
7082
7102
|
offlineStorageKey,
|
|
@@ -7098,7 +7118,8 @@ function initializeNoyaSingleton(options) {
|
|
|
7098
7118
|
{
|
|
7099
7119
|
noyaManager: noyaManagerSingleton,
|
|
7100
7120
|
colorScheme: resolvedInspector === true ? resolvedTheme : resolvedInspector.colorScheme,
|
|
7101
|
-
anchor: resolvedInspector === true ? "bottom right" : resolvedInspector.anchor
|
|
7121
|
+
anchor: resolvedInspector === true ? "bottom right" : resolvedInspector.anchor,
|
|
7122
|
+
advanced: resolvedInspector === true ? false : resolvedInspector.advanced
|
|
7102
7123
|
}
|
|
7103
7124
|
)
|
|
7104
7125
|
);
|
|
@@ -7107,7 +7128,9 @@ function initializeNoyaSingleton(options) {
|
|
|
7107
7128
|
sync: resolvedSync,
|
|
7108
7129
|
inspector: resolvedInspector,
|
|
7109
7130
|
theme: resolvedTheme,
|
|
7110
|
-
viewType: resolvedViewType
|
|
7131
|
+
viewType: resolvedViewType,
|
|
7132
|
+
userId: appData.userId,
|
|
7133
|
+
isDemo: appData.isDemo
|
|
7111
7134
|
};
|
|
7112
7135
|
}
|
|
7113
7136
|
function getNoyaManagerSingleton() {
|
|
@@ -7283,7 +7306,7 @@ function useIOManager() {
|
|
|
7283
7306
|
function usePublish(callback) {
|
|
7284
7307
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7285
7308
|
const stableCallback = useStableCallback(callback);
|
|
7286
|
-
|
|
7309
|
+
useEffect5(() => {
|
|
7287
7310
|
noyaManager.publishingManager.setPublishingEnabled(true);
|
|
7288
7311
|
noyaManager.publishingManager.getFilesToPublish = stableCallback;
|
|
7289
7312
|
return () => {
|
|
@@ -7311,18 +7334,18 @@ function usePipelineManager() {
|
|
|
7311
7334
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7312
7335
|
return noyaManager.pipelineManager;
|
|
7313
7336
|
}
|
|
7314
|
-
function
|
|
7337
|
+
function useUserManager() {
|
|
7315
7338
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7316
|
-
return noyaManager.
|
|
7339
|
+
return noyaManager.userManager;
|
|
7317
7340
|
}
|
|
7318
7341
|
function useConnectedUsers() {
|
|
7319
|
-
const
|
|
7320
|
-
return useObservable(
|
|
7342
|
+
const userManager = useUserManager();
|
|
7343
|
+
return useObservable(userManager?.connectedUsers$);
|
|
7321
7344
|
}
|
|
7322
7345
|
function useConnectedUser(userId) {
|
|
7323
|
-
const
|
|
7346
|
+
const userManager = useUserManager();
|
|
7324
7347
|
return useObservable(
|
|
7325
|
-
|
|
7348
|
+
userManager?.connectedUsers$,
|
|
7326
7349
|
useCallback3(
|
|
7327
7350
|
(users) => {
|
|
7328
7351
|
return users.find((user) => {
|
|
@@ -7339,8 +7362,8 @@ function useAnyEphemeralUserData() {
|
|
|
7339
7362
|
return noyaManager.ephemeralUserDataManager;
|
|
7340
7363
|
}
|
|
7341
7364
|
function useCurrentUserId() {
|
|
7342
|
-
const
|
|
7343
|
-
return useObservable(
|
|
7365
|
+
const userManager = useUserManager();
|
|
7366
|
+
return useObservable(userManager?.currentUserId$);
|
|
7344
7367
|
}
|
|
7345
7368
|
function useIsProcessing() {
|
|
7346
7369
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
@@ -7441,7 +7464,7 @@ function useActivityEvents(streamFilter) {
|
|
|
7441
7464
|
function useActivityEventsForManager(streamFilter, activityEventsManager) {
|
|
7442
7465
|
const [streamId, setStreamId] = useState4(void 0);
|
|
7443
7466
|
const stableStreamFilter = useJsonMemo(streamFilter);
|
|
7444
|
-
|
|
7467
|
+
useEffect5(() => {
|
|
7445
7468
|
if (!stableStreamFilter) return;
|
|
7446
7469
|
const streamId2 = activityEventsManager.subscribe(stableStreamFilter);
|
|
7447
7470
|
setStreamId(streamId2);
|
|
@@ -7549,7 +7572,7 @@ function createNoyaContext({
|
|
|
7549
7572
|
}
|
|
7550
7573
|
function useSetLeftMenuItems(leftMenuItems) {
|
|
7551
7574
|
const { menuManager } = useNoyaManager();
|
|
7552
|
-
|
|
7575
|
+
useEffect5(() => {
|
|
7553
7576
|
if (leftMenuItems) {
|
|
7554
7577
|
menuManager.setLeftMenuItems(leftMenuItems);
|
|
7555
7578
|
}
|
|
@@ -7561,7 +7584,7 @@ function createNoyaContext({
|
|
|
7561
7584
|
}
|
|
7562
7585
|
function useSetRightMenuItems(rightMenuItems) {
|
|
7563
7586
|
const { menuManager } = useNoyaManager();
|
|
7564
|
-
|
|
7587
|
+
useEffect5(() => {
|
|
7565
7588
|
if (rightMenuItems) {
|
|
7566
7589
|
menuManager.setRightMenuItems(rightMenuItems);
|
|
7567
7590
|
}
|
|
@@ -7569,7 +7592,7 @@ function createNoyaContext({
|
|
|
7569
7592
|
}
|
|
7570
7593
|
function useHandleMenuItem(callback) {
|
|
7571
7594
|
const { menuManager } = useNoyaManager();
|
|
7572
|
-
|
|
7595
|
+
useEffect5(() => {
|
|
7573
7596
|
return menuManager.addListener(callback);
|
|
7574
7597
|
}, [menuManager, callback]);
|
|
7575
7598
|
}
|
|
@@ -7608,7 +7631,7 @@ function createNoyaContext({
|
|
|
7608
7631
|
// src/ai.ts
|
|
7609
7632
|
function useRegisterAITool(tool) {
|
|
7610
7633
|
const aiManager = useAIManager();
|
|
7611
|
-
|
|
7634
|
+
useEffect6(() => {
|
|
7612
7635
|
return aiManager.registerTool(tool);
|
|
7613
7636
|
}, [aiManager, tool]);
|
|
7614
7637
|
}
|
|
@@ -7620,7 +7643,7 @@ function useCallableAITools() {
|
|
|
7620
7643
|
// src/components/UserPointersOverlay.tsx
|
|
7621
7644
|
import { Observable as Observable2 } from "@noya-app/observable";
|
|
7622
7645
|
import { memoGeneric as memoGeneric2 } from "@noya-app/react-utils";
|
|
7623
|
-
import React18, { useEffect as
|
|
7646
|
+
import React18, { useEffect as useEffect7, useMemo as useMemo5, useState as useState5 } from "react";
|
|
7624
7647
|
function shouldShow(hideAfter, updatedAt) {
|
|
7625
7648
|
return !!updatedAt && Date.now() - updatedAt < hideAfter;
|
|
7626
7649
|
}
|
|
@@ -7641,7 +7664,7 @@ var UserPointerInternal = memoGeneric2(function UserPointerInternal2({
|
|
|
7641
7664
|
const [, setForceUpdate] = useState5(0);
|
|
7642
7665
|
const updatedAt = metadata?.updatedAt ?? 0;
|
|
7643
7666
|
const show = shouldShow(hideAfter, updatedAt);
|
|
7644
|
-
|
|
7667
|
+
useEffect7(() => {
|
|
7645
7668
|
if (!show) return;
|
|
7646
7669
|
const timeoutId = setTimeout(() => {
|
|
7647
7670
|
setForceUpdate((prev) => prev + 1);
|
|
@@ -7657,12 +7680,12 @@ var UserPointerInternal = memoGeneric2(function UserPointerInternal2({
|
|
|
7657
7680
|
});
|
|
7658
7681
|
});
|
|
7659
7682
|
var UserPointersOverlay = memoGeneric2(function UserPointers({
|
|
7660
|
-
|
|
7683
|
+
userManager,
|
|
7661
7684
|
ephemeralUserDataManager,
|
|
7662
7685
|
renderUserPointer
|
|
7663
7686
|
}) {
|
|
7664
7687
|
const currentUserId = useObservable(ephemeralUserDataManager.currentUserId$);
|
|
7665
|
-
const connectedUsers = useObservable(
|
|
7688
|
+
const connectedUsers = useObservable(userManager.connectedUsers$);
|
|
7666
7689
|
return /* @__PURE__ */ React18.createElement(React18.Fragment, null, connectedUsers.map((user) => {
|
|
7667
7690
|
if (user.id === currentUserId) return null;
|
|
7668
7691
|
return /* @__PURE__ */ React18.createElement(
|
|
@@ -7797,7 +7820,6 @@ export {
|
|
|
7797
7820
|
useColorScheme,
|
|
7798
7821
|
useConnectedUser,
|
|
7799
7822
|
useConnectedUsers,
|
|
7800
|
-
useConnectedUsersManager,
|
|
7801
7823
|
useCurrentUserId,
|
|
7802
7824
|
useFileName,
|
|
7803
7825
|
useFilePropertyManager,
|
|
@@ -7821,6 +7843,7 @@ export {
|
|
|
7821
7843
|
useSecrets,
|
|
7822
7844
|
useSetFileNameState,
|
|
7823
7845
|
useStateInspector,
|
|
7846
|
+
useUserManager,
|
|
7824
7847
|
useViewType
|
|
7825
7848
|
};
|
|
7826
7849
|
//# sourceMappingURL=index.mjs.map
|