@assistant-ui/react-native 0.1.36 → 0.1.38

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 (178) hide show
  1. package/dist/index.d.ts +3 -2
  2. package/dist/index.js +2 -1
  3. package/dist/primitives/actionBar/ActionBarCopy.js +1 -0
  4. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  5. package/dist/primitives/actionBar/ActionBarEdit.d.ts +2 -3
  6. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  7. package/dist/primitives/actionBar/ActionBarEdit.js +1 -0
  8. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  9. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +1 -0
  10. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  11. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +1 -0
  12. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  13. package/dist/primitives/actionBar/ActionBarReload.d.ts +2 -3
  14. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  15. package/dist/primitives/actionBar/ActionBarReload.js +1 -0
  16. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  17. package/dist/primitives/attachment/AttachmentRemove.d.ts +2 -3
  18. package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -1
  19. package/dist/primitives/attachment/AttachmentRemove.js +1 -0
  20. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
  21. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +2 -3
  22. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  23. package/dist/primitives/branchPicker/BranchPickerNext.js +1 -0
  24. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  25. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +2 -3
  26. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  27. package/dist/primitives/branchPicker/BranchPickerPrevious.js +1 -0
  28. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  29. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +2 -3
  30. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
  31. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +1 -0
  32. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  33. package/dist/primitives/composer/ComposerAddAttachment.d.ts +2 -3
  34. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
  35. package/dist/primitives/composer/ComposerAddAttachment.js +1 -0
  36. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  37. package/dist/primitives/composer/ComposerCancel.d.ts +2 -3
  38. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  39. package/dist/primitives/composer/ComposerCancel.js +1 -0
  40. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  41. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  42. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  43. package/dist/primitives/composer/ComposerQueue.d.ts +2 -0
  44. package/dist/primitives/composer/ComposerQueue.js +2 -0
  45. package/dist/primitives/composer/ComposerQuote.d.ts +10 -0
  46. package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -0
  47. package/dist/primitives/composer/ComposerQuote.js +38 -0
  48. package/dist/primitives/composer/ComposerQuote.js.map +1 -0
  49. package/dist/primitives/composer/ComposerQuoteDismiss.d.ts +9 -0
  50. package/dist/primitives/composer/ComposerQuoteDismiss.d.ts.map +1 -0
  51. package/dist/primitives/composer/ComposerQuoteDismiss.js +48 -0
  52. package/dist/primitives/composer/ComposerQuoteDismiss.js.map +1 -0
  53. package/dist/primitives/composer/ComposerQuoteText.d.ts +10 -0
  54. package/dist/primitives/composer/ComposerQuoteText.d.ts.map +1 -0
  55. package/dist/primitives/composer/ComposerQuoteText.js +40 -0
  56. package/dist/primitives/composer/ComposerQuoteText.js.map +1 -0
  57. package/dist/primitives/composer/ComposerSend.d.ts +2 -3
  58. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  59. package/dist/primitives/composer/ComposerSend.js +1 -0
  60. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  61. package/dist/primitives/composer.d.ts +6 -2
  62. package/dist/primitives/composer.js +9 -1
  63. package/dist/primitives/composer.js.map +1 -1
  64. package/dist/primitives/message/MessageIf.d.ts +3 -0
  65. package/dist/primitives/message/MessageIf.d.ts.map +1 -1
  66. package/dist/primitives/message/MessageIf.js +3 -0
  67. package/dist/primitives/message/MessageIf.js.map +1 -1
  68. package/dist/primitives/queueItem/QueueItemRemove.d.ts +9 -0
  69. package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -0
  70. package/dist/primitives/queueItem/QueueItemRemove.js +48 -0
  71. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -0
  72. package/dist/primitives/queueItem/QueueItemSteer.d.ts +9 -0
  73. package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -0
  74. package/dist/primitives/queueItem/QueueItemSteer.js +48 -0
  75. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -0
  76. package/dist/primitives/queueItem/QueueItemText.d.ts +10 -0
  77. package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -0
  78. package/dist/primitives/queueItem/QueueItemText.js +45 -0
  79. package/dist/primitives/queueItem/QueueItemText.js.map +1 -0
  80. package/dist/primitives/queueItem.d.ts +9 -0
  81. package/dist/primitives/queueItem.d.ts.map +1 -0
  82. package/dist/primitives/queueItem.js +14 -0
  83. package/dist/primitives/queueItem.js.map +1 -0
  84. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +2 -3
  85. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
  86. package/dist/primitives/suggestion/SuggestionTrigger.js +1 -0
  87. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  88. package/dist/primitives/thread/ThreadEmpty.d.ts +4 -1
  89. package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -1
  90. package/dist/primitives/thread/ThreadEmpty.js +12 -4
  91. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  92. package/dist/primitives/thread/ThreadIf.d.ts +3 -0
  93. package/dist/primitives/thread/ThreadIf.d.ts.map +1 -1
  94. package/dist/primitives/thread/ThreadIf.js +5 -6
  95. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  96. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  97. package/dist/primitives/thread/ThreadMessages.js +2 -2
  98. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  99. package/dist/primitives/thread/ThreadSuggestion.d.ts +2 -3
  100. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  101. package/dist/primitives/thread/ThreadSuggestion.js +1 -0
  102. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  103. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  104. package/dist/primitives/threadList/ThreadListItems.js +8 -3
  105. package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
  106. package/dist/primitives/threadList/ThreadListNew.d.ts +6 -4
  107. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
  108. package/dist/primitives/threadList/ThreadListNew.js +46 -15
  109. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  110. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +2 -3
  111. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
  112. package/dist/primitives/threadListItem/ThreadListItemArchive.js +1 -0
  113. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  114. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +2 -3
  115. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
  116. package/dist/primitives/threadListItem/ThreadListItemDelete.js +1 -0
  117. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
  118. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +6 -4
  119. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
  120. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +46 -15
  121. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  122. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +2 -3
  123. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  124. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +1 -0
  125. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  126. package/package.json +9 -8
  127. package/src/index.ts +2 -0
  128. package/src/primitives/accessibilityRole.test.tsx +335 -0
  129. package/src/primitives/actionBar/ActionBarCopy.tsx +1 -0
  130. package/src/primitives/actionBar/ActionBarEdit.tsx +6 -3
  131. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +1 -1
  132. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +1 -1
  133. package/src/primitives/actionBar/ActionBarReload.tsx +6 -3
  134. package/src/primitives/attachment/AttachmentRemove.tsx +11 -4
  135. package/src/primitives/branchPicker/BranchPickerNext.tsx +6 -3
  136. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +6 -3
  137. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.tsx +4 -4
  138. package/src/primitives/composer/ComposerAddAttachment.tsx +10 -4
  139. package/src/primitives/composer/ComposerCancel.tsx +6 -3
  140. package/src/primitives/composer/ComposerInput.tsx +17 -15
  141. package/src/primitives/composer/ComposerQueue.test.tsx +9 -0
  142. package/src/primitives/composer/ComposerQueue.tsx +1 -0
  143. package/src/primitives/composer/ComposerQuote.test.tsx +163 -0
  144. package/src/primitives/composer/ComposerQuote.tsx +17 -0
  145. package/src/primitives/composer/ComposerQuoteDismiss.tsx +31 -0
  146. package/src/primitives/composer/ComposerQuoteText.tsx +17 -0
  147. package/src/primitives/composer/ComposerSend.test.tsx +26 -0
  148. package/src/primitives/composer/ComposerSend.tsx +3 -3
  149. package/src/primitives/composer.ts +13 -0
  150. package/src/primitives/message/MessageIf.tsx +3 -0
  151. package/src/primitives/queueItem/QueueItem.test.tsx +132 -0
  152. package/src/primitives/queueItem/QueueItemRemove.tsx +31 -0
  153. package/src/primitives/queueItem/QueueItemSteer.tsx +31 -0
  154. package/src/primitives/queueItem/QueueItemText.tsx +22 -0
  155. package/src/primitives/queueItem.ts +12 -0
  156. package/src/primitives/suggestion/SuggestionTrigger.tsx +6 -3
  157. package/src/primitives/thread/ThreadEmpty.test.tsx +17 -3
  158. package/src/primitives/thread/ThreadEmpty.tsx +7 -6
  159. package/src/primitives/thread/ThreadIf.test.tsx +20 -20
  160. package/src/primitives/thread/ThreadIf.tsx +5 -8
  161. package/src/primitives/thread/ThreadMessages.test.tsx +18 -4
  162. package/src/primitives/thread/ThreadMessages.tsx +3 -2
  163. package/src/primitives/thread/ThreadSuggestion.tsx +6 -3
  164. package/src/primitives/threadList/ThreadListItems.test.tsx +166 -0
  165. package/src/primitives/threadList/ThreadListItems.tsx +6 -1
  166. package/src/primitives/threadList/ThreadListNew.test.tsx +118 -3
  167. package/src/primitives/threadList/ThreadListNew.tsx +28 -5
  168. package/src/primitives/threadListItem/ThreadListItemArchive.tsx +6 -4
  169. package/src/primitives/threadListItem/ThreadListItemDelete.tsx +10 -4
  170. package/src/primitives/threadListItem/ThreadListItemTrigger.test.tsx +74 -0
  171. package/src/primitives/threadListItem/ThreadListItemTrigger.tsx +28 -5
  172. package/src/primitives/threadListItem/ThreadListItemUnarchive.tsx +10 -4
  173. package/dist/runtimes/RemoteThreadListHookInstanceManager.d.ts +0 -2
  174. package/dist/runtimes/RemoteThreadListHookInstanceManager.js +0 -2
  175. package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +0 -2
  176. package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.js +0 -2
  177. package/src/runtimes/RemoteThreadListHookInstanceManager.tsx +0 -1
  178. package/src/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadEmpty.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadEmpty.tsx"],"mappings":";;KAGY;EACV,UAAU;;cAGC,gBAAe,YAAc,qCAAgB,IAAA"}
