@assistant-ui/react-native 0.1.42 → 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 (167) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.js +2 -1
  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 +2 -3
  59. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
  60. package/dist/primitives/composer/ComposerAttachments.d.ts +4 -5
  61. package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  62. package/dist/primitives/composer/ComposerCancel.d.ts +2 -3
  63. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  64. package/dist/primitives/composer/ComposerInput.d.ts +2 -3
  65. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  66. package/dist/primitives/composer/ComposerQuote.d.ts +2 -3
  67. package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -1
  68. package/dist/primitives/composer/ComposerQuoteDismiss.d.ts +2 -3
  69. package/dist/primitives/composer/ComposerQuoteDismiss.d.ts.map +1 -1
  70. package/dist/primitives/composer/ComposerQuoteText.d.ts +2 -3
  71. package/dist/primitives/composer/ComposerQuoteText.d.ts.map +1 -1
  72. package/dist/primitives/composer/ComposerRoot.d.ts +2 -3
  73. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  74. package/dist/primitives/composer/ComposerSend.d.ts +2 -3
  75. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  76. package/dist/primitives/error/ErrorMessage.d.ts +2 -3
  77. package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
  78. package/dist/primitives/error/ErrorRoot.d.ts +2 -3
  79. package/dist/primitives/error/ErrorRoot.d.ts.map +1 -1
  80. package/dist/primitives/message/MessageAttachments.d.ts +4 -5
  81. package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
  82. package/dist/primitives/message/MessageContent.d.ts +2 -3
  83. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  84. package/dist/primitives/message/MessageIf.d.ts +2 -3
  85. package/dist/primitives/message/MessageIf.d.ts.map +1 -1
  86. package/dist/primitives/message/MessageParts.d.ts +3 -3
  87. package/dist/primitives/message/MessageParts.d.ts.map +1 -1
  88. package/dist/primitives/message/MessageRoot.d.ts +2 -3
  89. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  90. package/dist/primitives/messagePart/MessagePartImage.d.ts +11 -0
  91. package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -0
  92. package/dist/primitives/messagePart/MessagePartImage.js +39 -0
  93. package/dist/primitives/messagePart/MessagePartImage.js.map +1 -0
  94. package/dist/primitives/messagePart/MessagePartInProgress.d.ts +2 -0
  95. package/dist/primitives/messagePart/MessagePartInProgress.js +2 -0
  96. package/dist/primitives/messagePart/MessagePartText.d.ts +11 -0
  97. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -0
  98. package/dist/primitives/messagePart/MessagePartText.js +32 -0
  99. package/dist/primitives/messagePart/MessagePartText.js.map +1 -0
  100. package/dist/primitives/messagePart.d.ts +10 -0
  101. package/dist/primitives/messagePart.d.ts.map +1 -0
  102. package/dist/primitives/messagePart.js +16 -0
  103. package/dist/primitives/messagePart.js.map +1 -0
  104. package/dist/primitives/queueItem/QueueItemRemove.d.ts +2 -3
  105. package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -1
  106. package/dist/primitives/queueItem/QueueItemSteer.d.ts +2 -3
  107. package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -1
  108. package/dist/primitives/queueItem/QueueItemText.d.ts +2 -3
  109. package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -1
  110. package/dist/primitives/suggestion/SuggestionDescription.d.ts +2 -3
  111. package/dist/primitives/suggestion/SuggestionDescription.d.ts.map +1 -1
  112. package/dist/primitives/suggestion/SuggestionTitle.d.ts +2 -3
  113. package/dist/primitives/suggestion/SuggestionTitle.d.ts.map +1 -1
  114. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +2 -3
  115. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
  116. package/dist/primitives/thread/ThreadEmpty.d.ts +2 -3
  117. package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -1
  118. package/dist/primitives/thread/ThreadIf.d.ts +2 -3
  119. package/dist/primitives/thread/ThreadIf.d.ts.map +1 -1
  120. package/dist/primitives/thread/ThreadMessages.d.ts +9 -5
  121. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  122. package/dist/primitives/thread/ThreadMessages.js +117 -78
  123. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  124. package/dist/primitives/thread/ThreadRoot.d.ts +2 -3
  125. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  126. package/dist/primitives/thread/ThreadSuggestion.d.ts +2 -3
  127. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  128. package/dist/primitives/threadList/ThreadListItems.d.ts +2 -3
  129. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  130. package/dist/primitives/threadList/ThreadListNew.d.ts +2 -3
  131. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
  132. package/dist/primitives/threadList/ThreadListRoot.d.ts +2 -3
  133. package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -1
  134. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +2 -3
  135. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
  136. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +2 -3
  137. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
  138. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts +2 -3
  139. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
  140. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +2 -3
  141. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
  142. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +2 -3
  143. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  144. package/package.json +13 -12
  145. package/src/index.ts +1 -0
  146. package/src/primitives/accessibilityRole.test.tsx +20 -0
  147. package/src/primitives/actionBar/ActionBar.test.tsx +299 -0
  148. package/src/primitives/actionBar/ActionBarCopy.tsx +8 -3
  149. package/src/primitives/actionBar/ActionBarEdit.tsx +16 -4
  150. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +14 -3
  151. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +14 -3
  152. package/src/primitives/actionBar/ActionBarReload.tsx +16 -4
  153. package/src/primitives/actionBar/ActionBarSpeak.tsx +42 -0
  154. package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +42 -0
  155. package/src/primitives/actionBar.ts +8 -0
  156. package/src/primitives/branchPicker/BranchPickerNext.test.tsx +52 -3
  157. package/src/primitives/branchPicker/BranchPickerNext.tsx +16 -4
  158. package/src/primitives/branchPicker/BranchPickerPrevious.test.tsx +52 -6
  159. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +16 -4
  160. package/src/primitives/messagePart/MessagePartImage.test.tsx +91 -0
  161. package/src/primitives/messagePart/MessagePartImage.tsx +33 -0
  162. package/src/primitives/messagePart/MessagePartInProgress.ts +1 -0
  163. package/src/primitives/messagePart/MessagePartText.test.tsx +80 -0
  164. package/src/primitives/messagePart/MessagePartText.tsx +36 -0
  165. package/src/primitives/messagePart.ts +10 -0
  166. package/src/primitives/thread/ThreadMessages.test.tsx +79 -1
  167. package/src/primitives/thread/ThreadMessages.tsx +37 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadIf.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadIf.tsx"],"mappings":";;KAGY;EACV,UAAU;EACV;EACA;;;;;cAMW,aAAY,UAAA,OAAA,WAA8B,kCAAa,IAAA"}
1
+ {"version":3,"file":"ThreadIf.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadIf.tsx"],"mappings":";;YAGY;EACV,UAAU;EACV;EACA;;;;;qBAMW,aAAY,UAAA,OAAA,WAA8B,kCAAa,IAAA"}
@@ -31,17 +31,21 @@ type MessagesContent = {
31
31
  }) => ReactNode;
32
32
  components?: never;
33
33
  };
34
- type ThreadMessagesFlatListProps = Omit<FlatListProps<ThreadMessage>, "data" | "renderItem" | "children"> & MessagesContent & {
34
+ export type ThreadMessagesFlatListProps = Omit<FlatListProps<ThreadMessage>, "data" | "renderItem" | "children"> & MessagesContent & {
35
35
  autoScroll?: boolean | undefined;
36
36
  scrollToBottomOnRunStart?: boolean | undefined;
37
37
  scrollToBottomOnInitialize?: boolean | undefined;
38
38
  scrollToBottomOnThreadSwitch?: boolean | undefined;
39
+ history?: {
40
+ hasMore: boolean;
41
+ isLoadingMore: boolean;
42
+ loadMore: () => void;
43
+ } | undefined;
39
44
  };
40
45
  /** @deprecated Use ThreadMessagesFlatListProps instead. */
41
- type ThreadMessagesProps = ThreadMessagesFlatListProps;
42
- declare const ThreadMessagesFlatList: import("react").ForwardRefExoticComponent<ThreadMessagesFlatListProps & import("react").RefAttributes<FlatList<ThreadMessage>>>;
46
+ export type ThreadMessagesProps = ThreadMessagesFlatListProps;
47
+ export declare const ThreadMessagesFlatList: import("react").ForwardRefExoticComponent<ThreadMessagesFlatListProps & import("react").RefAttributes<FlatList<ThreadMessage>>>;
43
48
  /** @deprecated Use ThreadPrimitive.MessagesFlatList instead. */
44
- declare const ThreadMessages: import("react").ForwardRefExoticComponent<ThreadMessagesFlatListProps & import("react").RefAttributes<FlatList<ThreadMessage>>>;
49
+ export declare const ThreadMessages: import("react").ForwardRefExoticComponent<ThreadMessagesFlatListProps & import("react").RefAttributes<FlatList<ThreadMessage>>>;
45
50
  //#endregion
46
- export { ThreadMessages, ThreadMessagesFlatList, ThreadMessagesFlatListProps, ThreadMessagesProps };
47
51
  //# sourceMappingURL=ThreadMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadMessages.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadMessages.tsx"],"mappings":";;;;KA2BK;EAEC,SAAS;EACT,eAAe;EACf,mBAAmB;EACnB,wBAAwB;EACxB,qBAAqB;EACrB,cAAc;EACd,mBAAmB;EACnB,gBAAgB;;EAGhB,UAAU;EACV,eAAe;EACf,mBAAmB;EACnB,wBAAwB;EACxB,qBAAqB;EACrB,aAAa;EACb,kBAAkB;EAClB,gBAAgB;;KAGjB;;EAGC,YAAY;EACZ;;EAGA,WAAW;IAAS,SAAS;QAAmB;EAChD;;KAGM,8BAA8B,KACxC,cAAc,sDAGd;EACE;EACA;EACA;EACA;;;KAIQ,sBAAsB;cA6UrB,wCAAsB,0BAAA,8CAAA,cAAA,SAAA;;cA8GtB,gCAAc,0BAAA,8CAAA,cAAA,SAAA"}
1
+ {"version":3,"file":"ThreadMessages.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadMessages.tsx"],"mappings":";;;;KA2BK;EAEC,SAAS;EACT,eAAe;EACf,mBAAmB;EACnB,wBAAwB;EACxB,qBAAqB;EACrB,cAAc;EACd,mBAAmB;EACnB,gBAAgB;;EAGhB,UAAU;EACV,eAAe;EACf,mBAAmB;EACnB,wBAAwB;EACxB,qBAAqB;EACrB,aAAa;EACb,kBAAkB;EAClB,gBAAgB;;KAGjB;;EAGC,YAAY;EACZ;;EAGA,WAAW;IAAS,SAAS;QAAmB;EAChD;;YAGM,8BAA8B,KACxC,cAAc,sDAGd;EACE;EACA;EACA;EACA;EACA;IAEM;IACA;IACA;;;;YAME,sBAAsB;qBA6UrB,wCAAsB,0BAAA,8CAAA,cAAA,SAAA;;qBA4ItB,gCAAc,0BAAA,8CAAA,cAAA,SAAA"}
@@ -300,50 +300,59 @@ const useThreadMessagesFlatListAutoScroll = (t0) => {
300
300
  return t16;
301
301
  };
