@assistant-ui/react 0.14.16 → 0.14.19

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 (380) hide show
  1. package/dist/client/ExternalThread.d.ts +5 -3
  2. package/dist/client/ExternalThread.d.ts.map +1 -1
  3. package/dist/client/ExternalThread.js +745 -255
  4. package/dist/client/ExternalThread.js.map +1 -1
  5. package/dist/client/InMemoryThreadList.d.ts +1 -1
  6. package/dist/client/InMemoryThreadList.d.ts.map +1 -1
  7. package/dist/client/InMemoryThreadList.js +299 -113
  8. package/dist/client/InMemoryThreadList.js.map +1 -1
  9. package/dist/client/SingleThreadList.d.ts +1 -6
  10. package/dist/client/SingleThreadList.d.ts.map +1 -1
  11. package/dist/client/SingleThreadList.js +143 -55
  12. package/dist/client/SingleThreadList.js.map +1 -1
  13. package/dist/context/ReadonlyStore.js.map +1 -1
  14. package/dist/context/providers/MessageProvider.js +38 -5
  15. package/dist/context/providers/MessageProvider.js.map +1 -1
  16. package/dist/context/providers/ThreadViewportProvider.js +76 -20
  17. package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
  18. package/dist/context/react/ThreadViewportContext.js.map +1 -1
  19. package/dist/context/react/utils/createContextHook.js.map +1 -1
  20. package/dist/context/react/utils/createContextStoreHook.js +17 -2
  21. package/dist/context/react/utils/createContextStoreHook.js.map +1 -1
  22. package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
  23. package/dist/context/react/utils/ensureBinding.js.map +1 -1
  24. package/dist/context/react/utils/useRuntimeState.js +18 -2
  25. package/dist/context/react/utils/useRuntimeState.js.map +1 -1
  26. package/dist/context/stores/ThreadViewport.js.map +1 -1
  27. package/dist/devtools/DevToolsHooks.js.map +1 -1
  28. package/dist/hooks/useMessageQuote.js.map +1 -1
  29. package/dist/hooks/useMessageTiming.js +4 -1
  30. package/dist/hooks/useMessageTiming.js.map +1 -1
  31. package/dist/hooks/useToolCallElapsed.d.ts +23 -0
  32. package/dist/hooks/useToolCallElapsed.d.ts.map +1 -0
  33. package/dist/hooks/useToolCallElapsed.js +72 -0
  34. package/dist/hooks/useToolCallElapsed.js.map +1 -0
  35. package/dist/index.d.ts +6 -2
  36. package/dist/index.js +5 -1
  37. package/dist/internal.js.map +1 -1
  38. package/dist/legacy-runtime/AssistantRuntimeProvider.js +46 -10
  39. package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
  40. package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
  41. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js +27 -6
  42. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js.map +1 -1
  43. package/dist/legacy-runtime/hooks/AssistantContext.js +13 -2
  44. package/dist/legacy-runtime/hooks/AssistantContext.js.map +1 -1
  45. package/dist/legacy-runtime/hooks/AttachmentContext.js +9 -1
  46. package/dist/legacy-runtime/hooks/AttachmentContext.js.map +1 -1
  47. package/dist/legacy-runtime/hooks/ComposerContext.js +9 -1
  48. package/dist/legacy-runtime/hooks/ComposerContext.js.map +1 -1
  49. package/dist/legacy-runtime/hooks/MessageContext.js +12 -2
  50. package/dist/legacy-runtime/hooks/MessageContext.js.map +1 -1
  51. package/dist/legacy-runtime/hooks/MessagePartContext.js +9 -1
  52. package/dist/legacy-runtime/hooks/MessagePartContext.js.map +1 -1
  53. package/dist/legacy-runtime/hooks/ThreadContext.js +33 -5
  54. package/dist/legacy-runtime/hooks/ThreadContext.js.map +1 -1
  55. package/dist/legacy-runtime/hooks/ThreadListItemContext.js +9 -1
  56. package/dist/legacy-runtime/hooks/ThreadListItemContext.js.map +1 -1
  57. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js +3 -3
  58. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js.map +1 -1
  59. package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js +71 -31
  60. package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js.map +1 -1
  61. package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
  62. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +24 -16
  63. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
  64. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js +17 -12
  65. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js.map +1 -1
  66. package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js +17 -3
  67. package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js.map +1 -1
  68. package/dist/mcp-apps/McpAppRenderer.d.ts +2 -10
  69. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  70. package/dist/mcp-apps/McpAppRenderer.js +9 -8
  71. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  72. package/dist/mcp-apps/McpAppsRemoteHost.d.ts +1 -8
  73. package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -1
  74. package/dist/mcp-apps/McpAppsRemoteHost.js +6 -5
  75. package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
  76. package/dist/mcp-apps/app-frame.js +33 -14
  77. package/dist/mcp-apps/app-frame.js.map +1 -1
  78. package/dist/mcp-apps/bridge.js.map +1 -1
  79. package/dist/mcp-apps/types.js.map +1 -1
  80. package/dist/mcp-apps/utils.js.map +1 -1
  81. package/dist/model-context/frame/useAssistantFrameHost.js +32 -14
  82. package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
  83. package/dist/model-context/makeAssistantVisible.js +64 -26
  84. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  85. package/dist/primitives/actionBar/ActionBarCopy.js +94 -20
  86. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  87. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  88. package/dist/primitives/actionBar/ActionBarExportMarkdown.js +105 -37
  89. package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
  90. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +60 -11
  91. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  92. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +60 -11
  93. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  94. package/dist/primitives/actionBar/ActionBarInteractionContext.js +3 -1
  95. package/dist/primitives/actionBar/ActionBarInteractionContext.js.map +1 -1
  96. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  97. package/dist/primitives/actionBar/ActionBarRoot.js +84 -25
  98. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  99. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
  100. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +45 -14
  101. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
  102. package/dist/primitives/actionBar/useActionBarFloatStatus.js +22 -10
  103. package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
  104. package/dist/primitives/actionBar.js.map +1 -1
  105. package/dist/primitives/actionBarMore/ActionBarMoreContent.js +44 -7
  106. package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
  107. package/dist/primitives/actionBarMore/ActionBarMoreItem.js +28 -6
  108. package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
  109. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +103 -36
  110. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
  111. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +28 -6
  112. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
  113. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +28 -6
  114. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
  115. package/dist/primitives/actionBarMore/scope.js.map +1 -1
  116. package/dist/primitives/actionBarMore.js.map +1 -1
  117. package/dist/primitives/assistantModal/AssistantModalAnchor.js +27 -6
  118. package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
  119. package/dist/primitives/assistantModal/AssistantModalContent.js +71 -10
  120. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
  121. package/dist/primitives/assistantModal/AssistantModalRoot.js +93 -26
  122. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
  123. package/dist/primitives/assistantModal/AssistantModalTrigger.js +27 -6
  124. package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
  125. package/dist/primitives/assistantModal/scope.js.map +1 -1
  126. package/dist/primitives/assistantModal.js.map +1 -1
  127. package/dist/primitives/attachment/AttachmentName.js +13 -1
  128. package/dist/primitives/attachment/AttachmentName.js.map +1 -1
  129. package/dist/primitives/attachment/AttachmentRemove.js +11 -4
  130. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
  131. package/dist/primitives/attachment/AttachmentRoot.js +13 -4
  132. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
  133. package/dist/primitives/attachment/AttachmentThumb.js +20 -9
  134. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
  135. package/dist/primitives/attachment.js.map +1 -1
  136. package/dist/primitives/branchPicker/BranchPickerCount.js +14 -2
  137. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  138. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  139. package/dist/primitives/branchPicker/BranchPickerNumber.js +14 -2
  140. package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
  141. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  142. package/dist/primitives/branchPicker/BranchPickerRoot.js +34 -6
  143. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  144. package/dist/primitives/branchPicker.js.map +1 -1
  145. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +16 -5
  146. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  147. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +13 -4
  148. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
  149. package/dist/primitives/chainOfThought.js.map +1 -1
  150. package/dist/primitives/composer/ComposerAddAttachment.js +37 -24
  151. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  152. package/dist/primitives/composer/ComposerAttachmentDropzone.js +124 -49
  153. package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
  154. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  155. package/dist/primitives/composer/ComposerDictate.js.map +1 -1
  156. package/dist/primitives/composer/ComposerDictationTranscript.js +32 -7
  157. package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
  158. package/dist/primitives/composer/ComposerInput.js +29 -29
  159. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  160. package/dist/primitives/composer/ComposerInputPluginContext.js +71 -25
  161. package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -1
  162. package/dist/primitives/composer/ComposerQuote.js +92 -23
  163. package/dist/primitives/composer/ComposerQuote.js.map +1 -1
  164. package/dist/primitives/composer/ComposerRoot.js +45 -11
  165. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  166. package/dist/primitives/composer/ComposerSend.js +9 -2
  167. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  168. package/dist/primitives/composer/ComposerStopDictation.js +15 -5
  169. package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
  170. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
  171. package/dist/primitives/composer/trigger/TriggerPopover.js +215 -75
  172. package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
  173. package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
  174. package/dist/primitives/composer/trigger/TriggerPopoverBack.js +35 -7
  175. package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
  176. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +134 -28
  177. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
  178. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
  179. package/dist/primitives/composer/trigger/TriggerPopoverItems.js +132 -28
  180. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
  181. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +2 -10
  182. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
  183. package/dist/primitives/composer/trigger/TriggerPopoverResource.js +126 -53
  184. package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
  185. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +181 -78
  186. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
  187. package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -1
  188. package/dist/primitives/composer/trigger/index.js.map +1 -1
  189. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +2 -6
  190. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -1
  191. package/dist/primitives/composer/trigger/triggerDetectionResource.js +30 -15
  192. package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -1
  193. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts +2 -17
  194. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -1
  195. package/dist/primitives/composer/trigger/triggerKeyboardResource.js +117 -59
  196. package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -1
  197. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts +2 -10
  198. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -1
  199. package/dist/primitives/composer/trigger/triggerNavigationResource.js +204 -71
  200. package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -1
  201. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +2 -10
  202. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
  203. package/dist/primitives/composer/trigger/triggerSelectionResource.js +51 -14
  204. package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
  205. package/dist/primitives/composer.js.map +1 -1
  206. package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -1
  207. package/dist/primitives/error/ErrorMessage.js +28 -6
  208. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  209. package/dist/primitives/error/ErrorRoot.js +14 -5
  210. package/dist/primitives/error/ErrorRoot.js.map +1 -1
  211. package/dist/primitives/error.js.map +1 -1
  212. package/dist/primitives/message/MessageError.js +2 -1
  213. package/dist/primitives/message/MessageError.js.map +1 -1
  214. package/dist/primitives/message/MessageIf.js +50 -20
  215. package/dist/primitives/message/MessageIf.js.map +1 -1
  216. package/dist/primitives/message/MessageParts.js +41 -7
  217. package/dist/primitives/message/MessageParts.js.map +1 -1
  218. package/dist/primitives/message/MessagePartsGrouped.js +399 -94
  219. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  220. package/dist/primitives/message/MessageRoot.js +197 -65
  221. package/dist/primitives/message/MessageRoot.js.map +1 -1
  222. package/dist/primitives/message.js.map +1 -1
  223. package/dist/primitives/messagePart/MessagePartImage.js +15 -5
  224. package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
  225. package/dist/primitives/messagePart/MessagePartText.d.ts +5 -2
  226. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -1
  227. package/dist/primitives/messagePart/MessagePartText.js +35 -7
  228. package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
  229. package/dist/primitives/messagePart/useMessagePartData.js +5 -4
  230. package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
  231. package/dist/primitives/messagePart/useMessagePartFile.js +5 -4
  232. package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
  233. package/dist/primitives/messagePart/useMessagePartImage.js +5 -4
  234. package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
  235. package/dist/primitives/messagePart/useMessagePartReasoning.js +5 -4
  236. package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
  237. package/dist/primitives/messagePart/useMessagePartSource.js +5 -4
  238. package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
  239. package/dist/primitives/messagePart/useMessagePartText.js +5 -4
  240. package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
  241. package/dist/primitives/messagePart.js.map +1 -1
  242. package/dist/primitives/queueItem/QueueItemRemove.js +11 -4
  243. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
  244. package/dist/primitives/queueItem/QueueItemSteer.js +11 -4
  245. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
  246. package/dist/primitives/queueItem/QueueItemText.js +20 -6
  247. package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
  248. package/dist/primitives/queueItem.js.map +1 -1
  249. package/dist/primitives/reasoning/useScrollLock.js +61 -34
  250. package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
  251. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +56 -16
  252. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
  253. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +120 -59
  254. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
  255. package/dist/primitives/selectionToolbar.js.map +1 -1
  256. package/dist/primitives/suggestion/SuggestionDescription.js +20 -6
  257. package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
  258. package/dist/primitives/suggestion/SuggestionTitle.js +20 -6
  259. package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
  260. package/dist/primitives/suggestion/SuggestionTrigger.js +39 -26
  261. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  262. package/dist/primitives/suggestion.js.map +1 -1
  263. package/dist/primitives/thread/ThreadEmpty.js +6 -2
  264. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  265. package/dist/primitives/thread/ThreadIf.js +32 -10
  266. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  267. package/dist/primitives/thread/ThreadRoot.js +13 -4
  268. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  269. package/dist/primitives/thread/ThreadScrollToBottom.js +24 -6
  270. package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
  271. package/dist/primitives/thread/ThreadSuggestion.js +18 -6
  272. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  273. package/dist/primitives/thread/ThreadViewport.js +185 -47
  274. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  275. package/dist/primitives/thread/ThreadViewportFooter.js +22 -9
  276. package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
  277. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js.map +1 -1
  278. package/dist/primitives/thread/topAnchor/createReserveObservers.js.map +1 -1
  279. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -1
  280. package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -1
  281. package/dist/primitives/thread/topAnchor/topAnchorUtils.js.map +1 -1
  282. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +19 -4
  283. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
  284. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
  285. package/dist/primitives/thread/useThreadViewportAutoScroll.js +21 -16
  286. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  287. package/dist/primitives/thread.js.map +1 -1
  288. package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -1
  289. package/dist/primitives/threadList/ThreadListNew.js +53 -11
  290. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  291. package/dist/primitives/threadList/ThreadListRoot.js +13 -4
  292. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
  293. package/dist/primitives/threadList.js.map +1 -1
  294. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  295. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
  296. package/dist/primitives/threadListItem/ThreadListItemRoot.js +26 -7
  297. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  298. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  299. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  300. package/dist/primitives/threadListItem.js.map +1 -1
  301. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +44 -7
  302. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
  303. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +28 -6
  304. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
  305. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +25 -5
  306. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
  307. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +28 -6
  308. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
  309. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +28 -6
  310. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
  311. package/dist/primitives/threadListItemMore/scope.js.map +1 -1
  312. package/dist/primitives/threadListItemMore.js.map +1 -1
  313. package/dist/sandbox-host/SandboxHost.js.map +1 -1
  314. package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
  315. package/dist/tests/setup.js.map +1 -1
  316. package/dist/unstable/useComposerInputHistory.d.ts +30 -0
  317. package/dist/unstable/useComposerInputHistory.d.ts.map +1 -0
  318. package/dist/unstable/useComposerInputHistory.js +117 -0
  319. package/dist/unstable/useComposerInputHistory.js.map +1 -0
  320. package/dist/unstable/useMentionAdapter.js.map +1 -1
  321. package/dist/unstable/useMessageStallDetection.d.ts +29 -0
  322. package/dist/unstable/useMessageStallDetection.d.ts.map +1 -0
  323. package/dist/unstable/useMessageStallDetection.js +69 -0
  324. package/dist/unstable/useMessageStallDetection.js.map +1 -0
  325. package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
  326. package/dist/utils/Primitive.js +57 -12
  327. package/dist/utils/Primitive.js.map +1 -1
  328. package/dist/utils/createActionButton.js +23 -7
  329. package/dist/utils/createActionButton.js.map +1 -1
  330. package/dist/utils/getSelectionMessageId.js.map +1 -1
  331. package/dist/utils/hooks/useManagedRef.js +16 -8
  332. package/dist/utils/hooks/useManagedRef.js.map +1 -1
  333. package/dist/utils/hooks/useMediaQuery.js +25 -10
  334. package/dist/utils/hooks/useMediaQuery.js.map +1 -1
  335. package/dist/utils/hooks/useOnResizeContent.js +29 -19
  336. package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
  337. package/dist/utils/hooks/useOnScrollToBottom.js +20 -4
  338. package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
  339. package/dist/utils/hooks/useSizeHandle.js +23 -15
  340. package/dist/utils/hooks/useSizeHandle.js.map +1 -1
  341. package/dist/utils/json/is-json-equal.js.map +1 -1
  342. package/dist/utils/json/is-json.js.map +1 -1
  343. package/dist/utils/smooth/SmoothContext.js +41 -11
  344. package/dist/utils/smooth/SmoothContext.js.map +1 -1
  345. package/dist/utils/smooth/useSmooth.d.ts +40 -2
  346. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  347. package/dist/utils/smooth/useSmooth.js +52 -13
  348. package/dist/utils/smooth/useSmooth.js.map +1 -1
  349. package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
  350. package/dist/utils/useToolArgsFieldStatus.d.ts.map +1 -1
  351. package/dist/utils/useToolArgsFieldStatus.js +13 -5
  352. package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
  353. package/package.json +6 -6
  354. package/src/client/ExternalThread.ts +146 -74
  355. package/src/client/InMemoryThreadList.ts +23 -21
  356. package/src/client/SingleThreadList.ts +29 -27
  357. package/src/hooks/useToolCallElapsed.ts +52 -0
  358. package/src/index.ts +19 -0
  359. package/src/mcp-apps/McpAppRenderer.tsx +5 -3
  360. package/src/mcp-apps/McpAppsRemoteHost.ts +5 -3
  361. package/src/primitives/composer/ComposerInput.test.tsx +1 -1
  362. package/src/primitives/composer/ComposerInput.tsx +3 -3
  363. package/src/primitives/composer/trigger/TriggerPopover.tsx +4 -5
  364. package/src/primitives/composer/trigger/TriggerPopoverResource.ts +5 -3
  365. package/src/primitives/composer/trigger/triggerDetectionResource.ts +21 -21
  366. package/src/primitives/composer/trigger/triggerKeyboardResource.test.ts +5 -4
  367. package/src/primitives/composer/trigger/triggerKeyboardResource.ts +99 -101
  368. package/src/primitives/composer/trigger/triggerNavigationResource.ts +92 -98
  369. package/src/primitives/composer/trigger/triggerSelectionResource.ts +76 -76
  370. package/src/primitives/messagePart/MessagePartText.tsx +3 -2
  371. package/src/primitives/reasoning/useScrollLock.ts +25 -2
  372. package/src/primitives/thread/useThreadViewportAutoScroll.ts +8 -0
  373. package/src/tests/external-thread-branches.test.tsx +160 -0
  374. package/src/tests/shouldContinue.test.ts +33 -0
  375. package/src/tests/toolCallTiming.test.tsx +221 -0
  376. package/src/unstable/useComposerInputHistory.test.tsx +201 -0
  377. package/src/unstable/useComposerInputHistory.ts +160 -0
  378. package/src/unstable/useMessageStallDetection.ts +91 -0
  379. package/src/utils/smooth/useSmooth.test.tsx +95 -0
  380. package/src/utils/smooth/useSmooth.ts +82 -10
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import { createContext, useCallback, useContext, useMemo, useRef } from "@assistant-ui/tap/react-shim";
2
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
+ import { createContext, useContext, useRef } from "@assistant-ui/tap/react-shim";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
  //#region src/primitives/composer/ComposerInputPluginContext.tsx
