@assistant-ui/react-native 0.1.41 → 0.1.43

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 (170) hide show
  1. package/dist/index.d.ts +5 -4
  2. package/dist/index.js +4 -3
  3. package/dist/primitives/actionBar/ActionBarCopy.d.ts +3 -3
  4. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  5. package/dist/primitives/actionBar/ActionBarCopy.js +23 -19
  6. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  7. package/dist/primitives/actionBar/ActionBarEdit.d.ts +7 -5
  8. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  9. package/dist/primitives/actionBar/ActionBarEdit.js +21 -11
  10. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  11. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +3 -3
  12. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -1
  13. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +26 -16
  14. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  15. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +3 -3
  16. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -1
  17. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +26 -16
  18. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  19. package/dist/primitives/actionBar/ActionBarReload.d.ts +7 -5
  20. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  21. package/dist/primitives/actionBar/ActionBarReload.js +21 -11
  22. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  23. package/dist/primitives/actionBar/ActionBarSpeak.d.ts +14 -0
  24. package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -0
  25. package/dist/primitives/actionBar/ActionBarSpeak.js +61 -0
  26. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -0
  27. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts +14 -0
  28. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -0
  29. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +61 -0
  30. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -0
  31. package/dist/primitives/actionBar.d.ts +4 -2
  32. package/dist/primitives/actionBar.js +6 -2
  33. package/dist/primitives/actionBar.js.map +1 -1
  34. package/dist/primitives/attachment/AttachmentName.d.ts +2 -3
  35. package/dist/primitives/attachment/AttachmentName.d.ts.map +1 -1
  36. package/dist/primitives/attachment/AttachmentRemove.d.ts +2 -3
  37. package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -1
  38. package/dist/primitives/attachment/AttachmentRoot.d.ts +2 -3
  39. package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
  40. package/dist/primitives/attachment/AttachmentThumb.d.ts +2 -3
  41. package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -1
  42. package/dist/primitives/branchPicker/BranchPickerCount.d.ts +2 -3
  43. package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -1
  44. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +7 -5
  45. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  46. package/dist/primitives/branchPicker/BranchPickerNext.js +21 -11
  47. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  48. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts +2 -3
  49. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts.map +1 -1
  50. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +7 -5
  51. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  52. package/dist/primitives/branchPicker/BranchPickerPrevious.js +21 -11
  53. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  54. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +2 -3
  55. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
  56. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts +2 -3
  57. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts.map +1 -1
  58. package/dist/primitives/composer/ComposerAddAttachment.d.ts +4 -7
  59. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
  60. package/dist/primitives/composer/ComposerAddAttachment.js +2 -4
  61. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  62. package/dist/primitives/composer/ComposerAttachments.d.ts +4 -5
  63. package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  64. package/dist/primitives/composer/ComposerCancel.d.ts +2 -3
  65. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  66. package/dist/primitives/composer/ComposerInput.d.ts +2 -3
  67. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  68. package/dist/primitives/composer/ComposerQuote.d.ts +2 -3
  69. package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -1
  70. package/dist/primitives/composer/ComposerQuoteDismiss.d.ts +2 -3
  71. package/dist/primitives/composer/ComposerQuoteDismiss.d.ts.map +1 -1
  72. package/dist/primitives/composer/ComposerQuoteText.d.ts +2 -3
  73. package/dist/primitives/composer/ComposerQuoteText.d.ts.map +1 -1
  74. package/dist/primitives/composer/ComposerRoot.d.ts +2 -3
  75. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  76. package/dist/primitives/composer/ComposerSend.d.ts +2 -3
  77. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  78. package/dist/primitives/error/ErrorMessage.d.ts +2 -3
  79. package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
  80. package/dist/primitives/error/ErrorRoot.d.ts +2 -3
  81. package/dist/primitives/error/ErrorRoot.d.ts.map +1 -1
  82. package/dist/primitives/message/MessageAttachments.d.ts +4 -5
  83. package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
  84. package/dist/primitives/message/MessageContent.d.ts +2 -3
  85. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  86. package/dist/primitives/message/MessageIf.d.ts +2 -3
  87. package/dist/primitives/message/MessageIf.d.ts.map +1 -1
  88. package/dist/primitives/message/MessageParts.d.ts +3 -3
  89. package/dist/primitives/message/MessageParts.d.ts.map +1 -1
  90. package/dist/primitives/message/MessageRoot.d.ts +2 -3
  91. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  92. package/dist/primitives/messagePart/MessagePartImage.d.ts +11 -0
  93. package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -0
  94. package/dist/primitives/messagePart/MessagePartImage.js +39 -0
  95. package/dist/primitives/messagePart/MessagePartImage.js.map +1 -0
  96. package/dist/primitives/messagePart/MessagePartInProgress.d.ts +2 -0
  97. package/dist/primitives/messagePart/MessagePartInProgress.js +2 -0
  98. package/dist/primitives/messagePart/MessagePartText.d.ts +11 -0
  99. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -0
  100. package/dist/primitives/messagePart/MessagePartText.js +32 -0
  101. package/dist/primitives/messagePart/MessagePartText.js.map +1 -0
  102. package/dist/primitives/messagePart.d.ts +10 -0
  103. package/dist/primitives/messagePart.d.ts.map +1 -0
  104. package/dist/primitives/messagePart.js +16 -0
  105. package/dist/primitives/messagePart.js.map +1 -0
  106. package/dist/primitives/queueItem/QueueItemRemove.d.ts +2 -3
  107. package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -1
  108. package/dist/primitives/queueItem/QueueItemSteer.d.ts +2 -3
  109. package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -1
  110. package/dist/primitives/queueItem/QueueItemText.d.ts +2 -3
  111. package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -1
  112. package/dist/primitives/suggestion/SuggestionDescription.d.ts +2 -3
  113. package/dist/primitives/suggestion/SuggestionDescription.d.ts.map +1 -1
  114. package/dist/primitives/suggestion/SuggestionTitle.d.ts +2 -3
  115. package/dist/primitives/suggestion/SuggestionTitle.d.ts.map +1 -1
  116. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +2 -3
  117. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
  118. package/dist/primitives/thread/ThreadEmpty.d.ts +2 -3
  119. package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -1
  120. package/dist/primitives/thread/ThreadIf.d.ts +2 -3
  121. package/dist/primitives/thread/ThreadIf.d.ts.map +1 -1
  122. package/dist/primitives/thread/ThreadMessages.d.ts +9 -5
  123. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  124. package/dist/primitives/thread/ThreadMessages.js +244 -171
  125. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  126. package/dist/primitives/thread/ThreadRoot.d.ts +2 -3
  127. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  128. package/dist/primitives/thread/ThreadSuggestion.d.ts +2 -3
  129. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  130. package/dist/primitives/threadList/ThreadListItems.d.ts +2 -3
  131. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  132. package/dist/primitives/threadList/ThreadListNew.d.ts +2 -3
  133. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
  134. package/dist/primitives/threadList/ThreadListRoot.d.ts +2 -3
  135. package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -1
  136. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +2 -3
  137. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
  138. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +2 -3
  139. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
  140. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts +2 -3
  141. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
  142. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +2 -3
  143. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
  144. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +2 -3
  145. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  146. package/package.json +13 -11
  147. package/src/index.ts +30 -0
  148. package/src/primitives/accessibilityRole.test.tsx +20 -0
  149. package/src/primitives/actionBar/ActionBar.test.tsx +299 -0
  150. package/src/primitives/actionBar/ActionBarCopy.tsx +8 -3
  151. package/src/primitives/actionBar/ActionBarEdit.tsx +16 -4
  152. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +14 -3
  153. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +14 -3
  154. package/src/primitives/actionBar/ActionBarReload.tsx +16 -4
  155. package/src/primitives/actionBar/ActionBarSpeak.tsx +42 -0
  156. package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +42 -0
  157. package/src/primitives/actionBar.ts +8 -0
  158. package/src/primitives/branchPicker/BranchPickerNext.test.tsx +52 -3
  159. package/src/primitives/branchPicker/BranchPickerNext.tsx +16 -4
  160. package/src/primitives/branchPicker/BranchPickerPrevious.test.tsx +52 -6
  161. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +16 -4
  162. package/src/primitives/composer/ComposerAddAttachment.tsx +3 -8
  163. package/src/primitives/messagePart/MessagePartImage.test.tsx +91 -0
  164. package/src/primitives/messagePart/MessagePartImage.tsx +33 -0
  165. package/src/primitives/messagePart/MessagePartInProgress.ts +1 -0
  166. package/src/primitives/messagePart/MessagePartText.test.tsx +80 -0
  167. package/src/primitives/messagePart/MessagePartText.tsx +36 -0
  168. package/src/primitives/messagePart.ts +10 -0
  169. package/src/primitives/thread/ThreadMessages.test.tsx +335 -54
  170. package/src/primitives/thread/ThreadMessages.tsx +104 -26