302
302
  const ThreadMessagesFlatList = forwardRef((t0, forwardedRef) => {
303
- const $ = c(48);
303
+ const $ = c(61);
304
304
  let autoScroll;
305
305
  let children;
306
306
  let components;
307
307
  let flatListProps;
308
+ let history;
308
309
  let onContentSizeChange;
309
310
  let onLayout;
310
311
  let onScroll;
312
+ let onStartReached;
313
+ let onStartReachedThreshold;
311
314
  let scrollEventThrottle;
312
315
  let scrollToBottomOnInitialize;
313
316
  let scrollToBottomOnRunStart;
314
317
  let scrollToBottomOnThreadSwitch;
315
318
  if ($[0] !== t0) {
316
- ({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);
317
320
  $[0] = t0;
318
321
  $[1] = autoScroll;
319
322
  $[2] = children;
320
323
  $[3] = components;
321
324
  $[4] = flatListProps;
322
- $[5] = onContentSizeChange;
323
- $[6] = onLayout;
324
- $[7] = onScroll;
325
- $[8] = scrollEventThrottle;
326
- $[9] = scrollToBottomOnInitialize;
327
- $[10] = scrollToBottomOnRunStart;
328
- $[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;
329
335
  } else {
330
336
  autoScroll = $[1];
331
337
  children = $[2];
332
338
  components = $[3];
333
339
  flatListProps = $[4];
334
- onContentSizeChange = $[5];
335
- onLayout = $[6];
336
- onScroll = $[7];
337
- scrollEventThrottle = $[8];
338
- scrollToBottomOnInitialize = $[9];
339
- scrollToBottomOnRunStart = $[10];
340
- 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];
341
350
  }
342
351
  const messages = useAuiState(_temp3);
343
352
  const [flatListRef, setFlatListRef] = useComposedFlatListRef(forwardedRef);
344
353
  const t1 = messages.length > 0;
345
354
  let t2;
346
- if ($[12] !== autoScroll || $[13] !== flatListProps.horizontal || $[14] !== flatListRef || $[15] !== scrollToBottomOnInitialize || $[16] !== scrollToBottomOnRunStart || $[17] !== scrollToBottomOnThreadSwitch || $[18] !== t1) {
355
+ if ($[15] !== autoScroll || $[16] !== flatListProps.horizontal || $[17] !== flatListRef || $[18] !== scrollToBottomOnInitialize || $[19] !== scrollToBottomOnRunStart || $[20] !== scrollToBottomOnThreadSwitch || $[21] !== t1) {
347
356
  t2 = {
348
357
  flatListRef,
349
358
  hasMessages: t1,
@@ -353,18 +362,18 @@ const ThreadMessagesFlatList = forwardRef((t0, forwardedRef) => {
353
362
  scrollToBottomOnRunStart,
354
363
  scrollToBottomOnThreadSwitch
355
364
  };
356
- $[12] = autoScroll;
357
- $[13] = flatListProps.horizontal;
358
- $[14] = flatListRef;
359
- $[15] = scrollToBottomOnInitialize;
360
- $[16] = scrollToBottomOnRunStart;
361
- $[17] = scrollToBottomOnThreadSwitch;
362
- $[18] = t1;
363
- $[19] = t2;
364
- } else t2 = $[19];
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];
365
374
  const { handleContentSizeChange: handleAutoScrollContentSizeChange, handleLayout: handleAutoScrollLayout, handleScroll: handleAutoScrollScroll } = useThreadMessagesFlatListAutoScroll(t2);
366
375
  let t3;
367
- if ($[20] !== children || $[21] !== components) {
376
+ if ($[23] !== children || $[24] !== components) {
368
377
  t3 = (t4) => {
369
378
  const { index } = t4;
370
379
  if (children) return /* @__PURE__ */ jsx(ThreadMessageByChildren, {
@@ -376,55 +385,67 @@ const ThreadMessagesFlatList = forwardRef((t0, forwardedRef) => {
376
385
  components
377
386
  });
378
387
  };
379
- $[20] = children;
380
- $[21] = components;
381
- $[22] = t3;
382
- } else t3 = $[22];
388
+ $[23] = children;
389
+ $[24] = components;
390
+ $[25] = t3;
391
+ } else t3 = $[25];
383
392
  const renderItem = t3;
384
393
  const keyExtractor = _temp4;
385
394
  const scrollTracking = (autoScroll ?? true) || (scrollToBottomOnInitialize ?? true) || (scrollToBottomOnRunStart ?? true) || (scrollToBottomOnThreadSwitch ?? true);
386
395
  let t4;
387
- if ($[23] !== handleAutoScrollLayout || $[24] !== onLayout) {
396
+ if ($[26] !== handleAutoScrollLayout || $[27] !== onLayout) {
388
397
  t4 = (event) => {
389
398
  handleAutoScrollLayout(event);
390
399
  onLayout?.(event);
391
400
  };
392
- $[23] = handleAutoScrollLayout;
393
- $[24] = onLayout;
394
- $[25] = t4;
395
- } else t4 = $[25];
401
+ $[26] = handleAutoScrollLayout;
402
+ $[27] = onLayout;
403
+ $[28] = t4;
404
+ } else t4 = $[28];
396
405
  const handleLayout = t4;
397
406
  let t5;
398
- if ($[26] !== handleAutoScrollScroll || $[27] !== onScroll) {
407
+ if ($[29] !== handleAutoScrollScroll || $[30] !== onScroll) {
399
408
  t5 = (event_0) => {
400
409
  handleAutoScrollScroll(event_0);
401
410
  onScroll?.(event_0);
402
411
  };
403
- $[26] = handleAutoScrollScroll;
404
- $[27] = onScroll;
405
- $[28] = t5;
406
- } else t5 = $[28];
412
+ $[29] = handleAutoScrollScroll;
413
+ $[30] = onScroll;
414
+ $[31] = t5;
415
+ } else t5 = $[31];
407
416
  const handleScroll = t5;
408
417
  let t6;
409
- if ($[29] !== handleAutoScrollContentSizeChange || $[30] !== onContentSizeChange) {
418
+ if ($[32] !== handleAutoScrollContentSizeChange || $[33] !== onContentSizeChange) {
410
419
  t6 = (width, height) => {
411
420
  handleAutoScrollContentSizeChange(width, height);
412
421
  onContentSizeChange?.(width, height);
413
422
  };
414
- $[29] = handleAutoScrollContentSizeChange;
415
- $[30] = onContentSizeChange;
416
- $[31] = t6;
417
- } else t6 = $[31];
423
+ $[32] = handleAutoScrollContentSizeChange;
424
+ $[33] = onContentSizeChange;
425
+ $[34] = t6;
426
+ } else t6 = $[34];
418
427
  const handleContentSizeChange = t6;
419
- const t7 = messages;
420
- let t8;
421
- if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
422
- t8 = { minIndexForVisible: 0 };
423
- $[32] = t8;
424
- } else t8 = $[32];
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;
425
441
  let t9;
426
- if ($[33] !== handleContentSizeChange || $[34] !== handleLayout || $[35] !== handleScroll || $[36] !== onContentSizeChange || $[37] !== onLayout || $[38] !== onScroll || $[39] !== scrollEventThrottle || $[40] !== scrollTracking) {
427
- t9 = scrollTracking ? {
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 ? {
428
449
  onContentSizeChange: handleContentSizeChange,
429
450
  onLayout: handleLayout,
430
451
  onScroll: handleScroll,
@@ -435,35 +456,53 @@ const ThreadMessagesFlatList = forwardRef((t0, forwardedRef) => {
435
456
  ...onScroll && { onScroll },
436
457
  ...scrollEventThrottle !== void 0 && { scrollEventThrottle }
437
458
  };
438
- $[33] = handleContentSizeChange;
439
- $[34] = handleLayout;
440
- $[35] = handleScroll;
441
- $[36] = onContentSizeChange;
442
- $[37] = onLayout;
443
- $[38] = onScroll;
444
- $[39] = scrollEventThrottle;
445
- $[40] = scrollTracking;
446
- $[41] = t9;
447
- } else t9 = $[41];
448
- let t10;
449
- if ($[42] !== flatListProps || $[43] !== renderItem || $[44] !== setFlatListRef || $[45] !== t7 || $[46] !== t9) {
450
- t10 = /* @__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, {
451
488
  ref: setFlatListRef,
452
- data: t7,
489
+ data: t8,
453
490
  renderItem,
454
491
  keyExtractor,
455
- maintainVisibleContentPosition: t8,
456
- ...t9,
492
+ maintainVisibleContentPosition: t9,
493
+ ...t10,
494
+ ...t11,
457
495
  ...flatListProps
458
496
  });
459
- $[42] = flatListProps;
460
- $[43] = renderItem;
461
- $[44] = setFlatListRef;
462
- $[45] = t7;
463
- $[46] = t9;
464
- $[47] = t10;
465
- } else t10 = $[47];
466
- return t10;
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;
467
506
  });
468
507
  ThreadMessagesFlatList.displayName = "ThreadPrimitive.MessagesFlatList";
469
508
  /** @deprecated Use ThreadPrimitive.MessagesFlatList instead. */
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadMessages.js","names":["ComponentType","FC","ForwardedRef","ReactNode","RefObject","forwardRef","memo","useCallback","useEffect","useRef","FlatList","FlatListProps","LayoutChangeEvent","NativeScrollEvent","NativeSyntheticEvent","MessageState","ThreadMessage","RenderChildrenWithAccessor","useAuiEvent","useAuiState","MessageByIndexProvider","MessageComponents","Message","EditComposer","UserEditComposer","AssistantEditComposer","SystemEditComposer","UserMessage","AssistantMessage","SystemMessage","MessagesContent","components","children","value","message","ThreadMessagesFlatListProps","Omit","autoScroll","scrollToBottomOnRunStart","scrollToBottomOnInitialize","scrollToBottomOnThreadSwitch","ThreadMessagesProps","DEFAULT_SYSTEM_MESSAGE","AT_BOTTOM_THRESHOLD","getComponent","role","isEditing","_exhaustiveCheck","Error","ThreadMessageComponent","t0","$","_c","_temp","_temp2","t1","Component","t2","ThreadMessageByIndex","index","prev","next","displayName","ThreadMessageByChildren","aui","thread","getState","getItem","setForwardedRef","ref","T","current","useComposedFlatListRef","forwardedRef","flatListRef","node","setFlatListRef","const","useThreadMessagesFlatListAutoScroll","hasMessages","horizontal","t3","t4","t5","undefined","t6","Symbol","for","contentHeight","viewportHeight","scrollY","metricsRef","isAtBottomRef","lastScrollEventOffsetRef","initializeScrollRequestedRef","contentSizeVersionRef","pendingScrollToBottomRef","t7","updateIsAtBottom","t8","animated","contentHeight_0","viewportHeight_0","offset","Math","max","scrollToOffset","scrollToBottom","t9","event","wasAtBottom","previousViewportHeight","viewportHeight_1","nativeEvent","layout","width","height","pending","minimumContentSizeVersion","handleLayout","t10","event_0","contentOffset","contentSize","layoutMeasurement","scrollOffset","x","y","previousEventOffset","wasPinnedToBottom","upwardMove","handleScroll","t11","metrics","contentHeight_1","previousContentHeight","wasAtBottom_0","pendingScroll","handleContentSizeChange","t12","t13","t14","t15","t16","ThreadMessagesFlatList","flatListProps","onContentSizeChange","onLayout","onScroll","scrollEventThrottle","messages","_temp3","length","handleAutoScrollContentSizeChange","handleAutoScrollLayout","handleAutoScrollScroll","renderItem","keyExtractor","_temp4","scrollTracking","minIndexForVisible","ThreadMessages","props","s","s_0","composer","item","id"],"sources":["../../../src/primitives/thread/ThreadMessages.tsx"],"sourcesContent":["import {\n type ComponentType,\n type FC,\n type ForwardedRef,\n type ReactNode,\n type RefObject,\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport {\n FlatList,\n type FlatListProps,\n type LayoutChangeEvent,\n type NativeScrollEvent,\n type NativeSyntheticEvent,\n} from \"react-native\";\nimport type { MessageState, ThreadMessage } from \"@assistant-ui/core\";\nimport {\n RenderChildrenWithAccessor,\n useAuiEvent,\n useAuiState,\n} from \"@assistant-ui/store\";\nimport { MessageByIndexProvider } from \"@assistant-ui/core/react\";\n\ntype MessageComponents =\n | {\n Message: ComponentType;\n EditComposer?: ComponentType | undefined;\n UserEditComposer?: ComponentType | undefined;\n AssistantEditComposer?: ComponentType | undefined;\n SystemEditComposer?: ComponentType | undefined;\n UserMessage?: ComponentType | undefined;\n AssistantMessage?: ComponentType | undefined;\n SystemMessage?: ComponentType | undefined;\n }\n | {\n Message?: ComponentType | undefined;\n EditComposer?: ComponentType | undefined;\n UserEditComposer?: ComponentType | undefined;\n AssistantEditComposer?: ComponentType | undefined;\n SystemEditComposer?: ComponentType | undefined;\n UserMessage: ComponentType;\n AssistantMessage: ComponentType;\n SystemMessage?: ComponentType | undefined;\n };\n\ntype MessagesContent =\n | {\n /** @deprecated Use the children render function instead. */\n components: MessageComponents;\n children?: never;\n }\n | {\n children: (value: { message: MessageState }) => ReactNode;\n components?: never;\n };\n\nexport type ThreadMessagesFlatListProps = Omit<\n FlatListProps<ThreadMessage>,\n \"data\" | \"renderItem\" | \"children\"\n> &\n MessagesContent & {\n autoScroll?: boolean | undefined;\n scrollToBottomOnRunStart?: boolean | undefined;\n scrollToBottomOnInitialize?: boolean | undefined;\n scrollToBottomOnThreadSwitch?: boolean | undefined;\n };\n\n/** @deprecated Use ThreadMessagesFlatListProps instead. */\nexport type ThreadMessagesProps = ThreadMessagesFlatListProps;\n\nconst DEFAULT_SYSTEM_MESSAGE = () => null;\nconst AT_BOTTOM_THRESHOLD = 4;\n\nconst getComponent = (\n components: MessageComponents,\n role: ThreadMessage[\"role\"],\n isEditing: boolean,\n) => {\n switch (role) {\n case \"user\":\n if (isEditing) {\n return (\n components.UserEditComposer ??\n components.EditComposer ??\n components.UserMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return components.UserMessage ?? (components.Message as ComponentType);\n }\n case \"assistant\":\n if (isEditing) {\n return (\n components.AssistantEditComposer ??\n components.EditComposer ??\n components.AssistantMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return (\n components.AssistantMessage ?? (components.Message as ComponentType)\n );\n }\n case \"system\":\n if (isEditing) {\n return (\n components.SystemEditComposer ??\n components.EditComposer ??\n components.SystemMessage ??\n (components.Message as ComponentType) ??\n DEFAULT_SYSTEM_MESSAGE\n );\n } else {\n return (\n components.SystemMessage ??\n (components.Message as ComponentType) ??\n DEFAULT_SYSTEM_MESSAGE\n );\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unknown message role: ${_exhaustiveCheck}`);\n }\n }\n};\n\nconst ThreadMessageComponent: FC<{ components: MessageComponents }> = ({\n components,\n}) => {\n const role = useAuiState((s) => s.message.role);\n const isEditing = useAuiState((s) => s.message.composer.isEditing);\n const Component = getComponent(components, role, isEditing);\n\n return <Component />;\n};\n\nconst ThreadMessageByIndex = memo(\n ({ index, components }: { index: number; components: MessageComponents }) => {\n return (\n <MessageByIndexProvider index={index}>\n <ThreadMessageComponent components={components} />\n </MessageByIndexProvider>\n );\n },\n (prev, next) =>\n prev.index === next.index && prev.components === next.components,\n);\nThreadMessageByIndex.displayName = \"ThreadPrimitive.MessageByIndex\";\n\nconst ThreadMessageByChildren = memo(\n ({\n index,\n children,\n }: {\n index: number;\n children: (value: { message: MessageState }) => ReactNode;\n }) => {\n return (\n <MessageByIndexProvider index={index}>\n <RenderChildrenWithAccessor\n getItemState={(aui) => aui.thread.message({ index }).getState()}\n >\n {(getItem) =>\n children({\n get message() {\n return getItem();\n },\n })\n }\n </RenderChildrenWithAccessor>\n </MessageByIndexProvider>\n );\n },\n (prev, next) => prev.index === next.index && prev.children === next.children,\n);\nThreadMessageByChildren.displayName = \"ThreadPrimitive.MessageByChildren\";\n\nconst 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\nconst useComposedFlatListRef = (\n forwardedRef: ForwardedRef<FlatList<ThreadMessage>>,\n) => {\n const flatListRef = useRef<FlatList<ThreadMessage> | null>(null);\n\n const setFlatListRef = useCallback(\n (node: FlatList<ThreadMessage> | null) => {\n flatListRef.current = node;\n setForwardedRef(forwardedRef, node);\n },\n [forwardedRef],\n );\n\n return [flatListRef, setFlatListRef] as const;\n};\n\nconst useThreadMessagesFlatListAutoScroll = ({\n flatListRef,\n hasMessages,\n horizontal = false,\n autoScroll = true,\n scrollToBottomOnRunStart = true,\n scrollToBottomOnInitialize = true,\n scrollToBottomOnThreadSwitch = true,\n}: {\n flatListRef: RefObject<FlatList<ThreadMessage> | null>;\n hasMessages: boolean;\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 =\n contentHeight <= viewportHeight ||\n contentHeight - scrollY - viewportHeight <= AT_BOTTOM_THRESHOLD;\n }, []);\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 = Math.max(0, contentHeight - viewportHeight);\n metricsRef.current.scrollY = offset;\n isAtBottomRef.current = true;\n flatListRef.current?.scrollToOffset({ offset, animated });\n },\n [flatListRef],\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 = scrollOffset < previousEventOffset;\n // Only a deliberate upward move 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, 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\nexport const ThreadMessagesFlatList = forwardRef<\n FlatList<ThreadMessage>,\n ThreadMessagesFlatListProps\n>(\n (\n {\n autoScroll,\n components,\n children,\n onContentSizeChange,\n onLayout,\n onScroll,\n scrollEventThrottle,\n scrollToBottomOnInitialize,\n scrollToBottomOnRunStart,\n scrollToBottomOnThreadSwitch,\n ...flatListProps\n },\n forwardedRef,\n ) => {\n const messages = useAuiState((s) => s.thread.messages);\n const [flatListRef, setFlatListRef] = useComposedFlatListRef(forwardedRef);\n const {\n handleContentSizeChange: handleAutoScrollContentSizeChange,\n handleLayout: handleAutoScrollLayout,\n handleScroll: handleAutoScrollScroll,\n } = useThreadMessagesFlatListAutoScroll({\n flatListRef,\n hasMessages: messages.length > 0,\n horizontal: flatListProps.horizontal,\n autoScroll,\n scrollToBottomOnInitialize,\n scrollToBottomOnRunStart,\n scrollToBottomOnThreadSwitch,\n });\n\n const renderItem = useCallback(\n ({ index }: { item: ThreadMessage; index: number }) => {\n if (children) {\n return (\n <ThreadMessageByChildren index={index}>\n {children}\n </ThreadMessageByChildren>\n );\n }\n return <ThreadMessageByIndex index={index} components={components!} />;\n },\n [components, children],\n );\n\n const keyExtractor = useCallback((item: ThreadMessage) => item.id, []);\n\n const scrollTracking =\n (autoScroll ?? true) ||\n (scrollToBottomOnInitialize ?? true) ||\n (scrollToBottomOnRunStart ?? true) ||\n (scrollToBottomOnThreadSwitch ?? true);\n\n const handleLayout = useCallback(\n (event: LayoutChangeEvent) => {\n handleAutoScrollLayout(event);\n onLayout?.(event);\n },\n [handleAutoScrollLayout, onLayout],\n );\n\n const handleScroll = useCallback(\n (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n handleAutoScrollScroll(event);\n onScroll?.(event);\n },\n [handleAutoScrollScroll, onScroll],\n );\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 return (\n <FlatList\n ref={setFlatListRef}\n data={messages as unknown as ThreadMessage[]}\n renderItem={renderItem}\n keyExtractor={keyExtractor}\n maintainVisibleContentPosition={{ minIndexForVisible: 0 }}\n {...(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 {...flatListProps}\n />\n );\n },\n);\nThreadMessagesFlatList.displayName = \"ThreadPrimitive.MessagesFlatList\";\n\n/** @deprecated Use ThreadPrimitive.MessagesFlatList instead. */\nexport const ThreadMessages = forwardRef<\n FlatList<ThreadMessage>,\n ThreadMessagesProps\n>(\n (\n {\n autoScroll = false,\n scrollToBottomOnInitialize = false,\n scrollToBottomOnRunStart = false,\n scrollToBottomOnThreadSwitch = false,\n ...props\n },\n ref,\n ) => (\n <ThreadMessagesFlatList\n ref={ref}\n autoScroll={autoScroll}\n scrollToBottomOnInitialize={scrollToBottomOnInitialize}\n scrollToBottomOnRunStart={scrollToBottomOnRunStart}\n scrollToBottomOnThreadSwitch={scrollToBottomOnThreadSwitch}\n {...props}\n />\n ),\n);\nThreadMessages.displayName = \"ThreadPrimitive.Messages\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"ThreadMessages.js","names":["ComponentType","FC","ForwardedRef","ReactNode","RefObject","forwardRef","memo","useCallback","useEffect","useRef","FlatList","FlatListProps","LayoutChangeEvent","NativeScrollEvent","NativeSyntheticEvent","MessageState","ThreadMessage","RenderChildrenWithAccessor","useAuiEvent","useAuiState","MessageByIndexProvider","MessageComponents","Message","EditComposer","UserEditComposer","AssistantEditComposer","SystemEditComposer","UserMessage","AssistantMessage","SystemMessage","MessagesContent","components","children","value","message","ThreadMessagesFlatListProps","Omit","autoScroll","scrollToBottomOnRunStart","scrollToBottomOnInitialize","scrollToBottomOnThreadSwitch","history","hasMore","isLoadingMore","loadMore","ThreadMessagesProps","DEFAULT_SYSTEM_MESSAGE","AT_BOTTOM_THRESHOLD","getComponent","role","isEditing","_exhaustiveCheck","Error","ThreadMessageComponent","t0","$","_c","_temp","_temp2","t1","Component","t2","ThreadMessageByIndex","index","prev","next","displayName","ThreadMessageByChildren","aui","thread","getState","getItem","setForwardedRef","ref","T","current","useComposedFlatListRef","forwardedRef","flatListRef","node","setFlatListRef","const","useThreadMessagesFlatListAutoScroll","hasMessages","horizontal","t3","t4","t5","undefined","t6","Symbol","for","contentHeight","viewportHeight","scrollY","metricsRef","isAtBottomRef","lastScrollEventOffsetRef","initializeScrollRequestedRef","contentSizeVersionRef","pendingScrollToBottomRef","t7","updateIsAtBottom","t8","animated","contentHeight_0","viewportHeight_0","offset","Math","max","scrollToOffset","scrollToBottom","t9","event","wasAtBottom","previousViewportHeight","viewportHeight_1","nativeEvent","layout","width","height","pending","minimumContentSizeVersion","handleLayout","t10","event_0","contentOffset","contentSize","layoutMeasurement","scrollOffset","x","y","previousEventOffset","wasPinnedToBottom","upwardMove","handleScroll","t11","metrics","contentHeight_1","previousContentHeight","wasAtBottom_0","pendingScroll","handleContentSizeChange","t12","t13","t14","t15","t16","ThreadMessagesFlatList","flatListProps","onContentSizeChange","onLayout","onScroll","onStartReached","onStartReachedThreshold","scrollEventThrottle","messages","_temp3","length","handleAutoScrollContentSizeChange","handleAutoScrollLayout","handleAutoScrollScroll","renderItem","keyExtractor","_temp4","scrollTracking","canLoadMore","info","handleStartReached","minIndexForVisible","ThreadMessages","props","s","s_0","composer","item","id"],"sources":["../../../src/primitives/thread/ThreadMessages.tsx"],"sourcesContent":["import {\n type ComponentType,\n type FC,\n type ForwardedRef,\n type ReactNode,\n type RefObject,\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport {\n FlatList,\n type FlatListProps,\n type LayoutChangeEvent,\n type NativeScrollEvent,\n type NativeSyntheticEvent,\n} from \"react-native\";\nimport type { MessageState, ThreadMessage } from \"@assistant-ui/core\";\nimport {\n RenderChildrenWithAccessor,\n useAuiEvent,\n useAuiState,\n} from \"@assistant-ui/store\";\nimport { MessageByIndexProvider } from \"@assistant-ui/core/react\";\n\ntype MessageComponents =\n | {\n Message: ComponentType;\n EditComposer?: ComponentType | undefined;\n UserEditComposer?: ComponentType | undefined;\n AssistantEditComposer?: ComponentType | undefined;\n SystemEditComposer?: ComponentType | undefined;\n UserMessage?: ComponentType | undefined;\n AssistantMessage?: ComponentType | undefined;\n SystemMessage?: ComponentType | undefined;\n }\n | {\n Message?: ComponentType | undefined;\n EditComposer?: ComponentType | undefined;\n UserEditComposer?: ComponentType | undefined;\n AssistantEditComposer?: ComponentType | undefined;\n SystemEditComposer?: ComponentType | undefined;\n UserMessage: ComponentType;\n AssistantMessage: ComponentType;\n SystemMessage?: ComponentType | undefined;\n };\n\ntype MessagesContent =\n | {\n /** @deprecated Use the children render function instead. */\n components: MessageComponents;\n children?: never;\n }\n | {\n children: (value: { message: MessageState }) => ReactNode;\n components?: never;\n };\n\nexport type ThreadMessagesFlatListProps = Omit<\n FlatListProps<ThreadMessage>,\n \"data\" | \"renderItem\" | \"children\"\n> &\n MessagesContent & {\n autoScroll?: boolean | undefined;\n scrollToBottomOnRunStart?: boolean | undefined;\n scrollToBottomOnInitialize?: boolean | undefined;\n scrollToBottomOnThreadSwitch?: boolean | undefined;\n history?:\n | {\n hasMore: boolean;\n isLoadingMore: boolean;\n loadMore: () => void;\n }\n | undefined;\n };\n\n/** @deprecated Use ThreadMessagesFlatListProps instead. */\nexport type ThreadMessagesProps = ThreadMessagesFlatListProps;\n\nconst DEFAULT_SYSTEM_MESSAGE = () => null;\nconst AT_BOTTOM_THRESHOLD = 4;\n\nconst getComponent = (\n components: MessageComponents,\n role: ThreadMessage[\"role\"],\n isEditing: boolean,\n) => {\n switch (role) {\n case \"user\":\n if (isEditing) {\n return (\n components.UserEditComposer ??\n components.EditComposer ??\n components.UserMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return components.UserMessage ?? (components.Message as ComponentType);\n }\n case \"assistant\":\n if (isEditing) {\n return (\n components.AssistantEditComposer ??\n components.EditComposer ??\n components.AssistantMessage ??\n (components.Message as ComponentType)\n );\n } else {\n return (\n components.AssistantMessage ?? (components.Message as ComponentType)\n );\n }\n case \"system\":\n if (isEditing) {\n return (\n components.SystemEditComposer ??\n components.EditComposer ??\n components.SystemMessage ??\n (components.Message as ComponentType) ??\n DEFAULT_SYSTEM_MESSAGE\n );\n } else {\n return (\n components.SystemMessage ??\n (components.Message as ComponentType) ??\n DEFAULT_SYSTEM_MESSAGE\n );\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unknown message role: ${_exhaustiveCheck}`);\n }\n }\n};\n\nconst ThreadMessageComponent: FC<{ components: MessageComponents }> = ({\n components,\n}) => {\n const role = useAuiState((s) => s.message.role);\n const isEditing = useAuiState((s) => s.message.composer.isEditing);\n const Component = getComponent(components, role, isEditing);\n\n return <Component />;\n};\n\nconst ThreadMessageByIndex = memo(\n ({ index, components }: { index: number; components: MessageComponents }) => {\n return (\n <MessageByIndexProvider index={index}>\n <ThreadMessageComponent components={components} />\n </MessageByIndexProvider>\n );\n },\n (prev, next) =>\n prev.index === next.index && prev.components === next.components,\n);\nThreadMessageByIndex.displayName = \"ThreadPrimitive.MessageByIndex\";\n\nconst ThreadMessageByChildren = memo(\n ({\n index,\n children,\n }: {\n index: number;\n children: (value: { message: MessageState }) => ReactNode;\n }) => {\n return (\n <MessageByIndexProvider index={index}>\n <RenderChildrenWithAccessor\n getItemState={(aui) => aui.thread.message({ index }).getState()}\n >\n {(getItem) =>\n children({\n get message() {\n return getItem();\n },\n })\n }\n </RenderChildrenWithAccessor>\n </MessageByIndexProvider>\n );\n },\n (prev, next) => prev.index === next.index && prev.children === next.children,\n);\nThreadMessageByChildren.displayName = \"ThreadPrimitive.MessageByChildren\";\n\nconst 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\nconst useComposedFlatListRef = (\n forwardedRef: ForwardedRef<FlatList<ThreadMessage>>,\n) => {\n const flatListRef = useRef<FlatList<ThreadMessage> | null>(null);\n\n const setFlatListRef = useCallback(\n (node: FlatList<ThreadMessage> | null) => {\n flatListRef.current = node;\n setForwardedRef(forwardedRef, node);\n },\n [forwardedRef],\n );\n\n return [flatListRef, setFlatListRef] as const;\n};\n\nconst useThreadMessagesFlatListAutoScroll = ({\n flatListRef,\n hasMessages,\n horizontal = false,\n autoScroll = true,\n scrollToBottomOnRunStart = true,\n scrollToBottomOnInitialize = true,\n scrollToBottomOnThreadSwitch = true,\n}: {\n flatListRef: RefObject<FlatList<ThreadMessage> | null>;\n hasMessages: boolean;\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 =\n contentHeight <= viewportHeight ||\n contentHeight - scrollY - viewportHeight <= AT_BOTTOM_THRESHOLD;\n }, []);\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 = Math.max(0, contentHeight - viewportHeight);\n metricsRef.current.scrollY = offset;\n isAtBottomRef.current = true;\n flatListRef.current?.scrollToOffset({ offset, animated });\n },\n [flatListRef],\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 = scrollOffset < previousEventOffset;\n // Only a deliberate upward move 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, 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\nexport const ThreadMessagesFlatList = forwardRef<\n FlatList<ThreadMessage>,\n ThreadMessagesFlatListProps\n>(\n (\n {\n autoScroll,\n components,\n children,\n onContentSizeChange,\n onLayout,\n onScroll,\n onStartReached,\n onStartReachedThreshold,\n scrollEventThrottle,\n scrollToBottomOnInitialize,\n scrollToBottomOnRunStart,\n scrollToBottomOnThreadSwitch,\n history,\n ...flatListProps\n },\n forwardedRef,\n ) => {\n const messages = useAuiState((s) => s.thread.messages);\n const [flatListRef, setFlatListRef] = useComposedFlatListRef(forwardedRef);\n const {\n handleContentSizeChange: handleAutoScrollContentSizeChange,\n handleLayout: handleAutoScrollLayout,\n handleScroll: handleAutoScrollScroll,\n } = useThreadMessagesFlatListAutoScroll({\n flatListRef,\n hasMessages: messages.length > 0,\n horizontal: flatListProps.horizontal,\n autoScroll,\n scrollToBottomOnInitialize,\n scrollToBottomOnRunStart,\n scrollToBottomOnThreadSwitch,\n });\n\n const renderItem = useCallback(\n ({ index }: { item: ThreadMessage; index: number }) => {\n if (children) {\n return (\n <ThreadMessageByChildren index={index}>\n {children}\n </ThreadMessageByChildren>\n );\n }\n return <ThreadMessageByIndex index={index} components={components!} />;\n },\n [components, children],\n );\n\n const keyExtractor = useCallback((item: ThreadMessage) => item.id, []);\n\n const scrollTracking =\n (autoScroll ?? true) ||\n (scrollToBottomOnInitialize ?? true) ||\n (scrollToBottomOnRunStart ?? true) ||\n (scrollToBottomOnThreadSwitch ?? true);\n\n const handleLayout = useCallback(\n (event: LayoutChangeEvent) => {\n handleAutoScrollLayout(event);\n onLayout?.(event);\n },\n [handleAutoScrollLayout, onLayout],\n );\n\n const handleScroll = useCallback(\n (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n handleAutoScrollScroll(event);\n onScroll?.(event);\n },\n [handleAutoScrollScroll, onScroll],\n );\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 canLoadMore = history?.hasMore && !history.isLoadingMore;\n\n const handleStartReached = useCallback<\n NonNullable<FlatListProps<ThreadMessage>[\"onStartReached\"]>\n >(\n (info) => {\n onStartReached?.(info);\n history?.loadMore();\n },\n [history, onStartReached],\n );\n\n return (\n <FlatList\n ref={setFlatListRef}\n data={messages as unknown as ThreadMessage[]}\n renderItem={renderItem}\n keyExtractor={keyExtractor}\n maintainVisibleContentPosition={{ minIndexForVisible: 0 }}\n {...(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 {...(history\n ? {\n ...(canLoadMore\n ? { onStartReached: handleStartReached }\n : onStartReached\n ? { onStartReached }\n : {}),\n onStartReachedThreshold: onStartReachedThreshold ?? 1,\n }\n : {\n ...(onStartReached && { onStartReached }),\n ...(onStartReachedThreshold !== undefined && {\n onStartReachedThreshold,\n }),\n })}\n {...flatListProps}\n />\n );\n },\n);\nThreadMessagesFlatList.displayName = \"ThreadPrimitive.MessagesFlatList\";\n\n/** @deprecated Use ThreadPrimitive.MessagesFlatList instead. */\nexport const ThreadMessages = forwardRef<\n FlatList<ThreadMessage>,\n ThreadMessagesProps\n>(\n (\n {\n autoScroll = false,\n scrollToBottomOnInitialize = false,\n scrollToBottomOnRunStart = false,\n scrollToBottomOnThreadSwitch = false,\n ...props\n },\n ref,\n ) => (\n <ThreadMessagesFlatList\n ref={ref}\n autoScroll={autoScroll}\n scrollToBottomOnInitialize={scrollToBottomOnInitialize}\n scrollToBottomOnRunStart={scrollToBottomOnRunStart}\n scrollToBottomOnThreadSwitch={scrollToBottomOnThreadSwitch}\n {...props}\n />\n ),\n);\nThreadMessages.displayName = \"ThreadPrimitive.Messages\";\n"],"mappings":";;;;;;;AAiFA,MAAM8C,+BAA+B;AACrC,MAAMC,sBAAsB;AAE5B,MAAMC,gBACJjB,YACAkB,MACAC,cACG;CACH,QAAQD,MAAR;EACE,KAAK,QACH,IAAIC,WACF,OACEnB,WAAWP,oBACXO,WAAWR,gBACXQ,WAAWJ,eACVI,WAAWT;OAGd,OAAOS,WAAWJ,eAAgBI,WAAWT;EAEjD,KAAK,aACH,IAAI4B,WACF,OACEnB,WAAWN,yBACXM,WAAWR,gBACXQ,WAAWH,oBACVG,WAAWT;OAGd,OACES,WAAWH,oBAAqBG,WAAWT;EAGjD,KAAK,UACH,IAAI4B,WACF,OACEnB,WAAWL,sBACXK,WAAWR,gBACXQ,WAAWF,iBACVE,WAAWT,WACZwB;OAGF,OACEf,WAAWF,iBACVE,WAAWT,WACZwB;EAGN,SAEE,MAAM,IAAIM,MAAM,yBAAyBD,MAAkB;CAE/D;AACF;AAEA,MAAME,0BAAgEC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAzB,eAAAuB;CAGrE,MAAAL,OAAa9B,YAAYsC,KAAqB;CAC9C,MAAAP,YAAkB/B,YAAYuC,MAAmC;CAAE,IAAAC;CAAA,IAAAJ,EAAA,OAAAxB,cAAAwB,EAAA,OAAAL,aAAAK,EAAA,OAAAN,MAAA;EACjDU,KAAAX,aAAajB,YAAYkB,MAAMC,SAAS;EAACK,EAAA,KAAAxB;EAAAwB,EAAA,KAAAL;EAAAK,EAAA,KAAAN;EAAAM,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAA3D,MAAAK,YAAkBD;CAA0C,IAAAE;CAAA,IAAAN,EAAA,OAAAK,WAAA;EAErDC,KAAA,oBAAC,WAAD,CAAU,CAAA;EAAGN,EAAA,KAAAK;EAAAL,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAAbM;AAAa;AAGtB,MAAMC,uBAAuBxD,MAC3BgD,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAO,OAAAhC,eAAAuB;CAAuE,IAAAK;CAAA,IAAAJ,EAAA,OAAAxB,YAAA;EAGlE4B,KAAA,oBAAC,wBAAD,EAAoC5B,WAAU,CAAA;EAAIwB,EAAA,KAAAxB;EAAAwB,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAQ,SAAAR,EAAA,OAAAI,IAAA;EADpDE,KAAA,oBAAC,wBAAD;GAA+BE;GAC7BJ,UAAAA;EADqB,CAAA;EAEEJ,EAAA,KAAAQ;EAAAR,EAAA,KAAAI;EAAAJ,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAFzBM;AAEyB,IAG5BG,MAAMC,SACLD,KAAKD,UAAUE,KAAKF,SAASC,KAAKjC,eAAekC,KAAKlC,UAC1D;AACA+B,qBAAqBI,cAAc;AAEnC,MAAMC,0BAA0B7D,MAC7B,EACCyD,OACA/B,eAII;CACJ,OACE,oBAAC,wBAAD;EAA+B+B;EAC7B,UAAA,oBAAC,4BAAD;GACE,eAAeK,QAAQA,IAAIC,OAAOnC,QAAQ,EAAE6B,MAAM,CAAC,CAAC,CAACO,SAAS;GAE5DC,WAAAA,YACAvC,SAAS,EACP,IAAIE,UAAU;IACZ,OAAOqC,QAAQ;GACjB,EACF,CAAC;EAEuB,CAAA;CACN,CAAA;AAE5B,IACCP,MAAMC,SAASD,KAAKD,UAAUE,KAAKF,SAASC,KAAKhC,aAAaiC,KAAKjC,QACtE;AACAmC,wBAAwBD,cAAc;AAEtC,MAAMM,mBAAuBC,KAAsBxC,UAAoB;CACrE,IAAI,OAAOwC,QAAQ,YACjBA,IAAIxC,KAAK;MACJ,IAAIwC,KACTA,IAAIE,UAAU1C;AAElB;AAEA,MAAM2C,0BAAyBC,iBAAA;CAAA,MAAAtB,IAAAC,EAAA,CAAA;CAG7B,MAAAsB,cAAoBrE,OAAuC,IAAI;CAAE,IAAA6C;CAAA,IAAAC,EAAA,OAAAsB,cAAA;EAG/DvB,MAAAyB,SAAA;GACED,YAAWH,UAAWI;GACtBP,gBAAgBK,cAAcE,IAAI;EAAC;EACpCxB,EAAA,KAAAsB;EAAAtB,EAAA,KAAAD;CAAA,OAAAA,KAAAC,EAAA;CAJH,MAAAyB,iBAAuB1B;CAMrB,IAAAK;CAAA,IAAAJ,EAAA,OAAAyB,gBAAA;EAEKrB,KAAA,CAACmB,aAAaE,cAAc;EAACzB,EAAA,KAAAyB;EAAAzB,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAA7BI;AAAsC;AAG/C,MAAMuB,uCAAsC5B,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAsB,aAAAK,aAAAC,YAAAzB,IAAAtB,YAAAwB,IAAAvB,0BAAA+C,IAAA9C,4BAAA+C,IAAA9C,8BAAA+C,OAAAjC;CAG3C,MAAA8B,aAAAzB,OAAA6B,KAAAA,IAAA,QAAA7B;CACA,MAAAtB,aAAAwB,OAAA2B,KAAAA,IAAA,OAAA3B;CACA,MAAAvB,2BAAA+C,OAAAG,KAAAA,IAAA,OAAAH;CACA,MAAA9C,6BAAA+C,OAAAE,KAAAA,IAAA,OAAAF;CACA,MAAA9C,+BAAA+C,OAAAC,KAAAA,IAAA,OAAAD;CAAmC,IAAAE;CAAA,IAAAlC,EAAA,OAAAmC,OAAAC,IAAA,2BAAA,GAAA;EAUTF,KAAA;GAAAG,eACT;GAACC,gBACA;GAACC,SACR;EACX;EAACvC,EAAA,KAAAkC;CAAA,OAAAA,KAAAlC,EAAA;CAJD,MAAAwC,aAAmBtF,OAAOgF,EAIzB;CACD,MAAAO,gBAAsBvF,OAAO,IAAI;CACjC,MAAAwF,2BAAiCxF,OAAO,CAAC;CACzC,MAAAyF,+BAAqCzF,OAAO,KAAK;CACjD,MAAA0F,wBAA8B1F,OAAO,CAAC;CACtC,MAAA2F,2BAAiC3F,OAM/B,KAAK;CAAE,IAAA4F;CAAA,IAAA9C,EAAA,OAAAmC,OAAAC,IAAA,2BAAA,GAAA;EAE4BU,WAAA;GACnC,MAAA,EAAAT,eAAAE,SAAAD,mBAAmDE,WAAUpB;GAC7DqB,cAAarB,UACXiB,iBAAiBC,kBACjBD,gBAAgBE,UAAUD,kBAAkB9C;EAFzB;EAGtBQ,EAAA,KAAA8C;CAAA,OAAAA,KAAA9C,EAAA;CALD,MAAA+C,mBAAyBD;CAKlB,IAAAE;CAAA,IAAAhD,EAAA,OAAAuB,aAAA;EAMLyB,MAAAC,aAAA;GACE,MAAA,EAAAZ,eAAAa,iBAAAZ,gBAAAa,qBAA0CX,WAAUpB;GACpD,MAAAgC,SAAeC,KAAIC,IAAK,GAAGjB,kBAAgBC,gBAAc;GACzDE,WAAUpB,QAAQmB,UAAWa;GAC7BX,cAAarB,UAAW;GACxBG,YAAWH,SAAwBmC,eAAC;IAAAH;IAAAH;GAAmB,CAAC;EAAC;EAC1DjD,EAAA,KAAAuB;EAAAvB,EAAA,KAAAgD;CAAA,OAAAA,KAAAhD,EAAA;CAPH,MAAAwD,iBAAuBR;CASrB,IAAAS;CAAA,IAAAzD,EAAA,OAAAlB,cAAAkB,EAAA,OAAA6B,cAAA7B,EAAA,OAAAwD,gBAAA;EAGAC,MAAAC,UAAA;GACE,MAAAC,cAAoBlB,cAAarB;GACjC,MAAAwC,yBAA+BpB,WAAUpB,QAAQkB;GACjD,MAAAuB,mBAAuBhC,aACnB6B,MAAKI,YAAYC,OAAOC,QACxBN,MAAKI,YAAYC,OAAOE;GAC5BzB,WAAUpB,QAAQkB,iBAAkBA;GACpCS,iBAAiB;GACjB,MAAAmB,UAAgBrB,yBAAwBzB;GACxC,IACE8C,WACAtB,sBAAqBxB,WAAY8C,QAAOC,6BACxC7B,mBAAiB,GAAC;IAElBO,yBAAwBzB,UAAW;IACnCoC,eAAeU,QAAOjB,QAAS;IAAC;GAAA;GAGlC,IAAI,CAACU,aAAW;GAKhB,IACE7E,cACA8E,2BAA2B,KAC3BtB,qBAAmBsB,wBAEnBJ,eAAeU,UAAUA,QAAOjB,WAAjB,KAAkC;QAEjDR,cAAarB,UAAW;EACzB;EACFpB,EAAA,KAAAlB;EAAAkB,EAAA,KAAA6B;EAAA7B,EAAA,KAAAwD;EAAAxD,EAAA,KAAAyD;CAAA,OAAAA,KAAAzD,EAAA;CAjCH,MAAAoE,eAAqBX;CAmCnB,IAAAY;CAAA,IAAArE,EAAA,OAAA6B,YAAA;EAGAwC,OAAAC,YAAA;GACE,MAAA,EAAAC,eAAAC,aAAAC,sBACEf,QAAKI;GACP,MAAAY,eAAqB7C,aAAa0C,cAAaI,IAAKJ,cAAaK;GACjE,MAAAC,sBAA4BnC,yBAAwBtB;GACpD,MAAA0D,oBAA0BrC,cAAarB;GACvCsB,yBAAwBtB,UAAWsD;GACnClC,WAAUpB,UAAW;IAAAiB,eACJR,aAAa2C,YAAWR,QAASQ,YAAWP;IAAO3B,gBAClDT,aACZ4C,kBAAiBT,QACjBS,kBAAiBR;IAAO1B,SACnBmC;GACX;GACA3B,iBAAiB;GACjB,MAAAgC,aAAmBL,eAAeG;GAKlC,IAAIC,qBAAA,CAAsBC,YACxBtC,cAAarB,UAAW;GAE1B,IAAI,CAACqB,cAAarB,WAAd2D,YACFlC,yBAAwBzB,UAAW;EACpC;EACFpB,EAAA,KAAA6B;EAAA7B,EAAA,KAAAqE;CAAA,OAAAA,MAAArE,EAAA;CA3BH,MAAAgF,eAAqBX;CA6BnB,IAAAY;CAAA,IAAAjF,EAAA,QAAAlB,cAAAkB,EAAA,QAAA6B,cAAA7B,EAAA,QAAAwD,gBAAA;EAGAyB,OAAAjB,OAAAC,WAAA;GACE,MAAAiB,UAAgB1C,WAAUpB;GAC1B,MAAA+D,kBAAsBtD,aAAAmC,QAAAC;GACtB,MAAAmB,wBAA8BF,QAAO7C;GACrC,MAAAgD,gBAAoB5C,cAAarB;GACjC,IAAIiB,kBAAgB,GAAGO,sBAAqBxB,UAArBwB,sBAAqBxB,UAAY;GACxD8D,QAAO7C,gBAAiBA;GACxBU,iBAAiB;GAIjB,MAAAuC,gBAAsBzC,yBAAwBzB;GAC9C,IACEkE,iBACA1C,sBAAqBxB,WACnBkE,cAAanB,6BACfe,QAAO5C,iBAAkB,GAAC;IAE1BO,yBAAwBzB,UAAW;IACnCoC,eAAe8B,cAAarC,QAAS;IAAC;GAAA;GAIxC,IAAI,CAACnE,YAAU;GACf,IAAI,CAAC6E,eAAW;GAChB,IAAIyB,0BAA0B,GAAC;GAC/B,IAAI/C,mBAAiB+C,uBAAqB;GAE1C5B,eAAe,KAAK;EAAC;EACtBxD,EAAA,MAAAlB;EAAAkB,EAAA,MAAA6B;EAAA7B,EAAA,MAAAwD;EAAAxD,EAAA,MAAAiF;CAAA,OAAAA,MAAAjF,EAAA;CA9BH,MAAAuF,0BAAgCN;CAgC9B,IAAAO;CAAA,IAAAC;CAAA,IAAAzF,EAAA,QAAA4B,eAAA5B,EAAA,QAAAwD,kBAAAxD,EAAA,QAAAhB,4BAAA;EAEQwG,YAAA;GACR,IAAI,CAACxG,4BAA0B;GAC/B,IAAI,CAAC4C,aAAW;IACde,6BAA4BvB,UAAW;IAAH;GAAA;GAGtC,IAAIuB,6BAA4BvB,SAAQ;GAExCuB,6BAA4BvB,UAAW;GACvCyB,yBAAwBzB,UAAW;IAAA6B,UACvB;IAAKkB,2BACYd,KAAIC,IAAK,GAAGV,sBAAqBxB,OAAQ;GACtE;GACAoC,eAAe,KAAK;EAAC;EACpBiC,MAAA;GAAC7D;GAAa4B;GAAgBxE;EAA0B;EAACgB,EAAA,MAAA4B;EAAA5B,EAAA,MAAAwD;EAAAxD,EAAA,MAAAhB;EAAAgB,EAAA,MAAAwF;EAAAxF,EAAA,MAAAyF;CAAA,OAAA;EAAAD,MAAAxF,EAAA;EAAAyF,MAAAzF,EAAA;CAAA;CAd5D/C,UAAUuI,KAcPC,GAAyD;CAAC,IAAAC;CAAA,IAAA1F,EAAA,QAAAwD,kBAAAxD,EAAA,QAAAjB,0BAAA;EAE9B2G,YAAA;GAC7B,IAAI,CAAC3G,0BAAwB;GAC7B8D,yBAAwBzB,UAAW;IAAA6B,UACvB;IAAIkB,2BACavB,sBAAqBxB,UAAW;GAC7D;GACAoC,eAAe,IAAI;EAAC;EACrBxD,EAAA,MAAAwD;EAAAxD,EAAA,MAAAjB;EAAAiB,EAAA,MAAA0F;CAAA,OAAAA,MAAA1F,EAAA;CAPDrC,YAAY,mBAAmB+H,GAO9B;CAAC,IAAAC;CAAA,IAAA3F,EAAA,QAAAwD,kBAAAxD,EAAA,QAAAf,8BAAA;EAEsC0G,YAAA;GACtC,IAAI,CAAC1G,8BAA4B;GACjC0D,6BAA4BvB,UAAW;GACvCsB,yBAAwBtB,UAAW;GACnCyB,yBAAwBzB,UAAW;IAAA6B,UACvB;IAAKkB,2BACYvB,sBAAqBxB,UAAW;GAC7D;GACAoC,eAAe,KAAK;EAAC;EACtBxD,EAAA,MAAAwD;EAAAxD,EAAA,MAAAf;EAAAe,EAAA,MAAA2F;CAAA,OAAAA,MAAA3F,EAAA;CATDrC,YAAY,4BAA4BgI,GASvC;CAAC,IAAAC;CAAA,IAAA5F,EAAA,QAAAuF,2BAAAvF,EAAA,QAAAoE,gBAAApE,EAAA,QAAAgF,cAAA;EAEKY,MAAA;GAAAxB;GAAAY;GAAAO;EAIP;EAACvF,EAAA,MAAAuF;EAAAvF,EAAA,MAAAoE;EAAApE,EAAA,MAAAgF;EAAAhF,EAAA,MAAA4F;CAAA,OAAAA,MAAA5F,EAAA;CAAA,OAJM4F;AAIN;AAGH,MAAaC,yBAAyB/I,YAIpCiD,IAAAuB,iBAAA;CAAA,MAAAtB,IAAAC,EAAA,EAAA;CAAA,IAAAnB;CAAA,IAAAL;CAAA,IAAAD;CAAA,IAAAsH;CAAA,IAAA5G;CAAA,IAAA6G;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAApH;CAAA,IAAAD;CAAA,IAAAE;CAAA,IAAAe,EAAA,OAAAD,IAAA;EACE,CAAA,CAAAjB,YAAAN,YAAAC,UAAAsH,qBAAAC,UAAAC,UAAAC,gBAAAC,yBAAAC,qBAAApH,4BAAAD,0BAAAE,8BAAAC,SAAA,GAAA4G,iBAAA/F;EAeCC,EAAA,KAAAD;EAAAC,EAAA,KAAAlB;EAAAkB,EAAA,KAAAvB;EAAAuB,EAAA,KAAAxB;EAAAwB,EAAA,KAAA8F;EAAA9F,EAAA,KAAAd;EAAAc,EAAA,KAAA+F;EAAA/F,EAAA,KAAAgG;EAAAhG,EAAA,KAAAiG;EAAAjG,EAAA,KAAAkG;EAAAlG,EAAA,MAAAmG;EAAAnG,EAAA,MAAAoG;EAAApG,EAAA,MAAAhB;EAAAgB,EAAA,MAAAjB;EAAAiB,EAAA,MAAAf;CAAA,OAAA;EAAAH,aAAAkB,EAAA;EAAAvB,WAAAuB,EAAA;EAAAxB,aAAAwB,EAAA;EAAA8F,gBAAA9F,EAAA;EAAAd,UAAAc,EAAA;EAAA+F,sBAAA/F,EAAA;EAAAgG,WAAAhG,EAAA;EAAAiG,WAAAjG,EAAA;EAAAkG,iBAAAlG,EAAA;EAAAmG,0BAAAnG,EAAA;EAAAoG,sBAAApG,EAAA;EAAAhB,6BAAAgB,EAAA;EAAAjB,2BAAAiB,EAAA;EAAAf,+BAAAe,EAAA;CAAA;CAGD,MAAAqG,WAAiBzI,YAAY0I,MAAwB;CACrD,MAAA,CAAA/E,aAAAE,kBAAsCJ,uBAAuBC,YAAY;CAO1D,MAAAlB,KAAAiG,SAAQE,SAAU;CAAC,IAAAjG;CAAA,IAAAN,EAAA,QAAAlB,cAAAkB,EAAA,QAAA8F,cAAAjE,cAAA7B,EAAA,QAAAuB,eAAAvB,EAAA,QAAAhB,8BAAAgB,EAAA,QAAAjB,4BAAAiB,EAAA,QAAAf,gCAAAe,EAAA,QAAAI,IAAA;EAFME,KAAA;GAAAiB;GAAAK,aAEzBxB;GAAmByB,YACpBiE,cAAajE;GAAW/C;GAAAE;GAAAD;GAAAE;EAKtC;EAACe,EAAA,MAAAlB;EAAAkB,EAAA,MAAA8F,cAAAjE;EAAA7B,EAAA,MAAAuB;EAAAvB,EAAA,MAAAhB;EAAAgB,EAAA,MAAAjB;EAAAiB,EAAA,MAAAf;EAAAe,EAAA,MAAAI;EAAAJ,EAAA,MAAAM;CAAA,OAAAA,KAAAN,EAAA;CAZD,MAAA,EAAAuF,yBAAAiB,mCAAApC,cAAAqC,wBAAAzB,cAAA0B,2BAII/E,oCAAoCrB,EAQvC;CAAE,IAAAwB;CAAA,IAAA9B,EAAA,QAAAvB,YAAAuB,EAAA,QAAAxB,YAAA;EAGDsD,MAAAC,OAAA;GAAC,MAAA,EAAAvB,UAAAuB;GACC,IAAItD,UAAQ,OAER,oBAAC,yBAAD;IAAgC+B;IAC7B/B;GADqB,CAAA;GAI3B,OACM,oBAAC,sBAAD;IAA6B+B;IAAmBhC;GAAU,CAAA;EAAK;EACvEwB,EAAA,MAAAvB;EAAAuB,EAAA,MAAAxB;EAAAwB,EAAA,MAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAVH,MAAA2G,aAAmB7E;CAcnB,MAAA8E,eAAqBC;CAErB,MAAAC,kBACGhI,cAAA,UACAE,8BAAA,UACAD,4BAAA,UACAE,gCAAA;CAAsC,IAAA8C;CAAA,IAAA/B,EAAA,QAAAyG,0BAAAzG,EAAA,QAAAgG,UAAA;EAGvCjE,MAAA2B,UAAA;GACE+C,uBAAuB/C,KAAK;GAC5BsC,WAAWtC,KAAK;EAAC;EAClB1D,EAAA,MAAAyG;EAAAzG,EAAA,MAAAgG;EAAAhG,EAAA,MAAA+B;CAAA,OAAAA,KAAA/B,EAAA;CAJH,MAAAoE,eAAqBrC;CAMnB,IAAAC;CAAA,IAAAhC,EAAA,QAAA0G,0BAAA1G,EAAA,QAAAiG,UAAA;EAGAjE,MAAAsC,YAAA;GACEoC,uBAAuBhD,OAAK;GAC5BuC,WAAWvC,OAAK;EAAC;EAClB1D,EAAA,MAAA0G;EAAA1G,EAAA,MAAAiG;EAAAjG,EAAA,MAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CAJH,MAAAgF,eAAqBhD;CAMnB,IAAAE;CAAA,IAAAlC,EAAA,QAAAwG,qCAAAxG,EAAA,QAAA+F,qBAAA;EAGA7D,MAAA8B,OAAAC,WAAA;GACEuC,kCAAkCxC,OAAOC,MAAM;GAC/C8B,sBAAsB/B,OAAOC,MAAM;EAAC;EACrCjE,EAAA,MAAAwG;EAAAxG,EAAA,MAAA+F;EAAA/F,EAAA,MAAAkC;CAAA,OAAAA,KAAAlC,EAAA;CAJH,MAAAuF,0BAAgCrD;CAQhC,MAAA6E,cAAoB7H,SAAOC,WAAP,CAAqBD,QAAOE;CAAe,IAAA0D;CAAA,IAAA9C,EAAA,QAAAd,WAAAc,EAAA,QAAAkG,gBAAA;EAK7DpD,MAAAkE,SAAA;GACEd,iBAAiBc,IAAI;GACrB9H,SAAOG,SAAW;EAAC;EACpBW,EAAA,MAAAd;EAAAc,EAAA,MAAAkG;EAAAlG,EAAA,MAAA8C;CAAA,OAAAA,KAAA9C,EAAA;CANH,MAAAiH,qBAA2BnE;CAajB,MAAAE,KAAAqD;CAAsC,IAAA5C;CAAA,IAAAzD,EAAA,QAAAmC,OAAAC,IAAA,2BAAA,GAAA;EAGZqB,KAAA,EAAAyD,oBAAsB,EAAE;EAAClH,EAAA,MAAAyD;CAAA,OAAAA,KAAAzD,EAAA;CAAA,IAAAqE;CAAA,IAAArE,EAAA,QAAAuF,2BAAAvF,EAAA,QAAAoE,gBAAApE,EAAA,QAAAgF,gBAAAhF,EAAA,QAAA+F,uBAAA/F,EAAA,QAAAgG,YAAAhG,EAAA,QAAAiG,YAAAjG,EAAA,QAAAoG,uBAAApG,EAAA,QAAA8G,gBAAA;EACpDzC,MAAAyC,iBAAA;GAAAf,qBAEsBR;GAAuBS,UAClC5B;GAAY6B,UACZjB;GAAYoB,qBACDA,uBAAA;EAOvB,IAZC;GAAA,GAQKL,uBAAA,EAAAA,oBAA6C;GAAC,GAC9CC,YAAA,EAAAA,SAAuB;GAAC,GACxBC,YAAA,EAAAA,SAAuB;GAAC,GACxBG,wBAAwBnE,KAAAA,KAAxB,EAAAmE,oBAA2D;EACjE;EAACpG,EAAA,MAAAuF;EAAAvF,EAAA,MAAAoE;EAAApE,EAAA,MAAAgF;EAAAhF,EAAA,MAAA+F;EAAA/F,EAAA,MAAAgG;EAAAhG,EAAA,MAAAiG;EAAAjG,EAAA,MAAAoG;EAAApG,EAAA,MAAA8G;EAAA9G,EAAA,MAAAqE;CAAA,OAAAA,MAAArE,EAAA;CAAA,IAAAiF;CAAA,IAAAjF,EAAA,QAAA+G,eAAA/G,EAAA,QAAAiH,sBAAAjH,EAAA,QAAAd,WAAAc,EAAA,QAAAkG,kBAAAlG,EAAA,QAAAmG,yBAAA;EACAlB,MAAA/F,UAAA;GAAA,GAEK6H,cAAA,EAAAb,gBACkBe,mBAGf,IAFHf,iBAAA,EAAAA,eAEG,IAFH,CAEG;GAACC,yBACiBA,2BAAA;EAO3B,IAdC;GAAA,GAUKD,kBAAA,EAAAA,eAAmC;GAAC,GACpCC,4BAA4BlE,KAAAA,KAA5B,EAAAkE,wBAEJ;EACF;EAACnG,EAAA,MAAA+G;EAAA/G,EAAA,MAAAiH;EAAAjH,EAAA,MAAAd;EAAAc,EAAA,MAAAkG;EAAAlG,EAAA,MAAAmG;EAAAnG,EAAA,MAAAiF;CAAA,OAAAA,MAAAjF,EAAA;CAAA,IAAAwF;CAAA,IAAAxF,EAAA,QAAA8F,iBAAA9F,EAAA,QAAA2G,cAAA3G,EAAA,QAAAyB,kBAAAzB,EAAA,QAAAqE,OAAArE,EAAA,QAAAiF,OAAAjF,EAAA,QAAAgD,IAAA;EAjCPwC,MAAA,oBAAC,UAAD;GACO/D,KAAAA;GACC,MAAAuB;GACM2D;GACEC;GACkB,gCAAAnD;GAAyB,GACpDY;GAYA,GACAY;GAcA,GACDa;EAAa,CAAA;EACjB9F,EAAA,MAAA8F;EAAA9F,EAAA,MAAA2G;EAAA3G,EAAA,MAAAyB;EAAAzB,EAAA,MAAAqE;EAAArE,EAAA,MAAAiF;EAAAjF,EAAA,MAAAgD;EAAAhD,EAAA,MAAAwF;CAAA,OAAAA,MAAAxF,EAAA;CAAA,OAnCFwF;AAmCE,CAGR;AACAK,uBAAuBlF,cAAc;;AAGrC,MAAawG,iBAAiBrK,YAI5BiD,IAAAmB,QAAA;CAAA,MAAAlB,IAAAC,EAAA,EAAA;CAAA,IAAAmH;CAAA,IAAAhH;CAAA,IAAAE;CAAA,IAAAwB;CAAA,IAAAC;CAAA,IAAA/B,EAAA,OAAAD,IAAA;EACE,CAAA,CAAAjB,YAAAsB,IAAApB,4BAAAsB,IAAAvB,0BAAA+C,IAAA7C,8BAAA8C,IAAA,GAAAqF,SAAArH;EAMCC,EAAA,KAAAD;EAAAC,EAAA,KAAAoH;EAAApH,EAAA,KAAAI;EAAAJ,EAAA,KAAAM;EAAAN,EAAA,KAAA8B;EAAA9B,EAAA,KAAA+B;CAAA,OAAA;EAAAqF,QAAApH,EAAA;EAAAI,KAAAJ,EAAA;EAAAM,KAAAN,EAAA;EAAA8B,KAAA9B,EAAA;EAAA+B,KAAA/B,EAAA;CAAA;CALC,MAAAlB,aAAAsB,OAAA6B,KAAAA,IAAA,QAAA7B;CACA,MAAApB,6BAAAsB,OAAA2B,KAAAA,IAAA,QAAA3B;CACA,MAAAvB,2BAAA+C,OAAAG,KAAAA,IAAA,QAAAH;CACA,MAAA7C,+BAAA8C,OAAAE,KAAAA,IAAA,QAAAF;CAAoC,IAAAC;CAAA,IAAAhC,EAAA,OAAAlB,cAAAkB,EAAA,OAAAoH,SAAApH,EAAA,OAAAkB,OAAAlB,EAAA,OAAAhB,8BAAAgB,EAAA,QAAAjB,4BAAAiB,EAAA,QAAAf,8BAAA;EAKtC+C,KAAA,oBAAC,wBAAD;GACOd;GACOpC;GACgBE;GACFD;GACIE;GAA4B,GACtDmI;EAAK,CAAA;EACTpH,EAAA,KAAAlB;EAAAkB,EAAA,KAAAoH;EAAApH,EAAA,KAAAkB;EAAAlB,EAAA,KAAAhB;EAAAgB,EAAA,MAAAjB;EAAAiB,EAAA,MAAAf;EAAAe,EAAA,MAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CAAA,OAPFgC;AAOE,CAEN;AACAmF,eAAexG,cAAc;AAvbyC,SAAAT,MAAAmH,GAAA;CAAA,OAGpCA,EAAC1I,QAAQe;AAAK;AAHsB,SAAAS,OAAAmH,KAAA;CAAA,OAI/BD,IAAC1I,QAAQ4I,SAAS5H;AAAU;AAmRjE,SAAA2G,OAAAe,GAAA;CAAA,OAmBsCA,EAACvG,OAAOuF;AAAS;AAnBvD,SAAAQ,OAAAW,MAAA;CAAA,OAiD4DA,KAAIC;AAAG"}
@@ -1,10 +1,9 @@
1
1
  import { ViewProps } from "react-native";
2
2
  import { ReactNode } from "react";
3
3
  //#region src/primitives/thread/ThreadRoot.d.ts
4
- type ThreadRootProps = ViewProps & {
4
+ export type ThreadRootProps = ViewProps & {
5
5
  children: ReactNode;
6
6
  };
7
- declare const ThreadRoot: ({ children, ...viewProps }: ThreadRootProps) => import("react").JSX.Element;
7
+ export declare const ThreadRoot: ({ children, ...viewProps }: ThreadRootProps) => import("react").JSX.Element;
8
8
  //#endregion
9
- export { ThreadRoot, ThreadRootProps };
10
9
  //# sourceMappingURL=ThreadRoot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadRoot.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadRoot.tsx"],"mappings":";;;KAGY,kBAAkB;EAC5B,UAAU;;cAGC,eAAc,aAAA,aAA4B,oCAAe,IAAA"}
1
+ {"version":3,"file":"ThreadRoot.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadRoot.tsx"],"mappings":";;;YAGY,kBAAkB;EAC5B,UAAU;;qBAGC,eAAc,aAAA,aAA4B,oCAAe,IAAA"}
@@ -1,6 +1,6 @@
1
1
  import { PressableProps } from "react-native";
2
2
  //#region src/primitives/thread/ThreadSuggestion.d.ts
3
- type ThreadSuggestionProps = Omit<PressableProps, "onPress" | "children"> & {
3
+ export type ThreadSuggestionProps = Omit<PressableProps, "onPress" | "children"> & {
4
4
  children: PressableProps["children"];
5
5
  /** The suggestion prompt. */
6
6
  prompt: string;
@@ -16,7 +16,6 @@ type ThreadSuggestionProps = Omit<PressableProps, "onPress" | "children"> & {
16
16
  */
17
17
  clearComposer?: boolean | undefined;
18
18
  };
19
- declare const ThreadSuggestion: ({ children, prompt, send, clearComposer, disabled: disabledProp, ...pressableProps }: ThreadSuggestionProps) => import("react").JSX.Element;
19
+ export declare const ThreadSuggestion: ({ children, prompt, send, clearComposer, disabled: disabledProp, ...pressableProps }: ThreadSuggestionProps) => import("react").JSX.Element;
20
20
  //#endregion
21
- export { ThreadSuggestion, ThreadSuggestionProps };
22
21
  //# sourceMappingURL=ThreadSuggestion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadSuggestion.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadSuggestion.tsx"],"mappings":";;KAGY,wBAAwB,KAClC;EAGA,UAAU;;EAEV;;;;;EAKA;;;;;;EAMA;;cAGW,qBAAoB,UAAA,QAAA,MAAA,eAAA,UAAA,iBAAA,kBAO9B,0CAAqB,IAAA"}
1
+ {"version":3,"file":"ThreadSuggestion.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadSuggestion.tsx"],"mappings":";;YAGY,wBAAwB,KAClC;EAGA,UAAU;;EAEV;;;;;EAKA;;;;;;EAMA;;qBAGW,qBAAoB,UAAA,QAAA,MAAA,eAAA,UAAA,iBAAA,kBAO9B,0CAAqB,IAAA"}
@@ -1,13 +1,12 @@
1
1
  import { FlatListProps } from "react-native";
2
2
  import { ReactElement } from "react";
3
3
  //#region src/primitives/threadList/ThreadListItems.d.ts
4
- type ThreadListItemsProps = Omit<FlatListProps<string>, "data" | "renderItem"> & {
4
+ export type ThreadListItemsProps = Omit<FlatListProps<string>, "data" | "renderItem"> & {
5
5
  renderItem: (props: {
6
6
  threadId: string;
7
7
  index: number;
8
8
  }) => ReactElement;
9
9
  };
10
- declare const ThreadListItems: ({ renderItem, ...flatListProps }: ThreadListItemsProps) => import("react").JSX.Element;
10
+ export declare const ThreadListItems: ({ renderItem, ...flatListProps }: ThreadListItemsProps) => import("react").JSX.Element;
11
11
  //#endregion
12
- export { ThreadListItems, ThreadListItemsProps };
13
12
  //# sourceMappingURL=ThreadListItems.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItems.d.ts","names":[],"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"mappings":";;;KAKY,uBAAuB,KACjC;EAGA,aAAa;IAAS;IAAkB;QAAoB;;cAGjD,oBAAmB,eAAA,iBAG7B,yCAAoB,IAAA"}
1
+ {"version":3,"file":"ThreadListItems.d.ts","names":[],"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"mappings":";;;YAKY,uBAAuB,KACjC;EAGA,aAAa;IAAS;IAAkB;QAAoB;;qBAGjD,oBAAmB,eAAA,iBAG7B,yCAAoB,IAAA"}
@@ -1,12 +1,11 @@
1
1
  import { PressableProps, PressableStateCallbackType } from "react-native";
2
2
  import { ReactNode } from "react";
3
3
  //#region src/primitives/threadList/ThreadListNew.d.ts
4
- type ThreadListNewProps = Omit<PressableProps, "onPress" | "children"> & {
4
+ export type ThreadListNewProps = Omit<PressableProps, "onPress" | "children"> & {
5
5
  children: ReactNode | ((state: PressableStateCallbackType & {
6
6
  isActive: boolean;
7
7
  }) => ReactNode);
8
8
  };
9
- declare const ThreadListNew: ({ children, accessibilityState, ...pressableProps }: ThreadListNewProps) => import("react").JSX.Element;
9
+ export declare const ThreadListNew: ({ children, accessibilityState, ...pressableProps }: ThreadListNewProps) => import("react").JSX.Element;
10
10
  //#endregion
11
- export { ThreadListNew, ThreadListNewProps };
12
11
  //# sourceMappingURL=ThreadListNew.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListNew.d.ts","names":[],"sources":["../../../src/primitives/threadList/ThreadListNew.tsx"],"mappings":";;;KASY,qBAAqB,KAC/B;EAGA,UACI,cAEE,OAAO;IAA+B;QACnC;;cAGE,kBAAiB,UAAA,uBAAA,kBAI3B,uCAAkB,IAAA"}
1
+ {"version":3,"file":"ThreadListNew.d.ts","names":[],"sources":["../../../src/primitives/threadList/ThreadListNew.tsx"],"mappings":";;;YASY,qBAAqB,KAC/B;EAGA,UACI,cAEE,OAAO;IAA+B;QACnC;;qBAGE,kBAAiB,UAAA,uBAAA,kBAI3B,uCAAkB,IAAA"}
@@ -1,10 +1,9 @@
1
1
  import { ViewProps } from "react-native";
2
2
  import { ReactNode } from "react";
3
3
  //#region src/primitives/threadList/ThreadListRoot.d.ts
4
- type ThreadListRootProps = ViewProps & {
4
+ export type ThreadListRootProps = ViewProps & {
5
5
  children: ReactNode;
6
6
  };
7
- declare const ThreadListRoot: ({ children, ...viewProps }: ThreadListRootProps) => import("react").JSX.Element;
7
+ export declare const ThreadListRoot: ({ children, ...viewProps }: ThreadListRootProps) => import("react").JSX.Element;
8
8
  //#endregion
9
- export { ThreadListRoot, ThreadListRootProps };
10
9
  //# sourceMappingURL=ThreadListRoot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListRoot.d.ts","names":[],"sources":["../../../src/primitives/threadList/ThreadListRoot.tsx"],"mappings":";;;KAGY,sBAAsB;EAChC,UAAU;;cAGC,mBAAkB,aAAA,aAG5B,wCAAmB,IAAA"}
1
+ {"version":3,"file":"ThreadListRoot.d.ts","names":[],"sources":["../../../src/primitives/threadList/ThreadListRoot.tsx"],"mappings":";;;YAGY,sBAAsB;EAChC,UAAU;;qBAGC,mBAAkB,aAAA,aAG5B,wCAAmB,IAAA"}
@@ -1,9 +1,8 @@
1
1
  import { PressableProps } from "react-native";
2
2
  //#region src/primitives/threadListItem/ThreadListItemArchive.d.ts
3
- type ThreadListItemArchiveProps = Omit<PressableProps, "onPress" | "children"> & {
3
+ export type ThreadListItemArchiveProps = Omit<PressableProps, "onPress" | "children"> & {
4
4
  children: PressableProps["children"];
5
5
  };
6
- declare const ThreadListItemArchive: ({ children, ...pressableProps }: ThreadListItemArchiveProps) => import("react").JSX.Element;
6
+ export declare const ThreadListItemArchive: ({ children, ...pressableProps }: ThreadListItemArchiveProps) => import("react").JSX.Element;
7
7
  //#endregion
8
- export { ThreadListItemArchive, ThreadListItemArchiveProps };
9
8
  //# sourceMappingURL=ThreadListItemArchive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemArchive.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"mappings":";;KAGY,6BAA6B,KACvC;EAGA,UAAU;;cAGC,0BAAyB,aAAA,kBAGnC,+CAA0B,IAAA"}
1
+ {"version":3,"file":"ThreadListItemArchive.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"mappings":";;YAGY,6BAA6B,KACvC;EAGA,UAAU;;qBAGC,0BAAyB,aAAA,kBAGnC,+CAA0B,IAAA"}
@@ -1,9 +1,8 @@
1
1
  import { PressableProps } from "react-native";
2
2
  //#region src/primitives/threadListItem/ThreadListItemDelete.d.ts
3
- type ThreadListItemDeleteProps = Omit<PressableProps, "onPress" | "children"> & {
3
+ export type ThreadListItemDeleteProps = Omit<PressableProps, "onPress" | "children"> & {
4
4
  children: PressableProps["children"];
5
5
  };
6
- declare const ThreadListItemDelete: ({ children, ...pressableProps }: ThreadListItemDeleteProps) => import("react").JSX.Element;
6
+ export declare const ThreadListItemDelete: ({ children, ...pressableProps }: ThreadListItemDeleteProps) => import("react").JSX.Element;
7
7
  //#endregion
8
- export { ThreadListItemDelete, ThreadListItemDeleteProps };
9
8
  //# sourceMappingURL=ThreadListItemDelete.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemDelete.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"mappings":";;KAGY,4BAA4B,KACtC;EAGA,UAAU;;cAGC,yBAAwB,aAAA,kBAGlC,8CAAyB,IAAA"}
1
+ {"version":3,"file":"ThreadListItemDelete.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"mappings":";;YAGY,4BAA4B,KACtC;EAGA,UAAU;;qBAGC,yBAAwB,aAAA,kBAGlC,8CAAyB,IAAA"}