@melony/react 0.1.10 → 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,7 +1,7 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { ReactNode } from 'react';
3
- import { ClientState, Client } from 'melony/client';
4
- import { Role, Event, UINode } from 'melony';
3
+ import { ClientState, MelonyClient } from '@melony/core/client';
4
+ import { Role, Event, UINode } from '@melony/core';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
 
7
7
  interface User {
@@ -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,7 +1,7 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { ReactNode } from 'react';
3
- import { ClientState, Client } from 'melony/client';
4
- import { Role, Event, UINode } from 'melony';
3
+ import { ClientState, MelonyClient } from '@melony/core/client';
4
+ import { Role, Event, UINode } from '@melony/core';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
 
7
7
  interface User {
@@ -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
@@ -3,7 +3,7 @@ import { createContext, useState, useEffect, useCallback, useMemo, useContext, u
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
- import { generateId } from 'melony/client';
6
+ import { generateId } from '@melony/core/client';
7
7
  import { Separator as Separator$1 } from '@base-ui/react/separator';
8
8
  import * as ICONS from '@tabler/icons-react';
9
9
  import { IconArrowUp, IconPlus, IconMessage, IconTrash, IconArrowLeft, IconHistory, IconX, IconUser, IconLogout, IconBrandGoogle, IconSelector, IconCheck, IconChevronUp, IconChevronDown } from '@tabler/icons-react';
@@ -43,16 +43,25 @@ function groupEventsToMessages(events) {
43
43
  }
44
44
  return messages;
45
45
  }
46
- var MelonyContext = createContext(void 0);
47
- var MelonyProvider = ({
46
+ var MelonyContext = createContext(
47
+ void 0
48
+ );
49
+ var MelonyClientProvider = ({
48
50
  children,
49
- client
51
+ client,
52
+ initialEvents
50
53
  }) => {
51
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]);
52
60
  useEffect(() => {
53
61
  setState(client.getState());
62
+ const unsubscribe = client.subscribe(setState);
54
63
  return () => {
55
- client.subscribe(setState);
64
+ unsubscribe();
56
65
  };
57
66
  }, [client]);
58
67
  const sendEvent = useCallback(
@@ -63,16 +72,19 @@ var MelonyProvider = ({
63
72
  },
64
73
  [client]
65
74
  );
66
- const clear = useCallback(() => client.clear(), [client]);
75
+ const reset = useCallback(
76
+ (events) => client.reset(events),
77
+ [client]
78
+ );
67
79
  const value = useMemo(
68
80
  () => ({
69
81
  ...state,
70
82
  messages: groupEventsToMessages(state.events),
71
83
  sendEvent,
72
- clear,
84
+ reset,
73
85
  client
74
86
  }),
75
- [state, sendEvent, clear, client]
87
+ [state, sendEvent, reset, client]
76
88
  );
77
89
  return /* @__PURE__ */ jsx(MelonyContext.Provider, { value, children });
78
90
  };
@@ -139,7 +151,9 @@ var AuthProvider = ({
139
151
  }
140
152
  return /* @__PURE__ */ jsx(AuthContext.Provider, { value, children });
141
153
  };
142
- var ThreadContext = createContext(void 0);
154
+ var ThreadContext = createContext(
155
+ void 0
156
+ );
143
157
  var ThreadProvider = ({
144
158
  children,
145
159
  service,
@@ -210,9 +224,6 @@ var ThreadProvider = ({
210
224
  const refreshThreads = useCallback(async () => {
211
225
  await fetchThreads();
212
226
  }, [fetchThreads]);
213
- const threadMessages = useMemo(() => {
214
- return groupEventsToMessages(threadEvents);
215
- }, [threadEvents]);
216
227
  useEffect(() => {
217
228
  if (!activeThreadId) {
218
229
  setThreadEvents([]);
@@ -254,7 +265,6 @@ var ThreadProvider = ({
254
265
  deleteThread,
255
266
  refreshThreads,
256
267
  threadEvents,
257
- threadMessages,
258
268
  isLoadingEvents
259
269
  }),
260
270
  [
@@ -267,17 +277,23 @@ var ThreadProvider = ({
267
277
  deleteThread,
268
278
  refreshThreads,
269
279
  threadEvents,
270
- threadMessages,
271
280
  isLoadingEvents
272
281
  ]
273
282
  );
274
283
  return /* @__PURE__ */ jsx(ThreadContext.Provider, { value, children });
275
284
  };
276
- var useMelony = () => {
285
+ var useMelony = (options) => {
277
286
  const context = useContext(MelonyContext);
278
287
  if (context === void 0) {
279
- throw new Error("useMelony must be used within a MelonyProvider");
288
+ throw new Error("useMelony must be used within a MelonyClientProvider");
280
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]);
281
297
  return context;
282
298
  };
283
299
  var useAuth = () => {
@@ -2329,6 +2345,6 @@ var AccountDialog = ({
2329
2345
  ] });
2330
2346
  };
2331
2347
 
2332
- 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 };
2333
2349
  //# sourceMappingURL=index.js.map
2334
2350
  //# sourceMappingURL=index.js.map