@melony/react 0.1.15 → 0.1.18
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 +85 -79
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +30 -24
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React10 = require('react');
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
var client = require('melony/client');
|
|
6
6
|
var clsx = require('clsx');
|
|
@@ -37,7 +37,7 @@ function _interopNamespace(e) {
|
|
|
37
37
|
return Object.freeze(n);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var React10__namespace = /*#__PURE__*/_interopNamespace(React10);
|
|
41
41
|
var ICONS__namespace = /*#__PURE__*/_interopNamespace(ICONS);
|
|
42
42
|
|
|
43
43
|
// src/providers/melony-provider.tsx
|
|
@@ -66,7 +66,7 @@ function groupEventsToMessages(events) {
|
|
|
66
66
|
}
|
|
67
67
|
return messages;
|
|
68
68
|
}
|
|
69
|
-
var MelonyContext =
|
|
69
|
+
var MelonyContext = React10.createContext(
|
|
70
70
|
void 0
|
|
71
71
|
);
|
|
72
72
|
var MelonyClientProvider = ({
|
|
@@ -74,20 +74,20 @@ var MelonyClientProvider = ({
|
|
|
74
74
|
client,
|
|
75
75
|
initialEvents
|
|
76
76
|
}) => {
|
|
77
|
-
const [state, setState] =
|
|
78
|
-
|
|
77
|
+
const [state, setState] = React10.useState(client.getState());
|
|
78
|
+
React10.useEffect(() => {
|
|
79
79
|
if (initialEvents && initialEvents.length > 0 && client.getState().events.length === 0) {
|
|
80
80
|
client.reset(initialEvents);
|
|
81
81
|
}
|
|
82
82
|
}, [client, initialEvents]);
|
|
83
|
-
|
|
83
|
+
React10.useEffect(() => {
|
|
84
84
|
setState(client.getState());
|
|
85
85
|
const unsubscribe = client.subscribe(setState);
|
|
86
86
|
return () => {
|
|
87
87
|
unsubscribe();
|
|
88
88
|
};
|
|
89
89
|
}, [client]);
|
|
90
|
-
const sendEvent =
|
|
90
|
+
const sendEvent = React10.useCallback(
|
|
91
91
|
async (event, options) => {
|
|
92
92
|
const generator = client.sendEvent(event, options);
|
|
93
93
|
for await (const _ of generator) {
|
|
@@ -95,11 +95,11 @@ var MelonyClientProvider = ({
|
|
|
95
95
|
},
|
|
96
96
|
[client]
|
|
97
97
|
);
|
|
98
|
-
const reset =
|
|
98
|
+
const reset = React10.useCallback(
|
|
99
99
|
(events) => client.reset(events),
|
|
100
100
|
[client]
|
|
101
101
|
);
|
|
102
|
-
const value =
|
|
102
|
+
const value = React10.useMemo(
|
|
103
103
|
() => ({
|
|
104
104
|
...state,
|
|
105
105
|
messages: groupEventsToMessages(state.events),
|
|
@@ -111,16 +111,16 @@ var MelonyClientProvider = ({
|
|
|
111
111
|
);
|
|
112
112
|
return /* @__PURE__ */ jsxRuntime.jsx(MelonyContext.Provider, { value, children });
|
|
113
113
|
};
|
|
114
|
-
var AuthContext =
|
|
114
|
+
var AuthContext = React10.createContext(
|
|
115
115
|
void 0
|
|
116
116
|
);
|
|
117
117
|
var AuthProvider = ({
|
|
118
118
|
children,
|
|
119
119
|
service
|
|
120
120
|
}) => {
|
|
121
|
-
const [user, setUser] =
|
|
122
|
-
const [isLoading, setIsLoading] =
|
|
123
|
-
const fetchMe =
|
|
121
|
+
const [user, setUser] = React10.useState(null);
|
|
122
|
+
const [isLoading, setIsLoading] = React10.useState(true);
|
|
123
|
+
const fetchMe = React10.useCallback(async () => {
|
|
124
124
|
setIsLoading(true);
|
|
125
125
|
try {
|
|
126
126
|
const userData = await service.getMe();
|
|
@@ -132,13 +132,13 @@ var AuthProvider = ({
|
|
|
132
132
|
setIsLoading(false);
|
|
133
133
|
}
|
|
134
134
|
}, [service]);
|
|
135
|
-
|
|
135
|
+
React10.useEffect(() => {
|
|
136
136
|
fetchMe();
|
|
137
137
|
}, [fetchMe]);
|
|
138
|
-
const login =
|
|
138
|
+
const login = React10.useCallback(() => {
|
|
139
139
|
service.login();
|
|
140
140
|
}, [service]);
|
|
141
|
-
const logout =
|
|
141
|
+
const logout = React10.useCallback(async () => {
|
|
142
142
|
try {
|
|
143
143
|
await service.logout();
|
|
144
144
|
setUser(null);
|
|
@@ -174,7 +174,7 @@ var AuthProvider = ({
|
|
|
174
174
|
}
|
|
175
175
|
return /* @__PURE__ */ jsxRuntime.jsx(AuthContext.Provider, { value, children });
|
|
176
176
|
};
|
|
177
|
-
var ThreadContext =
|
|
177
|
+
var ThreadContext = React10.createContext(
|
|
178
178
|
void 0
|
|
179
179
|
);
|
|
180
180
|
var ThreadProvider = ({
|
|
@@ -182,17 +182,17 @@ var ThreadProvider = ({
|
|
|
182
182
|
service,
|
|
183
183
|
initialThreadId: providedInitialThreadId
|
|
184
184
|
}) => {
|
|
185
|
-
const defaultInitialThreadId =
|
|
185
|
+
const defaultInitialThreadId = React10.useMemo(() => client.generateId(), []);
|
|
186
186
|
const initialThreadId = providedInitialThreadId || defaultInitialThreadId;
|
|
187
|
-
const [threads, setThreads] =
|
|
188
|
-
const [activeThreadId, setActiveThreadId] =
|
|
187
|
+
const [threads, setThreads] = React10.useState([]);
|
|
188
|
+
const [activeThreadId, setActiveThreadId] = React10.useState(
|
|
189
189
|
initialThreadId
|
|
190
190
|
);
|
|
191
|
-
const [isLoading, setIsLoading] =
|
|
192
|
-
const [error, setError] =
|
|
193
|
-
const [threadEvents, setThreadEvents] =
|
|
194
|
-
const [isLoadingEvents, setIsLoadingEvents] =
|
|
195
|
-
const fetchThreads =
|
|
191
|
+
const [isLoading, setIsLoading] = React10.useState(true);
|
|
192
|
+
const [error, setError] = React10.useState(null);
|
|
193
|
+
const [threadEvents, setThreadEvents] = React10.useState([]);
|
|
194
|
+
const [isLoadingEvents, setIsLoadingEvents] = React10.useState(false);
|
|
195
|
+
const fetchThreads = React10.useCallback(async () => {
|
|
196
196
|
setIsLoading(true);
|
|
197
197
|
setError(null);
|
|
198
198
|
try {
|
|
@@ -206,13 +206,13 @@ var ThreadProvider = ({
|
|
|
206
206
|
setIsLoading(false);
|
|
207
207
|
}
|
|
208
208
|
}, [service]);
|
|
209
|
-
|
|
209
|
+
React10.useEffect(() => {
|
|
210
210
|
fetchThreads();
|
|
211
211
|
}, [fetchThreads]);
|
|
212
|
-
const selectThread =
|
|
212
|
+
const selectThread = React10.useCallback((threadId) => {
|
|
213
213
|
setActiveThreadId(threadId);
|
|
214
214
|
}, []);
|
|
215
|
-
const createThread =
|
|
215
|
+
const createThread = React10.useCallback(async () => {
|
|
216
216
|
const newId = service.createThread ? await service.createThread() : client.generateId();
|
|
217
217
|
const newThread = {
|
|
218
218
|
id: newId,
|
|
@@ -222,7 +222,7 @@ var ThreadProvider = ({
|
|
|
222
222
|
setActiveThreadId(newId);
|
|
223
223
|
return newId;
|
|
224
224
|
}, [service]);
|
|
225
|
-
const deleteThread =
|
|
225
|
+
const deleteThread = React10.useCallback(
|
|
226
226
|
async (threadId) => {
|
|
227
227
|
try {
|
|
228
228
|
await service.deleteThread(threadId);
|
|
@@ -244,10 +244,10 @@ var ThreadProvider = ({
|
|
|
244
244
|
},
|
|
245
245
|
[service]
|
|
246
246
|
);
|
|
247
|
-
const refreshThreads =
|
|
247
|
+
const refreshThreads = React10.useCallback(async () => {
|
|
248
248
|
await fetchThreads();
|
|
249
249
|
}, [fetchThreads]);
|
|
250
|
-
|
|
250
|
+
React10.useEffect(() => {
|
|
251
251
|
if (!activeThreadId) {
|
|
252
252
|
setThreadEvents([]);
|
|
253
253
|
setIsLoadingEvents(false);
|
|
@@ -277,7 +277,7 @@ var ThreadProvider = ({
|
|
|
277
277
|
cancelled = true;
|
|
278
278
|
};
|
|
279
279
|
}, [activeThreadId, service]);
|
|
280
|
-
const value =
|
|
280
|
+
const value = React10.useMemo(
|
|
281
281
|
() => ({
|
|
282
282
|
threads,
|
|
283
283
|
activeThreadId,
|
|
@@ -305,11 +305,11 @@ var ThreadProvider = ({
|
|
|
305
305
|
);
|
|
306
306
|
return /* @__PURE__ */ jsxRuntime.jsx(ThreadContext.Provider, { value, children });
|
|
307
307
|
};
|
|
308
|
-
var ThemeContext =
|
|
308
|
+
var ThemeContext = React10.createContext(void 0);
|
|
309
309
|
function ThemeProvider({ children }) {
|
|
310
|
-
const [theme, setThemeState] =
|
|
311
|
-
const [resolvedTheme, setResolvedTheme] =
|
|
312
|
-
|
|
310
|
+
const [theme, setThemeState] = React10.useState("system");
|
|
311
|
+
const [resolvedTheme, setResolvedTheme] = React10.useState("light");
|
|
312
|
+
React10.useEffect(() => {
|
|
313
313
|
if (typeof window !== "undefined") {
|
|
314
314
|
const stored = localStorage.getItem("theme");
|
|
315
315
|
if (stored) {
|
|
@@ -317,7 +317,7 @@ function ThemeProvider({ children }) {
|
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
}, []);
|
|
320
|
-
|
|
320
|
+
React10.useEffect(() => {
|
|
321
321
|
if (typeof window !== "undefined") {
|
|
322
322
|
if (theme === "system") {
|
|
323
323
|
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
@@ -332,7 +332,7 @@ function ThemeProvider({ children }) {
|
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
334
|
}, [theme]);
|
|
335
|
-
|
|
335
|
+
React10.useEffect(() => {
|
|
336
336
|
if (typeof window !== "undefined") {
|
|
337
337
|
const root = document.documentElement;
|
|
338
338
|
if (resolvedTheme === "dark") {
|
|
@@ -351,20 +351,20 @@ function ThemeProvider({ children }) {
|
|
|
351
351
|
return /* @__PURE__ */ jsxRuntime.jsx(ThemeContext.Provider, { value: { theme, setTheme, resolvedTheme }, children });
|
|
352
352
|
}
|
|
353
353
|
function useTheme() {
|
|
354
|
-
const context =
|
|
354
|
+
const context = React10.useContext(ThemeContext);
|
|
355
355
|
if (context === void 0) {
|
|
356
356
|
throw new Error("useTheme must be used within a ThemeProvider");
|
|
357
357
|
}
|
|
358
358
|
return context;
|
|
359
359
|
}
|
|
360
360
|
var useMelony = (options) => {
|
|
361
|
-
const context =
|
|
361
|
+
const context = React10.useContext(MelonyContext);
|
|
362
362
|
if (context === void 0) {
|
|
363
363
|
throw new Error("useMelony must be used within a MelonyClientProvider");
|
|
364
364
|
}
|
|
365
365
|
const { client, reset } = context;
|
|
366
366
|
const { initialEvents } = options || {};
|
|
367
|
-
|
|
367
|
+
React10.useEffect(() => {
|
|
368
368
|
if (initialEvents && initialEvents.length > 0 && client.getState().events.length === 0) {
|
|
369
369
|
reset(initialEvents);
|
|
370
370
|
}
|
|
@@ -372,14 +372,14 @@ var useMelony = (options) => {
|
|
|
372
372
|
return context;
|
|
373
373
|
};
|
|
374
374
|
var useAuth = () => {
|
|
375
|
-
const context =
|
|
375
|
+
const context = React10.useContext(AuthContext);
|
|
376
376
|
if (context === void 0) {
|
|
377
377
|
throw new Error("useAuth must be used within an AuthProvider");
|
|
378
378
|
}
|
|
379
379
|
return context;
|
|
380
380
|
};
|
|
381
381
|
var useThreads = () => {
|
|
382
|
-
const context =
|
|
382
|
+
const context = React10.useContext(ThreadContext);
|
|
383
383
|
if (context === void 0) {
|
|
384
384
|
throw new Error("useThreads must be used within a ThreadProvider");
|
|
385
385
|
}
|
|
@@ -573,7 +573,7 @@ function Composer({
|
|
|
573
573
|
autoFocus = false,
|
|
574
574
|
defaultSelectedIds = []
|
|
575
575
|
}) {
|
|
576
|
-
const [selectedOptions, setSelectedOptions] =
|
|
576
|
+
const [selectedOptions, setSelectedOptions] = React10__namespace.default.useState(
|
|
577
577
|
() => new Set(defaultSelectedIds)
|
|
578
578
|
);
|
|
579
579
|
const toggleOption = (id, groupOptions, type = "multiple") => {
|
|
@@ -1187,9 +1187,9 @@ var Image = ({
|
|
|
1187
1187
|
className,
|
|
1188
1188
|
style
|
|
1189
1189
|
}) => {
|
|
1190
|
-
const [hasError, setHasError] =
|
|
1191
|
-
const [isLoading, setIsLoading] =
|
|
1192
|
-
const [open, setOpen] =
|
|
1190
|
+
const [hasError, setHasError] = React10.useState(false);
|
|
1191
|
+
const [isLoading, setIsLoading] = React10.useState(true);
|
|
1192
|
+
const [open, setOpen] = React10.useState(false);
|
|
1193
1193
|
const sizes = {
|
|
1194
1194
|
sm: "h-11",
|
|
1195
1195
|
md: "h-22",
|
|
@@ -1387,7 +1387,7 @@ var Chart = ({
|
|
|
1387
1387
|
className,
|
|
1388
1388
|
style
|
|
1389
1389
|
}) => {
|
|
1390
|
-
const [tooltip, setTooltip] =
|
|
1390
|
+
const [tooltip, setTooltip] = React10.useState(null);
|
|
1391
1391
|
if (!Array.isArray(data)) {
|
|
1392
1392
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 text-destructive border border-destructive/20 rounded-md bg-destructive/5", children: "Error: Chart data must be an array" });
|
|
1393
1393
|
}
|
|
@@ -2143,7 +2143,7 @@ var Button2 = ({
|
|
|
2143
2143
|
};
|
|
2144
2144
|
var Form = ({ children, onSubmitAction, className, style }) => {
|
|
2145
2145
|
const { sendEvent } = useMelony();
|
|
2146
|
-
const [isSubmitted, setIsSubmitted] =
|
|
2146
|
+
const [isSubmitted, setIsSubmitted] = React10.useState(false);
|
|
2147
2147
|
const handleSubmit = (e) => {
|
|
2148
2148
|
e.preventDefault();
|
|
2149
2149
|
if (isSubmitted) return;
|
|
@@ -2290,7 +2290,7 @@ function MessageBubble({ message }) {
|
|
|
2290
2290
|
);
|
|
2291
2291
|
}
|
|
2292
2292
|
function LoadingIndicator({ status }) {
|
|
2293
|
-
const [isExpanded, setIsExpanded] =
|
|
2293
|
+
const [isExpanded, setIsExpanded] = React10.useState(false);
|
|
2294
2294
|
const message = status?.message || "Processing...";
|
|
2295
2295
|
const details = status?.details;
|
|
2296
2296
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
@@ -2313,15 +2313,21 @@ function LoadingIndicator({ status }) {
|
|
|
2313
2313
|
function ErrorDisplay({ error }) {
|
|
2314
2314
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-destructive p-2 border border-destructive rounded-md bg-destructive/10", children: error.message });
|
|
2315
2315
|
}
|
|
2316
|
-
function MessageList({
|
|
2316
|
+
function MessageList({
|
|
2317
|
+
messages,
|
|
2318
|
+
isLoading,
|
|
2319
|
+
error,
|
|
2320
|
+
loadingStatus
|
|
2321
|
+
}) {
|
|
2317
2322
|
if (messages.length === 0) {
|
|
2318
2323
|
return null;
|
|
2319
2324
|
}
|
|
2320
|
-
const isTextStreaming =
|
|
2325
|
+
const isTextStreaming = React10.useMemo(() => {
|
|
2321
2326
|
if (messages.length === 0 || !isLoading) return false;
|
|
2322
2327
|
const lastMessage = messages[messages.length - 1];
|
|
2323
2328
|
return lastMessage.content.some((event) => event.type === "text-delta");
|
|
2324
2329
|
}, [messages, isLoading]);
|
|
2330
|
+
console.log("MESSAGES", messages);
|
|
2325
2331
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
2326
2332
|
messages.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx(MessageBubble, { message }, index)),
|
|
2327
2333
|
isLoading && !isTextStreaming && /* @__PURE__ */ jsxRuntime.jsx(LoadingIndicator, { status: loadingStatus }),
|
|
@@ -2338,9 +2344,9 @@ function Thread({
|
|
|
2338
2344
|
defaultSelectedIds
|
|
2339
2345
|
}) {
|
|
2340
2346
|
const { messages, isLoading, error, sendEvent, loadingStatus } = useMelony();
|
|
2341
|
-
const [input, setInput] =
|
|
2342
|
-
const messagesEndRef =
|
|
2343
|
-
|
|
2347
|
+
const [input, setInput] = React10.useState("");
|
|
2348
|
+
const messagesEndRef = React10.useRef(null);
|
|
2349
|
+
React10.useEffect(() => {
|
|
2344
2350
|
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
2345
2351
|
}, [messages]);
|
|
2346
2352
|
const handleSubmit = async (state, overrideInput) => {
|
|
@@ -2536,8 +2542,8 @@ function ChatPopup({
|
|
|
2536
2542
|
headerProps,
|
|
2537
2543
|
defaultSelectedIds
|
|
2538
2544
|
}) {
|
|
2539
|
-
const [isOpen, setIsOpen] =
|
|
2540
|
-
const [view, setView] =
|
|
2545
|
+
const [isOpen, setIsOpen] = React10.useState(defaultOpen);
|
|
2546
|
+
const [view, setView] = React10.useState("chat");
|
|
2541
2547
|
const { createThread } = useThreads();
|
|
2542
2548
|
const handleNewChat = async () => {
|
|
2543
2549
|
try {
|
|
@@ -2676,10 +2682,10 @@ function ChatFull({
|
|
|
2676
2682
|
autoFocus = false,
|
|
2677
2683
|
defaultSelectedIds
|
|
2678
2684
|
}) {
|
|
2679
|
-
const [internalLeftCollapsed, setInternalLeftCollapsed] =
|
|
2685
|
+
const [internalLeftCollapsed, setInternalLeftCollapsed] = React10.useState(
|
|
2680
2686
|
defaultLeftSidebarCollapsed
|
|
2681
2687
|
);
|
|
2682
|
-
const [internalRightCollapsed, setInternalRightCollapsed] =
|
|
2688
|
+
const [internalRightCollapsed, setInternalRightCollapsed] = React10.useState(
|
|
2683
2689
|
defaultRightSidebarCollapsed
|
|
2684
2690
|
);
|
|
2685
2691
|
const leftCollapsed = controlledLeftCollapsed !== void 0 ? controlledLeftCollapsed : internalLeftCollapsed;
|
|
@@ -2788,11 +2794,11 @@ function ChatFull({
|
|
|
2788
2794
|
] })
|
|
2789
2795
|
] });
|
|
2790
2796
|
}
|
|
2791
|
-
var PopoverContext =
|
|
2797
|
+
var PopoverContext = React10__namespace.createContext(
|
|
2792
2798
|
void 0
|
|
2793
2799
|
);
|
|
2794
2800
|
function usePopoverContext() {
|
|
2795
|
-
const context =
|
|
2801
|
+
const context = React10__namespace.useContext(PopoverContext);
|
|
2796
2802
|
if (!context) {
|
|
2797
2803
|
throw new Error("Popover components must be used within a Popover");
|
|
2798
2804
|
}
|
|
@@ -2804,10 +2810,10 @@ function Popover({
|
|
|
2804
2810
|
open: controlledOpen,
|
|
2805
2811
|
onOpenChange
|
|
2806
2812
|
}) {
|
|
2807
|
-
const [internalOpen, setInternalOpen] =
|
|
2808
|
-
const triggerRef =
|
|
2813
|
+
const [internalOpen, setInternalOpen] = React10__namespace.useState(defaultOpen);
|
|
2814
|
+
const triggerRef = React10__namespace.useRef(null);
|
|
2809
2815
|
const open = controlledOpen ?? internalOpen;
|
|
2810
|
-
const setOpen =
|
|
2816
|
+
const setOpen = React10__namespace.useCallback(
|
|
2811
2817
|
(newOpen) => {
|
|
2812
2818
|
if (controlledOpen === void 0) {
|
|
2813
2819
|
setInternalOpen(newOpen);
|
|
@@ -2816,7 +2822,7 @@ function Popover({
|
|
|
2816
2822
|
},
|
|
2817
2823
|
[controlledOpen, onOpenChange]
|
|
2818
2824
|
);
|
|
2819
|
-
const value =
|
|
2825
|
+
const value = React10__namespace.useMemo(
|
|
2820
2826
|
() => ({
|
|
2821
2827
|
open,
|
|
2822
2828
|
setOpen,
|
|
@@ -2826,15 +2832,15 @@ function Popover({
|
|
|
2826
2832
|
);
|
|
2827
2833
|
return /* @__PURE__ */ jsxRuntime.jsx(PopoverContext.Provider, { value, children });
|
|
2828
2834
|
}
|
|
2829
|
-
var PopoverTrigger =
|
|
2835
|
+
var PopoverTrigger = React10__namespace.forwardRef(
|
|
2830
2836
|
({ asChild, className, children, ...props }, ref) => {
|
|
2831
2837
|
const { setOpen, triggerRef } = usePopoverContext();
|
|
2832
2838
|
const handleClick = (e) => {
|
|
2833
2839
|
setOpen(true);
|
|
2834
2840
|
props.onClick?.(e);
|
|
2835
2841
|
};
|
|
2836
|
-
if (asChild &&
|
|
2837
|
-
return
|
|
2842
|
+
if (asChild && React10__namespace.isValidElement(children)) {
|
|
2843
|
+
return React10__namespace.cloneElement(children, {
|
|
2838
2844
|
ref: (node) => {
|
|
2839
2845
|
triggerRef.current = node;
|
|
2840
2846
|
if (typeof children.ref === "function") {
|
|
@@ -2866,7 +2872,7 @@ var PopoverTrigger = React11__namespace.forwardRef(
|
|
|
2866
2872
|
}
|
|
2867
2873
|
);
|
|
2868
2874
|
PopoverTrigger.displayName = "PopoverTrigger";
|
|
2869
|
-
var PopoverContent =
|
|
2875
|
+
var PopoverContent = React10__namespace.forwardRef(
|
|
2870
2876
|
({
|
|
2871
2877
|
className,
|
|
2872
2878
|
side = "bottom",
|
|
@@ -2877,9 +2883,9 @@ var PopoverContent = React11__namespace.forwardRef(
|
|
|
2877
2883
|
...props
|
|
2878
2884
|
}, ref) => {
|
|
2879
2885
|
const { open, setOpen, triggerRef } = usePopoverContext();
|
|
2880
|
-
const [position, setPosition] =
|
|
2881
|
-
const contentRef =
|
|
2882
|
-
|
|
2886
|
+
const [position, setPosition] = React10__namespace.useState({ top: 0, left: 0 });
|
|
2887
|
+
const contentRef = React10__namespace.useRef(null);
|
|
2888
|
+
React10__namespace.useEffect(() => {
|
|
2883
2889
|
if (!open || !triggerRef.current) return;
|
|
2884
2890
|
const updatePosition = () => {
|
|
2885
2891
|
if (!triggerRef.current || !contentRef.current) return;
|
|
@@ -2940,7 +2946,7 @@ var PopoverContent = React11__namespace.forwardRef(
|
|
|
2940
2946
|
window.removeEventListener("scroll", updatePosition, true);
|
|
2941
2947
|
};
|
|
2942
2948
|
}, [open, side, align, sideOffset, alignOffset, triggerRef]);
|
|
2943
|
-
|
|
2949
|
+
React10__namespace.useEffect(() => {
|
|
2944
2950
|
if (!open) return;
|
|
2945
2951
|
const handleClickOutside = (event) => {
|
|
2946
2952
|
if (contentRef.current && !contentRef.current.contains(event.target) && triggerRef.current && !triggerRef.current.contains(event.target)) {
|
|
@@ -2996,7 +3002,7 @@ var ThreadPopover = ({
|
|
|
2996
3002
|
emptyState,
|
|
2997
3003
|
onThreadSelect
|
|
2998
3004
|
}) => {
|
|
2999
|
-
const [isOpen, setIsOpen] =
|
|
3005
|
+
const [isOpen, setIsOpen] = React10__namespace.useState(false);
|
|
3000
3006
|
reactHotkeysHook.useHotkeys(
|
|
3001
3007
|
"h",
|
|
3002
3008
|
(e) => {
|
|
@@ -3051,7 +3057,7 @@ var CreateThreadButton = ({
|
|
|
3051
3057
|
onThreadCreated
|
|
3052
3058
|
}) => {
|
|
3053
3059
|
const { createThread } = useThreads();
|
|
3054
|
-
const [isCreating, setIsCreating] =
|
|
3060
|
+
const [isCreating, setIsCreating] = React10__namespace.useState(false);
|
|
3055
3061
|
const handleCreateThread = async () => {
|
|
3056
3062
|
if (isCreating) return;
|
|
3057
3063
|
try {
|
|
@@ -3177,10 +3183,10 @@ var AccountDialog = ({
|
|
|
3177
3183
|
size
|
|
3178
3184
|
}) => {
|
|
3179
3185
|
const { isLoading, isAuthenticated, user, login, logout } = useAuth();
|
|
3180
|
-
const [open, setOpen] =
|
|
3181
|
-
const [accountInfoOpen, setAccountInfoOpen] =
|
|
3182
|
-
const [error, setError] =
|
|
3183
|
-
const initials =
|
|
3186
|
+
const [open, setOpen] = React10__namespace.useState(false);
|
|
3187
|
+
const [accountInfoOpen, setAccountInfoOpen] = React10__namespace.useState(false);
|
|
3188
|
+
const [error, setError] = React10__namespace.useState(null);
|
|
3189
|
+
const initials = React10__namespace.useMemo(() => {
|
|
3184
3190
|
const name = user?.displayName || user?.name;
|
|
3185
3191
|
if (!name) return "";
|
|
3186
3192
|
return name.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
|