@assistant-ui/react-native 0.1.44 → 0.1.46

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.
Files changed (89) hide show
  1. package/LICENSE +1 -1
  2. package/dist/index.d.ts +4 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -3
  5. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  6. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  7. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  8. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  9. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  10. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
  11. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
  12. package/dist/primitives/attachment/AttachmentName.js.map +1 -1
  13. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
  14. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
  15. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
  16. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  17. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  18. package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
  19. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  20. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  21. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
  22. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  23. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  24. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  25. package/dist/primitives/composer/ComposerQuote.js.map +1 -1
  26. package/dist/primitives/composer/ComposerQuoteDismiss.js.map +1 -1
  27. package/dist/primitives/composer/ComposerQuoteText.js.map +1 -1
  28. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  29. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  30. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  31. package/dist/primitives/error/ErrorRoot.js.map +1 -1
  32. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  33. package/dist/primitives/message/MessageContent.js +43 -33
  34. package/dist/primitives/message/MessageContent.js.map +1 -1
  35. package/dist/primitives/message/MessageIf.js.map +1 -1
  36. package/dist/primitives/message/MessageParts.js.map +1 -1
  37. package/dist/primitives/message/MessageRoot.js.map +1 -1
  38. package/dist/primitives/message.d.ts +1 -0
  39. package/dist/primitives/message.d.ts.map +1 -1
  40. package/dist/primitives/message.js +3 -2
  41. package/dist/primitives/message.js.map +1 -1
  42. package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
  43. package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
  44. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
  45. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
  46. package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
  47. package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
  48. package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
  49. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  50. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  51. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  52. package/dist/primitives/thread/ThreadMessages.d.ts +7 -5
  53. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  54. package/dist/primitives/thread/ThreadMessages.js +109 -376
  55. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  56. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  57. package/dist/primitives/thread/ThreadRowsFlatList.d.ts +29 -0
  58. package/dist/primitives/thread/ThreadRowsFlatList.d.ts.map +1 -0
  59. package/dist/primitives/thread/ThreadRowsFlatList.js +226 -0
  60. package/dist/primitives/thread/ThreadRowsFlatList.js.map +1 -0
  61. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  62. package/dist/primitives/thread/flatListScroll.d.ts +52 -0
  63. package/dist/primitives/thread/flatListScroll.d.ts.map +1 -0
  64. package/dist/primitives/thread/flatListScroll.js +380 -0
  65. package/dist/primitives/thread/flatListScroll.js.map +1 -0
  66. package/dist/primitives/thread.d.ts +2 -0
  67. package/dist/primitives/thread.d.ts.map +1 -1
  68. package/dist/primitives/thread.js +5 -2
  69. package/dist/primitives/thread.js.map +1 -1
  70. package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
  71. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  72. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
  73. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  74. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
  75. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  76. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  77. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  78. package/package.json +13 -9
  79. package/src/index.ts +18 -1
  80. package/src/primitives/message/MessageContent.test.tsx +46 -1
  81. package/src/primitives/message/MessageContent.tsx +3 -1
  82. package/src/primitives/message.test.tsx +74 -0
  83. package/src/primitives/message.ts +1 -0
  84. package/src/primitives/thread/ThreadMessages.test.tsx +28 -1
  85. package/src/primitives/thread/ThreadMessages.tsx +49 -343
  86. package/src/primitives/thread/ThreadRowsFlatList.test.tsx +253 -0
  87. package/src/primitives/thread/ThreadRowsFlatList.tsx +159 -0
  88. package/src/primitives/thread/flatListScroll.ts +467 -0
  89. package/src/primitives/thread.ts +5 -0