5
6
  const ComposerInputPluginRegistryContext = createContext(null);
@@ -11,33 +12,78 @@ const useComposerInputPluginRegistry = () => {
11
12
  const useComposerInputPluginRegistryOptional = () => {
12
13
  return useContext(ComposerInputPluginRegistryContext);
13
14
  };
14
- const ComposerInputPluginProvider = ({ children }) => {
15
- const pluginsRef = useRef(/* @__PURE__ */ new Map());
16
- const snapshotRef = useRef([]);
17
- const refreshSnapshot = useCallback(() => {
18
- const entries = Array.from(pluginsRef.current.entries());
19
- entries.sort((a, b) => b[1] - a[1]);
20
- snapshotRef.current = entries.map(([plugin]) => plugin);
21
- }, []);
22
- const register = useCallback((plugin, opts) => {
23
- const priority = opts?.priority ?? 0;
24
- pluginsRef.current.set(plugin, priority);
25
- refreshSnapshot();
26
- return () => {
27
- pluginsRef.current.delete(plugin);
15
+ const ComposerInputPluginProvider = (t0) => {
16
+ const $ = c(8);
17
+ const { children } = t0;
18
+ let t1;
19
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
20
+ t1 = /* @__PURE__ */ new Map();
21
+ $[0] = t1;
22
+ } else t1 = $[0];
23
+ const pluginsRef = useRef(t1);
24
+ let t2;
25
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
26
+ t2 = [];
27
+ $[1] = t2;
28
+ } else t2 = $[1];
29
+ const snapshotRef = useRef(t2);
30
+ let t3;
31
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
32
+ t3 = () => {
33
+ const entries = Array.from(pluginsRef.current.entries());
34
+ entries.sort(_temp);
35
+ snapshotRef.current = entries.map(_temp2);
36
+ };
37
+ $[2] = t3;
38
+ } else t3 = $[2];
39
+ const refreshSnapshot = t3;
40
+ let t4;
41
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
42
+ t4 = (plugin_0, opts) => {
43
+ const priority = opts?.priority ?? 0;
44
+ pluginsRef.current.set(plugin_0, priority);
28
45
  refreshSnapshot();
46
+ return () => {
47
+ pluginsRef.current.delete(plugin_0);
48
+ refreshSnapshot();
49
+ };
50
+ };
51
+ $[3] = t4;
52
+ } else t4 = $[3];
53
+ const register = t4;
54
+ let t5;
55
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
56
+ t5 = () => snapshotRef.current;
57
+ $[4] = t5;
58
+ } else t5 = $[4];
59
+ const getPlugins = t5;
60
+ let t6;
61
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
62
+ t6 = {
63
+ register,
64
+ getPlugins
29
65
  };
30
- }, [refreshSnapshot]);
31
- const getPlugins = useCallback(() => snapshotRef.current, []);
32
- const registry = useMemo(() => ({
33
- register,
34
- getPlugins
35
- }), [register, getPlugins]);
36
- return /* @__PURE__ */ jsx(ComposerInputPluginRegistryContext.Provider, {
37
- value: registry,
38
- children
39
- });
66
+ $[5] = t6;
67
+ } else t6 = $[5];
68
+ const registry = t6;
69
+ let t7;
70
+ if ($[6] !== children) {
71
+ t7 = /* @__PURE__ */ jsx(ComposerInputPluginRegistryContext.Provider, {
72
+ value: registry,
73
+ children
74
+ });
75
+ $[6] = children;
76
+ $[7] = t7;
77
+ } else t7 = $[7];
78
+ return t7;
40
79
  };
