@melony/react 0.1.11 → 0.1.12

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.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { ReactNode } from 'react';
3
- import { ClientState, Client } from '@melony/core/client';
3
+ import { ClientState, MelonyClient } from '@melony/core/client';
4
4
  import { Role, Event, UINode } from '@melony/core';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
 
@@ -45,15 +45,16 @@ interface MelonyContextValue extends ClientState {
45
45
  runId?: string;
46
46
  state?: Record<string, any>;
47
47
  }) => Promise<void>;
48
- clear: () => void;
49
- client: Client;
48
+ reset: (events?: Event[]) => void;
49
+ client: MelonyClient;
50
50
  }
51
51
  declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
52
- interface MelonyProviderProps {
52
+ interface MelonyClientProviderProps {
53
53
  children: ReactNode;
54
- client: Client;
54
+ client: MelonyClient;
55
+ initialEvents?: Event[];
55
56
  }
56
- declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
57
+ declare const MelonyClientProvider: React__default.FC<MelonyClientProviderProps>;
57
58
 
58
59
  interface AuthContextValue {
59
60
  user: User | null;
@@ -80,7 +81,6 @@ interface ThreadContextValue {
80
81
  deleteThread: (threadId: string) => Promise<void>;
81
82
  refreshThreads: () => Promise<void>;
82
83
  threadEvents: Event[];
83
- threadMessages: Message[];
84
84
  isLoadingEvents: boolean;
85
85
  }
86
86
  declare const ThreadContext: React__default.Context<ThreadContextValue | undefined>;
@@ -91,7 +91,10 @@ interface ThreadProviderProps {
91
91
  }
92
92
  declare const ThreadProvider: React__default.FC<ThreadProviderProps>;
93
93
 
94
- declare const useMelony: () => MelonyContextValue;
94
+ interface UseMelonyOptions {
95
+ initialEvents?: Event[];
96
+ }
97
+ declare const useMelony: (options?: UseMelonyOptions) => MelonyContextValue;
95
98
 
96
99
  declare const useAuth: () => AuthContextValue;
97
100
 
@@ -162,4 +165,4 @@ interface UIRendererProps {
162
165
  */
163
166
  declare function UIRenderer({ node }: UIRendererProps): react_jsx_runtime.JSX.Element;
164
167
 
165
- export { AccountDialog, type AccountDialogProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, ChatFull, type ChatFullProps, ChatPopup, type ChatPopupProps, ChatSidebar, type ChatSidebarProps, Composer, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, type Message, type StarterPrompt, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type User, useAuth, useMelony, useThreads };
168
+ export { AccountDialog, type AccountDialogProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, ChatFull, type ChatFullProps, ChatPopup, type ChatPopupProps, ChatSidebar, type ChatSidebarProps, Composer, MelonyClientProvider, type MelonyClientProviderProps, MelonyContext, type MelonyContextValue, type Message, type StarterPrompt, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, useAuth, useMelony, useThreads };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { ReactNode } from 'react';
3
- import { ClientState, Client } from '@melony/core/client';
3
+ import { ClientState, MelonyClient } from '@melony/core/client';
4
4
  import { Role, Event, UINode } from '@melony/core';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
 
@@ -45,15 +45,16 @@ interface MelonyContextValue extends ClientState {
45
45
  runId?: string;
46
46
  state?: Record<string, any>;
47
47
  }) => Promise<void>;
48
- clear: () => void;
49
- client: Client;
48
+ reset: (events?: Event[]) => void;
49
+ client: MelonyClient;
50
50
  }
51
51
  declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
52
- interface MelonyProviderProps {
52
+ interface MelonyClientProviderProps {
53
53
  children: ReactNode;
54
- client: Client;
54
+ client: MelonyClient;
55
+ initialEvents?: Event[];
55
56
  }
56
- declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
57
+ declare const MelonyClientProvider: React__default.FC<MelonyClientProviderProps>;
57
58
 
58
59
  interface AuthContextValue {
59
60
  user: User | null;
@@ -80,7 +81,6 @@ interface ThreadContextValue {
80
81
  deleteThread: (threadId: string) => Promise<void>;
81
82
  refreshThreads: () => Promise<void>;
82
83
  threadEvents: Event[];
83
- threadMessages: Message[];
84
84
  isLoadingEvents: boolean;
85
85
  }
86
86
  declare const ThreadContext: React__default.Context<ThreadContextValue | undefined>;
@@ -91,7 +91,10 @@ interface ThreadProviderProps {
91
91
  }
92
92
  declare const ThreadProvider: React__default.FC<ThreadProviderProps>;
93
93
 
94
- declare const useMelony: () => MelonyContextValue;
94
+ interface UseMelonyOptions {
95
+ initialEvents?: Event[];
96
+ }
97
+ declare const useMelony: (options?: UseMelonyOptions) => MelonyContextValue;
95
98
 
96
99
  declare const useAuth: () => AuthContextValue;
97
100
 
@@ -162,4 +165,4 @@ interface UIRendererProps {
162
165
  */
163
166
  declare function UIRenderer({ node }: UIRendererProps): react_jsx_runtime.JSX.Element;
164
167
 
165
- export { AccountDialog, type AccountDialogProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, ChatFull, type ChatFullProps, ChatPopup, type ChatPopupProps, ChatSidebar, type ChatSidebarProps, Composer, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, type Message, type StarterPrompt, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type User, useAuth, useMelony, useThreads };
168
+ export { AccountDialog, type AccountDialogProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, ChatFull, type ChatFullProps, ChatPopup, type ChatPopupProps, ChatSidebar, type ChatSidebarProps, Composer, MelonyClientProvider, type MelonyClientProviderProps, MelonyContext, type MelonyContextValue, type Message, type StarterPrompt, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, useAuth, useMelony, useThreads };
package/dist/index.js CHANGED
@@ -46,15 +46,22 @@ function groupEventsToMessages(events) {
46
46
  var MelonyContext = createContext(
47
47
  void 0
48
48
  );
49
- var MelonyProvider = ({
49
+ var MelonyClientProvider = ({
50
50
  children,
51
- client
51
+ client,
52
+ initialEvents
52
53
  }) => {
53
54
  const [state, setState] = useState(client.getState());
55
+ useEffect(() => {
56
+ if (initialEvents && initialEvents.length > 0 && client.getState().events.length === 0) {
57
+ client.reset(initialEvents);
58
+ }
59
+ }, [client, initialEvents]);
54
60
  useEffect(() => {
55
61
  setState(client.getState());
62
+ const unsubscribe = client.subscribe(setState);
56
63
  return () => {
57
- client.subscribe(setState);
64
+ unsubscribe();
58
65
  };
59
66
  }, [client]);
60
67
  const sendEvent = useCallback(
@@ -65,16 +72,19 @@ var MelonyProvider = ({
65
72
  },
66
73
  [client]
67
74
  );
68
- const clear = useCallback(() => client.clear(), [client]);
75
+ const reset = useCallback(
76
+ (events) => client.reset(events),
77
+ [client]
78
+ );
69
79
  const value = useMemo(
70
80
  () => ({
71
81
  ...state,
72
82
  messages: groupEventsToMessages(state.events),
73
83
  sendEvent,
74
- clear,
84
+ reset,
75
85
  client
76
86
  }),
77
- [state, sendEvent, clear, client]
87
+ [state, sendEvent, reset, client]
78
88
  );
79
89
  return /* @__PURE__ */ jsx(MelonyContext.Provider, { value, children });
80
90
  };
@@ -141,7 +151,9 @@ var AuthProvider = ({
141
151
  }
142
152
  return /* @__PURE__ */ jsx(AuthContext.Provider, { value, children });
143
153
  };
144
- var ThreadContext = createContext(void 0);
154
+ var ThreadContext = createContext(
155
+ void 0
156
+ );
145
157
  var ThreadProvider = ({
146
158
  children,
147
159
  service,
@@ -212,9 +224,6 @@ var ThreadProvider = ({
212
224
  const refreshThreads = useCallback(async () => {
213
225
  await fetchThreads();
214
226
  }, [fetchThreads]);
215
- const threadMessages = useMemo(() => {
216
- return groupEventsToMessages(threadEvents);
217
- }, [threadEvents]);
218
227
  useEffect(() => {
219
228
  if (!activeThreadId) {
220
229
  setThreadEvents([]);
@@ -256,7 +265,6 @@ var ThreadProvider = ({
256
265
  deleteThread,
257
266
  refreshThreads,
258
267
  threadEvents,
259
- threadMessages,
260
268
  isLoadingEvents
261
269
  }),
262
270
  [
@@ -269,17 +277,23 @@ var ThreadProvider = ({
269
277
  deleteThread,
270
278
  refreshThreads,
271
279
  threadEvents,
272
- threadMessages,
273
280
  isLoadingEvents
274
281
  ]
275
282
  );
276
283
  return /* @__PURE__ */ jsx(ThreadContext.Provider, { value, children });
277
284
  };
278
- var useMelony = () => {
285
+ var useMelony = (options) => {
279
286
  const context = useContext(MelonyContext);
280
287
  if (context === void 0) {
281
- throw new Error("useMelony must be used within a MelonyProvider");
288
+ throw new Error("useMelony must be used within a MelonyClientProvider");
282
289
  }
290
+ const { client, reset } = context;
291
+ const { initialEvents } = options || {};
292
+ useEffect(() => {
293
+ if (initialEvents && initialEvents.length > 0 && client.getState().events.length === 0) {
294
+ reset(initialEvents);
295
+ }
296
+ }, [client, initialEvents, reset]);
283
297
  return context;
284
298
  };
285
299
  var useAuth = () => {
@@ -2331,6 +2345,6 @@ var AccountDialog = ({
2331
2345
  ] });
2332
2346
  };
2333
2347
 
2334
- export { AccountDialog, AuthContext, AuthProvider, ChatFull, ChatPopup, ChatSidebar, Composer, MelonyContext, MelonyProvider, Thread, ThreadContext, ThreadList, ThreadProvider, UIRenderer, useAuth, useMelony, useThreads };
2348
+ export { AccountDialog, AuthContext, AuthProvider, ChatFull, ChatPopup, ChatSidebar, Composer, MelonyClientProvider, MelonyContext, Thread, ThreadContext, ThreadList, ThreadProvider, UIRenderer, useAuth, useMelony, useThreads };
2335
2349
  //# sourceMappingURL=index.js.map
2336
2350
  //# sourceMappingURL=index.js.map