1
+ {"version":3,"file":"ThreadEmpty.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadEmpty.tsx"],"mappings":";;KAGY;EACV,UAAU;;;;;cAMC,gBAAe,YAAc,qCAAgB,IAAA"}
@@ -1,19 +1,27 @@
1
- import { useThreadIsEmpty } from "@assistant-ui/core/react";
1
+ import { AuiIf } from "@assistant-ui/store";
2
2
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
- import { Fragment, jsx } from "react/jsx-runtime";
3
+ import { jsx } from "react/jsx-runtime";
4
4
  //#region src/primitives/thread/ThreadEmpty.tsx
5
+ /**
6
+ * @deprecated Use `<AuiIf condition={(s) => s.thread.isEmpty} />` instead.
7
+ */
5
8
  const ThreadEmpty = (t0) => {
6
9
  const $ = c(2);
7
10
  const { children } = t0;
8
- if (!useThreadIsEmpty()) return null;
9
11
  let t1;
10
12
  if ($[0] !== children) {
11
- t1 = /* @__PURE__ */ jsx(Fragment, { children });
13
+ t1 = /* @__PURE__ */ jsx(AuiIf, {
14
+ condition: _temp,
15
+ children
16
+ });
12
17
  $[0] = children;
13
18
  $[1] = t1;
14
19
  } else t1 = $[1];
15
20
  return t1;
16
21
  };
22
+ function _temp(s) {
23
+ return s.thread.isEmpty;
24
+ }
17
25
  //#endregion
18
26
  export { ThreadEmpty };
19
27
 
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadEmpty.js","names":["ReactNode","useThreadIsEmpty","ThreadEmptyProps","children","ThreadEmpty","t0","$","_c","isEmpty","t1"],"sources":["../../../src/primitives/thread/ThreadEmpty.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useThreadIsEmpty } from \"@assistant-ui/core/react\";\n\nexport type ThreadEmptyProps = {\n children: ReactNode;\n};\n\nexport const ThreadEmpty = ({ children }: ThreadEmptyProps) => {\n const isEmpty = useThreadIsEmpty();\n if (!isEmpty) return null;\n return <>{children}</>;\n};\n"],"mappings":";;;;AAOA,MAAaI,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAJ,aAAAE;CAE1B,IAAI,CADYJ,iBACXO,GAAO,OAAS;CAAK,IAAAC;CAAA,IAAAH,EAAA,OAAAH,UAAA;EACnBM,KAAA,oBAAA,UAAA,EAAGN,SAAQ,CAAA;EAAIG,EAAA,KAAAH;EAAAG,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAfG;AAAe"}
1
+ {"version":3,"file":"ThreadEmpty.js","names":["ReactNode","AuiIf","ThreadEmptyProps","children","ThreadEmpty","t0","$","_c","t1","_temp","s","thread","isEmpty"],"sources":["../../../src/primitives/thread/ThreadEmpty.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { AuiIf } from \"@assistant-ui/store\";\n\nexport type ThreadEmptyProps = {\n children: ReactNode;\n};\n\n/**\n * @deprecated Use `<AuiIf condition={(s) => s.thread.isEmpty} />` instead.\n */\nexport const ThreadEmpty = ({ children }: ThreadEmptyProps) => (\n <AuiIf condition={(s) => s.thread.isEmpty}>{children}</AuiIf>\n);\n"],"mappings":";;;;;;;AAUA,MAAaI,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAJ,aAAAE;CAA8B,IAAAG;CAAA,IAAAF,EAAA,OAAAH,UAAA;EACxDK,KAAA,oBAAC,OAAD;GAAkB,WAAAC;GAA0BN;EAAtC,CAAA;EAAuDG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAA,OAA7DE;AAA6D;AADpC,SAAAC,MAAAC,GAAA;CAAA,OACAA,EAACC,OAAOC;AAAQ"}
@@ -5,6 +5,9 @@ type ThreadIfProps = {
5
5
  empty?: boolean | undefined;
6
6
  running?: boolean | undefined;
7
7
  };
8
+ /**
9
+ * @deprecated Use `<AuiIf condition={(s) => s.thread...} />` instead.
10
+ */
8
11
  declare const ThreadIf: ({ children, empty, running }: ThreadIfProps) => import("react").JSX.Element | null;
9
12
  //#endregion
10
13
  export { ThreadIf, ThreadIfProps };
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadIf.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadIf.tsx"],"mappings":";;KAGY;EACV,UAAU;EACV;EACA;;cAGW,aAAY,UAAA,OAAA,WAA8B,kCAAa,IAAA"}
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"}
@@ -2,16 +2,15 @@ import { useAuiState } from "@assistant-ui/store";
2
2
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
3
  import { Fragment, jsx } from "react/jsx-runtime";
4
4
  //#region src/primitives/thread/ThreadIf.tsx