80
+ function _temp(a, b) {
81
+ return b[1] - a[1];
82
+ }
83
+ function _temp2(t0) {
84
+ const [plugin] = t0;
85
+ return plugin;
86
+ }
41
87
  //#endregion
42
88
  export { ComposerInputPluginProvider, useComposerInputPluginRegistry, useComposerInputPluginRegistryOptional };
43
89
 
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerInputPluginContext.js","names":[],"sources":["../../../src/primitives/composer/ComposerInputPluginContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useContext,\n useRef,\n useCallback,\n useMemo,\n type ReactNode,\n type FC,\n} from \"react\";\n\n/**\n * A plugin that intercepts keyboard events and cursor changes in the composer\n * input. Used by trigger popover declarations to handle popover navigation\n * without ComposerInput knowing about specific triggers.\n */\nexport type ComposerInputPlugin = {\n /** Handle a key event. Return true if consumed (stops propagation to other plugins and default behavior). */\n handleKeyDown(e: {\n readonly key: string;\n readonly shiftKey: boolean;\n readonly ctrlKey?: boolean;\n readonly metaKey?: boolean;\n readonly nativeEvent?: { isComposing?: boolean };\n preventDefault(): void;\n }): boolean;\n\n /** Called on every cursor position change (selection change / text change). */\n setCursorPosition(pos: number): void;\n};\n\n/** Options for registering a plugin. */\nexport type ComposerInputPluginRegisterOptions = {\n /**\n * Relative priority. Plugins with higher priority receive events first.\n * @default 0\n */\n priority?: number;\n};\n\n// Ref-based registry: plugins are read imperatively at event time, so register/unregister does not trigger re-renders.\nexport type ComposerInputPluginRegistry = {\n register(\n plugin: ComposerInputPlugin,\n opts?: ComposerInputPluginRegisterOptions,\n ): () => void;\n getPlugins(): readonly ComposerInputPlugin[];\n};\n\nconst ComposerInputPluginRegistryContext =\n createContext<ComposerInputPluginRegistry | null>(null);\n\nexport const useComposerInputPluginRegistry =\n (): ComposerInputPluginRegistry => {\n const ctx = useContext(ComposerInputPluginRegistryContext);\n if (!ctx)\n throw new Error(\n \"useComposerInputPluginRegistry must be used within a ComposerInputPluginProvider\",\n );\n return ctx;\n };\n\nexport const useComposerInputPluginRegistryOptional =\n (): ComposerInputPluginRegistry | null => {\n return useContext(ComposerInputPluginRegistryContext);\n };\n\nexport const ComposerInputPluginProvider: FC<{ children: ReactNode }> = ({\n children,\n}) => {\n const pluginsRef = useRef<Map<ComposerInputPlugin, number>>(new Map());\n const snapshotRef = useRef<readonly ComposerInputPlugin[]>([]);\n\n const refreshSnapshot = useCallback(() => {\n const entries = Array.from(pluginsRef.current.entries());\n // Sort by priority descending; stable insertion order for equal priorities.\n entries.sort((a, b) => b[1] - a[1]);\n snapshotRef.current = entries.map(([plugin]) => plugin);\n }, []);\n\n const register = useCallback(\n (\n plugin: ComposerInputPlugin,\n opts?: ComposerInputPluginRegisterOptions,\n ) => {\n const priority = opts?.priority ?? 0;\n pluginsRef.current.set(plugin, priority);\n refreshSnapshot();\n return () => {\n pluginsRef.current.delete(plugin);\n refreshSnapshot();\n };\n },\n [refreshSnapshot],\n );\n\n const getPlugins = useCallback(\n (): readonly ComposerInputPlugin[] => snapshotRef.current,\n [],\n );\n\n const registry = useMemo<ComposerInputPluginRegistry>(\n () => ({ register, getPlugins }),\n [register, getPlugins],\n );\n\n return (\n <ComposerInputPluginRegistryContext.Provider value={registry}>\n {children}\n </ComposerInputPluginRegistryContext.Provider>\n );\n};\n"],"mappings":";;;;AAkDA,MAAM,qCACJ,cAAkD,IAAI;AAExD,MAAa,uCACwB;CACjC,MAAM,MAAM,WAAW,kCAAkC;CACzD,IAAI,CAAC,KACH,MAAM,IAAI,MACR,kFACF;CACF,OAAO;AACT;AAEF,MAAa,+CAC+B;CACxC,OAAO,WAAW,kCAAkC;AACtD;AAEF,MAAa,+BAA4D,EACvE,eACI;CACJ,MAAM,aAAa,uBAAyC,IAAI,IAAI,CAAC;CACrE,MAAM,cAAc,OAAuC,CAAC,CAAC;CAE7D,MAAM,kBAAkB,kBAAkB;EACxC,MAAM,UAAU,MAAM,KAAK,WAAW,QAAQ,QAAQ,CAAC;EAEvD,QAAQ,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;EAClC,YAAY,UAAU,QAAQ,KAAK,CAAC,YAAY,MAAM;CACxD,GAAG,CAAC,CAAC;CAEL,MAAM,WAAW,aAEb,QACA,SACG;EACH,MAAM,WAAW,MAAM,YAAY;EACnC,WAAW,QAAQ,IAAI,QAAQ,QAAQ;EACvC,gBAAgB;EAChB,aAAa;GACX,WAAW,QAAQ,OAAO,MAAM;GAChC,gBAAgB;EAClB;CACF,GACA,CAAC,eAAe,CAClB;CAEA,MAAM,aAAa,kBACqB,YAAY,SAClD,CAAC,CACH;CAEA,MAAM,WAAW,eACR;EAAE;EAAU;CAAW,IAC9B,CAAC,UAAU,UAAU,CACvB;CAEA,OACE,oBAAC,mCAAmC,UAApC;EAA6C,OAAO;EACjD;CAC0C,CAAA;AAEjD"}
1
+ {"version":3,"file":"ComposerInputPluginContext.js","names":["c","_c","createContext","useContext","useRef","useCallback","useMemo","ReactNode","FC","ComposerInputPlugin","handleKeyDown","e","key","shiftKey","ctrlKey","metaKey","nativeEvent","isComposing","preventDefault","setCursorPosition","pos","ComposerInputPluginRegisterOptions","priority","ComposerInputPluginRegistry","register","plugin","opts","getPlugins","ComposerInputPluginRegistryContext","useComposerInputPluginRegistry","ctx","Error","useComposerInputPluginRegistryOptional","ComposerInputPluginProvider","children","t0","$","t1","Symbol","for","Map","pluginsRef","t2","snapshotRef","t3","entries","Array","from","current","sort","_temp","map","_temp2","refreshSnapshot","t4","plugin_0","set","delete","t5","t6","registry","t7","a","b"],"sources":["../../../src/primitives/composer/ComposerInputPluginContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useContext,\n useRef,\n useCallback,\n useMemo,\n type ReactNode,\n type FC,\n} from \"react\";\n\n/**\n * A plugin that intercepts keyboard events and cursor changes in the composer\n * input. Used by trigger popover declarations to handle popover navigation\n * without ComposerInput knowing about specific triggers.\n */\nexport type ComposerInputPlugin = {\n /** Handle a key event. Return true if consumed (stops propagation to other plugins and default behavior). */\n handleKeyDown(e: {\n readonly key: string;\n readonly shiftKey: boolean;\n readonly ctrlKey?: boolean;\n readonly metaKey?: boolean;\n readonly nativeEvent?: { isComposing?: boolean };\n preventDefault(): void;\n }): boolean;\n\n /** Called on every cursor position change (selection change / text change). */\n setCursorPosition(pos: number): void;\n};\n\n/** Options for registering a plugin. */\nexport type ComposerInputPluginRegisterOptions = {\n /**\n * Relative priority. Plugins with higher priority receive events first.\n * @default 0\n */\n priority?: number;\n};\n\n// Ref-based registry: plugins are read imperatively at event time, so register/unregister does not trigger re-renders.\nexport type ComposerInputPluginRegistry = {\n register(\n plugin: ComposerInputPlugin,\n opts?: ComposerInputPluginRegisterOptions,\n ): () => void;\n getPlugins(): readonly ComposerInputPlugin[];\n};\n\nconst ComposerInputPluginRegistryContext =\n createContext<ComposerInputPluginRegistry | null>(null);\n\nexport const useComposerInputPluginRegistry =\n (): ComposerInputPluginRegistry => {\n const ctx = useContext(ComposerInputPluginRegistryContext);\n if (!ctx)\n throw new Error(\n \"useComposerInputPluginRegistry must be used within a ComposerInputPluginProvider\",\n );\n return ctx;\n };\n\nexport const useComposerInputPluginRegistryOptional =\n (): ComposerInputPluginRegistry | null => {\n return useContext(ComposerInputPluginRegistryContext);\n };\n\nexport const ComposerInputPluginProvider: FC<{ children: ReactNode }> = ({\n children,\n}) => {\n const pluginsRef = useRef<Map<ComposerInputPlugin, number>>(new Map());\n const snapshotRef = useRef<readonly ComposerInputPlugin[]>([]);\n\n const refreshSnapshot = useCallback(() => {\n const entries = Array.from(pluginsRef.current.entries());\n // Sort by priority descending; stable insertion order for equal priorities.\n entries.sort((a, b) => b[1] - a[1]);\n snapshotRef.current = entries.map(([plugin]) => plugin);\n }, []);\n\n const register = useCallback(\n (\n plugin: ComposerInputPlugin,\n opts?: ComposerInputPluginRegisterOptions,\n ) => {\n const priority = opts?.priority ?? 0;\n pluginsRef.current.set(plugin, priority);\n refreshSnapshot();\n return () => {\n pluginsRef.current.delete(plugin);\n refreshSnapshot();\n };\n },\n [refreshSnapshot],\n );\n\n const getPlugins = useCallback(\n (): readonly ComposerInputPlugin[] => snapshotRef.current,\n [],\n );\n\n const registry = useMemo<ComposerInputPluginRegistry>(\n () => ({ register, getPlugins }),\n [register, getPlugins],\n );\n\n return (\n <ComposerInputPluginRegistryContext.Provider value={registry}>\n {children}\n </ComposerInputPluginRegistryContext.Provider>\n );\n};\n"],"mappings":";;;;;AAkDA,MAAM4B,qCACJ1B,cAAkD,IAAI;AAExD,MAAa2B,uCACX;CACE,MAAAC,MAAY3B,WAAWyB,kCAAkC;CACzD,IAAI,CAACE,KACH,MAAM,IAAIC,MACR,kFACF;CAAE,OACGD;AAAG;AAGd,MAAaE,+CACX;CAAA,OACS7B,WAAWyB,kCAAkC;AAAC;AAGzD,MAAaK,+BAA2DE,OAAA;CAAA,MAAAC,IAAAnC,EAAA,CAAA;CAAC,MAAA,EAAAiC,aAAAC;CAExE,IAAAE;CAAA,IAAAD,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAC6DF,qBAAA,IAAIG,IAAI;EAACJ,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAArE,MAAAK,aAAmBrC,OAAyCiC,EAAS;CAAE,IAAAK;CAAA,IAAAN,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EACZG,KAAA,CAAA;EAAEN,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAA7D,MAAAO,cAAoBvC,OAAuCsC,EAAE;CAAE,IAAAE;CAAA,IAAAR,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAE3BK,WAAA;GAClC,MAAAC,UAAgBC,MAAKC,KAAMN,WAAUO,QAAQH,QAAS,CAAC;GAEvDA,QAAOI,KAAMC,KAAqB;GAClCP,YAAWK,UAAWH,QAAOM,IAAKC,MAAoB;EAAnC;EACpBhB,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CALD,MAAAiB,kBAAwBT;CAKjB,IAAAU;CAAA,IAAAlB,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAGLe,MAAAC,UAAA7B,SAAA;GAIE,MAAAJ,WAAiBI,MAAIJ,YAAJ;GACjBmB,WAAUO,QAAQQ,IAAK/B,UAAQH,QAAQ;GACvC+B,gBAAgB;GAAC,aACV;IACLZ,WAAUO,QAAQS,OAAQhC,QAAM;IAChC4B,gBAAgB;GAAC;EAClB;EACFjB,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAZH,MAAAZ,WAAiB8B;CAcf,IAAAI;CAAA,IAAAtB,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAGAmB,WAAsCf,YAAWK;EAAQZ,EAAA,KAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAD3D,MAAAT,aAAmB+B;CAGjB,IAAAC;CAAA,IAAAvB,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAGOoB,KAAA;GAAAnC;GAAAG;EAAuB;EAACS,EAAA,KAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CADjC,MAAAwB,WACSD;CAEP,IAAAE;CAAA,IAAAzB,EAAA,OAAAF,UAAA;EAGA2B,KAAA,oBAAA,mCAAA,UAAA;GAAoDD,OAAAA;GACjD1B;EACH,CAAA;EAA8CE,EAAA,KAAAF;EAAAE,EAAA,KAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAAA,OAF9CyB;AAE8C;AA1CsB,SAAAX,MAAAY,GAAAC,GAAA;CAAA,OAS7CA,EAAC,KAAMD,EAAC;AAAG;AATkC,SAAAV,OAAAjB,IAAA;CAUjC,MAAA,CAAAV,UAAAU;CAAQ,OAAKV;AAAM"}
@@ -1,7 +1,8 @@
1
1
  "use client";
