@melony/react 0.1.38 → 0.1.39

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,10 +1,26 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { ReactNode, CSSProperties } from 'react';
3
3
  import { ClientState, MelonyClient } from 'melony/client';
4
- import { Role, Event, Config, UINode, UIContract } from 'melony';
4
+ import { Message, Event, Config, UINode, UIContract } from 'melony';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
6
  import * as react_jsx_runtime from 'react/jsx-runtime';
7
7
 
8
+ interface MelonyContextValue extends ClientState {
9
+ messages: Message[];
10
+ sendEvent: (event: Event) => Promise<void>;
11
+ reset: (events?: Event[]) => void;
12
+ client: MelonyClient;
13
+ config?: Config;
14
+ }
15
+ declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
16
+ interface MelonyProviderProps {
17
+ children: ReactNode;
18
+ client: MelonyClient;
19
+ initialEvents?: Event[];
20
+ queryClient?: QueryClient;
21
+ }
22
+ declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
23
+
8
24
  interface User {
9
25
  id?: string;
10
26
  uid: string;
@@ -16,12 +32,6 @@ interface User {
16
32
  lastSignIn?: string | null;
17
33
  emailVerified?: boolean;
18
34
  }
19
- interface Message {
20
- role: Role;
21
- content: Event[];
22
- runId?: string;
23
- threadId?: string;
24
- }
25
35
  interface ThreadData {
26
36
  id: string;
27
37
  title?: string;
@@ -57,22 +67,6 @@ interface ThreadService {
57
67
  getEvents: (threadId: string) => Promise<Event[]>;
58
68
  }
59
69
 
60
- interface MelonyContextValue extends ClientState {
61
- messages: Message[];
62
- sendEvent: (event: Event) => Promise<void>;
63
- reset: (events?: Event[]) => void;
64
- client: MelonyClient;
65
- config?: Config;
66
- }
67
- declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
68
- interface MelonyProviderProps {
69
- children: ReactNode;
70
- client: MelonyClient;
71
- initialEvents?: Event[];
72
- queryClient?: QueryClient;
73
- }
74
- declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
75
-
76
70
  interface WelcomeScreenProps {
77
71
  title?: string;
78
72
  description?: string;
@@ -484,6 +478,4 @@ declare const Text: React__default.FC<TextProps>;
484
478
 
485
479
  declare const Badge: React__default.FC<BadgeProps>;
486
480
 
487
- declare function groupEventsToMessages(events: Event[]): Message[];
488
-
489
- export { AccountButton, type AccountButtonProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, Badge, Box, Button, Card, Chart, ChatHeader, type ChatHeaderProps, Checkbox, Col, Composer, type ComposerOption, type ComposerOptionGroup, CreateThreadButton, type CreateThreadButtonProps, CreateThreadNavItem, type CreateThreadNavItemProps, Divider, Dropdown, type DropdownProps, Form, FullChat, type FullChatProps, Heading, Image, Input, Label, List, ListItem, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, type Message, PopupChat, type PopupChatProps, RadioGroup, Row, type ScreenSize, Select, Sidebar, SidebarContext, type SidebarContextValue, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarToggle, type SidebarToggleProps, Spacer, type StarterPrompt, Text, Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadPopover, type ThreadPopoverProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, WelcomeScreen, type WelcomeScreenProps, groupEventsToMessages, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
481
+ export { AccountButton, type AccountButtonProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, Badge, Box, Button, Card, Chart, ChatHeader, type ChatHeaderProps, Checkbox, Col, Composer, type ComposerOption, type ComposerOptionGroup, CreateThreadButton, type CreateThreadButtonProps, CreateThreadNavItem, type CreateThreadNavItemProps, Divider, Dropdown, type DropdownProps, Form, FullChat, type FullChatProps, Heading, Image, Input, Label, List, ListItem, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, PopupChat, type PopupChatProps, RadioGroup, Row, type ScreenSize, Select, Sidebar, SidebarContext, type SidebarContextValue, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarToggle, type SidebarToggleProps, Spacer, type StarterPrompt, Text, Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadPopover, type ThreadPopoverProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, WelcomeScreen, type WelcomeScreenProps, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
package/dist/index.d.ts CHANGED
@@ -1,10 +1,26 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { ReactNode, CSSProperties } from 'react';
3
3
  import { ClientState, MelonyClient } from 'melony/client';
4
- import { Role, Event, Config, UINode, UIContract } from 'melony';
4
+ import { Message, Event, Config, UINode, UIContract } from 'melony';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
6
  import * as react_jsx_runtime from 'react/jsx-runtime';
7
7
 
8
+ interface MelonyContextValue extends ClientState {
9
+ messages: Message[];
10
+ sendEvent: (event: Event) => Promise<void>;
11
+ reset: (events?: Event[]) => void;
12
+ client: MelonyClient;
13
+ config?: Config;
14
+ }
15
+ declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
16
+ interface MelonyProviderProps {
17
+ children: ReactNode;
18
+ client: MelonyClient;
19
+ initialEvents?: Event[];
20
+ queryClient?: QueryClient;
21
+ }
22
+ declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
23
+
8
24
  interface User {
9
25
  id?: string;
10
26
  uid: string;
@@ -16,12 +32,6 @@ interface User {
16
32
  lastSignIn?: string | null;
17
33
  emailVerified?: boolean;
18
34
  }
19
- interface Message {
20
- role: Role;
21
- content: Event[];
22
- runId?: string;
23
- threadId?: string;
24
- }
25
35
  interface ThreadData {
26
36
  id: string;
27
37
  title?: string;
@@ -57,22 +67,6 @@ interface ThreadService {
57
67
  getEvents: (threadId: string) => Promise<Event[]>;
58
68
  }
59
69
 
60
- interface MelonyContextValue extends ClientState {
61
- messages: Message[];
62
- sendEvent: (event: Event) => Promise<void>;
63
- reset: (events?: Event[]) => void;
64
- client: MelonyClient;
65
- config?: Config;
66
- }
67
- declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
68
- interface MelonyProviderProps {
69
- children: ReactNode;
70
- client: MelonyClient;
71
- initialEvents?: Event[];
72
- queryClient?: QueryClient;
73
- }
74
- declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
75
-
76
70
  interface WelcomeScreenProps {
77
71
  title?: string;
78
72
  description?: string;
@@ -484,6 +478,4 @@ declare const Text: React__default.FC<TextProps>;
484
478
 
485
479
  declare const Badge: React__default.FC<BadgeProps>;
486
480
 
487
- declare function groupEventsToMessages(events: Event[]): Message[];
488
-
489
- export { AccountButton, type AccountButtonProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, Badge, Box, Button, Card, Chart, ChatHeader, type ChatHeaderProps, Checkbox, Col, Composer, type ComposerOption, type ComposerOptionGroup, CreateThreadButton, type CreateThreadButtonProps, CreateThreadNavItem, type CreateThreadNavItemProps, Divider, Dropdown, type DropdownProps, Form, FullChat, type FullChatProps, Heading, Image, Input, Label, List, ListItem, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, type Message, PopupChat, type PopupChatProps, RadioGroup, Row, type ScreenSize, Select, Sidebar, SidebarContext, type SidebarContextValue, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarToggle, type SidebarToggleProps, Spacer, type StarterPrompt, Text, Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadPopover, type ThreadPopoverProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, WelcomeScreen, type WelcomeScreenProps, groupEventsToMessages, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
481
+ export { AccountButton, type AccountButtonProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, Badge, Box, Button, Card, Chart, ChatHeader, type ChatHeaderProps, Checkbox, Col, Composer, type ComposerOption, type ComposerOptionGroup, CreateThreadButton, type CreateThreadButtonProps, CreateThreadNavItem, type CreateThreadNavItemProps, Divider, Dropdown, type DropdownProps, Form, FullChat, type FullChatProps, Heading, Image, Input, Label, List, ListItem, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, PopupChat, type PopupChatProps, RadioGroup, Row, type ScreenSize, Select, Sidebar, SidebarContext, type SidebarContextValue, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarToggle, type SidebarToggleProps, Spacer, type StarterPrompt, Text, Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadPopover, type ThreadPopoverProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, WelcomeScreen, type WelcomeScreenProps, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as React11 from 'react';
2
2
  import React11__default, { createContext, useState, useContext, useCallback, useEffect, useMemo, useRef } from 'react';
3
+ import { convertEventsToMessages } from 'melony';
3
4
  import { NuqsAdapter } from 'nuqs/adapters/react';
4
5
  import { QueryClient, QueryClientProvider, useQueryClient, useQuery, useMutation } from '@tanstack/react-query';
5
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -21,31 +22,6 @@ import { createPortal } from 'react-dom';
21
22
  import { useHotkeys } from 'react-hotkeys-hook';
22
23
 
23
24
  // src/providers/melony-provider.tsx
24
-
25
- // src/lib/group-events-to-messages.ts
26
- function groupEventsToMessages(events) {
27
- if (events.length === 0) return [];
28
- const messages = [];
29
- let currentMessage = null;
30
- for (const event of events) {
31
- const role = event.role || "assistant";
32
- const runId = event.runId;
33
- if (!currentMessage || currentMessage.role !== role || runId && currentMessage.runId && runId !== currentMessage.runId) {
34
- currentMessage = {
35
- role,
36
- content: [event],
37
- runId
38
- };
39
- messages.push(currentMessage);
40
- } else {
41
- currentMessage.content.push(event);
42
- if (!currentMessage.runId && runId) {
43
- currentMessage.runId = runId;
44
- }
45
- }
46
- }
47
- return messages;
48
- }
49
25
  var MelonyContext = createContext(
50
26
  void 0
51
27
  );
@@ -143,7 +119,7 @@ var MelonyContextProviderInner = ({
143
119
  const value = useMemo(
144
120
  () => ({
145
121
  ...state,
146
- messages: groupEventsToMessages(state.events),
122
+ messages: convertEventsToMessages(state.events),
147
123
  sendEvent,
148
124
  reset,
149
125
  client,
@@ -2812,25 +2788,16 @@ function MessageContent({ events }) {
2812
2788
  }
2813
2789
  function MessageBubble({ message }) {
2814
2790
  const isUser = message.role === "user";
2815
- return /* @__PURE__ */ jsx(
2791
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col", isUser ? "items-end" : "items-start"), children: /* @__PURE__ */ jsx(
2816
2792
  "div",
2817
2793
  {
2818
2794
  className: cn(
2819
- "flex flex-col",
2820
- isUser ? "items-end" : "items-start"
2795
+ "flex flex-col items-start max-w-[85%] rounded-2xl px-4 py-2 space-y-4 whitespace-pre-wrap",
2796
+ isUser ? "bg-primary text-primary-foreground" : "px-0 py-0 text-foreground"
2821
2797
  ),
2822
- children: /* @__PURE__ */ jsx(
2823
- "div",
2824
- {
2825
- className: cn(
2826
- "flex flex-col items-start max-w-[85%] rounded-2xl px-4 py-2 space-y-4 whitespace-pre-wrap",
2827
- isUser ? "bg-primary text-primary-foreground" : "px-0 py-0 text-foreground"
2828
- ),
2829
- children: /* @__PURE__ */ jsx(MessageContent, { events: message.content })
2830
- }
2831
- )
2798
+ children: /* @__PURE__ */ jsx(MessageContent, { events: message.content })
2832
2799
  }
2833
- );
2800
+ ) });
2834
2801
  }
2835
2802
  function LoadingIndicator({ status }) {
2836
2803
  const [isExpanded, setIsExpanded] = useState(false);
@@ -2913,17 +2880,15 @@ function Thread({
2913
2880
  const hasOptions = state && Object.keys(state).filter((k) => k !== "threadId").length > 0;
2914
2881
  if (!text && !hasFiles && !hasOptions || isLoading) return;
2915
2882
  if (!overrideInput) setInput("");
2916
- await sendEvent(
2917
- {
2918
- type: "text",
2919
- role: "user",
2920
- data: { content: text || "" },
2921
- state: {
2922
- ...state,
2923
- threadId: activeThreadId ?? void 0
2924
- }
2883
+ await sendEvent({
2884
+ type: "text",
2885
+ role: "user",
2886
+ data: { content: text || "" },
2887
+ state: {
2888
+ ...state,
2889
+ threadId: activeThreadId ?? void 0
2925
2890
  }
2926
- );
2891
+ });
2927
2892
  };
2928
2893
  const handleStarterPromptClick = (prompt) => {
2929
2894
  if (onStarterPromptClick) {
@@ -3655,6 +3620,6 @@ var CreateThreadNavItem = ({
3655
3620
  );
3656
3621
  };
3657
3622
 
3658
- export { AccountButton, AuthContext, AuthProvider, Badge2 as Badge, Box, Button2 as Button, Card2 as Card, Chart, ChatHeader, Checkbox, Col, Composer, CreateThreadButton, CreateThreadNavItem, Divider, Dropdown, Form, FullChat, Heading, Image, Input2 as Input, Label2 as Label, List, ListItem, MelonyContext, MelonyProvider, PopupChat, RadioGroup, Row, Select2 as Select, Sidebar, SidebarContext, SidebarProvider, SidebarToggle, Spacer, Text, Textarea2 as Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, ThreadList, ThreadPopover, ThreadProvider, UIRenderer, WelcomeScreen, groupEventsToMessages, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
3623
+ export { AccountButton, AuthContext, AuthProvider, Badge2 as Badge, Box, Button2 as Button, Card2 as Card, Chart, ChatHeader, Checkbox, Col, Composer, CreateThreadButton, CreateThreadNavItem, Divider, Dropdown, Form, FullChat, Heading, Image, Input2 as Input, Label2 as Label, List, ListItem, MelonyContext, MelonyProvider, PopupChat, RadioGroup, Row, Select2 as Select, Sidebar, SidebarContext, SidebarProvider, SidebarToggle, Spacer, Text, Textarea2 as Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, ThreadList, ThreadPopover, ThreadProvider, UIRenderer, WelcomeScreen, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
3659
3624
  //# sourceMappingURL=index.js.map
3660
3625
  //# sourceMappingURL=index.js.map