5
+ /**
6
+ * @deprecated Use `<AuiIf condition={(s) => s.thread...} />` instead.
7
+ */
5
8
  const ThreadIf = (t0) => {
6
9
  const $ = c(2);
7
10
  const { children, empty, running } = t0;
8
11
  const thread = useAuiState(_temp);
9
- if (empty !== void 0) {
10
- if (empty !== (thread.messages.length === 0)) return null;
11
- }
12
- if (running !== void 0) {
13
- if (running !== thread.isRunning) return null;
14
- }
12
+ if (empty !== void 0 && empty !== thread.isEmpty) return null;
13
+ if (running !== void 0 && running !== thread.isRunning) return null;
15
14
  let t1;
16
15
  if ($[0] !== children) {
17
16
  t1 = /* @__PURE__ */ jsx(Fragment, { children });
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadIf.js","names":["ReactNode","useAuiState","ThreadIfProps","children","empty","running","ThreadIf","t0","$","_c","thread","_temp","undefined","isEmpty","messages","length","isRunning","t1","s"],"sources":["../../../src/primitives/thread/ThreadIf.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\nexport type ThreadIfProps = {\n children: ReactNode;\n empty?: boolean | undefined;\n running?: boolean | undefined;\n};\n\nexport const ThreadIf = ({ children, empty, running }: ThreadIfProps) => {\n const thread = useAuiState((s) => s.thread);\n\n if (empty !== undefined) {\n const isEmpty = thread.messages.length === 0;\n if (empty !== isEmpty) return null;\n }\n\n if (running !== undefined) {\n if (running !== thread.isRunning) return null;\n }\n\n return <>{children}</>;\n};\n"],"mappings":";;;;AASA,MAAaM,YAAWC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAN,UAAAC,OAAAC,YAAAE;CACvB,MAAAG,SAAeT,YAAYU,KAAe;CAE1C,IAAIP,UAAUQ,KAAAA,GAERR;MAAAA,WADYM,OAAMI,SAASC,WAAY,IACtB,OAAS;CAAA;CAGhC,IAAIV,YAAYO,KAAAA,GACVP;MAAAA,YAAYK,OAAMM,WAAU,OAAS;CAAA;CAC1C,IAAAC;CAAA,IAAAT,EAAA,OAAAL,UAAA;EAEMc,KAAA,oBAAA,UAAA,EAAGd,SAAQ,CAAA;EAAIK,EAAA,KAAAL;EAAAK,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OAAfS;AAAe;AAZA,SAAAN,MAAAO,GAAA;CAAA,OACYA,EAACR;AAAO"}
1
+ {"version":3,"file":"ThreadIf.js","names":["ReactNode","useAuiState","ThreadIfProps","children","empty","running","ThreadIf","t0","$","_c","thread","_temp","undefined","isEmpty","isRunning","t1","s"],"sources":["../../../src/primitives/thread/ThreadIf.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\nexport type ThreadIfProps = {\n children: ReactNode;\n empty?: boolean | undefined;\n running?: boolean | undefined;\n};\n\n/**\n * @deprecated Use `<AuiIf condition={(s) => s.thread...} />` instead.\n */\nexport const ThreadIf = ({ children, empty, running }: ThreadIfProps) => {\n const thread = useAuiState((s) => s.thread);\n\n if (empty !== undefined && empty !== thread.isEmpty) return null;\n if (running !== undefined && running !== thread.isRunning) return null;\n\n return <>{children}</>;\n};\n"],"mappings":";;;;;;;AAYA,MAAaM,YAAWC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAN,UAAAC,OAAAC,YAAAE;CACvB,MAAAG,SAAeT,YAAYU,KAAe;CAE1C,IAAIP,UAAUQ,KAAAA,KAAaR,UAAUM,OAAMG,SAAQ,OAAS;CAC5D,IAAIR,YAAYO,KAAAA,KAAaP,YAAYK,OAAMI,WAAU,OAAS;CAAK,IAAAC;CAAA,IAAAP,EAAA,OAAAL,UAAA;EAEhEY,KAAA,oBAAA,UAAA,EAAGZ,SAAQ,CAAA;EAAIK,EAAA,KAAAL;EAAAK,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAAfO;AAAe;AANA,SAAAJ,MAAAK,GAAA;CAAA,OACYA,EAACN;AAAO"}
@@ -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;cAqSrB,wCAAsB,0BAAA,8CAAA,cAAA,SAAA;;cA4GtB,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;;KAGM,8BAA8B,KACxC,cAAc,sDAGd;EACE;EACA;EACA;EACA;;;KAIQ,sBAAsB;cAsSrB,wCAAsB,0BAAA,8CAAA,cAAA,SAAA;;cA4GtB,gCAAc,0BAAA,8CAAA,cAAA,SAAA"}
@@ -13,7 +13,7 @@ const getComponent = (components, role, isEditing) => {
13
13
  else return components.UserMessage ?? components.Message;
14
14
  case "assistant": if (isEditing) return components.AssistantEditComposer ?? components.EditComposer ?? components.AssistantMessage ?? components.Message;
15
15
  else return components.AssistantMessage ?? components.Message;
16
- case "system": if (isEditing) return components.SystemEditComposer ?? components.EditComposer ?? components.SystemMessage ?? components.Message;
16
+ case "system": if (isEditing) return components.SystemEditComposer ?? components.EditComposer ?? components.SystemMessage ?? components.Message ?? DEFAULT_SYSTEM_MESSAGE;
17
17
  else return components.SystemMessage ?? components.Message ?? DEFAULT_SYSTEM_MESSAGE;
18
18
  default: throw new Error(`Unknown message role: ${role}`);
19
19
  }
@@ -259,7 +259,7 @@ const useThreadMessagesFlatListAutoScroll = (t0) => {
259
259
  $[20] = scrollToBottomOnThreadSwitch;
260
260
  $[21] = t14;
261
261
  } else t14 = $[21];
262
- useAuiEvent("threadListItem.switchedTo", t14);
262
+ useAuiEvent("threads.selectionChanged", t14);
263
263
  let t15;
264
264
  if ($[22] !== handleContentSizeChange || $[23] !== handleLayout) {
265
265
  t15 = {
@@ -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","t3","t4","undefined","t5","Symbol","for","contentHeight","viewportHeight","scrollY","metricsRef","isAtBottomRef","lastScrollEventYRef","initializeScrollRequestedRef","pendingScrollToBottomRef","t6","updateIsAtBottom","t7","animated","contentHeight_0","viewportHeight_0","Math","max","scrollToEnd","scrollToBottom","t8","event","wasAtBottom","previousViewportHeight","viewportHeight_1","nativeEvent","layout","height","pending","handleLayout","t9","event_0","contentOffset","contentSize","layoutMeasurement","previousEventY","wasPinnedToBottom","y","upwardMove","handleScroll","t10","_width","metrics","previousContentHeight","wasAtBottom_0","pendingScroll","handleContentSizeChange","t11","t12","t13","t14","t15","ThreadMessagesFlatList","flatListProps","onContentSizeChange","onLayout","onScroll","scrollEventThrottle","messages","_temp3","length","handleAutoScrollContentSizeChange","handleAutoScrollLayout","handleAutoScrollScroll","renderItem","keyExtractor","_temp4","scrollTracking","width","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 );\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 autoScroll = true,\n scrollToBottomOnRunStart = true,\n scrollToBottomOnInitialize = true,\n scrollToBottomOnThreadSwitch = true,\n}: {\n flatListRef: RefObject<FlatList<ThreadMessage> | null>;\n hasMessages: boolean;\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 lastScrollEventYRef = useRef(0);\n const initializeScrollRequestedRef = useRef(false);\n const pendingScrollToBottomRef = useRef<false | { animated: boolean }>(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 metricsRef.current.scrollY = Math.max(0, contentHeight - viewportHeight);\n isAtBottomRef.current = true;\n flatListRef.current?.scrollToEnd({ 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 = event.nativeEvent.layout.height;\n metricsRef.current.viewportHeight = viewportHeight;\n updateIsAtBottom();\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 const pending = pendingScrollToBottomRef.current;\n scrollToBottom(pending ? pending.animated : false);\n } else {\n isAtBottomRef.current = true;\n }\n },\n [autoScroll, scrollToBottom, updateIsAtBottom],\n );\n\n const handleScroll = useCallback(\n (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n const { contentOffset, contentSize, layoutMeasurement } =\n event.nativeEvent;\n const previousEventY = lastScrollEventYRef.current;\n const wasPinnedToBottom = isAtBottomRef.current;\n lastScrollEventYRef.current = contentOffset.y;\n metricsRef.current = {\n contentHeight: contentSize.height,\n viewportHeight: layoutMeasurement.height,\n scrollY: contentOffset.y,\n };\n updateIsAtBottom();\n const upwardMove = contentOffset.y < previousEventY;\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 [updateIsAtBottom],\n );\n\n const handleContentSizeChange = useCallback(\n (_width: number, height: number) => {\n const metrics = metricsRef.current;\n const previousContentHeight = metrics.contentHeight;\n const wasAtBottom = isAtBottomRef.current;\n metrics.contentHeight = height;\n updateIsAtBottom();\n\n // FlatList.scrollToEnd is a no-op before the list has measured, so the\n // initialize and thread-switch scrolls land on the next content-size\n // event, once real metrics exist.\n const pendingScroll = pendingScrollToBottomRef.current;\n if (pendingScroll) {\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 (height <= previousContentHeight) return;\n\n scrollToBottom(false);\n },\n [autoScroll, 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 = { animated: false };\n scrollToBottom(false);\n }, [hasMessages, scrollToBottom, scrollToBottomOnInitialize]);\n\n useAuiEvent(\"thread.runStart\", () => {\n if (!scrollToBottomOnRunStart) return;\n pendingScrollToBottomRef.current = { animated: true };\n scrollToBottom(true);\n });\n\n useAuiEvent(\"threadListItem.switchedTo\", () => {\n if (!scrollToBottomOnThreadSwitch) return;\n initializeScrollRequestedRef.current = false;\n lastScrollEventYRef.current = 0;\n pendingScrollToBottomRef.current = { animated: false };\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 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 {...(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","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","t3","t4","undefined","t5","Symbol","for","contentHeight","viewportHeight","scrollY","metricsRef","isAtBottomRef","lastScrollEventYRef","initializeScrollRequestedRef","pendingScrollToBottomRef","t6","updateIsAtBottom","t7","animated","contentHeight_0","viewportHeight_0","Math","max","scrollToEnd","scrollToBottom","t8","event","wasAtBottom","previousViewportHeight","viewportHeight_1","nativeEvent","layout","height","pending","handleLayout","t9","event_0","contentOffset","contentSize","layoutMeasurement","previousEventY","wasPinnedToBottom","y","upwardMove","handleScroll","t10","_width","metrics","previousContentHeight","wasAtBottom_0","pendingScroll","handleContentSizeChange","t11","t12","t13","t14","t15","ThreadMessagesFlatList","flatListProps","onContentSizeChange","onLayout","onScroll","scrollEventThrottle","messages","_temp3","length","handleAutoScrollContentSizeChange","handleAutoScrollLayout","handleAutoScrollScroll","renderItem","keyExtractor","_temp4","scrollTracking","width","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 autoScroll = true,\n scrollToBottomOnRunStart = true,\n scrollToBottomOnInitialize = true,\n scrollToBottomOnThreadSwitch = true,\n}: {\n flatListRef: RefObject<FlatList<ThreadMessage> | null>;\n hasMessages: boolean;\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 lastScrollEventYRef = useRef(0);\n const initializeScrollRequestedRef = useRef(false);\n const pendingScrollToBottomRef = useRef<false | { animated: boolean }>(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 metricsRef.current.scrollY = Math.max(0, contentHeight - viewportHeight);\n isAtBottomRef.current = true;\n flatListRef.current?.scrollToEnd({ 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 = event.nativeEvent.layout.height;\n metricsRef.current.viewportHeight = viewportHeight;\n updateIsAtBottom();\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 const pending = pendingScrollToBottomRef.current;\n scrollToBottom(pending ? pending.animated : false);\n } else {\n isAtBottomRef.current = true;\n }\n },\n [autoScroll, scrollToBottom, updateIsAtBottom],\n );\n\n const handleScroll = useCallback(\n (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n const { contentOffset, contentSize, layoutMeasurement } =\n event.nativeEvent;\n const previousEventY = lastScrollEventYRef.current;\n const wasPinnedToBottom = isAtBottomRef.current;\n lastScrollEventYRef.current = contentOffset.y;\n metricsRef.current = {\n contentHeight: contentSize.height,\n viewportHeight: layoutMeasurement.height,\n scrollY: contentOffset.y,\n };\n updateIsAtBottom();\n const upwardMove = contentOffset.y < previousEventY;\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 [updateIsAtBottom],\n );\n\n const handleContentSizeChange = useCallback(\n (_width: number, height: number) => {\n const metrics = metricsRef.current;\n const previousContentHeight = metrics.contentHeight;\n const wasAtBottom = isAtBottomRef.current;\n metrics.contentHeight = height;\n updateIsAtBottom();\n\n // FlatList.scrollToEnd is a no-op before the list has measured, so the\n // initialize and thread-switch scrolls land on the next content-size\n // event, once real metrics exist.\n const pendingScroll = pendingScrollToBottomRef.current;\n if (pendingScroll) {\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 (height <= previousContentHeight) return;\n\n scrollToBottom(false);\n },\n [autoScroll, 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 = { animated: false };\n scrollToBottom(false);\n }, [hasMessages, scrollToBottom, scrollToBottomOnInitialize]);\n\n useAuiEvent(\"thread.runStart\", () => {\n if (!scrollToBottomOnRunStart) return;\n pendingScrollToBottomRef.current = { animated: true };\n scrollToBottom(true);\n });\n\n useAuiEvent(\"threads.selectionChanged\", () => {\n if (!scrollToBottomOnThreadSwitch) return;\n initializeScrollRequestedRef.current = false;\n lastScrollEventYRef.current = 0;\n pendingScrollToBottomRef.current = { animated: false };\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 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 {...(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,8 +1,7 @@
1
1
  import { PressableProps } from "react-native";
2
- import { ReactNode } from "react";
3
2
  //#region src/primitives/thread/ThreadSuggestion.d.ts
4
- type ThreadSuggestionProps = Omit<PressableProps, "onPress"> & {
5
- children: ReactNode;
3
+ type ThreadSuggestionProps = Omit<PressableProps, "onPress" | "children"> & {
4
+ children: PressableProps["children"];
6
5
  /** The suggestion prompt. */
7
6
  prompt: string;
8
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadSuggestion.d.ts","names":[],"sources":["../../../src/primitives/thread/ThreadSuggestion.tsx"],"mappings":";;;KAIY,wBAAwB,KAAK;EACvC,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":";;KAGY,wBAAwB,KAClC;EAGA,UAAU;;EAEV;;;;;EAKA;;;;;;EAMA;;cAGW,qBAAoB,UAAA,QAAA,MAAA,eAAA,UAAA,iBAAA,kBAO9B,0CAAqB,IAAA"}
@@ -48,6 +48,7 @@ const ThreadSuggestion = (t0) => {
48
48
  t4 = /* @__PURE__ */ jsx(Pressable, {
49
49
  onPress: trigger,
50
50
  disabled: t3,
51
+ accessibilityRole: "button",
51
52
  ...pressableProps,
52
53
  children
53
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadSuggestion.js","names":["ReactNode","Pressable","PressableProps","useSuggestionTrigger","ThreadSuggestionProps","Omit","children","prompt","send","clearComposer","ThreadSuggestion","t0","$","_c","disabledProp","pressableProps","t1","disabled","undefined","t2","trigger","t3","t4"],"sources":["../../../src/primitives/thread/ThreadSuggestion.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Pressable, type PressableProps } from \"react-native\";\nimport { useSuggestionTrigger } from \"@assistant-ui/core/react\";\n\nexport type ThreadSuggestionProps = Omit<PressableProps, \"onPress\"> & {\n children: ReactNode;\n /** The suggestion prompt. */\n prompt: string;\n /**\n * When true, automatically sends the message.\n * When false, replaces or appends the composer text with the suggestion.\n */\n send?: boolean | undefined;\n /**\n * Whether to clear the composer. When send is false, determines if composer\n * text is replaced (true) or appended (false).\n * @default true\n */\n clearComposer?: boolean | undefined;\n};\n\nexport const ThreadSuggestion = ({\n children,\n prompt,\n send,\n clearComposer = true,\n disabled: disabledProp,\n ...pressableProps\n}: ThreadSuggestionProps) => {\n const { trigger, disabled } = useSuggestionTrigger({\n prompt,\n send,\n clearComposer,\n });\n\n return (\n <Pressable\n onPress={trigger}\n disabled={disabledProp ?? disabled}\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAqBA,MAAaU,oBAAmBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAP;CAAA,IAAAQ;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAC;CAAA,IAAAQ;CAAA,IAAAJ,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAL,UAAAC,QAAAC,MAAAC,eAAAO,IAAAC,UAAAH,iBAAAC,kBAAAJ;EAOTC,EAAA,KAAAD;EAAAC,EAAA,KAAAN;EAAAM,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAL;EAAAK,EAAA,KAAAJ;EAAAI,EAAA,KAAAI;CAAA,OAAA;EAAAV,WAAAM,EAAA;EAAAE,eAAAF,EAAA;EAAAG,iBAAAH,EAAA;EAAAL,SAAAK,EAAA;EAAAJ,OAAAI,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAHtB,MAAAH,gBAAAO,OAAAE,KAAAA,IAAA,OAAAF;CAAoB,IAAAG;CAAA,IAAAP,EAAA,OAAAH,iBAAAG,EAAA,OAAAL,UAAAK,EAAA,OAAAJ,MAAA;EAI+BW,KAAA;GAAAZ;GAAAC;GAAAC;EAInD;EAACG,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAJ;EAAAI,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAJD,MAAA,EAAAQ,SAAAH,aAA8Bd,qBAAqBgB,EAIlD;CAKa,MAAAE,KAAAP,gBAAAG;CAAwB,IAAAK;CAAA,IAAAV,EAAA,QAAAN,YAAAM,EAAA,QAAAG,kBAAAH,EAAA,QAAAS,MAAAT,EAAA,QAAAQ,SAAA;EAFpCE,KAAA,oBAAC,WAAD;GACWF,SAAAA;GACC,UAAAC;GAAwB,GAC9BN;GAEHT;EALO,CAAA;EAMEM,EAAA,MAAAN;EAAAM,EAAA,MAAAG;EAAAH,EAAA,MAAAS;EAAAT,EAAA,MAAAQ;EAAAR,EAAA,MAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,OANZU;AAMY"}
1
+ {"version":3,"file":"ThreadSuggestion.js","names":["Pressable","PressableProps","useSuggestionTrigger","ThreadSuggestionProps","Omit","children","prompt","send","clearComposer","ThreadSuggestion","t0","$","_c","disabledProp","pressableProps","t1","disabled","undefined","t2","trigger","t3","t4"],"sources":["../../../src/primitives/thread/ThreadSuggestion.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useSuggestionTrigger } from \"@assistant-ui/core/react\";\n\nexport type ThreadSuggestionProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n /** The suggestion prompt. */\n prompt: string;\n /**\n * When true, automatically sends the message.\n * When false, replaces or appends the composer text with the suggestion.\n */\n send?: boolean | undefined;\n /**\n * Whether to clear the composer. When send is false, determines if composer\n * text is replaced (true) or appended (false).\n * @default true\n */\n clearComposer?: boolean | undefined;\n};\n\nexport const ThreadSuggestion = ({\n children,\n prompt,\n send,\n clearComposer = true,\n disabled: disabledProp,\n ...pressableProps\n}: ThreadSuggestionProps) => {\n const { trigger, disabled } = useSuggestionTrigger({\n prompt,\n send,\n clearComposer,\n });\n\n return (\n <Pressable\n onPress={trigger}\n disabled={disabledProp ?? disabled}\n accessibilityRole=\"button\"\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAuBA,MAAaS,oBAAmBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAP;CAAA,IAAAQ;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAC;CAAA,IAAAQ;CAAA,IAAAJ,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAL,UAAAC,QAAAC,MAAAC,eAAAO,IAAAC,UAAAH,iBAAAC,kBAAAJ;EAOTC,EAAA,KAAAD;EAAAC,EAAA,KAAAN;EAAAM,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAL;EAAAK,EAAA,KAAAJ;EAAAI,EAAA,KAAAI;CAAA,OAAA;EAAAV,WAAAM,EAAA;EAAAE,eAAAF,EAAA;EAAAG,iBAAAH,EAAA;EAAAL,SAAAK,EAAA;EAAAJ,OAAAI,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAHtB,MAAAH,gBAAAO,OAAAE,KAAAA,IAAA,OAAAF;CAAoB,IAAAG;CAAA,IAAAP,EAAA,OAAAH,iBAAAG,EAAA,OAAAL,UAAAK,EAAA,OAAAJ,MAAA;EAI+BW,KAAA;GAAAZ;GAAAC;GAAAC;EAInD;EAACG,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAJ;EAAAI,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAJD,MAAA,EAAAQ,SAAAH,aAA8Bd,qBAAqBgB,EAIlD;CAKa,MAAAE,KAAAP,gBAAAG;CAAwB,IAAAK;CAAA,IAAAV,EAAA,QAAAN,YAAAM,EAAA,QAAAG,kBAAAH,EAAA,QAAAS,MAAAT,EAAA,QAAAQ,SAAA;EAFpCE,KAAA,oBAAC,WAAD;GACWF,SAAAA;GACC,UAAAC;GACQ,mBAAA;GAAQ,GACtBN;GAEHT;EANO,CAAA;EAOEM,EAAA,MAAAN;EAAAM,EAAA,MAAAG;EAAAH,EAAA,MAAAS;EAAAT,EAAA,MAAAQ;EAAAR,EAAA,MAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,OAPZU;AAOY"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItems.d.ts","names":[],"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"mappings":";;;KAIY,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":";;;KAKY,uBAAuB,KACjC;EAGA,aAAa;IAAS;IAAkB;QAAoB;;cAGjD,oBAAmB,eAAA,iBAG7B,yCAAoB,IAAA"}
@@ -1,4 +1,5 @@
1
1
  import { useAuiState } from "@assistant-ui/store";
2
+ import { ThreadListItemByIndexProvider } from "@assistant-ui/core/react";
2
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
4
  import { FlatList } from "react-native";
4
5
  import { jsx } from "react/jsx-runtime";
@@ -22,9 +23,13 @@ const ThreadListItems = (t0) => {
22
23
  if ($[3] !== renderItem) {
23
24
  t1 = (t2) => {
24
25
  const { item, index } = t2;
25
- return renderItem({
26
- threadId: item,
27
- index
26
+ return /* @__PURE__ */ jsx(ThreadListItemByIndexProvider, {
27
+ index,
28
+ archived: false,
29
+ children: renderItem({
30
+ threadId: item,
31
+ index
32
+ })
28
33
  });
29
34
  };
30
35
  $[3] = renderItem;
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItems.js","names":["ReactElement","useCallback","FlatList","FlatListProps","useAuiState","ThreadListItemsProps","Omit","renderItem","props","threadId","index","ThreadListItems","t0","$","_c","flatListProps","threadIds","_temp","t1","t2","item","renderFlatListItem","keyExtractor","_temp2","t3","s","threads","item_0"],"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"sourcesContent":["import { type ReactElement, useCallback } from \"react\";\nimport { FlatList, type FlatListProps } from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\nexport type ThreadListItemsProps = Omit<\n FlatListProps<string>,\n \"data\" | \"renderItem\"\n> & {\n renderItem: (props: { threadId: string; index: number }) => ReactElement;\n};\n\nexport const ThreadListItems = ({\n renderItem,\n ...flatListProps\n}: ThreadListItemsProps) => {\n const threadIds = useAuiState((s) => s.threads.threadIds);\n\n const renderFlatListItem = useCallback(\n ({ item, index }: { item: string; index: number }) => {\n return renderItem({ threadId: item, index });\n },\n [renderItem],\n );\n\n const keyExtractor = useCallback((item: string) => item, []);\n\n return (\n <FlatList\n data={threadIds as string[]}\n renderItem={renderFlatListItem}\n keyExtractor={keyExtractor}\n {...flatListProps}\n />\n );\n};\n"],"mappings":";;;;;;AAWA,MAAaW,mBAAkBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAM,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAL,eAAAQ,iBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAN;CAAA,OAAA;EAAAQ,gBAAAF,EAAA;EAAAN,aAAAM,EAAA;CAAA;CACrB,MAAAG,YAAkBZ,YAAYa,KAA0B;CAAE,IAAAC;CAAA,IAAAL,EAAA,OAAAN,YAAA;EAGxDW,MAAAC,OAAA;GAAC,MAAA,EAAAC,MAAAV,UAAAS;GAAgD,OACxCZ,WAAW;IAAAE,UAAYW;IAAIV;GAAQ,CAAC;EAAC;EAC7CG,EAAA,KAAAN;EAAAM,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAHH,MAAAQ,qBAA2BH;CAO3B,MAAAI,eAAqBC;CAIX,MAAAJ,KAAAH;CAAqB,IAAAQ;CAAA,IAAAX,EAAA,OAAAE,iBAAAF,EAAA,OAAAQ,sBAAAR,EAAA,OAAAM,IAAA;EAD7BK,KAAA,oBAAC,UAAD;GACQ,MAAAL;GACME,YAAAA;GACEC;GAAY,GACtBP;EAAa,CAAA;EACjBF,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;EAAAR,EAAA,KAAAM;EAAAN,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OALFW;AAKE;AArByB,SAAAP,MAAAQ,GAAA;CAAA,OAIQA,EAACC,QAAQV;AAAU;AAJ3B,SAAAO,OAAAI,QAAA;CAAA,OAasBP;AAAI"}
1
+ {"version":3,"file":"ThreadListItems.js","names":["ReactElement","useCallback","FlatList","FlatListProps","useAuiState","ThreadListItemByIndexProvider","ThreadListItemsProps","Omit","renderItem","props","threadId","index","ThreadListItems","t0","$","_c","flatListProps","threadIds","_temp","t1","t2","item","renderFlatListItem","keyExtractor","_temp2","t3","s","threads","item_0"],"sources":["../../../src/primitives/threadList/ThreadListItems.tsx"],"sourcesContent":["import { type ReactElement, useCallback } from \"react\";\nimport { FlatList, type FlatListProps } from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { ThreadListItemByIndexProvider } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemsProps = Omit<\n FlatListProps<string>,\n \"data\" | \"renderItem\"\n> & {\n renderItem: (props: { threadId: string; index: number }) => ReactElement;\n};\n\nexport const ThreadListItems = ({\n renderItem,\n ...flatListProps\n}: ThreadListItemsProps) => {\n const threadIds = useAuiState((s) => s.threads.threadIds);\n\n const renderFlatListItem = useCallback(\n ({ item, index }: { item: string; index: number }) => {\n return (\n <ThreadListItemByIndexProvider index={index} archived={false}>\n {renderItem({ threadId: item, index })}\n </ThreadListItemByIndexProvider>\n );\n },\n [renderItem],\n );\n\n const keyExtractor = useCallback((item: string) => item, []);\n\n return (\n <FlatList\n data={threadIds as string[]}\n renderItem={renderFlatListItem}\n keyExtractor={keyExtractor}\n {...flatListProps}\n />\n );\n};\n"],"mappings":";;;;;;;AAYA,MAAaY,mBAAkBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAM,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAL,eAAAQ,iBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAN;CAAA,OAAA;EAAAQ,gBAAAF,EAAA;EAAAN,aAAAM,EAAA;CAAA;CACrB,MAAAG,YAAkBb,YAAYc,KAA0B;CAAE,IAAAC;CAAA,IAAAL,EAAA,OAAAN,YAAA;EAGxDW,MAAAC,OAAA;GAAC,MAAA,EAAAC,MAAAV,UAAAS;GAAgD,OAE7C,oBAAC,+BAAD;IAAsCT;IAAiB,UAAA;IACpDH,UAAAA,WAAW;KAAAE,UAAYW;KAAIV;IAAQ,CAAC;GADT,CAAA;EAEE;EAEnCG,EAAA,KAAAN;EAAAM,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAPH,MAAAQ,qBAA2BH;CAW3B,MAAAI,eAAqBC;CAIX,MAAAJ,KAAAH;CAAqB,IAAAQ;CAAA,IAAAX,EAAA,OAAAE,iBAAAF,EAAA,OAAAQ,sBAAAR,EAAA,OAAAM,IAAA;EAD7BK,KAAA,oBAAC,UAAD;GACQ,MAAAL;GACME,YAAAA;GACEC;GAAY,GACtBP;EAAa,CAAA;EACjBF,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;EAAAR,EAAA,KAAAM;EAAAN,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OALFW;AAKE;AAzByB,SAAAP,MAAAQ,GAAA;CAAA,OAIQA,EAACC,QAAQV;AAAU;AAJ3B,SAAAO,OAAAI,QAAA;CAAA,OAiBsBP;AAAI"}
@@ -1,10 +1,12 @@
1
- import { PressableProps } from "react-native";
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"> & {
5
- children: ReactNode;
4
+ type ThreadListNewProps = Omit<PressableProps, "onPress" | "children"> & {
5
+ children: ReactNode | ((state: PressableStateCallbackType & {
6
+ isActive: boolean;
7
+ }) => ReactNode);
6
8
  };
7
- declare const ThreadListNew: ({ children, ...pressableProps }: ThreadListNewProps) => import("react").JSX.Element;
9
+ declare const ThreadListNew: ({ children, accessibilityState, ...pressableProps }: ThreadListNewProps) => import("react").JSX.Element;
8
10
  //#endregion
9
11
  export { ThreadListNew, ThreadListNewProps };
10
12
  //# sourceMappingURL=ThreadListNew.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListNew.d.ts","names":[],"sources":["../../../src/primitives/threadList/ThreadListNew.tsx"],"mappings":";;;KAIY,qBAAqB,KAAK;EACpC,UAAU;;cAGC,kBAAiB,aAAA,kBAG3B,uCAAkB,IAAA"}
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,36 +1,67 @@
1
+ import { useAuiState } from "@assistant-ui/store";
1
2
  import { useThreadListNew } from "@assistant-ui/core/react";
2
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
4
  import { Pressable } from "react-native";
4
5
  import { jsx } from "react/jsx-runtime";
5
6
  //#region src/primitives/threadList/ThreadListNew.tsx
6
7
  const ThreadListNew = (t0) => {
7
- const $ = c(7);
8
+ const $ = c(15);
9
+ let accessibilityState;
8
10
  let children;
9
11
  let pressableProps;
10
12
  if ($[0] !== t0) {
11
- ({children, ...pressableProps} = t0);
13
+ ({children, accessibilityState, ...pressableProps} = t0);
12
14
  $[0] = t0;
13
- $[1] = children;
14
- $[2] = pressableProps;
15
+ $[1] = accessibilityState;
16
+ $[2] = children;
17
+ $[3] = pressableProps;
15
18
  } else {
16
- children = $[1];
17
- pressableProps = $[2];
19
+ accessibilityState = $[1];
20
+ children = $[2];
21
+ pressableProps = $[3];
18
22
  }
23
+ const isActive = useAuiState(_temp);
19
24
  const { switchToNewThread } = useThreadListNew();
20
25
  let t1;
21
- if ($[3] !== children || $[4] !== pressableProps || $[5] !== switchToNewThread) {
22
- t1 = /* @__PURE__ */ jsx(Pressable, {
26
+ if ($[4] !== accessibilityState || $[5] !== isActive) {
27
+ t1 = {
28
+ selected: isActive,
29
+ ...accessibilityState
30
+ };
31
+ $[4] = accessibilityState;
32
+ $[5] = isActive;
33
+ $[6] = t1;
34
+ } else t1 = $[6];
35
+ let t2;
36
+ if ($[7] !== children || $[8] !== isActive) {
37
+ t2 = typeof children === "function" ? (state) => children({
38
+ ...state,
39
+ isActive
40
+ }) : children;
41
+ $[7] = children;
42
+ $[8] = isActive;
43
+ $[9] = t2;
44
+ } else t2 = $[9];
45
+ let t3;
46
+ if ($[10] !== pressableProps || $[11] !== switchToNewThread || $[12] !== t1 || $[13] !== t2) {
47
+ t3 = /* @__PURE__ */ jsx(Pressable, {
23
48
  onPress: switchToNewThread,
49
+ accessibilityRole: "button",
50
+ accessibilityState: t1,
24
51
  ...pressableProps,
25
- children
52
+ children: t2
26
53
  });
27
- $[3] = children;
28
- $[4] = pressableProps;
29
- $[5] = switchToNewThread;
30
- $[6] = t1;
31
- } else t1 = $[6];
32
- return t1;
54
+ $[10] = pressableProps;
55
+ $[11] = switchToNewThread;
56
+ $[12] = t1;
57
+ $[13] = t2;
58
+ $[14] = t3;
59
+ } else t3 = $[14];
60
+ return t3;
33
61
  };
62
+ function _temp(s) {
63
+ return s.threads.newThreadId === s.threads.mainThreadId;
64
+ }
34
65
  //#endregion
35
66
  export { ThreadListNew };
36
67
 
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListNew.js","names":["ReactNode","Pressable","PressableProps","useThreadListNew","ThreadListNewProps","Omit","children","ThreadListNew","t0","$","_c","pressableProps","switchToNewThread","t1"],"sources":["../../../src/primitives/threadList/ThreadListNew.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListNew } from \"@assistant-ui/core/react\";\n\nexport type ThreadListNewProps = Omit<PressableProps, \"onPress\"> & {\n children: ReactNode;\n};\n\nexport const ThreadListNew = ({\n children,\n ...pressableProps\n}: ThreadListNewProps) => {\n const { switchToNewThread } = useThreadListNew();\n\n return (\n <Pressable onPress={switchToNewThread} {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAQA,MAAaO,iBAAgBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CACnB,MAAA,EAAAG,sBAA8BT,iBAAiB;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAH,YAAAG,EAAA,OAAAE,kBAAAF,EAAA,OAAAG,mBAAA;EAG/CC,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAAiB,GAAMD;GACxCL;EADO,CAAA;EAEEG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
1
+ {"version":3,"file":"ThreadListNew.js","names":["ReactNode","Pressable","PressableProps","PressableStateCallbackType","useAuiState","useThreadListNew","ThreadListNewProps","Omit","children","state","isActive","ThreadListNew","t0","$","_c","accessibilityState","pressableProps","_temp","switchToNewThread","t1","selected","t2","t3","s","threads","newThreadId","mainThreadId"],"sources":["../../../src/primitives/threadList/ThreadListNew.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n type PressableStateCallbackType,\n} from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { useThreadListNew } from \"@assistant-ui/core/react\";\n\nexport type ThreadListNewProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children:\n | ReactNode\n | ((\n state: PressableStateCallbackType & { isActive: boolean },\n ) => ReactNode);\n};\n\nexport const ThreadListNew = ({\n children,\n accessibilityState,\n ...pressableProps\n}: ThreadListNewProps) => {\n const isActive = useAuiState(\n (s) => s.threads.newThreadId === s.threads.mainThreadId,\n );\n const { switchToNewThread } = useThreadListNew();\n\n return (\n <Pressable\n onPress={switchToNewThread}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: isActive, ...accessibilityState }}\n {...pressableProps}\n >\n {typeof children === \"function\"\n ? (state) => children({ ...state, isActive })\n : children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;;AAoBA,MAAaW,iBAAgBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAP;CAAA,IAAAQ;CAAA,IAAAH,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAJ,UAAAO,uBAAAC,kBAAAJ;EAITC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAL;EAAAK,EAAA,KAAAG;CAAA,OAAA;EAAAD,qBAAAF,EAAA;EAAAL,WAAAK,EAAA;EAAAG,iBAAAH,EAAA;CAAA;CACnB,MAAAH,WAAiBN,YACfa,KACF;CACA,MAAA,EAAAC,sBAA8Bb,iBAAiB;CAAE,IAAAc;CAAA,IAAAN,EAAA,OAAAE,sBAAAF,EAAA,OAAAH,UAAA;EAMzBS,KAAA;GAAAC,UAAYV;GAAQ,GAAKK;EAAmB;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAH;EAAAG,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAL,YAAAK,EAAA,OAAAH,UAAA;EAGhEW,KAAA,OAAOb,aAAa,cAApBC,UACcD,SAAS;GAAA,GAAKC;GAAKC;EAAW,CAAC,IAD7CF;EAEWK,EAAA,KAAAL;EAAAK,EAAA,KAAAH;EAAAG,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,QAAAG,kBAAAH,EAAA,QAAAK,qBAAAL,EAAA,QAAAM,MAAAN,EAAA,QAAAQ,IAAA;EARdC,KAAA,oBAAC,WAAD;GACWJ,SAAAA;GACS,mBAAA;GACE,oBAAAC;GAA6C,GAC7DH;GAEHK,UAAAA;EANO,CAAA;EASER,EAAA,MAAAG;EAAAH,EAAA,MAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAQ;EAAAR,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OATZS;AASY;AApBa,SAAAL,MAAAM,GAAA;CAAA,OAMlBA,EAACC,QAAQC,gBAAiBF,EAACC,QAAQE;AAAa"}
@@ -1,8 +1,7 @@
1
1
  import { PressableProps } from "react-native";
2
- import { ReactNode } from "react";
3
2
  //#region src/primitives/threadListItem/ThreadListItemArchive.d.ts
4
- type ThreadListItemArchiveProps = Omit<PressableProps, "onPress"> & {
5
- children: ReactNode;
3
+ type ThreadListItemArchiveProps = Omit<PressableProps, "onPress" | "children"> & {
4
+ children: PressableProps["children"];
6
5
  };
7
6
  declare const ThreadListItemArchive: ({ children, ...pressableProps }: ThreadListItemArchiveProps) => import("react").JSX.Element;
8
7
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemArchive.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"mappings":";;;KAIY,6BAA6B,KAAK;EAC5C,UAAU;;cAGC,0BAAyB,aAAA,kBAGnC,+CAA0B,IAAA"}
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"}
@@ -21,6 +21,7 @@ const ThreadListItemArchive = (t0) => {
21
21
  if ($[3] !== archive || $[4] !== children || $[5] !== pressableProps) {
22
22
  t1 = /* @__PURE__ */ jsx(Pressable, {
23
23
  onPress: archive,
24
+ accessibilityRole: "button",
24
25
  ...pressableProps,
25
26
  children
26
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemArchive.js","names":["ReactNode","Pressable","PressableProps","useThreadListItemArchive","ThreadListItemArchiveProps","Omit","children","ThreadListItemArchive","t0","$","_c","pressableProps","archive","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemArchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemArchiveProps = Omit<PressableProps, \"onPress\"> & {\n children: ReactNode;\n};\n\nexport const ThreadListItemArchive = ({\n children,\n ...pressableProps\n}: ThreadListItemArchiveProps) => {\n const { archive } = useThreadListItemArchive();\n\n return (\n <Pressable onPress={archive} {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAQA,MAAaO,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC3B,MAAA,EAAAG,YAAoBT,yBAAyB;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAG,WAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,gBAAA;EAG7CE,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAAO,GAAMD;GAC9BL;EADO,CAAA;EAEEG,EAAA,KAAAG;EAAAH,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
1
+ {"version":3,"file":"ThreadListItemArchive.js","names":["Pressable","PressableProps","useThreadListItemArchive","ThreadListItemArchiveProps","Omit","children","ThreadListItemArchive","t0","$","_c","pressableProps","archive","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemArchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemArchiveProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemArchive = ({\n children,\n ...pressableProps\n}: ThreadListItemArchiveProps) => {\n const { archive } = useThreadListItemArchive();\n\n return (\n <Pressable onPress={archive} accessibilityRole=\"button\" {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC3B,MAAA,EAAAG,YAAoBT,yBAAyB;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAG,WAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,gBAAA;EAG7CE,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAA2B,mBAAA;GAAQ,GAAKD;GACzDL;EADO,CAAA;EAEEG,EAAA,KAAAG;EAAAH,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
@@ -1,8 +1,7 @@
1
1
  import { PressableProps } from "react-native";
2
- import { ReactNode } from "react";
3
2
  //#region src/primitives/threadListItem/ThreadListItemDelete.d.ts
4
- type ThreadListItemDeleteProps = Omit<PressableProps, "onPress"> & {
5
- children: ReactNode;
3
+ type ThreadListItemDeleteProps = Omit<PressableProps, "onPress" | "children"> & {
4
+ children: PressableProps["children"];
6
5
  };
7
6
  declare const ThreadListItemDelete: ({ children, ...pressableProps }: ThreadListItemDeleteProps) => import("react").JSX.Element;
8
7
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemDelete.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"mappings":";;;KAIY,4BAA4B,KAAK;EAC3C,UAAU;;cAGC,yBAAwB,aAAA,kBAGlC,8CAAyB,IAAA"}
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"}
@@ -21,6 +21,7 @@ const ThreadListItemDelete = (t0) => {
21
21
  if ($[3] !== children || $[4] !== deleteThread || $[5] !== pressableProps) {
22
22
  t1 = /* @__PURE__ */ jsx(Pressable, {
23
23
  onPress: deleteThread,
24
+ accessibilityRole: "button",
24
25
  ...pressableProps,
25
26
  children
26
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemDelete.js","names":["ReactNode","Pressable","PressableProps","useThreadListItemDelete","ThreadListItemDeleteProps","Omit","children","ThreadListItemDelete","t0","$","_c","pressableProps","delete","deleteThread","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemDelete } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemDeleteProps = Omit<PressableProps, \"onPress\"> & {\n children: ReactNode;\n};\n\nexport const ThreadListItemDelete = ({\n children,\n ...pressableProps\n}: ThreadListItemDeleteProps) => {\n const { delete: deleteThread } = useThreadListItemDelete();\n\n return (\n <Pressable onPress={deleteThread} {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAQA,MAAaO,wBAAuBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC1B,MAAA,EAAAG,QAAAC,iBAAiCV,wBAAwB;CAAE,IAAAW;CAAA,IAAAL,EAAA,OAAAH,YAAAG,EAAA,OAAAI,gBAAAJ,EAAA,OAAAE,gBAAA;EAGzDG,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAAY,GAAMF;GACnCL;EADO,CAAA;EAEEG,EAAA,KAAAH;EAAAG,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OAFZK;AAEY"}
1
+ {"version":3,"file":"ThreadListItemDelete.js","names":["Pressable","PressableProps","useThreadListItemDelete","ThreadListItemDeleteProps","Omit","children","ThreadListItemDelete","t0","$","_c","pressableProps","delete","deleteThread","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemDelete } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemDeleteProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemDelete = ({\n children,\n ...pressableProps\n}: ThreadListItemDeleteProps) => {\n const { delete: deleteThread } = useThreadListItemDelete();\n\n return (\n <Pressable\n onPress={deleteThread}\n accessibilityRole=\"button\"\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,wBAAuBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC1B,MAAA,EAAAG,QAAAC,iBAAiCV,wBAAwB;CAAE,IAAAW;CAAA,IAAAL,EAAA,OAAAH,YAAAG,EAAA,OAAAI,gBAAAJ,EAAA,OAAAE,gBAAA;EAGzDG,KAAA,oBAAC,WAAD;GACWD,SAAAA;GACS,mBAAA;GAAQ,GACtBF;GAEHL;EALO,CAAA;EAMEG,EAAA,KAAAH;EAAAG,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OANZK;AAMY"}
@@ -1,10 +1,12 @@
1
- import { PressableProps } from "react-native";
1
+ import { PressableProps, PressableStateCallbackType } from "react-native";
2
2
  import { ReactNode } from "react";
3
3
  //#region src/primitives/threadListItem/ThreadListItemTrigger.d.ts
4
- type ThreadListItemTriggerProps = Omit<PressableProps, "onPress"> & {
5
- children: ReactNode;
4
+ type ThreadListItemTriggerProps = Omit<PressableProps, "onPress" | "children"> & {
5
+ children: ReactNode | ((state: PressableStateCallbackType & {
6
+ isActive: boolean;
7
+ }) => ReactNode);
6
8
  };
7
- declare const ThreadListItemTrigger: ({ children, ...pressableProps }: ThreadListItemTriggerProps) => import("react").JSX.Element;
9
+ declare const ThreadListItemTrigger: ({ children, accessibilityState, ...pressableProps }: ThreadListItemTriggerProps) => import("react").JSX.Element;
8
10
  //#endregion
9
11
  export { ThreadListItemTrigger, ThreadListItemTriggerProps };
10
12
  //# sourceMappingURL=ThreadListItemTrigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemTrigger.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemTrigger.tsx"],"mappings":";;;KAIY,6BAA6B,KAAK;EAC5C,UAAU;;cAGC,0BAAyB,aAAA,kBAGnC,+CAA0B,IAAA"}
1
+ {"version":3,"file":"ThreadListItemTrigger.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemTrigger.tsx"],"mappings":";;;KASY,6BAA6B,KACvC;EAGA,UACI,cAEE,OAAO;IAA+B;QACnC;;cAGE,0BAAyB,UAAA,uBAAA,kBAInC,+CAA0B,IAAA"}