2
2
  import { Primitive } from "../../utils/Primitive.js";
3
3
  import { useAui, useAuiState } from "@assistant-ui/store";
4
- import { forwardRef, useCallback } from "@assistant-ui/tap/react-shim";
4
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
+ import { forwardRef } from "@assistant-ui/tap/react-shim";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
  import { composeEventHandlers } from "@radix-ui/primitive";
7
8
  //#region src/primitives/composer/ComposerQuote.tsx
@@ -18,11 +19,19 @@ import { composeEventHandlers } from "@radix-ui/primitive";
18
19
  * ```
19
20
  */
20
21
  const ComposerPrimitiveQuote = forwardRef((props, forwardedRef) => {
21
- if (!useAuiState((s) => s.composer.quote)) return null;
22
- return /* @__PURE__ */ jsx(Primitive.div, {
23
- ...props,
24
- ref: forwardedRef
25
- });
22
+ const $ = c(3);
23
+ if (!useAuiState(_temp)) return null;
24
+ let t0;
25
+ if ($[0] !== forwardedRef || $[1] !== props) {
26
+ t0 = /* @__PURE__ */ jsx(Primitive.div, {
27
+ ...props,
28
+ ref: forwardedRef
29
+ });
30
+ $[0] = forwardedRef;
31
+ $[1] = props;
32
+ $[2] = t0;
33
+ } else t0 = $[2];
34
+ return t0;
26
35
  });
27
36
  ComposerPrimitiveQuote.displayName = "ComposerPrimitive.Quote";
28
37
  /**
@@ -33,14 +42,35 @@ ComposerPrimitiveQuote.displayName = "ComposerPrimitive.Quote";
33
42
  * <ComposerPrimitive.QuoteText />
34
43
  * ```