@@ -0,0 +1,380 @@
1
+ import { useAui, useAuiEvent, useAuiState } from "@assistant-ui/store";
2
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
+ import "react-native";
4
+ import { useCallback, useEffect, useRef } from "@assistant-ui/tap/react-shim";
5
+ //#region src/primitives/thread/flatListScroll.ts
6
+ const AT_BOTTOM_THRESHOLD = 4;
7
+ /** `history` when given, else the runtime's earlier-message paging. */
8
+ const useThreadHistory = (history) => {
9
+ const $ = c(4);
10
+ const aui = useAui();
11
+ const hasEarlier = useAuiState(_temp);
12
+ const isLoadingEarlier = useAuiState(_temp2);
13
+ let t0;
14
+ if ($[0] !== aui || $[1] !== hasEarlier || $[2] !== isLoadingEarlier) {
15
+ t0 = hasEarlier || isLoadingEarlier ? {
16
+ hasMore: hasEarlier,
17
+ isLoadingMore: isLoadingEarlier,
18
+ loadMore: () => {
19
+ aui.thread.loadEarlier();
20
+ }
21
+ } : void 0;
22
+ $[0] = aui;
23
+ $[1] = hasEarlier;
24
+ $[2] = isLoadingEarlier;
25
+ $[3] = t0;
26
+ } else t0 = $[3];
27
+ return history ?? t0;
28
+ };
29
+ const useHistoryLoad = (history, onReached) => {
30
+ const loadRequestedRef = useRef(false);
31
+ const hasMore = history?.hasMore ?? false;
32
+ const isLoadingMore = history?.isLoadingMore ?? false;
33
+ useEffect(() => {
34
+ loadRequestedRef.current = isLoadingMore;
35
+ });
36
+ const handleReached = useCallback((info) => {
37
+ onReached?.(info);
38
+ if (loadRequestedRef.current) return;
39
+ loadRequestedRef.current = true;
40
+ try {
41
+ history?.loadMore();
42
+ } catch (error) {
43
+ loadRequestedRef.current = false;
44
+ throw error;
45
+ }
46
+ }, [history, onReached]);
47
+ return {
48
+ canLoadMore: hasMore && !isLoadingMore,
49
+ handleReached
50
+ };
51
+ };
52
+ const useFlatListScrollProps = (t0) => {
53
+ const $ = c(18);
54
+ const { autoScroll, scrollToBottomOnInitialize, scrollToBottomOnRunStart, scrollToBottomOnThreadSwitch, onLayout, onScroll, onContentSizeChange, scrollEventThrottle, handleAutoScrollLayout, handleAutoScrollScroll, handleAutoScrollContentSizeChange } = t0;
55
+ let t1;
56
+ if ($[0] !== handleAutoScrollLayout || $[1] !== onLayout) {
57
+ t1 = (event) => {
58
+ handleAutoScrollLayout(event);
59
+ onLayout?.(event);
60
+ };
61
+ $[0] = handleAutoScrollLayout;
62
+ $[1] = onLayout;
63
+ $[2] = t1;
64
+ } else t1 = $[2];
65
+ const handleLayout = t1;
66
+ let t2;
67
+ if ($[3] !== handleAutoScrollScroll || $[4] !== onScroll) {
68
+ t2 = (event_0) => {
69
+ handleAutoScrollScroll(event_0);
70
+ onScroll?.(event_0);
71
+ };
72
+ $[3] = handleAutoScrollScroll;
73
+ $[4] = onScroll;
74
+ $[5] = t2;
75
+ } else t2 = $[5];
76
+ const handleScroll = t2;
77
+ let t3;
78
+ if ($[6] !== handleAutoScrollContentSizeChange || $[7] !== onContentSizeChange) {
79
+ t3 = (width, height) => {
80
+ handleAutoScrollContentSizeChange(width, height);
81
+ onContentSizeChange?.(width, height);
82
+ };
83
+ $[6] = handleAutoScrollContentSizeChange;
84
+ $[7] = onContentSizeChange;
85
+ $[8] = t3;
86
+ } else t3 = $[8];
87
+ const handleContentSizeChange = t3;
88
+ const scrollTracking = (autoScroll ?? true) || (scrollToBottomOnInitialize ?? true) || (scrollToBottomOnRunStart ?? true) || (scrollToBottomOnThreadSwitch ?? true);
89
+ let t4;
90
+ if ($[9] !== handleContentSizeChange || $[10] !== handleLayout || $[11] !== handleScroll || $[12] !== onContentSizeChange || $[13] !== onLayout || $[14] !== onScroll || $[15] !== scrollEventThrottle || $[16] !== scrollTracking) {
91
+ t4 = scrollTracking ? {
92
+ onContentSizeChange: handleContentSizeChange,
93
+ onLayout: handleLayout,
94
+ onScroll: handleScroll,
95
+ scrollEventThrottle: scrollEventThrottle ?? 16
96
+ } : {
97
+ ...onContentSizeChange && { onContentSizeChange },
98
+ ...onLayout && { onLayout },
99
+ ...onScroll && { onScroll },
100
+ ...scrollEventThrottle !== void 0 && { scrollEventThrottle }
101
+ };
102
+ $[9] = handleContentSizeChange;
103
+ $[10] = handleLayout;
104
+ $[11] = handleScroll;
105
+ $[12] = onContentSizeChange;
106
+ $[13] = onLayout;
107
+ $[14] = onScroll;
108
+ $[15] = scrollEventThrottle;
109
+ $[16] = scrollTracking;
110
+ $[17] = t4;
111
+ } else t4 = $[17];
112
+ return t4;
113
+ };
114
+ function getFlatListPagingProps(edge, history, canLoadMore, handleReached, { onStartReached, onStartReachedThreshold, onEndReached, onEndReachedThreshold }) {
115
+ const startProps = history ? {
116
+ ...canLoadMore ? { onStartReached: handleReached } : onStartReached ? { onStartReached } : {},
117
+ onStartReachedThreshold: onStartReachedThreshold ?? 1
118
+ } : {
119
+ ...onStartReached && { onStartReached },
120
+ ...onStartReachedThreshold !== void 0 && { onStartReachedThreshold }
121
+ };
122
+ const endProps = history ? {
123
+ ...canLoadMore ? { onEndReached: handleReached } : onEndReached ? { onEndReached } : {},
124
+ onEndReachedThreshold: onEndReachedThreshold ?? 1
125
+ } : {
126
+ ...onEndReached && { onEndReached },
127
+ ...onEndReachedThreshold !== void 0 && { onEndReachedThreshold }
128
+ };
129
+ return edge === "start" ? {
130
+ ...startProps,
131
+ ...onEndReached && { onEndReached },
132
+ ...onEndReachedThreshold !== void 0 && { onEndReachedThreshold }
133
+ } : {
134
+ ...onStartReached && { onStartReached },
135
+ ...onStartReachedThreshold !== void 0 && { onStartReachedThreshold },
136
+ ...endProps
137
+ };
138
+ }
139
+ const setForwardedRef = (ref, value) => {
140
+ if (typeof ref === "function") ref(value);
141
+ else if (ref) ref.current = value;
142
+ };
143
+ const useComposedFlatListRef = (forwardedRef) => {
144
+ const $ = c(4);
145
+ const flatListRef = useRef(null);
146
+ let t0;
147
+ if ($[0] !== forwardedRef) {
148
+ t0 = (node) => {
149
+ flatListRef.current = node;
150
+ setForwardedRef(forwardedRef, node);
151
+ };
152
+ $[0] = forwardedRef;
153
+ $[1] = t0;
154
+ } else t0 = $[1];
155
+ const setFlatListRef = t0;
156
+ let t1;
157
+ if ($[2] !== setFlatListRef) {
158
+ t1 = [flatListRef, setFlatListRef];
159
+ $[2] = setFlatListRef;
160
+ $[3] = t1;
161
+ } else t1 = $[3];
162
+ return t1;
163
+ };
164
+ const useFlatListAutoScroll = (t0) => {
165
+ const $ = c(35);
166
+ const { flatListRef, hasMessages, inverted: t1, horizontal: t2, autoScroll: t3, scrollToBottomOnRunStart: t4, scrollToBottomOnInitialize: t5, scrollToBottomOnThreadSwitch: t6 } = t0;
167
+ const inverted = t1 === void 0 ? false : t1;
168
+ const horizontal = t2 === void 0 ? false : t2;
169
+ const autoScroll = t3 === void 0 ? true : t3;
170
+ const scrollToBottomOnRunStart = t4 === void 0 ? true : t4;
171
+ const scrollToBottomOnInitialize = t5 === void 0 ? true : t5;
172
+ const scrollToBottomOnThreadSwitch = t6 === void 0 ? true : t6;
173
+ let t7;
174
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
175
+ t7 = {
176
+ contentHeight: 0,
177
+ viewportHeight: 0,
178
+ scrollY: 0
179
+ };
180
+ $[0] = t7;
181
+ } else t7 = $[0];
182
+ const metricsRef = useRef(t7);
183
+ const isAtBottomRef = useRef(true);
184
+ const lastScrollEventOffsetRef = useRef(0);
185
+ const initializeScrollRequestedRef = useRef(false);
186
+ const contentSizeVersionRef = useRef(0);
187
+ const pendingScrollToBottomRef = useRef(false);
188
+ let t8;
189
+ if ($[1] !== inverted) {
190
+ t8 = () => {
191
+ const { contentHeight, scrollY, viewportHeight } = metricsRef.current;
192
+ isAtBottomRef.current = inverted ? scrollY <= AT_BOTTOM_THRESHOLD : contentHeight <= viewportHeight || contentHeight - scrollY - viewportHeight <= AT_BOTTOM_THRESHOLD;
193
+ };
194
+ $[1] = inverted;
195
+ $[2] = t8;
196
+ } else t8 = $[2];
197
+ const updateIsAtBottom = t8;
198
+ let t9;
199
+ if ($[3] !== flatListRef || $[4] !== inverted) {
200
+ t9 = (animated) => {
201
+ const { contentHeight: contentHeight_0, viewportHeight: viewportHeight_0 } = metricsRef.current;
202
+ const offset = inverted ? 0 : Math.max(0, contentHeight_0 - viewportHeight_0);
203
+ metricsRef.current.scrollY = offset;
204
+ isAtBottomRef.current = true;
205
+ flatListRef.current?.scrollToOffset({
206
+ offset,
207
+ animated
208
+ });
209
+ };
210
+ $[3] = flatListRef;
211
+ $[4] = inverted;
212
+ $[5] = t9;
213
+ } else t9 = $[5];
214
+ const scrollToBottom = t9;
215
+ let t10;
216
+ if ($[6] !== autoScroll || $[7] !== horizontal || $[8] !== scrollToBottom || $[9] !== updateIsAtBottom) {
217
+ t10 = (event) => {
218
+ const wasAtBottom = isAtBottomRef.current;
219
+ const previousViewportHeight = metricsRef.current.viewportHeight;
220
+ const viewportHeight_1 = horizontal ? event.nativeEvent.layout.width : event.nativeEvent.layout.height;
221
+ metricsRef.current.viewportHeight = viewportHeight_1;
222
+ updateIsAtBottom();
223
+ const pending = pendingScrollToBottomRef.current;
224
+ if (pending && contentSizeVersionRef.current >= pending.minimumContentSizeVersion && viewportHeight_1 > 0) {
225
+ pendingScrollToBottomRef.current = false;
226
+ scrollToBottom(pending.animated);
227
+ return;
228
+ }
229
+ if (!wasAtBottom) return;
230
+ if (autoScroll && previousViewportHeight !== 0 && viewportHeight_1 !== previousViewportHeight) scrollToBottom(pending ? pending.animated : false);
231
+ else isAtBottomRef.current = true;
232
+ };
233
+ $[6] = autoScroll;
234
+ $[7] = horizontal;
235
+ $[8] = scrollToBottom;
236
+ $[9] = updateIsAtBottom;
237
+ $[10] = t10;
238
+ } else t10 = $[10];
239
+ const handleLayout = t10;
240
+ let t11;
241
+ if ($[11] !== horizontal || $[12] !== inverted || $[13] !== updateIsAtBottom) {
242
+ t11 = (event_0) => {
243
+ const { contentOffset, contentSize, layoutMeasurement } = event_0.nativeEvent;
244
+ const scrollOffset = horizontal ? contentOffset.x : contentOffset.y;
245
+ const previousEventOffset = lastScrollEventOffsetRef.current;
246
+ const wasPinnedToBottom = isAtBottomRef.current;
247
+ lastScrollEventOffsetRef.current = scrollOffset;
248
+ metricsRef.current = {
249
+ contentHeight: horizontal ? contentSize.width : contentSize.height,
250
+ viewportHeight: horizontal ? layoutMeasurement.width : layoutMeasurement.height,
251
+ scrollY: scrollOffset
252
+ };
253
+ updateIsAtBottom();
254
+ const upwardMove = inverted ? scrollOffset > previousEventOffset : scrollOffset < previousEventOffset;
255
+ if (wasPinnedToBottom && !upwardMove) isAtBottomRef.current = true;
256
+ if (!isAtBottomRef.current && upwardMove) pendingScrollToBottomRef.current = false;
257
+ };
258
+ $[11] = horizontal;
259
+ $[12] = inverted;
260
+ $[13] = updateIsAtBottom;
261
+ $[14] = t11;
262
+ } else t11 = $[14];
263
+ const handleScroll = t11;
264
+ let t12;
265
+ if ($[15] !== autoScroll || $[16] !== horizontal || $[17] !== scrollToBottom || $[18] !== updateIsAtBottom) {
266
+ t12 = (width, height) => {
267
+ const metrics = metricsRef.current;
268
+ const contentHeight_1 = horizontal ? width : height;
269
+ const previousContentHeight = metrics.contentHeight;
270
+ const wasAtBottom_0 = isAtBottomRef.current;
271
+ if (contentHeight_1 > 0) contentSizeVersionRef.current = contentSizeVersionRef.current + 1;
272
+ metrics.contentHeight = contentHeight_1;
273
+ updateIsAtBottom();
274
+ const pendingScroll = pendingScrollToBottomRef.current;
275
+ if (pendingScroll && contentSizeVersionRef.current >= pendingScroll.minimumContentSizeVersion && metrics.viewportHeight > 0) {
276
+ pendingScrollToBottomRef.current = false;
277
+ scrollToBottom(pendingScroll.animated);
278
+ return;
279
+ }
280
+ if (!autoScroll) return;
281
+ if (!wasAtBottom_0) return;
282
+ if (previousContentHeight === 0) return;
283
+ if (contentHeight_1 <= previousContentHeight) return;
284
+ scrollToBottom(false);
285
+ };
286
+ $[15] = autoScroll;
287
+ $[16] = horizontal;
288
+ $[17] = scrollToBottom;
289
+ $[18] = updateIsAtBottom;
290
+ $[19] = t12;
291
+ } else t12 = $[19];
292
+ const handleContentSizeChange = t12;
293
+ let t13;
294
+ let t14;
295
+ if ($[20] !== hasMessages || $[21] !== scrollToBottom || $[22] !== scrollToBottomOnInitialize) {
296
+ t13 = () => {
297
+ if (!scrollToBottomOnInitialize) return;
298
+ if (!hasMessages) {
299
+ initializeScrollRequestedRef.current = false;
300
+ return;
301
+ }
302
+ if (initializeScrollRequestedRef.current) return;
303
+ initializeScrollRequestedRef.current = true;
304
+ pendingScrollToBottomRef.current = {
305
+ animated: false,
306
+ minimumContentSizeVersion: Math.max(1, contentSizeVersionRef.current)
307
+ };
308
+ scrollToBottom(false);
309
+ };
310
+ t14 = [
311
+ hasMessages,
312
+ scrollToBottom,
313
+ scrollToBottomOnInitialize
314
+ ];
315
+ $[20] = hasMessages;
316
+ $[21] = scrollToBottom;
317
+ $[22] = scrollToBottomOnInitialize;
318
+ $[23] = t13;
319
+ $[24] = t14;
320
+ } else {
321
+ t13 = $[23];
322
+ t14 = $[24];
323
+ }
324
+ useEffect(t13, t14);
325
+ let t15;
326
+ if ($[25] !== scrollToBottom || $[26] !== scrollToBottomOnRunStart) {
327
+ t15 = () => {
328
+ if (!scrollToBottomOnRunStart) return;
329
+ pendingScrollToBottomRef.current = {
330
+ animated: true,
331
+ minimumContentSizeVersion: contentSizeVersionRef.current + 1
332
+ };
333
+ scrollToBottom(true);
334
+ };
335
+ $[25] = scrollToBottom;
336
+ $[26] = scrollToBottomOnRunStart;
337
+ $[27] = t15;
338
+ } else t15 = $[27];
339
+ useAuiEvent("thread.runStart", t15);
340
+ let t16;
341
+ if ($[28] !== scrollToBottom || $[29] !== scrollToBottomOnThreadSwitch) {
342
+ t16 = () => {
343
+ if (!scrollToBottomOnThreadSwitch) return;
344
+ initializeScrollRequestedRef.current = false;
345
+ lastScrollEventOffsetRef.current = 0;
346
+ pendingScrollToBottomRef.current = {
347
+ animated: false,
348
+ minimumContentSizeVersion: contentSizeVersionRef.current + 1
349
+ };
350
+ scrollToBottom(false);
351
+ };
352
+ $[28] = scrollToBottom;
353
+ $[29] = scrollToBottomOnThreadSwitch;
354
+ $[30] = t16;
355
+ } else t16 = $[30];
356
+ useAuiEvent("threads.selectionChanged", t16);
357
+ let t17;
358
+ if ($[31] !== handleContentSizeChange || $[32] !== handleLayout || $[33] !== handleScroll) {
359
+ t17 = {
360
+ handleLayout,
361
+ handleScroll,
362
+ handleContentSizeChange
363
+ };
364
+ $[31] = handleContentSizeChange;
365
+ $[32] = handleLayout;
366
+ $[33] = handleScroll;
367
+ $[34] = t17;
368
+ } else t17 = $[34];
369
+ return t17;
370
+ };
371
+ function _temp(s) {
372
+ return s.thread.hasEarlier;
373
+ }
374
+ function _temp2(s_0) {
375
+ return s_0.thread.isLoadingEarlier;
376
+ }
377
+ //#endregion
378
+ export { getFlatListPagingProps, setForwardedRef, useComposedFlatListRef, useFlatListAutoScroll, useFlatListScrollProps, useHistoryLoad, useThreadHistory };
379
+
380
+ //# sourceMappingURL=flatListScroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatListScroll.js","names":["ForwardedRef","RefObject","useCallback","useEffect","useMemo","useRef","FlatList","FlatListProps","LayoutChangeEvent","NativeScrollEvent","NativeSyntheticEvent","useAui","useAuiEvent","useAuiState","FlatListHistory","hasMore","isLoadingMore","loadMore","AT_BOTTOM_THRESHOLD","useThreadHistory","history","$","_c","aui","hasEarlier","_temp","isLoadingEarlier","_temp2","t0","thread","loadEarlier","undefined","runtimeHistory","useHistoryLoad","onReached","info","TInfo","loadRequestedRef","current","handleReached","error","canLoadMore","ScrollProps","Pick","useFlatListScrollProps","autoScroll","scrollToBottomOnInitialize","scrollToBottomOnRunStart","scrollToBottomOnThreadSwitch","onLayout","onScroll","onContentSizeChange","scrollEventThrottle","handleAutoScrollLayout","handleAutoScrollScroll","handleAutoScrollContentSizeChange","t1","event","handleLayout","t2","event_0","handleScroll","t3","width","height","handleContentSizeChange","scrollTracking","t4","PagingProps","T","StartReached","NonNullable","EndReached","getFlatListPagingProps","edge","userProps","onStartReached","onStartReachedThreshold","onEndReached","onEndReachedThreshold","startProps","endProps","setForwardedRef","ref","value","useComposedFlatListRef","forwardedRef","flatListRef","node","setFlatListRef","const","useFlatListAutoScroll","hasMessages","inverted","horizontal","t5","t6","t7","Symbol","for","contentHeight","viewportHeight","scrollY","metricsRef","isAtBottomRef","lastScrollEventOffsetRef","initializeScrollRequestedRef","contentSizeVersionRef","pendingScrollToBottomRef","t8","updateIsAtBottom","t9","animated","contentHeight_0","viewportHeight_0","offset","Math","max","scrollToOffset","scrollToBottom","t10","wasAtBottom","previousViewportHeight","viewportHeight_1","nativeEvent","layout","pending","minimumContentSizeVersion","t11","contentOffset","contentSize","layoutMeasurement","scrollOffset","x","y","previousEventOffset","wasPinnedToBottom","upwardMove","t12","metrics","contentHeight_1","previousContentHeight","wasAtBottom_0","pendingScroll","t13","t14","t15","t16","t17","s","s_0","_c","runtimeHistory"],"sources":["../../../src/primitives/thread/flatListScroll.ts"],"sourcesContent":["import {\n type ForwardedRef,\n type RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport {\n type FlatList,\n type FlatListProps,\n type LayoutChangeEvent,\n type NativeScrollEvent,\n type NativeSyntheticEvent,\n} from \"react-native\";\nimport { useAui, useAuiEvent, useAuiState } from \"@assistant-ui/store\";\n\nexport type FlatListHistory = {\n hasMore: boolean;\n isLoadingMore: boolean;\n loadMore: () => void;\n};\n\nconst AT_BOTTOM_THRESHOLD = 4;\n\n/** `history` when given, else the runtime's earlier-message paging. */\nexport const useThreadHistory = (history: FlatListHistory | undefined) => {\n const aui = useAui();\n const hasEarlier = useAuiState((s) => s.thread.hasEarlier);\n const isLoadingEarlier = useAuiState((s) => s.thread.isLoadingEarlier);\n const runtimeHistory = useMemo<FlatListHistory | undefined>(\n () =>\n hasEarlier || isLoadingEarlier\n ? {\n hasMore: hasEarlier,\n isLoadingMore: isLoadingEarlier,\n loadMore: () => {\n void aui.thread.loadEarlier();\n },\n }\n : undefined,\n [aui, hasEarlier, isLoadingEarlier],\n );\n return history ?? runtimeHistory;\n};\n\nexport const useHistoryLoad = <TInfo>(\n history: FlatListHistory | undefined,\n onReached: ((info: TInfo) => void) | undefined,\n) => {\n const loadRequestedRef = useRef(false);\n const hasMore = history?.hasMore ?? false;\n const isLoadingMore = history?.isLoadingMore ?? false;\n\n // The latch is scoped to one commit so a no-op load cannot disable paging.\n useEffect(() => {\n loadRequestedRef.current = isLoadingMore;\n });\n\n const handleReached = useCallback(\n (info: TInfo) => {\n onReached?.(info);\n if (loadRequestedRef.current) return;\n loadRequestedRef.current = true;\n try {\n history?.loadMore();\n } catch (error) {\n loadRequestedRef.current = false;\n throw error;\n }\n },\n [history, onReached],\n );\n\n return {\n canLoadMore: hasMore && !isLoadingMore,\n handleReached,\n };\n};\n\ntype ScrollProps = Pick<\n FlatListProps<unknown>,\n \"onLayout\" | \"onScroll\" | \"onContentSizeChange\" | \"scrollEventThrottle\"\n>;\n\nexport const useFlatListScrollProps = ({\n autoScroll,\n scrollToBottomOnInitialize,\n scrollToBottomOnRunStart,\n scrollToBottomOnThreadSwitch,\n onLayout,\n onScroll,\n onContentSizeChange,\n scrollEventThrottle,\n handleAutoScrollLayout,\n handleAutoScrollScroll,\n handleAutoScrollContentSizeChange,\n}: ScrollProps & {\n autoScroll: boolean | undefined;\n scrollToBottomOnInitialize: boolean | undefined;\n scrollToBottomOnRunStart: boolean | undefined;\n scrollToBottomOnThreadSwitch: boolean | undefined;\n handleAutoScrollLayout: NonNullable<ScrollProps[\"onLayout\"]>;\n handleAutoScrollScroll: NonNullable<ScrollProps[\"onScroll\"]>;\n handleAutoScrollContentSizeChange: NonNullable<\n ScrollProps[\"onContentSizeChange\"]\n >;\n}) => {\n const handleLayout = useCallback(\n (event: LayoutChangeEvent) => {\n handleAutoScrollLayout(event);\n onLayout?.(event);\n },\n [handleAutoScrollLayout, onLayout],\n );\n const handleScroll = useCallback(\n (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n handleAutoScrollScroll(event);\n onScroll?.(event);\n },\n [handleAutoScrollScroll, onScroll],\n );\n const handleContentSizeChange = useCallback(\n (width: number, height: number) => {\n handleAutoScrollContentSizeChange(width, height);\n onContentSizeChange?.(width, height);\n },\n [handleAutoScrollContentSizeChange, onContentSizeChange],\n );\n\n const scrollTracking =\n (autoScroll ?? true) ||\n (scrollToBottomOnInitialize ?? true) ||\n (scrollToBottomOnRunStart ?? true) ||\n (scrollToBottomOnThreadSwitch ?? true);\n\n return scrollTracking\n ? {\n onContentSizeChange: handleContentSizeChange,\n onLayout: handleLayout,\n onScroll: handleScroll,\n scrollEventThrottle: scrollEventThrottle ?? 16,\n }\n : {\n ...(onContentSizeChange && { onContentSizeChange }),\n ...(onLayout && { onLayout }),\n ...(onScroll && { onScroll }),\n ...(scrollEventThrottle !== undefined && { scrollEventThrottle }),\n };\n};\n\ntype PagingProps<T> = Pick<\n FlatListProps<T>,\n | \"onStartReached\"\n | \"onStartReachedThreshold\"\n | \"onEndReached\"\n | \"onEndReachedThreshold\"\n>;\n\ntype StartReached = NonNullable<FlatListProps<unknown>[\"onStartReached\"]>;\ntype EndReached = NonNullable<FlatListProps<unknown>[\"onEndReached\"]>;\n\nexport function getFlatListPagingProps<T>(\n edge: \"start\",\n history: FlatListHistory | undefined,\n canLoadMore: boolean,\n handleReached: StartReached,\n userProps: PagingProps<T>,\n): PagingProps<T>;\nexport function getFlatListPagingProps<T>(\n edge: \"end\",\n history: FlatListHistory | undefined,\n canLoadMore: boolean,\n handleReached: EndReached,\n userProps: PagingProps<T>,\n): PagingProps<T>;\nexport function getFlatListPagingProps<T>(\n edge: \"start\" | \"end\",\n history: FlatListHistory | undefined,\n canLoadMore: boolean,\n handleReached: StartReached & EndReached,\n userProps: PagingProps<T>,\n): PagingProps<T>;\nexport function getFlatListPagingProps<T>(\n edge: \"start\" | \"end\",\n history: FlatListHistory | undefined,\n canLoadMore: boolean,\n handleReached: StartReached | EndReached,\n {\n onStartReached,\n onStartReachedThreshold,\n onEndReached,\n onEndReachedThreshold,\n }: PagingProps<T>,\n): PagingProps<T> {\n const startProps = history\n ? {\n ...(canLoadMore\n ? { onStartReached: handleReached as StartReached }\n : onStartReached\n ? { onStartReached }\n : {}),\n onStartReachedThreshold: onStartReachedThreshold ?? 1,\n }\n : {\n ...(onStartReached && { onStartReached }),\n ...(onStartReachedThreshold !== undefined && {\n onStartReachedThreshold,\n }),\n };\n const endProps = history\n ? {\n ...(canLoadMore\n ? { onEndReached: handleReached as EndReached }\n : onEndReached\n ? { onEndReached }\n : {}),\n onEndReachedThreshold: onEndReachedThreshold ?? 1,\n }\n : {\n ...(onEndReached && { onEndReached }),\n ...(onEndReachedThreshold !== undefined && { onEndReachedThreshold }),\n };\n\n return edge === \"start\"\n ? {\n ...startProps,\n ...(onEndReached && { onEndReached }),\n ...(onEndReachedThreshold !== undefined && { onEndReachedThreshold }),\n }\n : {\n ...(onStartReached && { onStartReached }),\n ...(onStartReachedThreshold !== undefined && {\n onStartReachedThreshold,\n }),\n ...endProps,\n };\n}\n\nexport const setForwardedRef = <T>(ref: ForwardedRef<T>, value: T | null) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n};\n\nexport const useComposedFlatListRef = <T>(\n forwardedRef: ForwardedRef<FlatList<T>>,\n) => {\n const flatListRef = useRef<FlatList<T> | null>(null);\n\n const setFlatListRef = useCallback(\n (node: FlatList<T> | null) => {\n flatListRef.current = node;\n setForwardedRef(forwardedRef, node);\n },\n [forwardedRef],\n );\n\n return [flatListRef, setFlatListRef] as const;\n};\n\nexport const useFlatListAutoScroll = <T>({\n flatListRef,\n hasMessages,\n inverted = false,\n horizontal = false,\n autoScroll = true,\n scrollToBottomOnRunStart = true,\n scrollToBottomOnInitialize = true,\n scrollToBottomOnThreadSwitch = true,\n}: {\n flatListRef: RefObject<FlatList<T> | null>;\n hasMessages: boolean;\n inverted?: boolean | undefined;\n horizontal?: boolean | null | undefined;\n autoScroll?: boolean | undefined;\n scrollToBottomOnRunStart?: boolean | undefined;\n scrollToBottomOnInitialize?: boolean | undefined;\n scrollToBottomOnThreadSwitch?: boolean | undefined;\n}) => {\n const metricsRef = useRef({\n contentHeight: 0,\n viewportHeight: 0,\n scrollY: 0,\n });\n const isAtBottomRef = useRef(true);\n const lastScrollEventOffsetRef = useRef(0);\n const initializeScrollRequestedRef = useRef(false);\n const contentSizeVersionRef = useRef(0);\n const pendingScrollToBottomRef = useRef<\n | false\n | {\n animated: boolean;\n minimumContentSizeVersion: number;\n }\n >(false);\n\n const updateIsAtBottom = useCallback(() => {\n const { contentHeight, scrollY, viewportHeight } = metricsRef.current;\n isAtBottomRef.current = inverted\n ? scrollY <= AT_BOTTOM_THRESHOLD\n : contentHeight <= viewportHeight ||\n contentHeight - scrollY - viewportHeight <= AT_BOTTOM_THRESHOLD;\n }, [inverted]);\n\n // Commanding a scroll records the intended position immediately; the\n // native scroll echo is bridged and throttled, so waiting for it lets a\n // fast stream observe stale metrics and drop out of following.\n const scrollToBottom = useCallback(\n (animated: boolean) => {\n const { contentHeight, viewportHeight } = metricsRef.current;\n const offset = inverted ? 0 : Math.max(0, contentHeight - viewportHeight);\n metricsRef.current.scrollY = offset;\n isAtBottomRef.current = true;\n flatListRef.current?.scrollToOffset({ offset, animated });\n },\n [flatListRef, inverted],\n );\n\n const handleLayout = useCallback(\n (event: LayoutChangeEvent) => {\n const wasAtBottom = isAtBottomRef.current;\n const previousViewportHeight = metricsRef.current.viewportHeight;\n const viewportHeight = horizontal\n ? event.nativeEvent.layout.width\n : event.nativeEvent.layout.height;\n metricsRef.current.viewportHeight = viewportHeight;\n updateIsAtBottom();\n const pending = pendingScrollToBottomRef.current;\n if (\n pending &&\n contentSizeVersionRef.current >= pending.minimumContentSizeVersion &&\n viewportHeight > 0\n ) {\n pendingScrollToBottomRef.current = false;\n scrollToBottom(pending.animated);\n return;\n }\n if (!wasAtBottom) return;\n // Layout changes are never user gestures, so they must not unpin. Past\n // the first measurement, a viewport change while pinned re-commands the\n // bottom position, since no content-size event follows a bare keyboard\n // open or close.\n if (\n autoScroll &&\n previousViewportHeight !== 0 &&\n viewportHeight !== previousViewportHeight\n ) {\n scrollToBottom(pending ? pending.animated : false);\n } else {\n isAtBottomRef.current = true;\n }\n },\n [autoScroll, horizontal, scrollToBottom, updateIsAtBottom],\n );\n\n const handleScroll = useCallback(\n (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n const { contentOffset, contentSize, layoutMeasurement } =\n event.nativeEvent;\n const scrollOffset = horizontal ? contentOffset.x : contentOffset.y;\n const previousEventOffset = lastScrollEventOffsetRef.current;\n const wasPinnedToBottom = isAtBottomRef.current;\n lastScrollEventOffsetRef.current = scrollOffset;\n metricsRef.current = {\n contentHeight: horizontal ? contentSize.width : contentSize.height,\n viewportHeight: horizontal\n ? layoutMeasurement.width\n : layoutMeasurement.height,\n scrollY: scrollOffset,\n };\n updateIsAtBottom();\n const upwardMove = inverted\n ? scrollOffset > previousEventOffset\n : scrollOffset < previousEventOffset;\n // Only a deliberate move away from the bottom unpins or cancels a pending scroll.\n // Gestures are detected echo-to-echo because a commanded scroll\n // optimistically moves the tracked position ahead of its ascending\n // animation echoes, and those echoes must not unpin mid-flight.\n if (wasPinnedToBottom && !upwardMove) {\n isAtBottomRef.current = true;\n }\n if (!isAtBottomRef.current && upwardMove) {\n pendingScrollToBottomRef.current = false;\n }\n },\n [horizontal, inverted, updateIsAtBottom],\n );\n\n const handleContentSizeChange = useCallback(\n (width: number, height: number) => {\n const metrics = metricsRef.current;\n const contentHeight = horizontal ? width : height;\n const previousContentHeight = metrics.contentHeight;\n const wasAtBottom = isAtBottomRef.current;\n if (contentHeight > 0) contentSizeVersionRef.current += 1;\n metrics.contentHeight = contentHeight;\n updateIsAtBottom();\n\n // Initialize and thread-switch requests are repeated after the list has\n // measured so the explicit bottom offset uses real content metrics.\n const pendingScroll = pendingScrollToBottomRef.current;\n if (\n pendingScroll &&\n contentSizeVersionRef.current >=\n pendingScroll.minimumContentSizeVersion &&\n metrics.viewportHeight > 0\n ) {\n pendingScrollToBottomRef.current = false;\n scrollToBottom(pendingScroll.animated);\n return;\n }\n\n if (!autoScroll) return;\n if (!wasAtBottom) return;\n if (previousContentHeight === 0) return;\n if (contentHeight <= previousContentHeight) return;\n\n scrollToBottom(false);\n },\n [autoScroll, horizontal, scrollToBottom, updateIsAtBottom],\n );\n\n useEffect(() => {\n if (!scrollToBottomOnInitialize) return;\n if (!hasMessages) {\n initializeScrollRequestedRef.current = false;\n return;\n }\n if (initializeScrollRequestedRef.current) return;\n\n initializeScrollRequestedRef.current = true;\n pendingScrollToBottomRef.current = {\n animated: false,\n minimumContentSizeVersion: Math.max(1, contentSizeVersionRef.current),\n };\n scrollToBottom(false);\n }, [hasMessages, scrollToBottom, scrollToBottomOnInitialize]);\n\n useAuiEvent(\"thread.runStart\", () => {\n if (!scrollToBottomOnRunStart) return;\n pendingScrollToBottomRef.current = {\n animated: true,\n minimumContentSizeVersion: contentSizeVersionRef.current + 1,\n };\n scrollToBottom(true);\n });\n\n useAuiEvent(\"threads.selectionChanged\", () => {\n if (!scrollToBottomOnThreadSwitch) return;\n initializeScrollRequestedRef.current = false;\n lastScrollEventOffsetRef.current = 0;\n pendingScrollToBottomRef.current = {\n animated: false,\n minimumContentSizeVersion: contentSizeVersionRef.current + 1,\n };\n scrollToBottom(false);\n });\n\n return {\n handleLayout,\n handleScroll,\n handleContentSizeChange,\n };\n};\n"],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export { ThreadRoot as Root, type ThreadRootProps as RootProps, } from "./thread/ThreadRoot.js";
2
2
  export { ThreadMessagesFlatList as MessagesFlatList, type ThreadMessagesFlatListProps as MessagesFlatListProps, ThreadMessages as Messages, type ThreadMessagesProps as MessagesProps, } from "./thread/ThreadMessages.js";