@@ -100,96 +100,111 @@ const useComposedFlatListRef = (forwardedRef) => {
100
100
  return t1;
101
101
  };
102
102
  const useThreadMessagesFlatListAutoScroll = (t0) => {
103
- const $ = c(25);
104
- const { flatListRef, hasMessages, autoScroll: t1, scrollToBottomOnRunStart: t2, scrollToBottomOnInitialize: t3, scrollToBottomOnThreadSwitch: t4 } = t0;
105
- const autoScroll = t1 === void 0 ? true : t1;
106
- const scrollToBottomOnRunStart = t2 === void 0 ? true : t2;
107
- const scrollToBottomOnInitialize = t3 === void 0 ? true : t3;
108
- const scrollToBottomOnThreadSwitch = t4 === void 0 ? true : t4;
109
- let t5;
103
+ const $ = c(29);
104
+ const { flatListRef, hasMessages, horizontal: t1, autoScroll: t2, scrollToBottomOnRunStart: t3, scrollToBottomOnInitialize: t4, scrollToBottomOnThreadSwitch: t5 } = t0;
105
+ const horizontal = t1 === void 0 ? false : t1;
106
+ const autoScroll = t2 === void 0 ? true : t2;
107
+ const scrollToBottomOnRunStart = t3 === void 0 ? true : t3;
108
+ const scrollToBottomOnInitialize = t4 === void 0 ? true : t4;
109
+ const scrollToBottomOnThreadSwitch = t5 === void 0 ? true : t5;
110
+ let t6;
110
111
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
111
- t5 = {
112
+ t6 = {
112
113
  contentHeight: 0,
113
114
  viewportHeight: 0,
114
115
  scrollY: 0
115
116
  };
116
- $[0] = t5;
117
- } else t5 = $[0];
118
- const metricsRef = useRef(t5);
117
+ $[0] = t6;
118
+ } else t6 = $[0];
119
+ const metricsRef = useRef(t6);
119
120
  const isAtBottomRef = useRef(true);