35
44
  */
36
- const ComposerPrimitiveQuoteText = forwardRef(({ children, ...props }, forwardedRef) => {
37
- const text = useAuiState((s) => s.composer.quote?.text);
45
+ const ComposerPrimitiveQuoteText = forwardRef((t0, forwardedRef) => {
46
+ const $ = c(7);
47
+ let children;
48
+ let props;
49
+ if ($[0] !== t0) {
50
+ ({children, ...props} = t0);
51
+ $[0] = t0;
52
+ $[1] = children;
53
+ $[2] = props;
54
+ } else {
55
+ children = $[1];
56
+ props = $[2];
57
+ }
58
+ const text = useAuiState(_temp2);
38
59
  if (!text) return null;
39
- return /* @__PURE__ */ jsx(Primitive.span, {
40
- ...props,
41
- ref: forwardedRef,
42
- children: children ?? text
43
- });
60
+ const t1 = children ?? text;
61
+ let t2;
62
+ if ($[3] !== forwardedRef || $[4] !== props || $[5] !== t1) {
63
+ t2 = /* @__PURE__ */ jsx(Primitive.span, {
64
+ ...props,
65
+ ref: forwardedRef,
66
+ children: t1
67
+ });
68
+ $[3] = forwardedRef;
69
+ $[4] = props;
70
+ $[5] = t1;
71
+ $[6] = t2;
72
+ } else t2 = $[6];
73
+ return t2;
44
74
  });
45
75
  ComposerPrimitiveQuoteText.displayName = "ComposerPrimitive.QuoteText";
46
76
  /**
@@ -51,19 +81,58 @@ ComposerPrimitiveQuoteText.displayName = "ComposerPrimitive.QuoteText";
51
81
  * <ComposerPrimitive.QuoteDismiss>×</ComposerPrimitive.QuoteDismiss>
52
82
  * ```
53
83
  */
54
- const ComposerPrimitiveQuoteDismiss = forwardRef(({ onClick, ...props }, forwardedRef) => {
84
+ const ComposerPrimitiveQuoteDismiss = forwardRef((t0, forwardedRef) => {
85
+ const $ = c(12);
86
+ let onClick;
87
+ let props;
88
+ if ($[0] !== t0) {
89
+ ({onClick, ...props} = t0);
90
+ $[0] = t0;
91
+ $[1] = onClick;
92
+ $[2] = props;
93
+ } else {
94
+ onClick = $[1];
95
+ props = $[2];
96
+ }
55
97
  const aui = useAui();
56
- const handleDismiss = useCallback(() => {
57
- aui.composer().setQuote(void 0);
58
- }, [aui]);
59
- return /* @__PURE__ */ jsx(Primitive.button, {
60
- type: "button",
61
- ...props,
62
- ref: forwardedRef,
63
- onClick: composeEventHandlers(onClick, handleDismiss)
64
- });
98
+ let t1;
99
+ if ($[3] !== aui) {
100
+ t1 = () => {
101
+ aui.composer().setQuote(void 0);
102
+ };
103
+ $[3] = aui;
104
+ $[4] = t1;
105
+ } else t1 = $[4];
106
+ const handleDismiss = t1;
107
+ let t2;
108
+ if ($[5] !== handleDismiss || $[6] !== onClick) {
109
+ t2 = composeEventHandlers(onClick, handleDismiss);
110
+ $[5] = handleDismiss;
111
+ $[6] = onClick;
112
+ $[7] = t2;
113
+ } else t2 = $[7];
114
+ let t3;
115
+ if ($[8] !== forwardedRef || $[9] !== props || $[10] !== t2) {
116
+ t3 = /* @__PURE__ */ jsx(Primitive.button, {
117
+ type: "button",
118
+ ...props,
119
+ ref: forwardedRef,
120
+ onClick: t2
121
+ });
122
+ $[8] = forwardedRef;
123
+ $[9] = props;
124
+ $[10] = t2;
125
+ $[11] = t3;
126
+ } else t3 = $[11];
127
+ return t3;
65
128
  });
66
129
  ComposerPrimitiveQuoteDismiss.displayName = "ComposerPrimitive.QuoteDismiss";
130
+ function _temp(s) {
131
+ return s.composer.quote;
132
+ }
133
+ function _temp2(s) {
134
+ return s.composer.quote?.text;
135
+ }
67
136
  //#endregion
68
137
  export { ComposerPrimitiveQuote, ComposerPrimitiveQuoteDismiss, ComposerPrimitiveQuoteText };
69
138
 
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerQuote.js","names":[],"sources":["../../../src/primitives/composer/ComposerQuote.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\n\n// ---- Root ----\n\nexport namespace ComposerPrimitiveQuote {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\n/**\n * Renders a container for the quoted text preview in the composer.\n * Only renders when a quote is set.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Quote>\n * <ComposerPrimitive.QuoteText />\n * <ComposerPrimitive.QuoteDismiss>×</ComposerPrimitive.QuoteDismiss>\n * </ComposerPrimitive.Quote>\n * ```\n */\nexport const ComposerPrimitiveQuote = forwardRef<\n ComposerPrimitiveQuote.Element,\n ComposerPrimitiveQuote.Props\n>((props, forwardedRef) => {\n const quote = useAuiState((s) => s.composer.quote);\n if (!quote) return null;\n\n return <Primitive.div {...props} ref={forwardedRef} />;\n});\n\nComposerPrimitiveQuote.displayName = \"ComposerPrimitive.Quote\";\n\n// ---- QuoteText ----\n\nexport namespace ComposerPrimitiveQuoteText {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.span>;\n}\n\n/**\n * Renders the quoted text content.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.QuoteText />\n * ```\n */\nexport const ComposerPrimitiveQuoteText = forwardRef<\n ComposerPrimitiveQuoteText.Element,\n ComposerPrimitiveQuoteText.Props\n>(({ children, ...props }, forwardedRef) => {\n const text = useAuiState((s) => s.composer.quote?.text);\n if (!text) return null;\n\n return (\n <Primitive.span {...props} ref={forwardedRef}>\n {children ?? text}\n </Primitive.span>\n );\n});\n\nComposerPrimitiveQuoteText.displayName = \"ComposerPrimitive.QuoteText\";\n\n// ---- QuoteDismiss ----\n\nexport namespace ComposerPrimitiveQuoteDismiss {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button>;\n}\n\n/**\n * A button that clears the current quote from the composer.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.QuoteDismiss>×</ComposerPrimitive.QuoteDismiss>\n * ```\n */\nexport const ComposerPrimitiveQuoteDismiss = forwardRef<\n ComposerPrimitiveQuoteDismiss.Element,\n ComposerPrimitiveQuoteDismiss.Props\n>(({ onClick, ...props }, forwardedRef) => {\n const aui = useAui();\n const handleDismiss = useCallback(() => {\n aui.composer().setQuote(undefined);\n }, [aui]);\n\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleDismiss)}\n />\n );\n});\n\nComposerPrimitiveQuoteDismiss.displayName = \"ComposerPrimitive.QuoteDismiss\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA+BA,MAAa,yBAAyB,YAGnC,OAAO,iBAAiB;CAEzB,IAAI,CADU,aAAa,MAAM,EAAE,SAAS,KACnC,GAAG,OAAO;CAEnB,OAAO,oBAAC,UAAU,KAAX;EAAe,GAAI;EAAO,KAAK;CAAe,CAAA;AACvD,CAAC;AAED,uBAAuB,cAAc;;;;;;;;;AAiBrC,MAAa,6BAA6B,YAGvC,EAAE,UAAU,GAAG,SAAS,iBAAiB;CAC1C,MAAM,OAAO,aAAa,MAAM,EAAE,SAAS,OAAO,IAAI;CACtD,IAAI,CAAC,MAAM,OAAO;CAElB,OACE,oBAAC,UAAU,MAAX;EAAgB,GAAI;EAAO,KAAK;YAC7B,YAAY;CACC,CAAA;AAEpB,CAAC;AAED,2BAA2B,cAAc;;;;;;;;;AAiBzC,MAAa,gCAAgC,YAG1C,EAAE,SAAS,GAAG,SAAS,iBAAiB;CACzC,MAAM,MAAM,OAAO;CACnB,MAAM,gBAAgB,kBAAkB;EACtC,IAAI,SAAS,CAAC,CAAC,SAAS,KAAA,CAAS;CACnC,GAAG,CAAC,GAAG,CAAC;CAER,OACE,oBAAC,UAAU,QAAX;EACE,MAAK;EACL,GAAI;EACJ,KAAK;EACL,SAAS,qBAAqB,SAAS,aAAa;CACrD,CAAA;AAEL,CAAC;AAED,8BAA8B,cAAc"}
1
+ {"version":3,"file":"ComposerQuote.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","forwardRef","useCallback","useAui","useAuiState","composeEventHandlers","ComposerPrimitiveQuote","Element","div","Props","props","forwardedRef","$","quote","_temp","t0","displayName","ComposerPrimitiveQuoteText","span","children","text","_temp2","t1","t2","ComposerPrimitiveQuoteDismiss","button","onClick","aui","composer","setQuote","undefined","handleDismiss","t3","s"],"sources":["../../../src/primitives/composer/ComposerQuote.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\n\n// ---- Root ----\n\nexport namespace ComposerPrimitiveQuote {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\n/**\n * Renders a container for the quoted text preview in the composer.\n * Only renders when a quote is set.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Quote>\n * <ComposerPrimitive.QuoteText />\n * <ComposerPrimitive.QuoteDismiss>×</ComposerPrimitive.QuoteDismiss>\n * </ComposerPrimitive.Quote>\n * ```\n */\nexport const ComposerPrimitiveQuote = forwardRef<\n ComposerPrimitiveQuote.Element,\n ComposerPrimitiveQuote.Props\n>((props, forwardedRef) => {\n const quote = useAuiState((s) => s.composer.quote);\n if (!quote) return null;\n\n return <Primitive.div {...props} ref={forwardedRef} />;\n});\n\nComposerPrimitiveQuote.displayName = \"ComposerPrimitive.Quote\";\n\n// ---- QuoteText ----\n\nexport namespace ComposerPrimitiveQuoteText {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.span>;\n}\n\n/**\n * Renders the quoted text content.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.QuoteText />\n * ```\n */\nexport const ComposerPrimitiveQuoteText = forwardRef<\n ComposerPrimitiveQuoteText.Element,\n ComposerPrimitiveQuoteText.Props\n>(({ children, ...props }, forwardedRef) => {\n const text = useAuiState((s) => s.composer.quote?.text);\n if (!text) return null;\n\n return (\n <Primitive.span {...props} ref={forwardedRef}>\n {children ?? text}\n </Primitive.span>\n );\n});\n\nComposerPrimitiveQuoteText.displayName = \"ComposerPrimitive.QuoteText\";\n\n// ---- QuoteDismiss ----\n\nexport namespace ComposerPrimitiveQuoteDismiss {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button>;\n}\n\n/**\n * A button that clears the current quote from the composer.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.QuoteDismiss>×</ComposerPrimitive.QuoteDismiss>\n * ```\n */\nexport const ComposerPrimitiveQuoteDismiss = forwardRef<\n ComposerPrimitiveQuoteDismiss.Element,\n ComposerPrimitiveQuoteDismiss.Props\n>(({ onClick, ...props }, forwardedRef) => {\n const aui = useAui();\n const handleDismiss = useCallback(() => {\n aui.composer().setQuote(undefined);\n }, [aui]);\n\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleDismiss)}\n />\n );\n});\n\nComposerPrimitiveQuoteDismiss.displayName = \"ComposerPrimitive.QuoteDismiss\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA+BA,MAAaU,yBAAyBL,YAGpCS,OAAAC,iBAAA;CAAA,MAAAC,IAAAf,EAAA,CAAA;CAEA,IAAI,CADUO,YAAYU,KACrBD,GAAK,OAAS;CAAK,IAAAE;CAAA,IAAAH,EAAA,OAAAD,gBAAAC,EAAA,OAAAF,OAAA;EAEjBK,KAAA,oBAAA,UAAA,KAAA;GAAA,GAAmBL;GAAYC,KAAAA;EAAY,CAAA;EAAIC,EAAA,KAAAD;EAAAC,EAAA,KAAAF;EAAAE,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAA/CG;AAA+C,CACvD;AAEDT,uBAAuBU,cAAc;;;;;;;;;AAiBrC,MAAaC,6BAA6BhB,YAGxCc,IAAAJ,iBAAA;CAAA,MAAAC,IAAAf,EAAA,CAAA;CAAA,IAAAsB;CAAA,IAAAT;CAAA,IAAAE,EAAA,OAAAG,IAAA;EAAC,CAAA,CAAAI,aAAAT,SAAAK;EAAsBH,EAAA,KAAAG;EAAAH,EAAA,KAAAO;EAAAP,EAAA,KAAAF;CAAA,OAAA;EAAAS,WAAAP,EAAA;EAAAF,QAAAE,EAAA;CAAA;CACvB,MAAAQ,OAAahB,YAAYiB,MAA6B;CACtD,IAAI,CAACD,MAAI,OAAS;CAIb,MAAAE,KAAAH,YAAAC;CAAgB,IAAAG;CAAA,IAAAX,EAAA,OAAAD,gBAAAC,EAAA,OAAAF,SAAAE,EAAA,OAAAU,IAAA;EADnBC,KAAA,oBAAA,UAAA,MAAA;GAAA,GAAoBb;GAAYC,KAAAA;aAC7BW;EACH,CAAA;EAAiBV,EAAA,KAAAD;EAAAC,EAAA,KAAAF;EAAAE,EAAA,KAAAU;EAAAV,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OAFjBW;AAEiB,CAEpB;AAEDN,2BAA2BD,cAAc;;;;;;;;;AAiBzC,MAAaQ,gCAAgCvB,YAG3Cc,IAAAJ,iBAAA;CAAA,MAAAC,IAAAf,EAAA,EAAA;CAAA,IAAA6B;CAAA,IAAAhB;CAAA,IAAAE,EAAA,OAAAG,IAAA;EAAC,CAAA,CAAAW,YAAAhB,SAAAK;EAAqBH,EAAA,KAAAG;EAAAH,EAAA,KAAAc;EAAAd,EAAA,KAAAF;CAAA,OAAA;EAAAgB,UAAAd,EAAA;EAAAF,QAAAE,EAAA;CAAA;CACtB,MAAAe,MAAYxB,OAAO;CAAE,IAAAmB;CAAA,IAAAV,EAAA,OAAAe,KAAA;EACaL,WAAA;GAChCK,IAAGC,SAAU,CAAC,CAAAC,SAAUC,KAAAA,CAAS;EAAC;EACnClB,EAAA,KAAAe;EAAAf,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAFD,MAAAmB,gBAAsBT;CAEZ,IAAAC;CAAA,IAAAX,EAAA,OAAAmB,iBAAAnB,EAAA,OAAAc,SAAA;EAOGH,KAAAlB,qBAAqBqB,SAASK,aAAa;EAACnB,EAAA,KAAAmB;EAAAnB,EAAA,KAAAc;EAAAd,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAoB;CAAA,IAAApB,EAAA,OAAAD,gBAAAC,EAAA,OAAAF,SAAAE,EAAA,QAAAW,IAAA;EAJvDS,KAAA,oBAAA,UAAA,QAAA;GACO,MAAA;GAAQ,GACTtB;GACCC,KAAAA;GACI,SAAAY;EAA4C,CAAA;EACrDX,EAAA,KAAAD;EAAAC,EAAA,KAAAF;EAAAE,EAAA,MAAAW;EAAAX,EAAA,MAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAAA,OALFoB;AAKE,CAEL;AAEDR,8BAA8BR,cAAc;AA1E1C,SAAAF,MAAAmB,GAAA;CAAA,OACiCA,EAACL,SAASf;AAAM;AA0BjD,SAAAQ,OAAAY,GAAA;CAAA,OACgCA,EAACL,SAASf,OAAYO;AAAA"}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { Primitive } from "../../utils/Primitive.js";
3
3
  import { useComposerSend } from "./ComposerSend.js";
4
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
5
  import { forwardRef } from "@assistant-ui/tap/react-shim";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
  import { composeEventHandlers } from "@radix-ui/primitive";
@@ -20,18 +21,51 @@ import { composeEventHandlers } from "@radix-ui/primitive";
20
21
  * </ComposerPrimitive.Root>
21
22
  * ```
22
23
  */
23
- const ComposerPrimitiveRoot = forwardRef(({ onSubmit, ...rest }, forwardedRef) => {
24
+ const ComposerPrimitiveRoot = forwardRef((t0, forwardedRef) => {
25
+ const $ = c(12);
26
+ let onSubmit;
27
+ let rest;
28
+ if ($[0] !== t0) {
29
+ ({onSubmit, ...rest} = t0);
30
+ $[0] = t0;
31
+ $[1] = onSubmit;
32
+ $[2] = rest;
33
+ } else {
34
+ onSubmit = $[1];
35
+ rest = $[2];
36
+ }
24
37
  const send = useComposerSend();
25
- const handleSubmit = (e) => {
26
- e.preventDefault();
27
- if (!send) return;
28
- send();
29
- };
30
- return /* @__PURE__ */ jsx(Primitive.form, {
31
- ...rest,
32
- ref: forwardedRef,
33
- onSubmit: composeEventHandlers(onSubmit, handleSubmit)
34
- });
38
+ let t1;
39
+ if ($[3] !== send) {
40
+ t1 = (e) => {
41
+ e.preventDefault();
42
+ if (!send) return;
43
+ send();
44
+ };
45
+ $[3] = send;
46
+ $[4] = t1;
47
+ } else t1 = $[4];
48
+ const handleSubmit = t1;
49
+ let t2;
50
+ if ($[5] !== handleSubmit || $[6] !== onSubmit) {
51
+ t2 = composeEventHandlers(onSubmit, handleSubmit);
52
+ $[5] = handleSubmit;
53
+ $[6] = onSubmit;
54
+ $[7] = t2;
55
+ } else t2 = $[7];
56
+ let t3;
57
+ if ($[8] !== forwardedRef || $[9] !== rest || $[10] !== t2) {
58
+ t3 = /* @__PURE__ */ jsx(Primitive.form, {
59
+ ...rest,
60
+ ref: forwardedRef,
61
+ onSubmit: t2
62
+ });
63
+ $[8] = forwardedRef;
64
+ $[9] = rest;
65
+ $[10] = t2;
66
+ $[11] = t3;
67
+ } else t3 = $[11];
68
+ return t3;
35
69
  });
36
70
  ComposerPrimitiveRoot.displayName = "ComposerPrimitive.Root";
37
71
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerRoot.js","names":[],"sources":["../../../src/primitives/composer/ComposerRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n type FormEvent,\n forwardRef,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport { useComposerSend } from \"./ComposerSend\";\n\nexport namespace ComposerPrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.form>;\n /**\n * Props for the ComposerPrimitive.Root component.\n * Accepts all standard form element props.\n */\n export type Props = ComponentPropsWithoutRef<typeof Primitive.form>;\n}\n\n/**\n * The root form container for message composition.\n *\n * This component provides a form wrapper that handles message submission when the form\n * is submitted (e.g., via Enter key or submit button). It automatically prevents the\n * default form submission and triggers the composer's send functionality.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Root>\n * <ComposerPrimitive.Input placeholder=\"Type your message...\" />\n * <ComposerPrimitive.Send>Send</ComposerPrimitive.Send>\n * </ComposerPrimitive.Root>\n * ```\n */\nexport const ComposerPrimitiveRoot = forwardRef<\n ComposerPrimitiveRoot.Element,\n ComposerPrimitiveRoot.Props\n>(({ onSubmit, ...rest }, forwardedRef) => {\n const send = useComposerSend();\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n\n if (!send) return;\n send();\n };\n\n return (\n <Primitive.form\n {...rest}\n ref={forwardedRef}\n onSubmit={composeEventHandlers(onSubmit, handleSubmit)}\n />\n );\n});\n\nComposerPrimitiveRoot.displayName = \"ComposerPrimitive.Root\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAa,wBAAwB,YAGlC,EAAE,UAAU,GAAG,QAAQ,iBAAiB;CACzC,MAAM,OAAO,gBAAgB;CAE7B,MAAM,gBAAgB,MAAiB;EACrC,EAAE,eAAe;EAEjB,IAAI,CAAC,MAAM;EACX,KAAK;CACP;CAEA,OACE,oBAAC,UAAU,MAAX;EACE,GAAI;EACJ,KAAK;EACL,UAAU,qBAAqB,UAAU,YAAY;CACtD,CAAA;AAEL,CAAC;AAED,sBAAsB,cAAc"}
1
+ {"version":3,"file":"ComposerRoot.js","names":["c","_c","composeEventHandlers","Primitive","ComponentRef","FormEvent","forwardRef","ComponentPropsWithoutRef","useComposerSend","ComposerPrimitiveRoot","Element","form","Props","t0","forwardedRef","$","onSubmit","rest","send","t1","e","preventDefault","handleSubmit","t2","t3","displayName"],"sources":["../../../src/primitives/composer/ComposerRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n type FormEvent,\n forwardRef,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport { useComposerSend } from \"./ComposerSend\";\n\nexport namespace ComposerPrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.form>;\n /**\n * Props for the ComposerPrimitive.Root component.\n * Accepts all standard form element props.\n */\n export type Props = ComponentPropsWithoutRef<typeof Primitive.form>;\n}\n\n/**\n * The root form container for message composition.\n *\n * This component provides a form wrapper that handles message submission when the form\n * is submitted (e.g., via Enter key or submit button). It automatically prevents the\n * default form submission and triggers the composer's send functionality.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Root>\n * <ComposerPrimitive.Input placeholder=\"Type your message...\" />\n * <ComposerPrimitive.Send>Send</ComposerPrimitive.Send>\n * </ComposerPrimitive.Root>\n * ```\n */\nexport const ComposerPrimitiveRoot = forwardRef<\n ComposerPrimitiveRoot.Element,\n ComposerPrimitiveRoot.Props\n>(({ onSubmit, ...rest }, forwardedRef) => {\n const send = useComposerSend();\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n\n if (!send) return;\n send();\n };\n\n return (\n <Primitive.form\n {...rest}\n ref={forwardedRef}\n onSubmit={composeEventHandlers(onSubmit, handleSubmit)}\n />\n );\n});\n\nComposerPrimitiveRoot.displayName = \"ComposerPrimitive.Root\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAaS,wBAAwBH,YAGnCO,IAAAC,iBAAA;CAAA,MAAAC,IAAAd,EAAA,EAAA;CAAA,IAAAe;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAG,aAAAC,QAAAJ;EAAqBE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,WAAAD,EAAA;EAAAE,OAAAF,EAAA;CAAA;CACtB,MAAAG,OAAaV,gBAAgB;CAAE,IAAAW;CAAA,IAAAJ,EAAA,OAAAG,MAAA;EAEVC,MAAAC,MAAA;GACnBA,EAACC,eAAgB;GAEjB,IAAI,CAACH,MAAI;GACTA,KAAK;EAAC;EACPH,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CALD,MAAAO,eAAqBH;CAKnB,IAAAI;CAAA,IAAAR,EAAA,OAAAO,gBAAAP,EAAA,OAAAC,UAAA;EAMYO,KAAArB,qBAAqBc,UAAUM,YAAY;EAACP,EAAA,KAAAO;EAAAP,EAAA,KAAAC;EAAAD,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,OAAAD,gBAAAC,EAAA,OAAAE,QAAAF,EAAA,QAAAQ,IAAA;EAHxDC,KAAA,oBAAA,UAAA,MAAA;GAAA,GACMP;GACCH,KAAAA;GACK,UAAAS;EAA4C,CAAA;EACtDR,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,MAAAQ;EAAAR,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OAJFS;AAIE,CAEL;AAEDf,sBAAsBgB,cAAc"}
@@ -1,11 +1,18 @@
1
1
  "use client";
2
2
  import { createActionButton } from "../../utils/createActionButton.js";
3
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
4
  import { useComposerSend as useComposerSend$1 } from "@assistant-ui/core/react";
4
- import { useCallback } from "@assistant-ui/tap/react-shim";
5
5
  //#region src/primitives/composer/ComposerSend.ts
6
6
  const useComposerSend = () => {
7
+ const $ = c(2);
7
8
  const { disabled, send } = useComposerSend$1();
8
- const callback = useCallback(() => send(), [send]);
9
+ let t0;
10
+ if ($[0] !== send) {
11
+ t0 = () => send();
12
+ $[0] = send;
13
+ $[1] = t0;
14
+ } else t0 = $[1];
15
+ const callback = t0;
9
16
  if (disabled) return null;
10
17
  return callback;
11
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerSend.js","names":["useComposerSendBehavior"],"sources":["../../../src/primitives/composer/ComposerSend.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport {\n type ActionButtonElement,\n type ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useComposerSend as useComposerSendBehavior } from \"@assistant-ui/core/react\";\n\nexport const useComposerSend = () => {\n const { disabled, send } = useComposerSendBehavior();\n const callback = useCallback(() => send(), [send]);\n if (disabled) return null;\n return callback;\n};\n\nexport namespace ComposerPrimitiveSend {\n export type Element = ActionButtonElement;\n /**\n * Props for the ComposerPrimitive.Send component.\n * Inherits all button element props and action button functionality.\n */\n export type Props = ActionButtonProps<typeof useComposerSend>;\n}\n\n/**\n * A button component that sends the current message in the composer.\n *\n * This component automatically handles the send functionality and is disabled\n * when sending is not available (e.g., when the thread is running, the composer\n * is empty, or not in editing mode).\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Send>\n * Send Message\n * </ComposerPrimitive.Send>\n * ```\n */\nexport const ComposerPrimitiveSend = createActionButton(\n \"ComposerPrimitive.Send\",\n useComposerSend,\n);\n"],"mappings":";;;;;AAUA,MAAa,wBAAwB;CACnC,MAAM,EAAE,UAAU,SAASA,kBAAwB;CACnD,MAAM,WAAW,kBAAkB,KAAK,GAAG,CAAC,IAAI,CAAC;CACjD,IAAI,UAAU,OAAO;CACrB,OAAO;AACT;;;;;;;;;;;;;;;AAyBA,MAAa,wBAAwB,mBACnC,0BACA,eACF"}
1
+ {"version":3,"file":"ComposerSend.js","names":["c","_c","useCallback","ActionButtonElement","ActionButtonProps","createActionButton","useComposerSend","useComposerSendBehavior","$","disabled","send","t0","callback","ComposerPrimitiveSend","Element","Props"],"sources":["../../../src/primitives/composer/ComposerSend.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport {\n type ActionButtonElement,\n type ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useComposerSend as useComposerSendBehavior } from \"@assistant-ui/core/react\";\n\nexport const useComposerSend = () => {\n const { disabled, send } = useComposerSendBehavior();\n const callback = useCallback(() => send(), [send]);\n if (disabled) return null;\n return callback;\n};\n\nexport namespace ComposerPrimitiveSend {\n export type Element = ActionButtonElement;\n /**\n * Props for the ComposerPrimitive.Send component.\n * Inherits all button element props and action button functionality.\n */\n export type Props = ActionButtonProps<typeof useComposerSend>;\n}\n\n/**\n * A button component that sends the current message in the composer.\n *\n * This component automatically handles the send functionality and is disabled\n * when sending is not available (e.g., when the thread is running, the composer\n * is empty, or not in editing mode).\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Send>\n * Send Message\n * </ComposerPrimitive.Send>\n * ```\n */\nexport const ComposerPrimitiveSend = createActionButton(\n \"ComposerPrimitive.Send\",\n useComposerSend,\n);\n"],"mappings":";;;;;AAUA,MAAaM,wBAAkB;CAAA,MAAAE,IAAAP,EAAA,CAAA;CAC7B,MAAA,EAAAQ,UAAAC,SAA2BH,kBAAwB;CAAE,IAAAI;CAAA,IAAAH,EAAA,OAAAE,MAAA;EACxBC,WAAMD,KAAK;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAzC,MAAAI,WAAiBD;CACjB,IAAIF,UAAQ,OAAS;CAAK,OACnBG;AAAQ;;;;;;;;;;;;;;;AA0BjB,MAAaC,wBAAwBR,mBACnC,0BACAC,eACF"}
@@ -1,14 +1,21 @@
1
1
  "use client";
2
2
  import { createActionButton } from "../../utils/createActionButton.js";
3
3
  import { useAui, useAuiState } from "@assistant-ui/store";
4
- import { useCallback } from "@assistant-ui/tap/react-shim";
4
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  //#region src/primitives/composer/ComposerStopDictation.ts
6
6
  const useComposerStopDictation = () => {
7
+ const $ = c(2);
7
8
  const aui = useAui();
8
- const isDictating = useAuiState((s) => s.composer.dictation != null);
9
- const callback = useCallback(() => {
10
- aui.composer().stopDictation();
11
- }, [aui]);
9
+ const isDictating = useAuiState(_temp);
10
+ let t0;
11
+ if ($[0] !== aui) {
12
+ t0 = () => {
13
+ aui.composer().stopDictation();
14
+ };
15
+ $[0] = aui;
16
+ $[1] = t0;
17
+ } else t0 = $[1];
18
+ const callback = t0;
12
19
  if (!isDictating) return null;
13
20
  return callback;
14
21
  };
@@ -25,6 +32,9 @@ const useComposerStopDictation = () => {
25
32
  * ```
26
33
  */
27
34
  const ComposerPrimitiveStopDictation = createActionButton("ComposerPrimitive.StopDictation", useComposerStopDictation);
35
+ function _temp(s) {
36
+ return s.composer.dictation != null;
37
+ }
28
38
  //#endregion
29
39
  export { ComposerPrimitiveStopDictation };
30
40
 
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerStopDictation.js","names":[],"sources":["../../../src/primitives/composer/ComposerStopDictation.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport type {\n ActionButtonElement,\n ActionButtonProps,\n} from \"../../utils/createActionButton\";\nimport { createActionButton } from \"../../utils/createActionButton\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\nconst useComposerStopDictation = () => {\n const aui = useAui();\n const isDictating = useAuiState((s) => s.composer.dictation != null);\n\n const callback = useCallback(() => {\n aui.composer().stopDictation();\n }, [aui]);\n\n if (!isDictating) return null;\n return callback;\n};\n\nexport namespace ComposerPrimitiveStopDictation {\n export type Element = ActionButtonElement;\n export type Props = ActionButtonProps<typeof useComposerStopDictation>;\n}\n\n/**\n * A button that stops the current dictation session.\n *\n * Only rendered when dictation is active.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.StopDictation>\n * <StopIcon />\n * </ComposerPrimitive.StopDictation>\n * ```\n */\nexport const ComposerPrimitiveStopDictation = createActionButton(\n \"ComposerPrimitive.StopDictation\",\n useComposerStopDictation,\n);\n"],"mappings":";;;;;AAWA,MAAM,iCAAiC;CACrC,MAAM,MAAM,OAAO;CACnB,MAAM,cAAc,aAAa,MAAM,EAAE,SAAS,aAAa,IAAI;CAEnE,MAAM,WAAW,kBAAkB;EACjC,IAAI,SAAS,CAAC,CAAC,cAAc;CAC/B,GAAG,CAAC,GAAG,CAAC;CAER,IAAI,CAAC,aAAa,OAAO;CACzB,OAAO;AACT;;;;;;;;;;;;;AAmBA,MAAa,iCAAiC,mBAC5C,mCACA,wBACF"}
1
+ {"version":3,"file":"ComposerStopDictation.js","names":["c","_c","useCallback","useAui","ActionButtonElement","ActionButtonProps","createActionButton","useAuiState","useComposerStopDictation","$","aui","isDictating","_temp","t0","composer","stopDictation","callback","ComposerPrimitiveStopDictation","Element","Props","s","dictation"],"sources":["../../../src/primitives/composer/ComposerStopDictation.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport type {\n ActionButtonElement,\n ActionButtonProps,\n} from \"../../utils/createActionButton\";\nimport { createActionButton } from \"../../utils/createActionButton\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\nconst useComposerStopDictation = () => {\n const aui = useAui();\n const isDictating = useAuiState((s) => s.composer.dictation != null);\n\n const callback = useCallback(() => {\n aui.composer().stopDictation();\n }, [aui]);\n\n if (!isDictating) return null;\n return callback;\n};\n\nexport namespace ComposerPrimitiveStopDictation {\n export type Element = ActionButtonElement;\n export type Props = ActionButtonProps<typeof useComposerStopDictation>;\n}\n\n/**\n * A button that stops the current dictation session.\n *\n * Only rendered when dictation is active.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.StopDictation>\n * <StopIcon />\n * </ComposerPrimitive.StopDictation>\n * ```\n */\nexport const ComposerPrimitiveStopDictation = createActionButton(\n \"ComposerPrimitive.StopDictation\",\n useComposerStopDictation,\n);\n"],"mappings":";;;;;AAWA,MAAMQ,iCAA2B;CAAA,MAAAC,IAAAR,EAAA,CAAA;CAC/B,MAAAS,MAAYP,OAAO;CACnB,MAAAQ,cAAoBJ,YAAYK,KAAmC;CAAE,IAAAC;CAAA,IAAAJ,EAAA,OAAAC,KAAA;EAExCG,WAAA;GAC3BH,IAAGI,SAAU,CAAC,CAAAC,cAAe;EAAC;EAC/BN,EAAA,KAAAC;EAAAD,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAFD,MAAAO,WAAiBH;CAIjB,IAAI,CAACF,aAAW,OAAS;CAAK,OACvBK;AAAQ;;;;;;;;;;;;;AAoBjB,MAAaC,iCAAiCX,mBAC5C,mCACAE,wBACF;AAhCiC,SAAAI,MAAAQ,GAAA;CAAA,OAEQA,EAACN,SAASO,aAAc;AAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopover.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"mappings":";;;;;;;cAiCa,6BAAA,QAA6B,4BAOzC;AAAA,cAEY,qCAAA,QAAqC,4BAAA;AATlD;AAAA,KAaY,2BAAA;EACV,QAAA,CAAS,QAAA,EAAU,eAAe;AAAA;AAPnC;AAAA,cAcY,8BAAA,QAA8B,2BAO1C;AAAA,kBAEgB,+BAAA;EAAA,KACH,OAAA,GAAU,YAAA,QAAoB,SAAA,CAAU,GAAA;EAAA,KACxC,KAAA,GAAQ,IAAA,CAClB,wBAAA,QAAgC,SAAA,CAAU,GAAA;IAxBI,qIA4BrC,IAAA,UAxB0B;IAAA,SA0B1B,OAAA,GAAU,uBAAA;EAAA;AAAA;;;;AAzBa;AAOpC;;;;AAOC;AAED;;;;;;;;;;;;;;;;;;cAwCa,+BAAA,kBAA+B,yBAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,cAAA,oBAAA,cAAA,CAAA,cAAA;;;;;EA/BE,mJA+BjC;EAAA,mBA/BU,uBAAA;AAAA"}
1
+ {"version":3,"file":"TriggerPopover.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"mappings":";;;;;;;cAkCa,6BAAA,QAA6B,4BAOzC;AAAA,cAEY,qCAAA,QAAqC,4BAAA;AATlD;AAAA,KAaY,2BAAA;EACV,QAAA,CAAS,QAAA,EAAU,eAAe;AAAA;AAPnC;AAAA,cAcY,8BAAA,QAA8B,2BAO1C;AAAA,kBAEgB,+BAAA;EAAA,KACH,OAAA,GAAU,YAAA,QAAoB,SAAA,CAAU,GAAA;EAAA,KACxC,KAAA,GAAQ,IAAA,CAClB,wBAAA,QAAgC,SAAA,CAAU,GAAA;IAxBI,qIA4BrC,IAAA,UAxB0B;IAAA,SA0B1B,OAAA,GAAU,uBAAA;EAAA;AAAA;;;;AAzBa;AAOpC;;;;AAOC;AAED;;;;;;;;;;;;;;;;;;cAwCa,+BAAA,kBAA+B,yBAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,cAAA,oBAAA,cAAA,CAAA,cAAA;;;;;EA/BE,mJA+BjC;EAAA,mBA/BU,uBAAA;AAAA"}