@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/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, ConnectedUsersManager, 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';
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
- connectedUsersManager: ConnectedUsersManager;
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
- connectedUsersManager: typeof noyaManager.connectedUsersManager;
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
- connectedUsersManager: _noya_app_state_manager.ConnectedUsersManager;
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: boolean;
135
- } & Pick<ComponentProps<typeof StateInspector>, "colorScheme" | "anchor">): void;
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 useConnectedUsersManager(): _noya_app_state_manager.ConnectedUsersManager;
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, useConnectedUsersManager, useCurrentUserId, useFileName, useFilePropertyManager, useIOManager, useInputs, useIsInitialized, useIsProcessing, useManagedHistory, useManagedState, useMultiplayerState, useNoyaStateInternal, useObservable, useOutputTransforms, usePipelineManager, usePublish, useRegisterAITool, useResourceManager, useResources, useSecret, useSecretManager, useSecrets, useSetFileNameState, useStateInspector, useViewType };
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, ConnectedUsersManager, 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';
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
- connectedUsersManager: ConnectedUsersManager;
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
- connectedUsersManager: typeof noyaManager.connectedUsersManager;
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
- connectedUsersManager: _noya_app_state_manager.ConnectedUsersManager;
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: boolean;
135
- } & Pick<ComponentProps<typeof StateInspector>, "colorScheme" | "anchor">): void;
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 useConnectedUsersManager(): _noya_app_state_manager.ConnectedUsersManager;
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, useConnectedUsersManager, useCurrentUserId, useFileName, useFilePropertyManager, useIOManager, useInputs, useIsInitialized, useIsProcessing, useManagedHistory, useManagedState, useMultiplayerState, useNoyaStateInternal, useObservable, useOutputTransforms, usePipelineManager, usePublish, useRegisterAITool, useResourceManager, useResources, useSecret, useSecretManager, useSecrets, useSetFileNameState, useStateInspector, useViewType };
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
- connectedUsersManager,
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(connectedUsersManager.connectedUsers$);
6324
- const userId = useObservable(connectedUsersManager.currentUserId$);
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
- connectedUsersManager: noyaManager.connectedUsersManager,
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 useConnectedUsersManager() {
7370
+ function useUserManager() {
7348
7371
  const { noyaManager } = useAnyNoyaStateContext();
7349
- return noyaManager.connectedUsersManager;
7372
+ return noyaManager.userManager;
7350
7373
  }
7351
7374
  function useConnectedUsers() {
7352
- const connectedUsersManager = useConnectedUsersManager();
7353
- return useObservable(connectedUsersManager?.connectedUsers$);
7375
+ const userManager = useUserManager();
7376
+ return useObservable(userManager?.connectedUsers$);
7354
7377
  }
7355
7378
  function useConnectedUser(userId) {
7356
- const connectedUsersManager = useConnectedUsersManager();
7379
+ const userManager = useUserManager();
7357
7380
  return useObservable(
7358
- connectedUsersManager?.connectedUsers$,
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 connectedUsersManager = useConnectedUsersManager();
7376
- return useObservable(connectedUsersManager?.currentUserId$);
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
- connectedUsersManager,
7716
+ userManager,
7694
7717
  ephemeralUserDataManager,
7695
7718
  renderUserPointer
7696
7719
  }) {
7697
7720
  const currentUserId = useObservable(ephemeralUserDataManager.currentUserId$);
7698
- const connectedUsers = useObservable(connectedUsersManager.connectedUsers$);
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
  });