120
- const lastScrollEventYRef = useRef(0);
121
+ const lastScrollEventOffsetRef = useRef(0);
121
122
  const initializeScrollRequestedRef = useRef(false);
123
+ const contentSizeVersionRef = useRef(0);
122
124
  const pendingScrollToBottomRef = useRef(false);
123
- let t6;
125
+ let t7;
124
126
  if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
125
- t6 = () => {
127
+ t7 = () => {
126
128
  const { contentHeight, scrollY, viewportHeight } = metricsRef.current;
127
129
  isAtBottomRef.current = contentHeight <= viewportHeight || contentHeight - scrollY - viewportHeight <= AT_BOTTOM_THRESHOLD;
128
130
  };
129
- $[1] = t6;
130
- } else t6 = $[1];
131
- const updateIsAtBottom = t6;
132
- let t7;
131
+ $[1] = t7;
132
+ } else t7 = $[1];
133
+ const updateIsAtBottom = t7;
134
+ let t8;
133
135
  if ($[2] !== flatListRef) {
134
- t7 = (animated) => {
136
+ t8 = (animated) => {
135
137
  const { contentHeight: contentHeight_0, viewportHeight: viewportHeight_0 } = metricsRef.current;
136
- metricsRef.current.scrollY = Math.max(0, contentHeight_0 - viewportHeight_0);
138
+ const offset = Math.max(0, contentHeight_0 - viewportHeight_0);
139
+ metricsRef.current.scrollY = offset;
137
140
  isAtBottomRef.current = true;
138
- flatListRef.current?.scrollToEnd({ animated });
141
+ flatListRef.current?.scrollToOffset({
142
+ offset,
143
+ animated
144
+ });
139
145
  };
140
146
  $[2] = flatListRef;
141
- $[3] = t7;
142
- } else t7 = $[3];
143
- const scrollToBottom = t7;
144
- let t8;
145
- if ($[4] !== autoScroll || $[5] !== scrollToBottom) {
146
- t8 = (event) => {
147
+ $[3] = t8;
148
+ } else t8 = $[3];
149
+ const scrollToBottom = t8;
150
+ let t9;
151
+ if ($[4] !== autoScroll || $[5] !== horizontal || $[6] !== scrollToBottom) {
152
+ t9 = (event) => {
147
153
  const wasAtBottom = isAtBottomRef.current;
148
154
  const previousViewportHeight = metricsRef.current.viewportHeight;
149
- const viewportHeight_1 = event.nativeEvent.layout.height;
155
+ const viewportHeight_1 = horizontal ? event.nativeEvent.layout.width : event.nativeEvent.layout.height;
150
156
  metricsRef.current.viewportHeight = viewportHeight_1;
151
157
  updateIsAtBottom();
158
+ const pending = pendingScrollToBottomRef.current;
159
+ if (pending && contentSizeVersionRef.current >= pending.minimumContentSizeVersion && viewportHeight_1 > 0) {
160
+ pendingScrollToBottomRef.current = false;
161
+ scrollToBottom(pending.animated);
162
+ return;
163
+ }
152
164
  if (!wasAtBottom) return;
153
- if (autoScroll && previousViewportHeight !== 0 && viewportHeight_1 !== previousViewportHeight) {
154
- const pending = pendingScrollToBottomRef.current;
155
- scrollToBottom(pending ? pending.animated : false);
156
- } else isAtBottomRef.current = true;
165
+ if (autoScroll && previousViewportHeight !== 0 && viewportHeight_1 !== previousViewportHeight) scrollToBottom(pending ? pending.animated : false);
166
+ else isAtBottomRef.current = true;
157
167
  };
158
168
  $[4] = autoScroll;
159
- $[5] = scrollToBottom;
160
- $[6] = t8;
161
- } else t8 = $[6];
162
- const handleLayout = t8;
163
- let t9;
164
- if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
165
- t9 = (event_0) => {
169
+ $[5] = horizontal;
170
+ $[6] = scrollToBottom;
171
+ $[7] = t9;
172
+ } else t9 = $[7];
173
+ const handleLayout = t9;
174
+ let t10;
175
+ if ($[8] !== horizontal) {
176
+ t10 = (event_0) => {
166
177
  const { contentOffset, contentSize, layoutMeasurement } = event_0.nativeEvent;
167
- const previousEventY = lastScrollEventYRef.current;
178
+ const scrollOffset = horizontal ? contentOffset.x : contentOffset.y;
179
+ const previousEventOffset = lastScrollEventOffsetRef.current;
168
180
  const wasPinnedToBottom = isAtBottomRef.current;
169
- lastScrollEventYRef.current = contentOffset.y;
181
+ lastScrollEventOffsetRef.current = scrollOffset;
170
182
  metricsRef.current = {
171
- contentHeight: contentSize.height,
172
- viewportHeight: layoutMeasurement.height,
173
- scrollY: contentOffset.y
183
+ contentHeight: horizontal ? contentSize.width : contentSize.height,
184
+ viewportHeight: horizontal ? layoutMeasurement.width : layoutMeasurement.height,
185
+ scrollY: scrollOffset
174
186
  };
175
187
  updateIsAtBottom();
176
- const upwardMove = contentOffset.y < previousEventY;
188
+ const upwardMove = scrollOffset < previousEventOffset;
177
189
  if (wasPinnedToBottom && !upwardMove) isAtBottomRef.current = true;
178
190
  if (!isAtBottomRef.current && upwardMove) pendingScrollToBottomRef.current = false;
179
191
  };
180
- $[7] = t9;
181
- } else t9 = $[7];
182
- const handleScroll = t9;
183
- let t10;
184
- if ($[8] !== autoScroll || $[9] !== scrollToBottom) {
185
- t10 = (_width, height) => {
192
+ $[8] = horizontal;
193
+ $[9] = t10;
194
+ } else t10 = $[9];
195
+ const handleScroll = t10;
196
+ let t11;
197
+ if ($[10] !== autoScroll || $[11] !== horizontal || $[12] !== scrollToBottom) {
198
+ t11 = (width, height) => {
186
199
  const metrics = metricsRef.current;
200
+ const contentHeight_1 = horizontal ? width : height;
187
201
  const previousContentHeight = metrics.contentHeight;
188
202
  const wasAtBottom_0 = isAtBottomRef.current;
189
- metrics.contentHeight = height;
203
+ if (contentHeight_1 > 0) contentSizeVersionRef.current = contentSizeVersionRef.current + 1;
204
+ metrics.contentHeight = contentHeight_1;
190
205
  updateIsAtBottom();
191
206
  const pendingScroll = pendingScrollToBottomRef.current;
192
- if (pendingScroll) {
207
+ if (pendingScroll && contentSizeVersionRef.current >= pendingScroll.minimumContentSizeVersion && metrics.viewportHeight > 0) {
193
208
  pendingScrollToBottomRef.current = false;
194
209
  scrollToBottom(pendingScroll.animated);
195
210
  return;
@@ -197,18 +212,19 @@ const useThreadMessagesFlatListAutoScroll = (t0) => {
197
212
  if (!autoScroll) return;
198
213
  if (!wasAtBottom_0) return;
199
214
  if (previousContentHeight === 0) return;
200
- if (height <= previousContentHeight) return;
215
+ if (contentHeight_1 <= previousContentHeight) return;
201
216
  scrollToBottom(false);
202
217
  };
203
- $[8] = autoScroll;
204
- $[9] = scrollToBottom;
205
- $[10] = t10;
206
- } else t10 = $[10];
207
- const handleContentSizeChange = t10;
208
- let t11;
218
+ $[10] = autoScroll;
219
+ $[11] = horizontal;
220
+ $[12] = scrollToBottom;
221
+ $[13] = t11;
222
+ } else t11 = $[13];
223
+ const handleContentSizeChange = t11;
209
224
  let t12;
210
- if ($[11] !== hasMessages || $[12] !== scrollToBottom || $[13] !== scrollToBottomOnInitialize) {
211
- t11 = () => {
225
+ let t13;
226
+ if ($[14] !== hasMessages || $[15] !== scrollToBottom || $[16] !== scrollToBottomOnInitialize) {
227
+ t12 = () => {
212
228
  if (!scrollToBottomOnInitialize) return;
213
229
  if (!hasMessages) {
214
230
  initializeScrollRequestedRef.current = false;
@@ -216,127 +232,148 @@ const useThreadMessagesFlatListAutoScroll = (t0) => {
216
232
  }
217
233
  if (initializeScrollRequestedRef.current) return;
218
234
  initializeScrollRequestedRef.current = true;
219
- pendingScrollToBottomRef.current = { animated: false };
235
+ pendingScrollToBottomRef.current = {
236
+ animated: false,
237
+ minimumContentSizeVersion: Math.max(1, contentSizeVersionRef.current)
238
+ };
220
239
  scrollToBottom(false);
221
240
  };
222
- t12 = [
241
+ t13 = [
223
242
  hasMessages,
224
243
  scrollToBottom,
225
244
  scrollToBottomOnInitialize
226
245
  ];
227
- $[11] = hasMessages;
228
- $[12] = scrollToBottom;
229
- $[13] = scrollToBottomOnInitialize;
230
- $[14] = t11;
231
- $[15] = t12;
246
+ $[14] = hasMessages;
247
+ $[15] = scrollToBottom;
248
+ $[16] = scrollToBottomOnInitialize;
249
+ $[17] = t12;
250
+ $[18] = t13;
232
251
  } else {
233
- t11 = $[14];
234
- t12 = $[15];
252
+ t12 = $[17];
253
+ t13 = $[18];
235
254
  }
236
- useEffect(t11, t12);
237
- let t13;
238
- if ($[16] !== scrollToBottom || $[17] !== scrollToBottomOnRunStart) {
239
- t13 = () => {
240
- if (!scrollToBottomOnRunStart) return;
241
- pendingScrollToBottomRef.current = { animated: true };
242
- scrollToBottom(true);
243
- };
244
- $[16] = scrollToBottom;
245
- $[17] = scrollToBottomOnRunStart;
246
- $[18] = t13;
247
- } else t13 = $[18];
248
- useAuiEvent("thread.runStart", t13);
255
+ useEffect(t12, t13);
249
256
  let t14;
250
- if ($[19] !== scrollToBottom || $[20] !== scrollToBottomOnThreadSwitch) {
257
+ if ($[19] !== scrollToBottom || $[20] !== scrollToBottomOnRunStart) {
251
258
  t14 = () => {
252
- if (!scrollToBottomOnThreadSwitch) return;
253
- initializeScrollRequestedRef.current = false;
254
- lastScrollEventYRef.current = 0;
255
- pendingScrollToBottomRef.current = { animated: false };
256
- scrollToBottom(false);
259
+ if (!scrollToBottomOnRunStart) return;
260
+ pendingScrollToBottomRef.current = {
261
+ animated: true,
262
+ minimumContentSizeVersion: contentSizeVersionRef.current + 1
263
+ };
264
+ scrollToBottom(true);
257
265
  };
258
266
  $[19] = scrollToBottom;
259
- $[20] = scrollToBottomOnThreadSwitch;
267
+ $[20] = scrollToBottomOnRunStart;
260
268
  $[21] = t14;
261
269
  } else t14 = $[21];
262
- useAuiEvent("threads.selectionChanged", t14);
270
+ useAuiEvent("thread.runStart", t14);
263
271
  let t15;
264
- if ($[22] !== handleContentSizeChange || $[23] !== handleLayout) {
265
- t15 = {
272
+ if ($[22] !== scrollToBottom || $[23] !== scrollToBottomOnThreadSwitch) {
273
+ t15 = () => {
274
+ if (!scrollToBottomOnThreadSwitch) return;
275
+ initializeScrollRequestedRef.current = false;
276
+ lastScrollEventOffsetRef.current = 0;
277
+ pendingScrollToBottomRef.current = {
278
+ animated: false,
279
+ minimumContentSizeVersion: contentSizeVersionRef.current + 1
280
+ };
281
+ scrollToBottom(false);
282
+ };
283
+ $[22] = scrollToBottom;
284
+ $[23] = scrollToBottomOnThreadSwitch;
285
+ $[24] = t15;
286
+ } else t15 = $[24];
287
+ useAuiEvent("threads.selectionChanged", t15);
288
+ let t16;
289
+ if ($[25] !== handleContentSizeChange || $[26] !== handleLayout || $[27] !== handleScroll) {
290
+ t16 = {
266
291
  handleLayout,
267
292
  handleScroll,
268
293
  handleContentSizeChange
269
294
  };
270
- $[22] = handleContentSizeChange;
271
- $[23] = handleLayout;
272
- $[24] = t15;
273
- } else t15 = $[24];
274
- return t15;
295
+ $[25] = handleContentSizeChange;
296
+ $[26] = handleLayout;
297
+ $[27] = handleScroll;
298
+ $[28] = t16;
299
+ } else t16 = $[28];
300
+ return t16;
275
301
  };
276
302
  const ThreadMessagesFlatList = forwardRef((t0, forwardedRef) => {
277
- const $ = c(46);
303
+ const $ = c(61);
278
304
  let autoScroll;
279
305
  let children;
280
306
  let components;
281
307
  let flatListProps;
308
+ let history;
282
309
  let onContentSizeChange;
283
310
  let onLayout;
284
311
  let onScroll;
312
+ let onStartReached;
313
+ let onStartReachedThreshold;
285
314
  let scrollEventThrottle;
286
315
  let scrollToBottomOnInitialize;
287
316
  let scrollToBottomOnRunStart;
288
317
  let scrollToBottomOnThreadSwitch;
289
318
  if ($[0] !== t0) {
290
- ({autoScroll, components, children, onContentSizeChange, onLayout, onScroll, scrollEventThrottle, scrollToBottomOnInitialize, scrollToBottomOnRunStart, scrollToBottomOnThreadSwitch, ...flatListProps} = t0);
319
+ ({autoScroll, components, children, onContentSizeChange, onLayout, onScroll, onStartReached, onStartReachedThreshold, scrollEventThrottle, scrollToBottomOnInitialize, scrollToBottomOnRunStart, scrollToBottomOnThreadSwitch, history, ...flatListProps} = t0);
291
320
  $[0] = t0;
292
321
  $[1] = autoScroll;
293
322
  $[2] = children;
294
323
  $[3] = components;
295
324
  $[4] = flatListProps;
296
- $[5] = onContentSizeChange;
297
- $[6] = onLayout;
298
- $[7] = onScroll;
299
- $[8] = scrollEventThrottle;
300
- $[9] = scrollToBottomOnInitialize;
301
- $[10] = scrollToBottomOnRunStart;
302
- $[11] = scrollToBottomOnThreadSwitch;
325
+ $[5] = history;
326
+ $[6] = onContentSizeChange;
327
+ $[7] = onLayout;
328
+ $[8] = onScroll;
329
+ $[9] = onStartReached;
330
+ $[10] = onStartReachedThreshold;
331
+ $[11] = scrollEventThrottle;
332
+ $[12] = scrollToBottomOnInitialize;
333
+ $[13] = scrollToBottomOnRunStart;
334
+ $[14] = scrollToBottomOnThreadSwitch;
303
335
  } else {
304
336
  autoScroll = $[1];
305
337
  children = $[2];
306
338
  components = $[3];
307
339
  flatListProps = $[4];
308
- onContentSizeChange = $[5];
309
- onLayout = $[6];
310
- onScroll = $[7];
311
- scrollEventThrottle = $[8];
312
- scrollToBottomOnInitialize = $[9];
313
- scrollToBottomOnRunStart = $[10];
314
- scrollToBottomOnThreadSwitch = $[11];
340
+ history = $[5];
341
+ onContentSizeChange = $[6];
342
+ onLayout = $[7];
343
+ onScroll = $[8];
344
+ onStartReached = $[9];
345
+ onStartReachedThreshold = $[10];
346
+ scrollEventThrottle = $[11];
347
+ scrollToBottomOnInitialize = $[12];
348
+ scrollToBottomOnRunStart = $[13];
349
+ scrollToBottomOnThreadSwitch = $[14];
315
350
  }
316
351
  const messages = useAuiState(_temp3);
317
352
  const [flatListRef, setFlatListRef] = useComposedFlatListRef(forwardedRef);
318
353
  const t1 = messages.length > 0;
319
354
  let t2;
320
- if ($[12] !== autoScroll || $[13] !== flatListRef || $[14] !== scrollToBottomOnInitialize || $[15] !== scrollToBottomOnRunStart || $[16] !== scrollToBottomOnThreadSwitch || $[17] !== t1) {
355
+ if ($[15] !== autoScroll || $[16] !== flatListProps.horizontal || $[17] !== flatListRef || $[18] !== scrollToBottomOnInitialize || $[19] !== scrollToBottomOnRunStart || $[20] !== scrollToBottomOnThreadSwitch || $[21] !== t1) {
321
356
  t2 = {
322
357
  flatListRef,
323
358
  hasMessages: t1,
359
+ horizontal: flatListProps.horizontal,
324
360
  autoScroll,
325
361
  scrollToBottomOnInitialize,
326
362
  scrollToBottomOnRunStart,
327
363
  scrollToBottomOnThreadSwitch
328
364
  };
329
- $[12] = autoScroll;
330
- $[13] = flatListRef;
331
- $[14] = scrollToBottomOnInitialize;
332
- $[15] = scrollToBottomOnRunStart;
333
- $[16] = scrollToBottomOnThreadSwitch;
334
- $[17] = t1;
335
- $[18] = t2;
336
- } else t2 = $[18];
365
+ $[15] = autoScroll;
366
+ $[16] = flatListProps.horizontal;
367
+ $[17] = flatListRef;
368
+ $[18] = scrollToBottomOnInitialize;
369
+ $[19] = scrollToBottomOnRunStart;
370
+ $[20] = scrollToBottomOnThreadSwitch;
371
+ $[21] = t1;
372
+ $[22] = t2;
373
+ } else t2 = $[22];
337
374
  const { handleContentSizeChange: handleAutoScrollContentSizeChange, handleLayout: handleAutoScrollLayout, handleScroll: handleAutoScrollScroll } = useThreadMessagesFlatListAutoScroll(t2);
338
375
  let t3;
339
- if ($[19] !== children || $[20] !== components) {
376
+ if ($[23] !== children || $[24] !== components) {
340
377
  t3 = (t4) => {
341
378
  const { index } = t4;
342
379
  if (children) return /* @__PURE__ */ jsx(ThreadMessageByChildren, {
@@ -348,50 +385,67 @@ const ThreadMessagesFlatList = forwardRef((t0, forwardedRef) => {
348
385
  components
349
386
  });
350
387
  };
351
- $[19] = children;
352
- $[20] = components;
353
- $[21] = t3;
354
- } else t3 = $[21];
388
+ $[23] = children;
389
+ $[24] = components;
390
+ $[25] = t3;
391
+ } else t3 = $[25];
355
392
  const renderItem = t3;
356
393
  const keyExtractor = _temp4;
357
394
  const scrollTracking = (autoScroll ?? true) || (scrollToBottomOnInitialize ?? true) || (scrollToBottomOnRunStart ?? true) || (scrollToBottomOnThreadSwitch ?? true);
358
395
  let t4;
359
- if ($[22] !== handleAutoScrollLayout || $[23] !== onLayout) {
396
+ if ($[26] !== handleAutoScrollLayout || $[27] !== onLayout) {
360
397
  t4 = (event) => {
361
398
  handleAutoScrollLayout(event);
362
399
  onLayout?.(event);
363
400
  };
364
- $[22] = handleAutoScrollLayout;
365
- $[23] = onLayout;
366
- $[24] = t4;
367
- } else t4 = $[24];
401
+ $[26] = handleAutoScrollLayout;
402
+ $[27] = onLayout;
403
+ $[28] = t4;
404
+ } else t4 = $[28];
368
405
  const handleLayout = t4;
369
406
  let t5;
370
- if ($[25] !== handleAutoScrollScroll || $[26] !== onScroll) {
407
+ if ($[29] !== handleAutoScrollScroll || $[30] !== onScroll) {
371
408
  t5 = (event_0) => {
372
409
  handleAutoScrollScroll(event_0);
373
410
  onScroll?.(event_0);
374
411
  };
375
- $[25] = handleAutoScrollScroll;
376
- $[26] = onScroll;
377
- $[27] = t5;
378
- } else t5 = $[27];
412
+ $[29] = handleAutoScrollScroll;
413
+ $[30] = onScroll;
414
+ $[31] = t5;
415
+ } else t5 = $[31];
379
416
  const handleScroll = t5;
380
417
  let t6;
381
- if ($[28] !== handleAutoScrollContentSizeChange || $[29] !== onContentSizeChange) {
418
+ if ($[32] !== handleAutoScrollContentSizeChange || $[33] !== onContentSizeChange) {
382
419
  t6 = (width, height) => {
383
420
  handleAutoScrollContentSizeChange(width, height);
384
421
  onContentSizeChange?.(width, height);
385
422
  };
386
- $[28] = handleAutoScrollContentSizeChange;
387
- $[29] = onContentSizeChange;
388
- $[30] = t6;
389
- } else t6 = $[30];
423
+ $[32] = handleAutoScrollContentSizeChange;
424
+ $[33] = onContentSizeChange;
425
+ $[34] = t6;
426
+ } else t6 = $[34];
390
427
  const handleContentSizeChange = t6;
391
- const t7 = messages;
392
- let t8;
393
- if ($[31] !== handleContentSizeChange || $[32] !== handleLayout || $[33] !== handleScroll || $[34] !== onContentSizeChange || $[35] !== onLayout || $[36] !== onScroll || $[37] !== scrollEventThrottle || $[38] !== scrollTracking) {
394
- t8 = scrollTracking ? {
428
+ const canLoadMore = history?.hasMore && !history.isLoadingMore;
429
+ let t7;
430
+ if ($[35] !== history || $[36] !== onStartReached) {
431
+ t7 = (info) => {
432
+ onStartReached?.(info);
433
+ history?.loadMore();
434
+ };
435
+ $[35] = history;
436
+ $[36] = onStartReached;
437
+ $[37] = t7;
438
+ } else t7 = $[37];
439
+ const handleStartReached = t7;
440
+ const t8 = messages;
441
+ let t9;
442
+ if ($[38] === Symbol.for("react.memo_cache_sentinel")) {
443
+ t9 = { minIndexForVisible: 0 };
444
+ $[38] = t9;
445
+ } else t9 = $[38];
446
+ let t10;
447
+ if ($[39] !== handleContentSizeChange || $[40] !== handleLayout || $[41] !== handleScroll || $[42] !== onContentSizeChange || $[43] !== onLayout || $[44] !== onScroll || $[45] !== scrollEventThrottle || $[46] !== scrollTracking) {
448
+ t10 = scrollTracking ? {
395
449
  onContentSizeChange: handleContentSizeChange,
396
450
  onLayout: handleLayout,
397
451
  onScroll: handleScroll,
@@ -402,34 +456,53 @@ const ThreadMessagesFlatList = forwardRef((t0, forwardedRef) => {
402
456
  ...onScroll && { onScroll },
403
457
  ...scrollEventThrottle !== void 0 && { scrollEventThrottle }
404
458
  };
405
- $[31] = handleContentSizeChange;
406
- $[32] = handleLayout;
407
- $[33] = handleScroll;
408
- $[34] = onContentSizeChange;
409
- $[35] = onLayout;
410
- $[36] = onScroll;
411
- $[37] = scrollEventThrottle;
412
- $[38] = scrollTracking;
413
- $[39] = t8;
414
- } else t8 = $[39];
415
- let t9;
416
- if ($[40] !== flatListProps || $[41] !== renderItem || $[42] !== setFlatListRef || $[43] !== t7 || $[44] !== t8) {
417
- t9 = /* @__PURE__ */ jsx(FlatList, {
459
+ $[39] = handleContentSizeChange;
460
+ $[40] = handleLayout;
461
+ $[41] = handleScroll;
462
+ $[42] = onContentSizeChange;
463
+ $[43] = onLayout;
464
+ $[44] = onScroll;
465
+ $[45] = scrollEventThrottle;
466
+ $[46] = scrollTracking;
467
+ $[47] = t10;
468
+ } else t10 = $[47];
469
+ let t11;
470
+ if ($[48] !== canLoadMore || $[49] !== handleStartReached || $[50] !== history || $[51] !== onStartReached || $[52] !== onStartReachedThreshold) {
471
+ t11 = history ? {
472
+ ...canLoadMore ? { onStartReached: handleStartReached } : onStartReached ? { onStartReached } : {},
473
+ onStartReachedThreshold: onStartReachedThreshold ?? 1
474
+ } : {
475
+ ...onStartReached && { onStartReached },
476
+ ...onStartReachedThreshold !== void 0 && { onStartReachedThreshold }
477
+ };
478
+ $[48] = canLoadMore;
479
+ $[49] = handleStartReached;
480
+ $[50] = history;
481
+ $[51] = onStartReached;
482
+ $[52] = onStartReachedThreshold;
483
+ $[53] = t11;
484
+ } else t11 = $[53];
485
+ let t12;
486
+ if ($[54] !== flatListProps || $[55] !== renderItem || $[56] !== setFlatListRef || $[57] !== t10 || $[58] !== t11 || $[59] !== t8) {
487
+ t12 = /* @__PURE__ */ jsx(FlatList, {
418
488
  ref: setFlatListRef,
419
- data: t7,
489
+ data: t8,
420
490
  renderItem,
421
491
  keyExtractor,
422
- ...t8,
492
+ maintainVisibleContentPosition: t9,
493
+ ...t10,
494
+ ...t11,
423
495
  ...flatListProps
424
496
  });
425
- $[40] = flatListProps;
426
- $[41] = renderItem;
427
- $[42] = setFlatListRef;
428
- $[43] = t7;
429
- $[44] = t8;
430
- $[45] = t9;
431
- } else t9 = $[45];
432
- return t9;
497
+ $[54] = flatListProps;
498
+ $[55] = renderItem;
499
+ $[56] = setFlatListRef;
500
+ $[57] = t10;
501
+ $[58] = t11;
502
+ $[59] = t8;
503
+ $[60] = t12;
504
+ } else t12 = $[60];
505
+ return t12;
433
506
  });
434
507
  ThreadMessagesFlatList.displayName = "ThreadPrimitive.MessagesFlatList";
435
508
  /** @deprecated Use ThreadPrimitive.MessagesFlatList instead. */