@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.cjs CHANGED
@@ -4,7 +4,7 @@ var React9 = require('react');
4
4
  var clsx = require('clsx');
5
5
  var tailwindMerge = require('tailwind-merge');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
- var client = require('melony/client');
7
+ var client = require('@melony/core/client');
8
8
  var separator = require('@base-ui/react/separator');
9
9
  var ICONS = require('@tabler/icons-react');
10
10
  var mergeProps = require('@base-ui/react/merge-props');
@@ -64,16 +64,25 @@ function groupEventsToMessages(events) {
64
64
  }
65
65
  return messages;
66
66
  }
67
- var MelonyContext = React9.createContext(void 0);
68
- var MelonyProvider = ({
67
+ var MelonyContext = React9.createContext(
68
+ void 0
69
+ );
70
+ var MelonyClientProvider = ({
69
71
  children,
70
- client
72
+ client,
73
+ initialEvents
71
74
  }) => {
72
75
  const [state, setState] = React9.useState(client.getState());
76
+ React9.useEffect(() => {
77
+ if (initialEvents && initialEvents.length > 0 && client.getState().events.length === 0) {
78
+ client.reset(initialEvents);
79
+ }
80
+ }, [client, initialEvents]);
73
81
  React9.useEffect(() => {
74
82
  setState(client.getState());
83
+ const unsubscribe = client.subscribe(setState);
75
84
  return () => {
76
- client.subscribe(setState);
85
+ unsubscribe();
77
86
  };
78
87
  }, [client]);
79
88
  const sendEvent = React9.useCallback(
@@ -84,16 +93,19 @@ var MelonyProvider = ({
84
93
  },
85
94
  [client]
86
95
  );
87
- const clear = React9.useCallback(() => client.clear(), [client]);
96
+ const reset = React9.useCallback(
97
+ (events) => client.reset(events),
98
+ [client]
99
+ );
88
100
  const value = React9.useMemo(
89
101
  () => ({
90
102
  ...state,
91
103
  messages: groupEventsToMessages(state.events),
92
104
  sendEvent,
93
- clear,
105
+ reset,
94
106
  client
95
107
  }),
96
- [state, sendEvent, clear, client]
108
+ [state, sendEvent, reset, client]
97
109
  );
98
110
  return /* @__PURE__ */ jsxRuntime.jsx(MelonyContext.Provider, { value, children });
99
111
  };
@@ -160,7 +172,9 @@ var AuthProvider = ({
160
172
  }
161
173
  return /* @__PURE__ */ jsxRuntime.jsx(AuthContext.Provider, { value, children });
162
174
  };
163
- var ThreadContext = React9.createContext(void 0);
175
+ var ThreadContext = React9.createContext(
176
+ void 0
177
+ );
164
178
  var ThreadProvider = ({
165
179
  children,
166
180
  service,
@@ -231,9 +245,6 @@ var ThreadProvider = ({
231
245
  const refreshThreads = React9.useCallback(async () => {
232
246
  await fetchThreads();
233
247
  }, [fetchThreads]);
234
- const threadMessages = React9.useMemo(() => {
235
- return groupEventsToMessages(threadEvents);
236
- }, [threadEvents]);
237
248
  React9.useEffect(() => {
238
249
  if (!activeThreadId) {
239
250
  setThreadEvents([]);
@@ -275,7 +286,6 @@ var ThreadProvider = ({
275
286
  deleteThread,
276
287
  refreshThreads,
277
288
  threadEvents,
278
- threadMessages,
279
289
  isLoadingEvents
280
290
  }),
281
291
  [
@@ -288,17 +298,23 @@ var ThreadProvider = ({
288
298
  deleteThread,
289
299
  refreshThreads,
290
300
  threadEvents,
291
- threadMessages,
292
301
  isLoadingEvents
293
302
  ]
294
303
  );
295
304
  return /* @__PURE__ */ jsxRuntime.jsx(ThreadContext.Provider, { value, children });
296
305
  };
297
- var useMelony = () => {
306
+ var useMelony = (options) => {
298
307
  const context = React9.useContext(MelonyContext);
299
308
  if (context === void 0) {
300
- throw new Error("useMelony must be used within a MelonyProvider");
309
+ throw new Error("useMelony must be used within a MelonyClientProvider");
301
310
  }
311
+ const { client, reset } = context;
312
+ const { initialEvents } = options || {};
313
+ React9.useEffect(() => {
314
+ if (initialEvents && initialEvents.length > 0 && client.getState().events.length === 0) {
315
+ reset(initialEvents);
316
+ }
317
+ }, [client, initialEvents, reset]);
302
318
  return context;
303
319
  };
304
320
  var useAuth = () => {
@@ -2357,8 +2373,8 @@ exports.ChatFull = ChatFull;
2357
2373
  exports.ChatPopup = ChatPopup;
2358
2374
  exports.ChatSidebar = ChatSidebar;
2359
2375
  exports.Composer = Composer;
2376
+ exports.MelonyClientProvider = MelonyClientProvider;
2360
2377
  exports.MelonyContext = MelonyContext;
2361
- exports.MelonyProvider = MelonyProvider;
2362
2378
  exports.Thread = Thread;
2363
2379
  exports.ThreadContext = ThreadContext;
2364
2380
  exports.ThreadList = ThreadList;