3
3
  export { ThreadPrimitiveMessageByIndex as MessageByIndex } from "@assistant-ui/core/react";
4
+ export { ThreadPrimitiveRow as Row } from "@assistant-ui/core/react";
5
+ export { ThreadRowsFlatList as RowsFlatList, type ThreadRowsFlatListProps as RowsFlatListProps, } from "./thread/ThreadRowsFlatList.js";
4
6
  export { ThreadPrimitiveUnstable_MessageById as Unstable_MessageById } from "@assistant-ui/core/react";
5
7
  export { ThreadEmpty as Empty, type ThreadEmptyProps as EmptyProps, } from "./thread/ThreadEmpty.js";
6
8
  export { ThreadIf as If, type ThreadIfProps as IfProps, } from "./thread/ThreadIf.js";
@@ -1 +1 @@
1
- {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/primitives/thread.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,IAAI,IAAI,EAClB,KAAK,eAAe,IAAI,SAAS,GAClC,+BAA4B;AAC7B,OAAO,EACL,sBAAsB,IAAI,gBAAgB,EAC1C,KAAK,2BAA2B,IAAI,qBAAqB,EACzD,cAAc,IAAI,QAAQ,EAC1B,KAAK,mBAAmB,IAAI,aAAa,GAC1C,mCAAgC;AACjC,OAAO,EAAE,6BAA6B,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,mCAAmC,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EACL,WAAW,IAAI,KAAK,EACpB,KAAK,gBAAgB,IAAI,UAAU,GACpC,gCAA6B;AAC9B,OAAO,EACL,QAAQ,IAAI,EAAE,EACd,KAAK,aAAa,IAAI,OAAO,GAC9B,6BAA0B;AAC3B,OAAO,EACL,gBAAgB,IAAI,UAAU,EAC9B,KAAK,qBAAqB,IAAI,eAAe,GAC9C,qCAAkC;AACnC,OAAO,EACL,0BAA0B,IAAI,WAAW,EACzC,gCAAgC,IAAI,iBAAiB,GACtD,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/primitives/thread.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,IAAI,IAAI,EAClB,KAAK,eAAe,IAAI,SAAS,GAClC,+BAA4B;AAC7B,OAAO,EACL,sBAAsB,IAAI,gBAAgB,EAC1C,KAAK,2BAA2B,IAAI,qBAAqB,EACzD,cAAc,IAAI,QAAQ,EAC1B,KAAK,mBAAmB,IAAI,aAAa,GAC1C,mCAAgC;AACjC,OAAO,EAAE,6BAA6B,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,kBAAkB,IAAI,GAAG,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EACL,kBAAkB,IAAI,YAAY,EAClC,KAAK,uBAAuB,IAAI,iBAAiB,GAClD,uCAAoC;AACrC,OAAO,EAAE,mCAAmC,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EACL,WAAW,IAAI,KAAK,EACpB,KAAK,gBAAgB,IAAI,UAAU,GACpC,gCAA6B;AAC9B,OAAO,EACL,QAAQ,IAAI,EAAE,EACd,KAAK,aAAa,IAAI,OAAO,GAC9B,6BAA0B;AAC3B,OAAO,EACL,gBAAgB,IAAI,UAAU,EAC9B,KAAK,qBAAqB,IAAI,eAAe,GAC9C,qCAAkC;AACnC,OAAO,EACL,0BAA0B,IAAI,WAAW,EACzC,gCAAgC,IAAI,iBAAiB,GACtD,MAAM,0BAA0B,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
2
  import { ThreadRoot } from "./thread/ThreadRoot.js";
3
3
  import { ThreadMessages, ThreadMessagesFlatList } from "./thread/ThreadMessages.js";
4
+ import { ThreadRowsFlatList } from "./thread/ThreadRowsFlatList.js";
4
5
  import { ThreadEmpty } from "./thread/ThreadEmpty.js";
5
6
  import { ThreadIf } from "./thread/ThreadIf.js";
6
7
  import { ThreadSuggestion } from "./thread/ThreadSuggestion.js";
7
- import { ThreadPrimitiveMessageByIndex as MessageByIndex, ThreadPrimitiveSuggestionByIndex as SuggestionByIndex, ThreadPrimitiveSuggestions as Suggestions, ThreadPrimitiveUnstable_MessageById as Unstable_MessageById } from "@assistant-ui/core/react";
8
+ import { ThreadPrimitiveMessageByIndex as MessageByIndex, ThreadPrimitiveRow as Row, ThreadPrimitiveSuggestionByIndex as SuggestionByIndex, ThreadPrimitiveSuggestions as Suggestions, ThreadPrimitiveUnstable_MessageById as Unstable_MessageById } from "@assistant-ui/core/react";
8
9
  //#region src/primitives/thread.ts
9
10
  var thread_exports = /* @__PURE__ */ __exportAll({
10
11
  Empty: () => ThreadEmpty,
@@ -13,12 +14,14 @@ var thread_exports = /* @__PURE__ */ __exportAll({
13
14
  Messages: () => ThreadMessages,
14
15
  MessagesFlatList: () => ThreadMessagesFlatList,
15
16
  Root: () => ThreadRoot,
17
+ Row: () => Row,
18
+ RowsFlatList: () => ThreadRowsFlatList,
16
19
  Suggestion: () => ThreadSuggestion,
17
20
  SuggestionByIndex: () => SuggestionByIndex,
18
21
  Suggestions: () => Suggestions,
19
22
  Unstable_MessageById: () => Unstable_MessageById
20
23
  });
21
24
  //#endregion
22
- export { ThreadEmpty as Empty, ThreadIf as If, MessageByIndex, ThreadMessages as Messages, ThreadMessagesFlatList as MessagesFlatList, ThreadRoot as Root, ThreadSuggestion as Suggestion, SuggestionByIndex, Suggestions, Unstable_MessageById, thread_exports };
25
+ export { ThreadEmpty as Empty, ThreadIf as If, MessageByIndex, ThreadMessages as Messages, ThreadMessagesFlatList as MessagesFlatList, ThreadRoot as Root, Row, ThreadRowsFlatList as RowsFlatList, ThreadSuggestion as Suggestion, SuggestionByIndex, Suggestions, Unstable_MessageById, thread_exports };
23
26
 
24
27
  //# sourceMappingURL=thread.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread.js","names":["ThreadRoot","Root","ThreadRootProps","RootProps","ThreadMessagesFlatList","MessagesFlatList","ThreadMessagesFlatListProps","MessagesFlatListProps","ThreadMessages","Messages","ThreadMessagesProps","MessagesProps","ThreadPrimitiveMessageByIndex","MessageByIndex","ThreadPrimitiveUnstable_MessageById","Unstable_MessageById","ThreadEmpty","Empty","ThreadEmptyProps","EmptyProps","ThreadIf","If","ThreadIfProps","IfProps","ThreadSuggestion","Suggestion","ThreadSuggestionProps","SuggestionProps","ThreadPrimitiveSuggestions","Suggestions","ThreadPrimitiveSuggestionByIndex","SuggestionByIndex"],"sources":["../../src/primitives/thread.ts"],"sourcesContent":["export {\n ThreadRoot as Root,\n type ThreadRootProps as RootProps,\n} from \"./thread/ThreadRoot\";\nexport {\n ThreadMessagesFlatList as MessagesFlatList,\n type ThreadMessagesFlatListProps as MessagesFlatListProps,\n ThreadMessages as Messages,\n type ThreadMessagesProps as MessagesProps,\n} from \"./thread/ThreadMessages\";\nexport { ThreadPrimitiveMessageByIndex as MessageByIndex } from \"@assistant-ui/core/react\";\nexport { ThreadPrimitiveUnstable_MessageById as Unstable_MessageById } from \"@assistant-ui/core/react\";\nexport {\n ThreadEmpty as Empty,\n type ThreadEmptyProps as EmptyProps,\n} from \"./thread/ThreadEmpty\";\nexport {\n ThreadIf as If,\n type ThreadIfProps as IfProps,\n} from \"./thread/ThreadIf\";\nexport {\n ThreadSuggestion as Suggestion,\n type ThreadSuggestionProps as SuggestionProps,\n} from \"./thread/ThreadSuggestion\";\nexport {\n ThreadPrimitiveSuggestions as Suggestions,\n ThreadPrimitiveSuggestionByIndex as SuggestionByIndex,\n} from \"@assistant-ui/core/react\";\n"],"mappings":""}
1
+ {"version":3,"file":"thread.js","names":["ThreadRoot","Root","ThreadRootProps","RootProps","ThreadMessagesFlatList","MessagesFlatList","ThreadMessagesFlatListProps","MessagesFlatListProps","ThreadMessages","Messages","ThreadMessagesProps","MessagesProps","ThreadPrimitiveMessageByIndex","MessageByIndex","ThreadPrimitiveRow","Row","ThreadRowsFlatList","RowsFlatList","ThreadRowsFlatListProps","RowsFlatListProps","ThreadPrimitiveUnstable_MessageById","Unstable_MessageById","ThreadEmpty","Empty","ThreadEmptyProps","EmptyProps","ThreadIf","If","ThreadIfProps","IfProps","ThreadSuggestion","Suggestion","ThreadSuggestionProps","SuggestionProps","ThreadPrimitiveSuggestions","Suggestions","ThreadPrimitiveSuggestionByIndex","SuggestionByIndex"],"sources":["../../src/primitives/thread.ts"],"sourcesContent":["export {\n ThreadRoot as Root,\n type ThreadRootProps as RootProps,\n} from \"./thread/ThreadRoot\";\nexport {\n ThreadMessagesFlatList as MessagesFlatList,\n type ThreadMessagesFlatListProps as MessagesFlatListProps,\n ThreadMessages as Messages,\n type ThreadMessagesProps as MessagesProps,\n} from \"./thread/ThreadMessages\";\nexport { ThreadPrimitiveMessageByIndex as MessageByIndex } from \"@assistant-ui/core/react\";\nexport { ThreadPrimitiveRow as Row } from \"@assistant-ui/core/react\";\nexport {\n ThreadRowsFlatList as RowsFlatList,\n type ThreadRowsFlatListProps as RowsFlatListProps,\n} from \"./thread/ThreadRowsFlatList\";\nexport { ThreadPrimitiveUnstable_MessageById as Unstable_MessageById } from \"@assistant-ui/core/react\";\nexport {\n ThreadEmpty as Empty,\n type ThreadEmptyProps as EmptyProps,\n} from \"./thread/ThreadEmpty\";\nexport {\n ThreadIf as If,\n type ThreadIfProps as IfProps,\n} from \"./thread/ThreadIf\";\nexport {\n ThreadSuggestion as Suggestion,\n type ThreadSuggestionProps as SuggestionProps,\n} from \"./thread/ThreadSuggestion\";\nexport {\n ThreadPrimitiveSuggestions as Suggestions,\n ThreadPrimitiveSuggestionByIndex as SuggestionByIndex,\n} from \"@assistant-ui/core/react\";\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItems.js","names":["ReactElement","useCallback","FlatList","FlatListProps","useAuiState","ThreadListItemByIndexProvider","ThreadListItemsProps","Omit","renderItem","props","threadId","index","ThreadListItems","t0","$","_c","flatListProps","threadIds","_temp","t1","t2","item","renderFlatListItem","keyExtractor","_temp2","t3","s","threads","item_0"],"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"sourcesContent":["import { type ReactElement, useCallback } from \"react\";\nimport { FlatList, type FlatListProps } from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { ThreadListItemByIndexProvider } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemsProps = Omit<\n FlatListProps<string>,\n \"data\" | \"renderItem\"\n> & {\n renderItem: (props: { threadId: string; index: number }) => ReactElement;\n};\n\nexport const ThreadListItems = ({\n renderItem,\n ...flatListProps\n}: ThreadListItemsProps) => {\n const threadIds = useAuiState((s) => s.threads.threadIds);\n\n const renderFlatListItem = useCallback(\n ({ item, index }: { item: string; index: number }) => {\n return (\n <ThreadListItemByIndexProvider index={index} archived={false}>\n {renderItem({ threadId: item, index })}\n </ThreadListItemByIndexProvider>\n );\n },\n [renderItem],\n );\n\n const keyExtractor = useCallback((item: string) => item, []);\n\n return (\n <FlatList\n data={threadIds as string[]}\n renderItem={renderFlatListItem}\n keyExtractor={keyExtractor}\n {...flatListProps}\n />\n );\n};\n"],"mappings":";;;;;;;AAYA,MAAaY,mBAAkBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAM,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAL,YAAA,GAAAQ,iBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAN;CAAA,OAAA;EAAAQ,gBAAAF,EAAA;EAAAN,aAAAM,EAAA;CAAA;CACrB,MAAAG,YAAkBb,YAAYc,KAA0B;CAAE,IAAAC;CAAA,IAAAL,EAAA,OAAAN,YAAA;EAGxDW,MAAAC,OAAA;GAAC,MAAA,EAAAC,MAAAV,UAAAS;GAAgD,OAE7C,oBAAC,+BAAD;IAAsCT;IAAiB,UAAA;IACpDH,UAAAA,WAAW;KAAAE,UAAYW;KAAIV;IAAQ,CAAC;GADT,CAAA;EAEE;EAEnCG,EAAA,KAAAN;EAAAM,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAPH,MAAAQ,qBAA2BH;CAW3B,MAAAI,eAAqBC;CAIX,MAAAJ,KAAAH;CAAqB,IAAAQ;CAAA,IAAAX,EAAA,OAAAE,iBAAAF,EAAA,OAAAQ,sBAAAR,EAAA,OAAAM,IAAA;EAD7BK,KAAA,oBAAC,UAAD;GACQ,MAAAL;GACME,YAAAA;GACEC;GAAY,GACtBP;EAAa,CAAA;EACjBF,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;EAAAR,EAAA,KAAAM;EAAAN,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OALFW;AAKE;AAzByB,SAAAP,MAAAQ,GAAA;CAAA,OAIQA,EAACC,QAAQV;AAAU;AAJ3B,SAAAO,OAAAI,QAAA;CAAA,OAiBsBP;AAAI"}
1
+ {"version":3,"file":"ThreadListItems.js","names":["ReactElement","useCallback","FlatList","FlatListProps","useAuiState","ThreadListItemByIndexProvider","ThreadListItemsProps","Omit","renderItem","props","threadId","index","ThreadListItems","t0","$","_c","flatListProps","threadIds","_temp","t1","t2","item","renderFlatListItem","keyExtractor","_temp2","t3","s","threads","item_0","_c"],"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"sourcesContent":["import { type ReactElement, useCallback } from \"react\";\nimport { FlatList, type FlatListProps } from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { ThreadListItemByIndexProvider } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemsProps = Omit<\n FlatListProps<string>,\n \"data\" | \"renderItem\"\n> & {\n renderItem: (props: { threadId: string; index: number }) => ReactElement;\n};\n\nexport const ThreadListItems = ({\n renderItem,\n ...flatListProps\n}: ThreadListItemsProps) => {\n const threadIds = useAuiState((s) => s.threads.threadIds);\n\n const renderFlatListItem = useCallback(\n ({ item, index }: { item: string; index: number }) => {\n return (\n <ThreadListItemByIndexProvider index={index} archived={false}>\n {renderItem({ threadId: item, index })}\n </ThreadListItemByIndexProvider>\n );\n },\n [renderItem],\n );\n\n const keyExtractor = useCallback((item: string) => item, []);\n\n return (\n <FlatList\n data={threadIds as string[]}\n renderItem={renderFlatListItem}\n keyExtractor={keyExtractor}\n {...flatListProps}\n />\n );\n};\n"],"mappings":";;;;;;;AAYA,MAAaY,mBAAkBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAM,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAL,YAAA,GAAAQ,iBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAN;CAAA,OAAA;EAAAQ,gBAAAF,EAAA;EAAAN,aAAAM,EAAA;CAAA;CACrB,MAAAG,YAAkBb,YAAYc,KAA0B;CAAE,IAAAC;CAAA,IAAAL,EAAA,OAAAN,YAAA;EAGxDW,MAAAC,OAAA;GAAC,MAAA,EAAAC,MAAAV,UAAAS;GAAgD,OAE7C,oBAAC,+BAAD;IAAsCT;IAAiB,UAAA;IACpDH,UAAAA,WAAW;KAAAE,UAAYW;KAAIV;IAAQ,CAAC;GADT,CAAA;EAEE;EAEnCG,EAAA,KAAAN;EAAAM,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAPH,MAAAQ,qBAA2BH;CAW3B,MAAAI,eAAqBC;CAIX,MAAAJ,KAAAH;CAAqB,IAAAQ;CAAA,IAAAX,EAAA,OAAAE,iBAAAF,EAAA,OAAAQ,sBAAAR,EAAA,OAAAM,IAAA;EAD7BK,KAAA,oBAAC,UAAD;GACQ,MAAAL;GACME,YAAAA;GACEC;GAAY,GACtBP;EAAa,CAAA;EACjBF,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;EAAAR,EAAA,KAAAM;EAAAN,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OALFW;AAKE;AAzByB,SAAAP,MAAAQ,GAAA;CAAA,OAIQA,EAACC,QAAQV;AAAU;AAJ3B,SAAAO,OAAAI,QAAA;CAAA,OAiBsBP;AAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListNew.js","names":["ReactNode","Platform","Pressable","PressableProps","PressableStateCallbackType","useAuiState","useThreadListNew","ThreadListNewProps","Omit","children","state","isActive","ThreadListNew","t0","$","_c","accessibilityState","pressableProps","_temp","switchToNewThread","selected","t1","t2","OS","undefined","t3","t4","s","threads","newThreadId","mainThreadId"],"sources":["../../../src/primitives/threadList/ThreadListNew.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n Platform,\n Pressable,\n type PressableProps,\n type PressableStateCallbackType,\n} from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { useThreadListNew } from \"@assistant-ui/core/react\";\n\nexport type ThreadListNewProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children:\n | ReactNode\n | ((\n state: PressableStateCallbackType & { isActive: boolean },\n ) => ReactNode);\n};\n\nexport const ThreadListNew = ({\n children,\n accessibilityState,\n ...pressableProps\n}: ThreadListNewProps) => {\n const isActive = useAuiState(\n (s) => s.threads.newThreadId === s.threads.mainThreadId,\n );\n const { switchToNewThread } = useThreadListNew();\n const selected = accessibilityState?.selected ?? isActive;\n\n return (\n <Pressable\n onPress={switchToNewThread}\n accessibilityRole=\"button\"\n accessibilityState={{ ...accessibilityState, selected }}\n aria-current={Platform.OS === \"web\" && selected ? \"true\" : undefined}\n {...pressableProps}\n >\n {typeof children === \"function\"\n ? (state) => children({ ...state, isActive })\n : children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;;AAqBA,MAAaY,iBAAgBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAP;CAAA,IAAAQ;CAAA,IAAAH,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAJ,UAAAO,oBAAA,GAAAC,kBAAAJ;EAITC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAL;EAAAK,EAAA,KAAAG;CAAA,OAAA;EAAAD,qBAAAF,EAAA;EAAAL,WAAAK,EAAA;EAAAG,iBAAAH,EAAA;CAAA;CACnB,MAAAH,WAAiBN,YACfa,KACF;CACA,MAAA,EAAAC,sBAA8Bb,iBAAiB;CAC/C,MAAAc,WAAiBJ,oBAAkBI,YAAlBT;CAAyC,IAAAU;CAAA,IAAAP,EAAA,OAAAE,sBAAAF,EAAA,OAAAM,UAAA;EAMlCC,KAAA;GAAA,GAAKL;GAAkBI;EAAW;EAACN,EAAA,KAAAE;EAAAF,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CACzC,MAAAQ,KAAArB,SAAQsB,OAAQ,SAAhBH,WAAA,SAAAI,KAAAA;CAAsD,IAAAC;CAAA,IAAAX,EAAA,OAAAL,YAAAK,EAAA,OAAAH,UAAA;EAGnEc,KAAA,OAAOhB,aAAa,cAApBC,UACcD,SAAS;GAAA,GAAKC;GAAKC;EAAW,CAAC,IAD7CF;EAEWK,EAAA,KAAAL;EAAAK,EAAA,KAAAH;EAAAG,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAG,kBAAAH,EAAA,QAAAK,qBAAAL,EAAA,QAAAO,MAAAP,EAAA,QAAAQ,MAAAR,EAAA,QAAAW,IAAA;EATdC,KAAA,oBAAC,WAAD;GACWP,SAAAA;GACS,mBAAA;GACE,oBAAAE;GACN,gBAAAC;GAAsD,GAChEL;GAEHQ,UAAAA;EAPO,CAAA;EAUEX,EAAA,MAAAG;EAAAH,EAAA,MAAAK;EAAAL,EAAA,MAAAO;EAAAP,EAAA,MAAAQ;EAAAR,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAVZY;AAUY;AAtBa,SAAAR,MAAAS,GAAA;CAAA,OAMlBA,EAACC,QAAQC,gBAAiBF,EAACC,QAAQE;AAAa"}
1
+ {"version":3,"file":"ThreadListNew.js","names":["ReactNode","Platform","Pressable","PressableProps","PressableStateCallbackType","useAuiState","useThreadListNew","ThreadListNewProps","Omit","children","state","isActive","ThreadListNew","t0","$","_c","accessibilityState","pressableProps","_temp","switchToNewThread","selected","t1","t2","OS","undefined","t3","t4","s","threads","newThreadId","mainThreadId","_c"],"sources":["../../../src/primitives/threadList/ThreadListNew.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n Platform,\n Pressable,\n type PressableProps,\n type PressableStateCallbackType,\n} from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { useThreadListNew } from \"@assistant-ui/core/react\";\n\nexport type ThreadListNewProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children:\n | ReactNode\n | ((\n state: PressableStateCallbackType & { isActive: boolean },\n ) => ReactNode);\n};\n\nexport const ThreadListNew = ({\n children,\n accessibilityState,\n ...pressableProps\n}: ThreadListNewProps) => {\n const isActive = useAuiState(\n (s) => s.threads.newThreadId === s.threads.mainThreadId,\n );\n const { switchToNewThread } = useThreadListNew();\n const selected = accessibilityState?.selected ?? isActive;\n\n return (\n <Pressable\n onPress={switchToNewThread}\n accessibilityRole=\"button\"\n accessibilityState={{ ...accessibilityState, selected }}\n aria-current={Platform.OS === \"web\" && selected ? \"true\" : undefined}\n {...pressableProps}\n >\n {typeof children === \"function\"\n ? (state) => children({ ...state, isActive })\n : children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;;AAqBA,MAAaY,iBAAgBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAP;CAAA,IAAAQ;CAAA,IAAAH,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAJ,UAAAO,oBAAA,GAAAC,kBAAAJ;EAITC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAL;EAAAK,EAAA,KAAAG;CAAA,OAAA;EAAAD,qBAAAF,EAAA;EAAAL,WAAAK,EAAA;EAAAG,iBAAAH,EAAA;CAAA;CACnB,MAAAH,WAAiBN,YACfa,KACF;CACA,MAAA,EAAAC,sBAA8Bb,iBAAiB;CAC/C,MAAAc,WAAiBJ,oBAAkBI,YAAlBT;CAAyC,IAAAU;CAAA,IAAAP,EAAA,OAAAE,sBAAAF,EAAA,OAAAM,UAAA;EAMlCC,KAAA;GAAA,GAAKL;GAAkBI;EAAW;EAACN,EAAA,KAAAE;EAAAF,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CACzC,MAAAQ,KAAArB,SAAQsB,OAAQ,SAAhBH,WAAA,SAAAI,KAAAA;CAAsD,IAAAC;CAAA,IAAAX,EAAA,OAAAL,YAAAK,EAAA,OAAAH,UAAA;EAGnEc,KAAA,OAAOhB,aAAa,cAApBC,UACcD,SAAS;GAAA,GAAKC;GAAKC;EAAW,CAAC,IAD7CF;EAEWK,EAAA,KAAAL;EAAAK,EAAA,KAAAH;EAAAG,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAG,kBAAAH,EAAA,QAAAK,qBAAAL,EAAA,QAAAO,MAAAP,EAAA,QAAAQ,MAAAR,EAAA,QAAAW,IAAA;EATdC,KAAA,oBAAC,WAAD;GACWP,SAAAA;GACS,mBAAA;GACE,oBAAAE;GACN,gBAAAC;GAAsD,GAChEL;GAEHQ,UAAAA;EAPO,CAAA;EAUEX,EAAA,MAAAG;EAAAH,EAAA,MAAAK;EAAAL,EAAA,MAAAO;EAAAP,EAAA,MAAAQ;EAAAR,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAVZY;AAUY;AAtBa,SAAAR,MAAAS,GAAA;CAAA,OAMlBA,EAACC,QAAQC,gBAAiBF,EAACC,QAAQE;AAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListRoot.js","names":["ReactNode","View","ViewProps","ThreadListRootProps","children","ThreadListRoot","t0","$","_c","viewProps","t1"],"sources":["../../../src/primitives/threadList/ThreadListRoot.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { View, type ViewProps } from \"react-native\";\n\nexport type ThreadListRootProps = ViewProps & {\n children: ReactNode;\n};\n\nexport const ThreadListRoot = ({\n children,\n ...viewProps\n}: ThreadListRootProps) => {\n return <View {...viewProps}>{children}</View>;\n};\n"],"mappings":";;;;AAOA,MAAaK,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,aAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,YAAAF,EAAA;CAAA;CAAA,IAAAG;CAAA,IAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,WAAA;EACbC,KAAA,oBAAC,MAAD;GAAK,GAAKD;GAAYL;EAAjB,CAAA;EAAiCG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAtCG;AAAsC"}
1
+ {"version":3,"file":"ThreadListRoot.js","names":["ReactNode","View","ViewProps","ThreadListRootProps","children","ThreadListRoot","t0","$","_c","viewProps","t1","_c"],"sources":["../../../src/primitives/threadList/ThreadListRoot.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { View, type ViewProps } from \"react-native\";\n\nexport type ThreadListRootProps = ViewProps & {\n children: ReactNode;\n};\n\nexport const ThreadListRoot = ({\n children,\n ...viewProps\n}: ThreadListRootProps) => {\n return <View {...viewProps}>{children}</View>;\n};\n"],"mappings":";;;;AAOA,MAAaK,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,aAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,YAAAF,EAAA;CAAA;CAAA,IAAAG;CAAA,IAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,WAAA;EACbC,KAAA,oBAAC,MAAD;GAAK,GAAKD;GAAYL;EAAjB,CAAA;EAAiCG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAtCG;AAAsC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemArchive.js","names":["Pressable","PressableProps","useThreadListItemArchive","ThreadListItemArchiveProps","Omit","children","ThreadListItemArchive","t0","$","_c","pressableProps","archive","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemArchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemArchiveProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemArchive = ({\n children,\n ...pressableProps\n}: ThreadListItemArchiveProps) => {\n const { archive } = useThreadListItemArchive();\n\n return (\n <Pressable onPress={archive} accessibilityRole=\"button\" {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC3B,MAAA,EAAAG,YAAoBT,yBAAyB;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAG,WAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,gBAAA;EAG7CE,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAA2B,mBAAA;GAAQ,GAAKD;GACzDL;EADO,CAAA;EAEEG,EAAA,KAAAG;EAAAH,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
1
+ {"version":3,"file":"ThreadListItemArchive.js","names":["Pressable","PressableProps","useThreadListItemArchive","ThreadListItemArchiveProps","Omit","children","ThreadListItemArchive","t0","$","_c","pressableProps","archive","t1","_c"],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemArchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemArchiveProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemArchive = ({\n children,\n ...pressableProps\n}: ThreadListItemArchiveProps) => {\n const { archive } = useThreadListItemArchive();\n\n return (\n <Pressable onPress={archive} accessibilityRole=\"button\" {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC3B,MAAA,EAAAG,YAAoBT,yBAAyB;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAG,WAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,gBAAA;EAG7CE,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAA2B,mBAAA;GAAQ,GAAKD;GACzDL;EADO,CAAA;EAEEG,EAAA,KAAAG;EAAAH,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemDelete.js","names":["Pressable","PressableProps","useThreadListItemDelete","ThreadListItemDeleteProps","Omit","children","ThreadListItemDelete","t0","$","_c","pressableProps","delete","deleteThread","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemDelete } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemDeleteProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemDelete = ({\n children,\n ...pressableProps\n}: ThreadListItemDeleteProps) => {\n const { delete: deleteThread } = useThreadListItemDelete();\n\n return (\n <Pressable\n onPress={deleteThread}\n accessibilityRole=\"button\"\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,wBAAuBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC1B,MAAA,EAAAG,QAAAC,iBAAiCV,wBAAwB;CAAE,IAAAW;CAAA,IAAAL,EAAA,OAAAH,YAAAG,EAAA,OAAAI,gBAAAJ,EAAA,OAAAE,gBAAA;EAGzDG,KAAA,oBAAC,WAAD;GACWD,SAAAA;GACS,mBAAA;GAAQ,GACtBF;GAEHL;EALO,CAAA;EAMEG,EAAA,KAAAH;EAAAG,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OANZK;AAMY"}
1
+ {"version":3,"file":"ThreadListItemDelete.js","names":["Pressable","PressableProps","useThreadListItemDelete","ThreadListItemDeleteProps","Omit","children","ThreadListItemDelete","t0","$","_c","pressableProps","delete","deleteThread","t1","_c"],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemDelete } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemDeleteProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemDelete = ({\n children,\n ...pressableProps\n}: ThreadListItemDeleteProps) => {\n const { delete: deleteThread } = useThreadListItemDelete();\n\n return (\n <Pressable\n onPress={deleteThread}\n accessibilityRole=\"button\"\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,wBAAuBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC1B,MAAA,EAAAG,QAAAC,iBAAiCV,wBAAwB;CAAE,IAAAW;CAAA,IAAAL,EAAA,OAAAH,YAAAG,EAAA,OAAAI,gBAAAJ,EAAA,OAAAE,gBAAA;EAGzDG,KAAA,oBAAC,WAAD;GACWD,SAAAA;GACS,mBAAA;GAAQ,GACtBF;GAEHL;EALO,CAAA;EAMEG,EAAA,KAAAH;EAAAG,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OANZK;AAMY"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemRoot.js","names":["ReactNode","View","ViewProps","ThreadListItemRootProps","children","ThreadListItemRoot","t0","$","_c","viewProps","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemRoot.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { View, type ViewProps } from \"react-native\";\n\nexport type ThreadListItemRootProps = ViewProps & {\n children: ReactNode;\n};\n\nexport const ThreadListItemRoot = ({\n children,\n ...viewProps\n}: ThreadListItemRootProps) => {\n return <View {...viewProps}>{children}</View>;\n};\n"],"mappings":";;;;AAOA,MAAaK,sBAAqBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,aAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,YAAAF,EAAA;CAAA;CAAA,IAAAG;CAAA,IAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,WAAA;EACjBC,KAAA,oBAAC,MAAD;GAAK,GAAKD;GAAYL;EAAjB,CAAA;EAAiCG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAtCG;AAAsC"}
1
+ {"version":3,"file":"ThreadListItemRoot.js","names":["ReactNode","View","ViewProps","ThreadListItemRootProps","children","ThreadListItemRoot","t0","$","_c","viewProps","t1","_c"],"sources":["../../../src/primitives/threadListItem/ThreadListItemRoot.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { View, type ViewProps } from \"react-native\";\n\nexport type ThreadListItemRootProps = ViewProps & {\n children: ReactNode;\n};\n\nexport const ThreadListItemRoot = ({\n children,\n ...viewProps\n}: ThreadListItemRootProps) => {\n return <View {...viewProps}>{children}</View>;\n};\n"],"mappings":";;;;AAOA,MAAaK,sBAAqBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,aAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,YAAAF,EAAA;CAAA;CAAA,IAAAG;CAAA,IAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,WAAA;EACjBC,KAAA,oBAAC,MAAD;GAAK,GAAKD;GAAYL;EAAjB,CAAA;EAAiCG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAtCG;AAAsC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemTrigger.js","names":["ReactNode","Platform","Pressable","PressableProps","PressableStateCallbackType","useAuiState","useThreadListItemTrigger","ThreadListItemTriggerProps","Omit","children","state","isActive","ThreadListItemTrigger","t0","$","_c","accessibilityState","pressableProps","_temp","switchTo","selected","t1","t2","OS","undefined","t3","t4","s","threads","mainThreadId","threadListItem","id"],"sources":["../../../src/primitives/threadListItem/ThreadListItemTrigger.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n Platform,\n Pressable,\n type PressableProps,\n type PressableStateCallbackType,\n} from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { useThreadListItemTrigger } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemTriggerProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children:\n | ReactNode\n | ((\n state: PressableStateCallbackType & { isActive: boolean },\n ) => ReactNode);\n};\n\nexport const ThreadListItemTrigger = ({\n children,\n accessibilityState,\n ...pressableProps\n}: ThreadListItemTriggerProps) => {\n const isActive = useAuiState(\n (s) => s.threads.mainThreadId === s.threadListItem.id,\n );\n const { switchTo } = useThreadListItemTrigger();\n const selected = accessibilityState?.selected ?? isActive;\n\n return (\n <Pressable\n onPress={switchTo}\n accessibilityRole=\"button\"\n accessibilityState={{ ...accessibilityState, selected }}\n aria-current={Platform.OS === \"web\" && selected ? \"true\" : undefined}\n {...pressableProps}\n >\n {typeof children === \"function\"\n ? (state) => children({ ...state, isActive })\n : children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;;AAqBA,MAAaY,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAP;CAAA,IAAAQ;CAAA,IAAAH,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAJ,UAAAO,oBAAA,GAAAC,kBAAAJ;EAITC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAL;EAAAK,EAAA,KAAAG;CAAA,OAAA;EAAAD,qBAAAF,EAAA;EAAAL,WAAAK,EAAA;EAAAG,iBAAAH,EAAA;CAAA;CAC3B,MAAAH,WAAiBN,YACfa,KACF;CACA,MAAA,EAAAC,aAAqBb,yBAAyB;CAC9C,MAAAc,WAAiBJ,oBAAkBI,YAAlBT;CAAyC,IAAAU;CAAA,IAAAP,EAAA,OAAAE,sBAAAF,EAAA,OAAAM,UAAA;EAMlCC,KAAA;GAAA,GAAKL;GAAkBI;EAAW;EAACN,EAAA,KAAAE;EAAAF,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CACzC,MAAAQ,KAAArB,SAAQsB,OAAQ,SAAhBH,WAAA,SAAAI,KAAAA;CAAsD,IAAAC;CAAA,IAAAX,EAAA,OAAAL,YAAAK,EAAA,OAAAH,UAAA;EAGnEc,KAAA,OAAOhB,aAAa,cAApBC,UACcD,SAAS;GAAA,GAAKC;GAAKC;EAAW,CAAC,IAD7CF;EAEWK,EAAA,KAAAL;EAAAK,EAAA,KAAAH;EAAAG,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAG,kBAAAH,EAAA,QAAAK,YAAAL,EAAA,QAAAO,MAAAP,EAAA,QAAAQ,MAAAR,EAAA,QAAAW,IAAA;EATdC,KAAA,oBAAC,WAAD;GACWP,SAAAA;GACS,mBAAA;GACE,oBAAAE;GACN,gBAAAC;GAAsD,GAChEL;GAEHQ,UAAAA;EAPO,CAAA;EAUEX,EAAA,MAAAG;EAAAH,EAAA,MAAAK;EAAAL,EAAA,MAAAO;EAAAP,EAAA,MAAAQ;EAAAR,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAVZY;AAUY;AAtBqB,SAAAR,MAAAS,GAAA;CAAA,OAM1BA,EAACC,QAAQC,iBAAkBF,EAACG,eAAeC;AAAG"}
1
+ {"version":3,"file":"ThreadListItemTrigger.js","names":["ReactNode","Platform","Pressable","PressableProps","PressableStateCallbackType","useAuiState","useThreadListItemTrigger","ThreadListItemTriggerProps","Omit","children","state","isActive","ThreadListItemTrigger","t0","$","_c","accessibilityState","pressableProps","_temp","switchTo","selected","t1","t2","OS","undefined","t3","t4","s","threads","mainThreadId","threadListItem","id","_c"],"sources":["../../../src/primitives/threadListItem/ThreadListItemTrigger.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n Platform,\n Pressable,\n type PressableProps,\n type PressableStateCallbackType,\n} from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { useThreadListItemTrigger } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemTriggerProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children:\n | ReactNode\n | ((\n state: PressableStateCallbackType & { isActive: boolean },\n ) => ReactNode);\n};\n\nexport const ThreadListItemTrigger = ({\n children,\n accessibilityState,\n ...pressableProps\n}: ThreadListItemTriggerProps) => {\n const isActive = useAuiState(\n (s) => s.threads.mainThreadId === s.threadListItem.id,\n );\n const { switchTo } = useThreadListItemTrigger();\n const selected = accessibilityState?.selected ?? isActive;\n\n return (\n <Pressable\n onPress={switchTo}\n accessibilityRole=\"button\"\n accessibilityState={{ ...accessibilityState, selected }}\n aria-current={Platform.OS === \"web\" && selected ? \"true\" : undefined}\n {...pressableProps}\n >\n {typeof children === \"function\"\n ? (state) => children({ ...state, isActive })\n : children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;;AAqBA,MAAaY,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAP;CAAA,IAAAQ;CAAA,IAAAH,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAJ,UAAAO,oBAAA,GAAAC,kBAAAJ;EAITC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAL;EAAAK,EAAA,KAAAG;CAAA,OAAA;EAAAD,qBAAAF,EAAA;EAAAL,WAAAK,EAAA;EAAAG,iBAAAH,EAAA;CAAA;CAC3B,MAAAH,WAAiBN,YACfa,KACF;CACA,MAAA,EAAAC,aAAqBb,yBAAyB;CAC9C,MAAAc,WAAiBJ,oBAAkBI,YAAlBT;CAAyC,IAAAU;CAAA,IAAAP,EAAA,OAAAE,sBAAAF,EAAA,OAAAM,UAAA;EAMlCC,KAAA;GAAA,GAAKL;GAAkBI;EAAW;EAACN,EAAA,KAAAE;EAAAF,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CACzC,MAAAQ,KAAArB,SAAQsB,OAAQ,SAAhBH,WAAA,SAAAI,KAAAA;CAAsD,IAAAC;CAAA,IAAAX,EAAA,OAAAL,YAAAK,EAAA,OAAAH,UAAA;EAGnEc,KAAA,OAAOhB,aAAa,cAApBC,UACcD,SAAS;GAAA,GAAKC;GAAKC;EAAW,CAAC,IAD7CF;EAEWK,EAAA,KAAAL;EAAAK,EAAA,KAAAH;EAAAG,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAG,kBAAAH,EAAA,QAAAK,YAAAL,EAAA,QAAAO,MAAAP,EAAA,QAAAQ,MAAAR,EAAA,QAAAW,IAAA;EATdC,KAAA,oBAAC,WAAD;GACWP,SAAAA;GACS,mBAAA;GACE,oBAAAE;GACN,gBAAAC;GAAsD,GAChEL;GAEHQ,UAAAA;EAPO,CAAA;EAUEX,EAAA,MAAAG;EAAAH,EAAA,MAAAK;EAAAL,EAAA,MAAAO;EAAAP,EAAA,MAAAQ;EAAAR,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAVZY;AAUY;AAtBqB,SAAAR,MAAAS,GAAA;CAAA,OAM1BA,EAACC,QAAQC,iBAAkBF,EAACG,eAAeC;AAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemUnarchive.js","names":["Pressable","PressableProps","useThreadListItemUnarchive","ThreadListItemUnarchiveProps","Omit","children","ThreadListItemUnarchive","t0","$","_c","pressableProps","unarchive","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemUnarchive.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemUnarchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemUnarchiveProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemUnarchive = ({\n children,\n ...pressableProps\n}: ThreadListItemUnarchiveProps) => {\n const { unarchive } = useThreadListItemUnarchive();\n\n return (\n <Pressable\n onPress={unarchive}\n accessibilityRole=\"button\"\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,2BAA0BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC7B,MAAA,EAAAG,cAAsBT,2BAA2B;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAH,YAAAG,EAAA,OAAAE,kBAAAF,EAAA,OAAAG,WAAA;EAGjDC,KAAA,oBAAC,WAAD;GACWD,SAAAA;GACS,mBAAA;GAAQ,GACtBD;GAEHL;EALO,CAAA;EAMEG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OANZI;AAMY"}
1
+ {"version":3,"file":"ThreadListItemUnarchive.js","names":["Pressable","PressableProps","useThreadListItemUnarchive","ThreadListItemUnarchiveProps","Omit","children","ThreadListItemUnarchive","t0","$","_c","pressableProps","unarchive","t1","_c"],"sources":["../../../src/primitives/threadListItem/ThreadListItemUnarchive.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemUnarchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemUnarchiveProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemUnarchive = ({\n children,\n ...pressableProps\n}: ThreadListItemUnarchiveProps) => {\n const { unarchive } = useThreadListItemUnarchive();\n\n return (\n <Pressable\n onPress={unarchive}\n accessibilityRole=\"button\"\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,2BAA0BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC7B,MAAA,EAAAG,cAAsBT,2BAA2B;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAH,YAAAG,EAAA,OAAAE,kBAAAF,EAAA,OAAAG,WAAA;EAGjDC,KAAA,oBAAC,WAAD;GACWD,SAAAA;GACS,mBAAA;GAAQ,GACtBD;GAEHL;EALO,CAAA;EAMEG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OANZI;AAMY"}