@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.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _noya_app_state_manager from '@noya-app/state-manager';
|
|
2
|
-
import { AIToolDefinition,
|
|
2
|
+
import { AIToolDefinition, UserManager, EphemeralUserDataManager, NoyaManager, StateManagerOptions, StateManager, NoyaManagerOptions, SyncAdapter, TSchema, Static, PublishCallback, ResourceManager, StreamFilter, ActivityEventsManager, MultiplayerPatchMetadata, SafeEval, CreateParams, MultiplayerStateManager, ReconnectingWebSocketState, ClientToServerMessage, ServerToClientMessage, MultiplayerStateManagerError } from '@noya-app/state-manager';
|
|
3
3
|
export * from '@noya-app/state-manager';
|
|
4
4
|
import React, { SetStateAction, ComponentProps, Dispatch } from 'react';
|
|
5
5
|
import { Asset, ResourceCreate, CreateResourceParametersWithoutAccessibleByFileId, ModifiedResource, ResourceCreateMap, ResourceMap, Resource, MediaItem, OutputTransform, Input } from '@noya-app/noya-schemas';
|
|
@@ -27,7 +27,7 @@ type RenderUserPointer = {
|
|
|
27
27
|
renderUserPointer: (options: RenderUserPointerProps) => React.ReactNode;
|
|
28
28
|
};
|
|
29
29
|
type UserPointersOverlayProps<E extends UserPointerData> = {
|
|
30
|
-
|
|
30
|
+
userManager: UserManager;
|
|
31
31
|
ephemeralUserDataManager: EphemeralUserDataManager<E>;
|
|
32
32
|
} & RenderUserPointer;
|
|
33
33
|
declare const UserPointersOverlay: <E extends UserPointerData>(props: UserPointersOverlayProps<E>) => React.ReactElement<any> | null;
|
|
@@ -36,6 +36,7 @@ type StateInspectorAnchor = "left" | "right" | "bottom left" | "bottom right";
|
|
|
36
36
|
type StateInspectorOptions = {
|
|
37
37
|
colorScheme?: "light" | "dark";
|
|
38
38
|
anchor?: StateInspectorAnchor;
|
|
39
|
+
advanced?: boolean;
|
|
39
40
|
};
|
|
40
41
|
declare const StateInspector: <S, M extends object, E extends object, MenuT extends string = string>(props: {
|
|
41
42
|
noyaManager: NoyaManager<S, M, E, MenuT>;
|
|
@@ -52,7 +53,7 @@ declare function useBindNoyaManager<S, M extends object = object, E extends obje
|
|
|
52
53
|
noyaManager: typeof noyaManager;
|
|
53
54
|
taskManager: typeof noyaManager.taskManager;
|
|
54
55
|
connectionEventManager: typeof noyaManager.connectionEventManager;
|
|
55
|
-
|
|
56
|
+
userManager: typeof noyaManager.userManager;
|
|
56
57
|
ephemeralUserDataManager: typeof noyaManager.ephemeralUserDataManager;
|
|
57
58
|
multiplayerStateManager: typeof noyaManager.multiplayerStateManager;
|
|
58
59
|
assetManager: typeof noyaManager.assetManager;
|
|
@@ -79,7 +80,7 @@ declare function useMultiplayerState<S, M extends object = object, E extends obj
|
|
|
79
80
|
noyaManager: NoyaManager<S, M, E, MenuT>;
|
|
80
81
|
taskManager: _noya_app_state_manager.TaskManager;
|
|
81
82
|
connectionEventManager: _noya_app_state_manager.ConnectionEventManager<S>;
|
|
82
|
-
|
|
83
|
+
userManager: _noya_app_state_manager.UserManager;
|
|
83
84
|
ephemeralUserDataManager: _noya_app_state_manager.EphemeralUserDataManager<E>;
|
|
84
85
|
multiplayerStateManager: _noya_app_state_manager.MultiplayerStateManager<S, M>;
|
|
85
86
|
assetManager: _noya_app_state_manager.AssetManager;
|
|
@@ -129,10 +130,13 @@ declare function createStateInspectorRoot(): {
|
|
|
129
130
|
root: Root;
|
|
130
131
|
unmount: () => void;
|
|
131
132
|
};
|
|
132
|
-
declare function useStateInspector<S, M extends object, E extends object, MenuT extends string = string>({ noyaManager, disabled, colorScheme, anchor, }: {
|
|
133
|
+
declare function useStateInspector<S, M extends object, E extends object, MenuT extends string = string>({ noyaManager, disabled, advanced, colorScheme, anchor, }: {
|
|
133
134
|
noyaManager: NoyaManager<S, M, E, MenuT>;
|
|
134
|
-
disabled
|
|
135
|
-
|
|
135
|
+
disabled?: boolean;
|
|
136
|
+
advanced?: boolean;
|
|
137
|
+
colorScheme?: ComponentProps<typeof StateInspector>["colorScheme"];
|
|
138
|
+
anchor?: ComponentProps<typeof StateInspector>["anchor"];
|
|
139
|
+
}): void;
|
|
136
140
|
|
|
137
141
|
type AppViewType = "editable" | "readOnly" | "preview";
|
|
138
142
|
type AppTheme = "light" | "dark";
|
|
@@ -142,6 +146,8 @@ type AppData<State> = {
|
|
|
142
146
|
viewType: AppViewType;
|
|
143
147
|
initialState: State;
|
|
144
148
|
inspector: boolean | StateInspectorOptions;
|
|
149
|
+
userId?: string;
|
|
150
|
+
isDemo: boolean;
|
|
145
151
|
};
|
|
146
152
|
declare function createDefaultAppData<State>(initialState: State): AppData<State>;
|
|
147
153
|
type GetAppDataOptions = {
|
|
@@ -169,6 +175,7 @@ type UseNoyaStateResult<S, M extends object = object, E extends object = object,
|
|
|
169
175
|
ReturnType<typeof useBindNoyaManager<S, M, E, MenuT>>[2] & {
|
|
170
176
|
theme: AppTheme;
|
|
171
177
|
viewType: AppViewType;
|
|
178
|
+
isDemo: boolean;
|
|
172
179
|
}
|
|
173
180
|
];
|
|
174
181
|
/**
|
|
@@ -375,7 +382,7 @@ declare function useIOManager(): _noya_app_state_manager.IOManager;
|
|
|
375
382
|
declare function usePublish(callback: PublishCallback): void;
|
|
376
383
|
declare function useIsInitialized(): boolean;
|
|
377
384
|
declare function usePipelineManager(): _noya_app_state_manager.PipelineManager;
|
|
378
|
-
declare function
|
|
385
|
+
declare function useUserManager(): _noya_app_state_manager.UserManager;
|
|
379
386
|
declare function useConnectedUsers(): _noya_app_state_manager.MultiplayerUser[];
|
|
380
387
|
declare function useConnectedUser(userId?: string | null): _noya_app_state_manager.MultiplayerUser | undefined;
|
|
381
388
|
declare function useAnyEphemeralUserData(): EphemeralUserDataManager<any>;
|
|
@@ -443,6 +450,8 @@ type AnyNoyaSingletonBindings = {
|
|
|
443
450
|
inspector?: boolean | StateInspectorOptions;
|
|
444
451
|
theme: AppTheme;
|
|
445
452
|
viewType: AppViewType;
|
|
453
|
+
userId?: string;
|
|
454
|
+
isDemo: boolean;
|
|
446
455
|
};
|
|
447
456
|
type AnyNoyaSingletonOptions<S, M extends object, E extends object, MenuT extends string> = NoyaManagerOptions<S, M> & {
|
|
448
457
|
initialState?: S | (() => S);
|
|
@@ -498,4 +507,4 @@ declare class WebSocketConnection<State> {
|
|
|
498
507
|
removeListener(listener: (state: ReconnectingWebSocketState) => void): void;
|
|
499
508
|
}
|
|
500
509
|
|
|
501
|
-
export { type AnyNoyaSingletonBindings, type AnyNoyaSingletonOptions, AnyNoyaStateContext, type AnyNoyaStateContextValue, type AppData, type AppTheme, type AppViewType, type ConnectionEvent, type ConnectionOptions, FallbackUntilInitialized, type GetAppDataOptions, type NoyaStateProviderProps, type RenderUserPointer, type RenderUserPointerProps, StateInspector, type StateInspectorAnchor, type StateInspectorOptions, type UseMultiplayerStateOptions, type UseNoyaStateOptions, type UseNoyaStateResult, type UserPointerData, UserPointersOverlay, type UserPointersOverlayProps, WebSocketConnection, buildCreateResourcePayload, createDefaultAppData, createNoyaContext, createStateInspectorRoot, decodeAll, deleteNoyaSingleton, encodeAll, enforceSchema, exportAll, fetchAssetMap, getAppData, getNoyaManagerSingleton, getNoyaSingletonBindings, getSyncAdapter, importAll, initializeNoyaSingleton, parseAppDataParameter, replaceDeep, resourceToCreateParameters, resourceToMediaItem, useAIManager, useActivityEvents, useActivityEventsForManager, useAnyEphemeralUserData, useAnyNoyaManager, useAnyNoyaStateContext, useAsset, useAssetManager, useAssets, useBindNoyaManager, useCallableAITools, useColorScheme, useConnectedUser, useConnectedUsers,
|
|
510
|
+
export { type AnyNoyaSingletonBindings, type AnyNoyaSingletonOptions, AnyNoyaStateContext, type AnyNoyaStateContextValue, type AppData, type AppTheme, type AppViewType, type ConnectionEvent, type ConnectionOptions, FallbackUntilInitialized, type GetAppDataOptions, type NoyaStateProviderProps, type RenderUserPointer, type RenderUserPointerProps, StateInspector, type StateInspectorAnchor, type StateInspectorOptions, type UseMultiplayerStateOptions, type UseNoyaStateOptions, type UseNoyaStateResult, type UserPointerData, UserPointersOverlay, type UserPointersOverlayProps, WebSocketConnection, buildCreateResourcePayload, createDefaultAppData, createNoyaContext, createStateInspectorRoot, decodeAll, deleteNoyaSingleton, encodeAll, enforceSchema, exportAll, fetchAssetMap, getAppData, getNoyaManagerSingleton, getNoyaSingletonBindings, getSyncAdapter, importAll, initializeNoyaSingleton, parseAppDataParameter, replaceDeep, resourceToCreateParameters, resourceToMediaItem, useAIManager, useActivityEvents, useActivityEventsForManager, useAnyEphemeralUserData, useAnyNoyaManager, useAnyNoyaStateContext, useAsset, useAssetManager, useAssets, useBindNoyaManager, useCallableAITools, useColorScheme, useConnectedUser, useConnectedUsers, useCurrentUserId, useFileName, useFilePropertyManager, useIOManager, useInputs, useIsInitialized, useIsProcessing, useManagedHistory, useManagedState, useMultiplayerState, useNoyaStateInternal, useObservable, useOutputTransforms, usePipelineManager, usePublish, useRegisterAITool, useResourceManager, useResources, useSecret, useSecretManager, useSecrets, useSetFileNameState, useStateInspector, useUserManager, useViewType };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _noya_app_state_manager from '@noya-app/state-manager';
|
|
2
|
-
import { AIToolDefinition,
|
|
2
|
+
import { AIToolDefinition, UserManager, EphemeralUserDataManager, NoyaManager, StateManagerOptions, StateManager, NoyaManagerOptions, SyncAdapter, TSchema, Static, PublishCallback, ResourceManager, StreamFilter, ActivityEventsManager, MultiplayerPatchMetadata, SafeEval, CreateParams, MultiplayerStateManager, ReconnectingWebSocketState, ClientToServerMessage, ServerToClientMessage, MultiplayerStateManagerError } from '@noya-app/state-manager';
|
|
3
3
|
export * from '@noya-app/state-manager';
|
|
4
4
|
import React, { SetStateAction, ComponentProps, Dispatch } from 'react';
|
|
5
5
|
import { Asset, ResourceCreate, CreateResourceParametersWithoutAccessibleByFileId, ModifiedResource, ResourceCreateMap, ResourceMap, Resource, MediaItem, OutputTransform, Input } from '@noya-app/noya-schemas';
|
|
@@ -27,7 +27,7 @@ type RenderUserPointer = {
|
|
|
27
27
|
renderUserPointer: (options: RenderUserPointerProps) => React.ReactNode;
|
|
28
28
|
};
|
|
29
29
|
type UserPointersOverlayProps<E extends UserPointerData> = {
|
|
30
|
-
|
|
30
|
+
userManager: UserManager;
|
|
31
31
|
ephemeralUserDataManager: EphemeralUserDataManager<E>;
|
|
32
32
|
} & RenderUserPointer;
|
|
33
33
|
declare const UserPointersOverlay: <E extends UserPointerData>(props: UserPointersOverlayProps<E>) => React.ReactElement<any> | null;
|
|
@@ -36,6 +36,7 @@ type StateInspectorAnchor = "left" | "right" | "bottom left" | "bottom right";
|
|
|
36
36
|
type StateInspectorOptions = {
|
|
37
37
|
colorScheme?: "light" | "dark";
|
|
38
38
|
anchor?: StateInspectorAnchor;
|
|
39
|
+
advanced?: boolean;
|
|
39
40
|
};
|
|
40
41
|
declare const StateInspector: <S, M extends object, E extends object, MenuT extends string = string>(props: {
|
|
41
42
|
noyaManager: NoyaManager<S, M, E, MenuT>;
|
|
@@ -52,7 +53,7 @@ declare function useBindNoyaManager<S, M extends object = object, E extends obje
|
|
|
52
53
|
noyaManager: typeof noyaManager;
|
|
53
54
|
taskManager: typeof noyaManager.taskManager;
|
|
54
55
|
connectionEventManager: typeof noyaManager.connectionEventManager;
|
|
55
|
-
|
|
56
|
+
userManager: typeof noyaManager.userManager;
|
|
56
57
|
ephemeralUserDataManager: typeof noyaManager.ephemeralUserDataManager;
|
|
57
58
|
multiplayerStateManager: typeof noyaManager.multiplayerStateManager;
|
|
58
59
|
assetManager: typeof noyaManager.assetManager;
|
|
@@ -79,7 +80,7 @@ declare function useMultiplayerState<S, M extends object = object, E extends obj
|
|
|
79
80
|
noyaManager: NoyaManager<S, M, E, MenuT>;
|
|
80
81
|
taskManager: _noya_app_state_manager.TaskManager;
|
|
81
82
|
connectionEventManager: _noya_app_state_manager.ConnectionEventManager<S>;
|
|
82
|
-
|
|
83
|
+
userManager: _noya_app_state_manager.UserManager;
|
|
83
84
|
ephemeralUserDataManager: _noya_app_state_manager.EphemeralUserDataManager<E>;
|
|
84
85
|
multiplayerStateManager: _noya_app_state_manager.MultiplayerStateManager<S, M>;
|
|
85
86
|
assetManager: _noya_app_state_manager.AssetManager;
|
|
@@ -129,10 +130,13 @@ declare function createStateInspectorRoot(): {
|
|
|
129
130
|
root: Root;
|
|
130
131
|
unmount: () => void;
|
|
131
132
|
};
|
|
132
|
-
declare function useStateInspector<S, M extends object, E extends object, MenuT extends string = string>({ noyaManager, disabled, colorScheme, anchor, }: {
|
|
133
|
+
declare function useStateInspector<S, M extends object, E extends object, MenuT extends string = string>({ noyaManager, disabled, advanced, colorScheme, anchor, }: {
|
|
133
134
|
noyaManager: NoyaManager<S, M, E, MenuT>;
|
|
134
|
-
disabled
|
|
135
|
-
|
|
135
|
+
disabled?: boolean;
|
|
136
|
+
advanced?: boolean;
|
|
137
|
+
colorScheme?: ComponentProps<typeof StateInspector>["colorScheme"];
|
|
138
|
+
anchor?: ComponentProps<typeof StateInspector>["anchor"];
|
|
139
|
+
}): void;
|
|
136
140
|
|
|
137
141
|
type AppViewType = "editable" | "readOnly" | "preview";
|
|
138
142
|
type AppTheme = "light" | "dark";
|
|
@@ -142,6 +146,8 @@ type AppData<State> = {
|
|
|
142
146
|
viewType: AppViewType;
|
|
143
147
|
initialState: State;
|
|
144
148
|
inspector: boolean | StateInspectorOptions;
|
|
149
|
+
userId?: string;
|
|
150
|
+
isDemo: boolean;
|
|
145
151
|
};
|
|
146
152
|
declare function createDefaultAppData<State>(initialState: State): AppData<State>;
|
|
147
153
|
type GetAppDataOptions = {
|
|
@@ -169,6 +175,7 @@ type UseNoyaStateResult<S, M extends object = object, E extends object = object,
|
|
|
169
175
|
ReturnType<typeof useBindNoyaManager<S, M, E, MenuT>>[2] & {
|
|
170
176
|
theme: AppTheme;
|
|
171
177
|
viewType: AppViewType;
|
|
178
|
+
isDemo: boolean;
|
|
172
179
|
}
|
|
173
180
|
];
|
|
174
181
|
/**
|
|
@@ -375,7 +382,7 @@ declare function useIOManager(): _noya_app_state_manager.IOManager;
|
|
|
375
382
|
declare function usePublish(callback: PublishCallback): void;
|
|
376
383
|
declare function useIsInitialized(): boolean;
|
|
377
384
|
declare function usePipelineManager(): _noya_app_state_manager.PipelineManager;
|
|
378
|
-
declare function
|
|
385
|
+
declare function useUserManager(): _noya_app_state_manager.UserManager;
|
|
379
386
|
declare function useConnectedUsers(): _noya_app_state_manager.MultiplayerUser[];
|
|
380
387
|
declare function useConnectedUser(userId?: string | null): _noya_app_state_manager.MultiplayerUser | undefined;
|
|
381
388
|
declare function useAnyEphemeralUserData(): EphemeralUserDataManager<any>;
|
|
@@ -443,6 +450,8 @@ type AnyNoyaSingletonBindings = {
|
|
|
443
450
|
inspector?: boolean | StateInspectorOptions;
|
|
444
451
|
theme: AppTheme;
|
|
445
452
|
viewType: AppViewType;
|
|
453
|
+
userId?: string;
|
|
454
|
+
isDemo: boolean;
|
|
446
455
|
};
|
|
447
456
|
type AnyNoyaSingletonOptions<S, M extends object, E extends object, MenuT extends string> = NoyaManagerOptions<S, M> & {
|
|
448
457
|
initialState?: S | (() => S);
|
|
@@ -498,4 +507,4 @@ declare class WebSocketConnection<State> {
|
|
|
498
507
|
removeListener(listener: (state: ReconnectingWebSocketState) => void): void;
|
|
499
508
|
}
|
|
500
509
|
|
|
501
|
-
export { type AnyNoyaSingletonBindings, type AnyNoyaSingletonOptions, AnyNoyaStateContext, type AnyNoyaStateContextValue, type AppData, type AppTheme, type AppViewType, type ConnectionEvent, type ConnectionOptions, FallbackUntilInitialized, type GetAppDataOptions, type NoyaStateProviderProps, type RenderUserPointer, type RenderUserPointerProps, StateInspector, type StateInspectorAnchor, type StateInspectorOptions, type UseMultiplayerStateOptions, type UseNoyaStateOptions, type UseNoyaStateResult, type UserPointerData, UserPointersOverlay, type UserPointersOverlayProps, WebSocketConnection, buildCreateResourcePayload, createDefaultAppData, createNoyaContext, createStateInspectorRoot, decodeAll, deleteNoyaSingleton, encodeAll, enforceSchema, exportAll, fetchAssetMap, getAppData, getNoyaManagerSingleton, getNoyaSingletonBindings, getSyncAdapter, importAll, initializeNoyaSingleton, parseAppDataParameter, replaceDeep, resourceToCreateParameters, resourceToMediaItem, useAIManager, useActivityEvents, useActivityEventsForManager, useAnyEphemeralUserData, useAnyNoyaManager, useAnyNoyaStateContext, useAsset, useAssetManager, useAssets, useBindNoyaManager, useCallableAITools, useColorScheme, useConnectedUser, useConnectedUsers,
|
|
510
|
+
export { type AnyNoyaSingletonBindings, type AnyNoyaSingletonOptions, AnyNoyaStateContext, type AnyNoyaStateContextValue, type AppData, type AppTheme, type AppViewType, type ConnectionEvent, type ConnectionOptions, FallbackUntilInitialized, type GetAppDataOptions, type NoyaStateProviderProps, type RenderUserPointer, type RenderUserPointerProps, StateInspector, type StateInspectorAnchor, type StateInspectorOptions, type UseMultiplayerStateOptions, type UseNoyaStateOptions, type UseNoyaStateResult, type UserPointerData, UserPointersOverlay, type UserPointersOverlayProps, WebSocketConnection, buildCreateResourcePayload, createDefaultAppData, createNoyaContext, createStateInspectorRoot, decodeAll, deleteNoyaSingleton, encodeAll, enforceSchema, exportAll, fetchAssetMap, getAppData, getNoyaManagerSingleton, getNoyaSingletonBindings, getSyncAdapter, importAll, initializeNoyaSingleton, parseAppDataParameter, replaceDeep, resourceToCreateParameters, resourceToMediaItem, useAIManager, useActivityEvents, useActivityEventsForManager, useAnyEphemeralUserData, useAnyNoyaManager, useAnyNoyaStateContext, useAsset, useAssetManager, useAssets, useBindNoyaManager, useCallableAITools, useColorScheme, useConnectedUser, useConnectedUsers, useCurrentUserId, useFileName, useFilePropertyManager, useIOManager, useInputs, useIsInitialized, useIsProcessing, useManagedHistory, useManagedState, useMultiplayerState, useNoyaStateInternal, useObservable, useOutputTransforms, usePipelineManager, usePublish, useRegisterAITool, useResourceManager, useResources, useSecret, useSecretManager, useSecrets, useSetFileNameState, useStateInspector, useUserManager, useViewType };
|
package/dist/index.js
CHANGED
|
@@ -1534,7 +1534,6 @@ __export(src_exports, {
|
|
|
1534
1534
|
useColorScheme: () => useColorScheme,
|
|
1535
1535
|
useConnectedUser: () => useConnectedUser,
|
|
1536
1536
|
useConnectedUsers: () => useConnectedUsers,
|
|
1537
|
-
useConnectedUsersManager: () => useConnectedUsersManager,
|
|
1538
1537
|
useCurrentUserId: () => useCurrentUserId,
|
|
1539
1538
|
useFileName: () => useFileName,
|
|
1540
1539
|
useFilePropertyManager: () => useFilePropertyManager,
|
|
@@ -1558,6 +1557,7 @@ __export(src_exports, {
|
|
|
1558
1557
|
useSecrets: () => useSecrets,
|
|
1559
1558
|
useSetFileNameState: () => useSetFileNameState,
|
|
1560
1559
|
useStateInspector: () => useStateInspector,
|
|
1560
|
+
useUserManager: () => useUserManager,
|
|
1561
1561
|
useViewType: () => useViewType
|
|
1562
1562
|
});
|
|
1563
1563
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -5119,14 +5119,15 @@ function StateInspectorRow({
|
|
|
5119
5119
|
colorScheme,
|
|
5120
5120
|
selected,
|
|
5121
5121
|
style,
|
|
5122
|
-
variant
|
|
5122
|
+
variant,
|
|
5123
|
+
bordered = true
|
|
5123
5124
|
}) {
|
|
5124
5125
|
const solidBorderColor = colorScheme === "light" ? "rgb(223 223 223)" : "rgb(29 29 29)";
|
|
5125
5126
|
return /* @__PURE__ */ import_react6.default.createElement(
|
|
5126
5127
|
"div",
|
|
5127
5128
|
{
|
|
5128
5129
|
style: {
|
|
5129
|
-
borderBottom: `1px solid ${solidBorderColor}
|
|
5130
|
+
borderBottom: bordered ? `1px solid ${solidBorderColor}` : void 0,
|
|
5130
5131
|
fontSize: "12px",
|
|
5131
5132
|
fontFamily: "Menlo, monospace",
|
|
5132
5133
|
padding: "2px 12px 1px",
|
|
@@ -6228,12 +6229,13 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6228
6229
|
colorScheme = "light",
|
|
6229
6230
|
anchor = "right",
|
|
6230
6231
|
unstyled = false,
|
|
6232
|
+
advanced = false,
|
|
6231
6233
|
...props
|
|
6232
6234
|
}) {
|
|
6233
6235
|
const {
|
|
6234
6236
|
multiplayerStateManager,
|
|
6235
6237
|
assetManager,
|
|
6236
|
-
|
|
6238
|
+
userManager,
|
|
6237
6239
|
secretManager,
|
|
6238
6240
|
ephemeralUserDataManager,
|
|
6239
6241
|
connectionEventManager,
|
|
@@ -6320,8 +6322,8 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6320
6322
|
const assetsInitialized = useObservable(assetManager.isInitialized$);
|
|
6321
6323
|
const secrets = useObservable(secretManager.secrets$);
|
|
6322
6324
|
const secretsInitialized = useObservable(secretManager.isInitialized$);
|
|
6323
|
-
const connectedUsers = useObservable(
|
|
6324
|
-
const userId = useObservable(
|
|
6325
|
+
const connectedUsers = useObservable(userManager.connectedUsers$);
|
|
6326
|
+
const userId = useObservable(userManager.currentUserId$);
|
|
6325
6327
|
const state = useObservable(multiplayerStateManager.optimisticState$);
|
|
6326
6328
|
const inputsInitialized = useObservable(ioManager.inputsInitialized$);
|
|
6327
6329
|
const outputTransformsInitialized = useObservable(
|
|
@@ -6419,12 +6421,13 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6419
6421
|
}
|
|
6420
6422
|
)
|
|
6421
6423
|
},
|
|
6422
|
-
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, { style: { flex: "0 0 auto" } }, connectedUsers?.map((user) => /* @__PURE__ */ import_react14.default.createElement(
|
|
6424
|
+
/* @__PURE__ */ import_react14.default.createElement(StateInspectorDisclosureRowInner, { style: { flex: "0 0 auto" } }, connectedUsers?.map((user, index, array) => /* @__PURE__ */ import_react14.default.createElement(
|
|
6423
6425
|
StateInspectorRow,
|
|
6424
6426
|
{
|
|
6425
6427
|
key: user.id,
|
|
6426
6428
|
colorScheme,
|
|
6427
|
-
variant: user.id === userId ? "up" : void 0
|
|
6429
|
+
variant: user.id === userId ? "up" : void 0,
|
|
6430
|
+
bordered: index !== array.length - 1
|
|
6428
6431
|
},
|
|
6429
6432
|
user.image && /* @__PURE__ */ import_react14.default.createElement(
|
|
6430
6433
|
"img",
|
|
@@ -6596,7 +6599,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6596
6599
|
"Delete"
|
|
6597
6600
|
))))
|
|
6598
6601
|
),
|
|
6599
|
-
/* @__PURE__ */ import_react14.default.createElement(
|
|
6602
|
+
advanced && /* @__PURE__ */ import_react14.default.createElement(
|
|
6600
6603
|
StateInspectorDisclosureSection,
|
|
6601
6604
|
{
|
|
6602
6605
|
title: /* @__PURE__ */ import_react14.default.createElement(StateInspectorTitleLabel, null, "Resources (", resources.length, ")", /* @__PURE__ */ import_react14.default.createElement(ColoredDot, { type: resourcesInitialized ? "success" : "error" })),
|
|
@@ -6678,7 +6681,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6678
6681
|
"Rename"
|
|
6679
6682
|
)))))
|
|
6680
6683
|
),
|
|
6681
|
-
/* @__PURE__ */ import_react14.default.createElement(
|
|
6684
|
+
advanced && /* @__PURE__ */ import_react14.default.createElement(
|
|
6682
6685
|
StateInspectorDisclosureSection,
|
|
6683
6686
|
{
|
|
6684
6687
|
title: /* @__PURE__ */ import_react14.default.createElement(StateInspectorTitleLabel, null, "Secrets", /* @__PURE__ */ import_react14.default.createElement(ColoredDot, { type: secretsInitialized ? "success" : "error" })),
|
|
@@ -6709,8 +6712,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6709
6712
|
"Delete"
|
|
6710
6713
|
))))
|
|
6711
6714
|
),
|
|
6712
|
-
|
|
6713
|
-
/* @__PURE__ */ import_react14.default.createElement(
|
|
6715
|
+
advanced && /* @__PURE__ */ import_react14.default.createElement(
|
|
6714
6716
|
StateInspectorDisclosureSection,
|
|
6715
6717
|
{
|
|
6716
6718
|
open: showInputs,
|
|
@@ -6732,7 +6734,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6732
6734
|
/* @__PURE__ */ import_react14.default.createElement("span", null, "No inputs")
|
|
6733
6735
|
))
|
|
6734
6736
|
),
|
|
6735
|
-
/* @__PURE__ */ import_react14.default.createElement(
|
|
6737
|
+
advanced && /* @__PURE__ */ import_react14.default.createElement(
|
|
6736
6738
|
StateInspectorDisclosureSection,
|
|
6737
6739
|
{
|
|
6738
6740
|
open: showOutputTransforms,
|
|
@@ -6759,7 +6761,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6759
6761
|
/* @__PURE__ */ import_react14.default.createElement("span", null, "No output transforms")
|
|
6760
6762
|
))
|
|
6761
6763
|
),
|
|
6762
|
-
/* @__PURE__ */ import_react14.default.createElement(
|
|
6764
|
+
advanced && /* @__PURE__ */ import_react14.default.createElement(
|
|
6763
6765
|
StateInspectorDisclosureSection,
|
|
6764
6766
|
{
|
|
6765
6767
|
title: "Tasks",
|
|
@@ -6804,7 +6806,7 @@ var StateInspector = (0, import_react_utils.memoGeneric)(function StateInspector
|
|
|
6804
6806
|
}
|
|
6805
6807
|
))))
|
|
6806
6808
|
),
|
|
6807
|
-
/* @__PURE__ */ import_react14.default.createElement(
|
|
6809
|
+
advanced && /* @__PURE__ */ import_react14.default.createElement(
|
|
6808
6810
|
ActivityEventsSection,
|
|
6809
6811
|
{
|
|
6810
6812
|
colorScheme,
|
|
@@ -6856,6 +6858,7 @@ function createStateInspectorRoot() {
|
|
|
6856
6858
|
function useStateInspector({
|
|
6857
6859
|
noyaManager,
|
|
6858
6860
|
disabled = false,
|
|
6861
|
+
advanced = false,
|
|
6859
6862
|
colorScheme,
|
|
6860
6863
|
anchor
|
|
6861
6864
|
}) {
|
|
@@ -6874,11 +6877,12 @@ function useStateInspector({
|
|
|
6874
6877
|
{
|
|
6875
6878
|
colorScheme,
|
|
6876
6879
|
anchor,
|
|
6877
|
-
noyaManager
|
|
6880
|
+
noyaManager,
|
|
6881
|
+
advanced
|
|
6878
6882
|
}
|
|
6879
6883
|
)
|
|
6880
6884
|
);
|
|
6881
|
-
}, [noyaManager, anchor, colorScheme, root]);
|
|
6885
|
+
}, [noyaManager, anchor, colorScheme, root, advanced]);
|
|
6882
6886
|
}
|
|
6883
6887
|
|
|
6884
6888
|
// src/hooks.ts
|
|
@@ -6946,7 +6950,7 @@ function useBindNoyaManager(noyaManager, options) {
|
|
|
6946
6950
|
noyaManager,
|
|
6947
6951
|
taskManager: noyaManager.taskManager,
|
|
6948
6952
|
connectionEventManager: noyaManager.connectionEventManager,
|
|
6949
|
-
|
|
6953
|
+
userManager: noyaManager.userManager,
|
|
6950
6954
|
ephemeralUserDataManager: noyaManager.ephemeralUserDataManager,
|
|
6951
6955
|
multiplayerStateManager: noyaManager.multiplayerStateManager,
|
|
6952
6956
|
assetManager: noyaManager.assetManager,
|
|
@@ -6970,6 +6974,7 @@ function useBindNoyaManager(noyaManager, options) {
|
|
|
6970
6974
|
useStateInspector({
|
|
6971
6975
|
noyaManager,
|
|
6972
6976
|
disabled: !options?.inspector,
|
|
6977
|
+
advanced: true,
|
|
6973
6978
|
...typeof options?.inspector === "object" && options?.inspector
|
|
6974
6979
|
});
|
|
6975
6980
|
return [state, noyaManager.multiplayerStateManager.setState, extras];
|
|
@@ -7007,7 +7012,8 @@ function createDefaultAppData(initialState) {
|
|
|
7007
7012
|
theme: "light",
|
|
7008
7013
|
viewType: "editable",
|
|
7009
7014
|
initialState,
|
|
7010
|
-
inspector: false
|
|
7015
|
+
inspector: false,
|
|
7016
|
+
isDemo: false
|
|
7011
7017
|
};
|
|
7012
7018
|
}
|
|
7013
7019
|
function enforceSchema(initialState, schema) {
|
|
@@ -7038,6 +7044,7 @@ function getAppData(initialState, schema, options) {
|
|
|
7038
7044
|
appData.initialState = resolvedInitialState;
|
|
7039
7045
|
}
|
|
7040
7046
|
appData.initialState = enforceSchema(appData.initialState, schema);
|
|
7047
|
+
appData.isDemo = appData.isDemo ?? false;
|
|
7041
7048
|
return appData;
|
|
7042
7049
|
}
|
|
7043
7050
|
function getSyncAdapter(params) {
|
|
@@ -7052,7 +7059,9 @@ function useNoyaStateInternal(...args) {
|
|
|
7052
7059
|
inspector,
|
|
7053
7060
|
initialState: noyaAppInitialState,
|
|
7054
7061
|
theme,
|
|
7055
|
-
viewType
|
|
7062
|
+
viewType,
|
|
7063
|
+
userId,
|
|
7064
|
+
isDemo
|
|
7056
7065
|
}
|
|
7057
7066
|
] = (0, import_react17.useState)(() => {
|
|
7058
7067
|
return getAppData(initialState, options?.schema, {
|
|
@@ -7069,14 +7078,19 @@ function useNoyaStateInternal(...args) {
|
|
|
7069
7078
|
const [noyaManager] = (0, import_react17.useState)(
|
|
7070
7079
|
() => new import_state_manager3.NoyaManager(noyaAppInitialState, options)
|
|
7071
7080
|
);
|
|
7081
|
+
(0, import_react17.useEffect)(() => {
|
|
7082
|
+
if (!userId) return;
|
|
7083
|
+
noyaManager.ephemeralUserDataManager.setCurrentUserId(userId);
|
|
7084
|
+
noyaManager.userManager.setCurrentUserId(userId);
|
|
7085
|
+
}, [noyaManager, userId]);
|
|
7072
7086
|
const result = useBindNoyaManager(noyaManager, {
|
|
7073
7087
|
inspector: options?.inspector ?? inspector,
|
|
7074
7088
|
sync: options?.sync ?? sync
|
|
7075
7089
|
});
|
|
7076
7090
|
const [, , extras] = result;
|
|
7077
7091
|
const mergedExtras = (0, import_react17.useMemo)(() => {
|
|
7078
|
-
return { ...extras, theme, viewType };
|
|
7079
|
-
}, [extras, theme, viewType]);
|
|
7092
|
+
return { ...extras, theme, viewType, isDemo };
|
|
7093
|
+
}, [extras, theme, viewType, isDemo]);
|
|
7080
7094
|
return [result[0], result[1], mergedExtras];
|
|
7081
7095
|
}
|
|
7082
7096
|
|
|
@@ -7110,6 +7124,12 @@ function initializeNoyaSingleton(options) {
|
|
|
7110
7124
|
appData.initialState,
|
|
7111
7125
|
managerOptions
|
|
7112
7126
|
);
|
|
7127
|
+
if (appData.userId) {
|
|
7128
|
+
noyaManagerSingleton.ephemeralUserDataManager.setCurrentUserId(
|
|
7129
|
+
appData.userId
|
|
7130
|
+
);
|
|
7131
|
+
noyaManagerSingleton.userManager.setCurrentUserId(appData.userId);
|
|
7132
|
+
}
|
|
7113
7133
|
const resolvedSync = sync ?? getSyncAdapter({
|
|
7114
7134
|
multiplayerUrl: multiplayerUrl ?? appData.multiplayerUrl,
|
|
7115
7135
|
offlineStorageKey,
|
|
@@ -7131,7 +7151,8 @@ function initializeNoyaSingleton(options) {
|
|
|
7131
7151
|
{
|
|
7132
7152
|
noyaManager: noyaManagerSingleton,
|
|
7133
7153
|
colorScheme: resolvedInspector === true ? resolvedTheme : resolvedInspector.colorScheme,
|
|
7134
|
-
anchor: resolvedInspector === true ? "bottom right" : resolvedInspector.anchor
|
|
7154
|
+
anchor: resolvedInspector === true ? "bottom right" : resolvedInspector.anchor,
|
|
7155
|
+
advanced: resolvedInspector === true ? false : resolvedInspector.advanced
|
|
7135
7156
|
}
|
|
7136
7157
|
)
|
|
7137
7158
|
);
|
|
@@ -7140,7 +7161,9 @@ function initializeNoyaSingleton(options) {
|
|
|
7140
7161
|
sync: resolvedSync,
|
|
7141
7162
|
inspector: resolvedInspector,
|
|
7142
7163
|
theme: resolvedTheme,
|
|
7143
|
-
viewType: resolvedViewType
|
|
7164
|
+
viewType: resolvedViewType,
|
|
7165
|
+
userId: appData.userId,
|
|
7166
|
+
isDemo: appData.isDemo
|
|
7144
7167
|
};
|
|
7145
7168
|
}
|
|
7146
7169
|
function getNoyaManagerSingleton() {
|
|
@@ -7344,18 +7367,18 @@ function usePipelineManager() {
|
|
|
7344
7367
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7345
7368
|
return noyaManager.pipelineManager;
|
|
7346
7369
|
}
|
|
7347
|
-
function
|
|
7370
|
+
function useUserManager() {
|
|
7348
7371
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
7349
|
-
return noyaManager.
|
|
7372
|
+
return noyaManager.userManager;
|
|
7350
7373
|
}
|
|
7351
7374
|
function useConnectedUsers() {
|
|
7352
|
-
const
|
|
7353
|
-
return useObservable(
|
|
7375
|
+
const userManager = useUserManager();
|
|
7376
|
+
return useObservable(userManager?.connectedUsers$);
|
|
7354
7377
|
}
|
|
7355
7378
|
function useConnectedUser(userId) {
|
|
7356
|
-
const
|
|
7379
|
+
const userManager = useUserManager();
|
|
7357
7380
|
return useObservable(
|
|
7358
|
-
|
|
7381
|
+
userManager?.connectedUsers$,
|
|
7359
7382
|
(0, import_react19.useCallback)(
|
|
7360
7383
|
(users) => {
|
|
7361
7384
|
return users.find((user) => {
|
|
@@ -7372,8 +7395,8 @@ function useAnyEphemeralUserData() {
|
|
|
7372
7395
|
return noyaManager.ephemeralUserDataManager;
|
|
7373
7396
|
}
|
|
7374
7397
|
function useCurrentUserId() {
|
|
7375
|
-
const
|
|
7376
|
-
return useObservable(
|
|
7398
|
+
const userManager = useUserManager();
|
|
7399
|
+
return useObservable(userManager?.currentUserId$);
|
|
7377
7400
|
}
|
|
7378
7401
|
function useIsProcessing() {
|
|
7379
7402
|
const { noyaManager } = useAnyNoyaStateContext();
|
|
@@ -7690,12 +7713,12 @@ var UserPointerInternal = (0, import_react_utils4.memoGeneric)(function UserPoin
|
|
|
7690
7713
|
});
|
|
7691
7714
|
});
|
|
7692
7715
|
var UserPointersOverlay = (0, import_react_utils4.memoGeneric)(function UserPointers({
|
|
7693
|
-
|
|
7716
|
+
userManager,
|
|
7694
7717
|
ephemeralUserDataManager,
|
|
7695
7718
|
renderUserPointer
|
|
7696
7719
|
}) {
|
|
7697
7720
|
const currentUserId = useObservable(ephemeralUserDataManager.currentUserId$);
|
|
7698
|
-
const connectedUsers = useObservable(
|
|
7721
|
+
const connectedUsers = useObservable(userManager.connectedUsers$);
|
|
7699
7722
|
return /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, connectedUsers.map((user) => {
|
|
7700
7723
|
if (user.id === currentUserId) return null;
|
|
7701
7724
|
return /* @__PURE__ */ import_react21.default.createElement(
|
|
@@ -7828,7 +7851,6 @@ var WebSocketConnection = class {
|
|
|
7828
7851
|
useColorScheme,
|
|
7829
7852
|
useConnectedUser,
|
|
7830
7853
|
useConnectedUsers,
|
|
7831
|
-
useConnectedUsersManager,
|
|
7832
7854
|
useCurrentUserId,
|
|
7833
7855
|
useFileName,
|
|
7834
7856
|
useFilePropertyManager,
|
|
@@ -7852,6 +7874,7 @@ var WebSocketConnection = class {
|
|
|
7852
7874
|
useSecrets,
|
|
7853
7875
|
useSetFileNameState,
|
|
7854
7876
|
useStateInspector,
|
|
7877
|
+
useUserManager,
|
|
7855
7878
|
useViewType,
|
|
7856
7879
|
...require("@noya-app/state-manager")
|
|
7857
7880
|
});
|