@assistant-ui/react 0.14.24 → 0.14.27

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 (457) hide show
  1. package/README.md +1 -1
  2. package/dist/augmentations.d.ts.map +1 -1
  3. package/dist/client/ExternalThread.d.ts +6 -4
  4. package/dist/client/ExternalThread.d.ts.map +1 -1
  5. package/dist/client/ExternalThread.js +2 -1
  6. package/dist/client/ExternalThread.js.map +1 -1
  7. package/dist/client/InMemoryThreadList.d.ts +0 -1
  8. package/dist/client/InMemoryThreadList.d.ts.map +1 -1
  9. package/dist/client/InMemoryThreadList.js +4 -1
  10. package/dist/client/InMemoryThreadList.js.map +1 -1
  11. package/dist/client/SingleThreadList.d.ts +0 -1
  12. package/dist/client/SingleThreadList.d.ts.map +1 -1
  13. package/dist/context/ReadonlyStore.d.ts +0 -1
  14. package/dist/context/ReadonlyStore.d.ts.map +1 -1
  15. package/dist/context/providers/MessageProvider.d.ts +0 -1
  16. package/dist/context/providers/MessageProvider.d.ts.map +1 -1
  17. package/dist/context/providers/ThreadViewportProvider.d.ts +0 -1
  18. package/dist/context/providers/ThreadViewportProvider.d.ts.map +1 -1
  19. package/dist/context/react/ThreadViewportContext.d.ts +15 -16
  20. package/dist/context/react/ThreadViewportContext.d.ts.map +1 -1
  21. package/dist/context/react/utils/createContextHook.d.ts +0 -1
  22. package/dist/context/react/utils/createContextHook.d.ts.map +1 -1
  23. package/dist/context/react/utils/createContextStoreHook.d.ts +2 -3
  24. package/dist/context/react/utils/createContextStoreHook.d.ts.map +1 -1
  25. package/dist/context/react/utils/createStateHookForRuntime.d.ts +0 -1
  26. package/dist/context/react/utils/createStateHookForRuntime.d.ts.map +1 -1
  27. package/dist/context/react/utils/ensureBinding.d.ts.map +1 -1
  28. package/dist/context/react/utils/useRuntimeState.d.ts +0 -1
  29. package/dist/context/react/utils/useRuntimeState.d.ts.map +1 -1
  30. package/dist/context/stores/ThreadViewport.d.ts +25 -15
  31. package/dist/context/stores/ThreadViewport.d.ts.map +1 -1
  32. package/dist/devtools/DevToolsHooks.d.ts +0 -1
  33. package/dist/devtools/DevToolsHooks.d.ts.map +1 -1
  34. package/dist/hooks/useMessageQuote.d.ts +0 -1
  35. package/dist/hooks/useMessageQuote.d.ts.map +1 -1
  36. package/dist/hooks/useMessageTiming.d.ts +0 -1
  37. package/dist/hooks/useMessageTiming.d.ts.map +1 -1
  38. package/dist/hooks/useToolCallElapsed.d.ts.map +1 -1
  39. package/dist/index.d.ts +5 -3
  40. package/dist/internal.d.ts +0 -2
  41. package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts +0 -1
  42. package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts.map +1 -1
  43. package/dist/legacy-runtime/cloud/auiV0.d.ts +11 -2
  44. package/dist/legacy-runtime/cloud/auiV0.d.ts.map +1 -1
  45. package/dist/legacy-runtime/cloud/auiV0.js +31 -2
  46. package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
  47. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.d.ts +1 -5
  48. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  49. package/dist/legacy-runtime/hooks/AssistantContext.d.ts +0 -1
  50. package/dist/legacy-runtime/hooks/AssistantContext.d.ts.map +1 -1
  51. package/dist/legacy-runtime/hooks/AttachmentContext.d.ts +0 -1
  52. package/dist/legacy-runtime/hooks/AttachmentContext.d.ts.map +1 -1
  53. package/dist/legacy-runtime/hooks/ComposerContext.d.ts +0 -1
  54. package/dist/legacy-runtime/hooks/ComposerContext.d.ts.map +1 -1
  55. package/dist/legacy-runtime/hooks/MessageContext.d.ts +0 -1
  56. package/dist/legacy-runtime/hooks/MessageContext.d.ts.map +1 -1
  57. package/dist/legacy-runtime/hooks/MessagePartContext.d.ts +0 -1
  58. package/dist/legacy-runtime/hooks/MessagePartContext.d.ts.map +1 -1
  59. package/dist/legacy-runtime/hooks/ThreadContext.d.ts +0 -1
  60. package/dist/legacy-runtime/hooks/ThreadContext.d.ts.map +1 -1
  61. package/dist/legacy-runtime/hooks/ThreadListItemContext.d.ts +0 -1
  62. package/dist/legacy-runtime/hooks/ThreadListItemContext.d.ts.map +1 -1
  63. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.d.ts +0 -1
  64. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.d.ts.map +1 -1
  65. package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.d.ts +1 -4
  66. package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
  67. package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.d.ts.map +1 -1
  68. package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts +0 -1
  69. package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts.map +1 -1
  70. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts +0 -1
  71. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
  72. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.d.ts +0 -1
  73. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.d.ts.map +1 -1
  74. package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.d.ts.map +1 -1
  75. package/dist/mcp-apps/McpAppRenderer.d.ts +12 -7
  76. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  77. package/dist/mcp-apps/McpAppRenderer.js +29 -7
  78. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  79. package/dist/mcp-apps/McpAppsRemoteHost.d.ts +0 -1
  80. package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -1
  81. package/dist/mcp-apps/McpAppsRemoteHost.js +32 -1
  82. package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
  83. package/dist/mcp-apps/app-frame.d.ts +1 -12
  84. package/dist/mcp-apps/app-frame.d.ts.map +1 -1
  85. package/dist/mcp-apps/app-frame.js +1 -1
  86. package/dist/mcp-apps/app-frame.js.map +1 -1
  87. package/dist/mcp-apps/bridge.d.ts +0 -1
  88. package/dist/mcp-apps/bridge.d.ts.map +1 -1
  89. package/dist/mcp-apps/bridge.js +4 -3
  90. package/dist/mcp-apps/bridge.js.map +1 -1
  91. package/dist/mcp-apps/types.d.ts +10 -7
  92. package/dist/mcp-apps/types.d.ts.map +1 -1
  93. package/dist/mcp-apps/types.js.map +1 -1
  94. package/dist/mcp-apps/utils.d.ts +0 -1
  95. package/dist/mcp-apps/utils.d.ts.map +1 -1
  96. package/dist/model-context/frame/useAssistantFrameHost.d.ts +1 -6
  97. package/dist/model-context/frame/useAssistantFrameHost.d.ts.map +1 -1
  98. package/dist/model-context/makeAssistantVisible.d.ts +0 -1
  99. package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
  100. package/dist/primitives/actionBar/ActionBarCopy.d.ts +1 -4
  101. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  102. package/dist/primitives/actionBar/ActionBarEdit.d.ts +0 -1
  103. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  104. package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts +1 -5
  105. package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts.map +1 -1
  106. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +0 -1
  107. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -1
  108. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +0 -1
  109. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -1
  110. package/dist/primitives/actionBar/ActionBarInteractionContext.d.ts.map +1 -1
  111. package/dist/primitives/actionBar/ActionBarReload.d.ts +0 -1
  112. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  113. package/dist/primitives/actionBar/ActionBarRoot.d.ts +0 -1
  114. package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
  115. package/dist/primitives/actionBar/ActionBarSpeak.d.ts +0 -1
  116. package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -1
  117. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts +0 -1
  118. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -1
  119. package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts +1 -6
  120. package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts.map +1 -1
  121. package/dist/primitives/actionBar.d.ts +0 -2
  122. package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts +0 -1
  123. package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts.map +1 -1
  124. package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts +0 -1
  125. package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts.map +1 -1
  126. package/dist/primitives/actionBarMore/ActionBarMoreRoot.d.ts +0 -1
  127. package/dist/primitives/actionBarMore/ActionBarMoreRoot.d.ts.map +1 -1
  128. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts +0 -1
  129. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts.map +1 -1
  130. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts +0 -1
  131. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts.map +1 -1
  132. package/dist/primitives/actionBarMore/scope.d.ts +0 -1
  133. package/dist/primitives/actionBarMore/scope.d.ts.map +1 -1
  134. package/dist/primitives/actionBarMore.d.ts +0 -2
  135. package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts +6 -4
  136. package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts.map +1 -1
  137. package/dist/primitives/assistantModal/AssistantModalAnchor.js +2 -2
  138. package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
  139. package/dist/primitives/assistantModal/AssistantModalContent.d.ts +4 -2
  140. package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -1
  141. package/dist/primitives/assistantModal/AssistantModalContent.js +2 -1
  142. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
  143. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts +0 -1
  144. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -1
  145. package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts +6 -4
  146. package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts.map +1 -1
  147. package/dist/primitives/assistantModal/AssistantModalTrigger.js +2 -2
  148. package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
  149. package/dist/primitives/assistantModal/popoverRenderPrimitives.d.ts +14 -0
  150. package/dist/primitives/assistantModal/popoverRenderPrimitives.d.ts.map +1 -0
  151. package/dist/primitives/assistantModal/popoverRenderPrimitives.js +10 -0
  152. package/dist/primitives/assistantModal/popoverRenderPrimitives.js.map +1 -0
  153. package/dist/primitives/assistantModal/scope.d.ts +0 -1
  154. package/dist/primitives/assistantModal/scope.d.ts.map +1 -1
  155. package/dist/primitives/assistantModal.d.ts +0 -2
  156. package/dist/primitives/attachment/AttachmentName.d.ts +0 -1
  157. package/dist/primitives/attachment/AttachmentName.d.ts.map +1 -1
  158. package/dist/primitives/attachment/AttachmentRemove.d.ts +0 -1
  159. package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -1
  160. package/dist/primitives/attachment/AttachmentRoot.d.ts +0 -1
  161. package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
  162. package/dist/primitives/attachment/AttachmentThumb.d.ts +0 -1
  163. package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -1
  164. package/dist/primitives/attachment.d.ts +0 -2
  165. package/dist/primitives/branchPicker/BranchPickerCount.d.ts +0 -1
  166. package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -1
  167. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +0 -1
  168. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  169. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts +0 -1
  170. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts.map +1 -1
  171. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +0 -1
  172. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  173. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +0 -1
  174. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
  175. package/dist/primitives/branchPicker.d.ts +0 -2
  176. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +0 -1
  177. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
  178. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts +0 -1
  179. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts.map +1 -1
  180. package/dist/primitives/chainOfThought.d.ts +0 -2
  181. package/dist/primitives/composer/ComposerAddAttachment.d.ts +5 -6
  182. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
  183. package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts +0 -1
  184. package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts.map +1 -1
  185. package/dist/primitives/composer/ComposerCancel.d.ts +0 -1
  186. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  187. package/dist/primitives/composer/ComposerCompactContext.d.ts +9 -0
  188. package/dist/primitives/composer/ComposerCompactContext.d.ts.map +1 -0
  189. package/dist/primitives/composer/ComposerCompactContext.js +11 -0
  190. package/dist/primitives/composer/ComposerCompactContext.js.map +1 -0
  191. package/dist/primitives/composer/ComposerDictate.d.ts +0 -1
  192. package/dist/primitives/composer/ComposerDictate.d.ts.map +1 -1
  193. package/dist/primitives/composer/ComposerDictationTranscript.d.ts +0 -1
  194. package/dist/primitives/composer/ComposerDictationTranscript.d.ts.map +1 -1
  195. package/dist/primitives/composer/ComposerInput.d.ts +0 -1
  196. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  197. package/dist/primitives/composer/ComposerInput.js +17 -2
  198. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  199. package/dist/primitives/composer/ComposerInputPluginContext.d.ts +4 -3
  200. package/dist/primitives/composer/ComposerInputPluginContext.d.ts.map +1 -1
  201. package/dist/primitives/composer/ComposerQuote.d.ts +0 -1
  202. package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -1
  203. package/dist/primitives/composer/ComposerRoot.d.ts +22 -3
  204. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  205. package/dist/primitives/composer/ComposerRoot.js +63 -30
  206. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  207. package/dist/primitives/composer/ComposerSend.d.ts +0 -1
  208. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  209. package/dist/primitives/composer/ComposerStopDictation.d.ts +0 -1
  210. package/dist/primitives/composer/ComposerStopDictation.d.ts.map +1 -1
  211. package/dist/primitives/composer/trigger/TriggerPopover.d.ts +10 -5
  212. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
  213. package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts +5 -3
  214. package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts.map +1 -1
  215. package/dist/primitives/composer/trigger/TriggerPopoverAction.js +3 -2
  216. package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
  217. package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts +0 -1
  218. package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts.map +1 -1
  219. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +0 -1
  220. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -1
  221. package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts +3 -2
  222. package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts.map +1 -1
  223. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +0 -1
  224. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -1
  225. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +10 -6
  226. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
  227. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +8 -5
  228. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts.map +1 -1
  229. package/dist/primitives/composer/trigger/index.d.ts +0 -1
  230. package/dist/primitives/composer/trigger/index.d.ts.map +1 -1
  231. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +5 -2
  232. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -1
  233. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts +7 -4
  234. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -1
  235. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts +13 -7
  236. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -1
  237. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +7 -4
  238. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
  239. package/dist/primitives/composer/useComposerInputState.d.ts.map +1 -1
  240. package/dist/primitives/composer.d.ts +0 -2
  241. package/dist/primitives/dropdownMenuRenderPrimitives.d.ts +0 -1
  242. package/dist/primitives/dropdownMenuRenderPrimitives.d.ts.map +1 -1
  243. package/dist/primitives/error/ErrorMessage.d.ts +0 -1
  244. package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
  245. package/dist/primitives/error/ErrorRoot.d.ts +0 -1
  246. package/dist/primitives/error/ErrorRoot.d.ts.map +1 -1
  247. package/dist/primitives/error.d.ts +0 -2
  248. package/dist/primitives/message/MessageError.d.ts +0 -1
  249. package/dist/primitives/message/MessageError.d.ts.map +1 -1
  250. package/dist/primitives/message/MessageIf.d.ts +0 -1
  251. package/dist/primitives/message/MessageIf.d.ts.map +1 -1
  252. package/dist/primitives/message/MessageParts.d.ts +0 -1
  253. package/dist/primitives/message/MessageParts.d.ts.map +1 -1
  254. package/dist/primitives/message/MessagePartsGrouped.d.ts +25 -12
  255. package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
  256. package/dist/primitives/message/MessageRoot.d.ts +0 -1
  257. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  258. package/dist/primitives/message.d.ts +0 -2
  259. package/dist/primitives/messagePart/MessagePartImage.d.ts +0 -1
  260. package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -1
  261. package/dist/primitives/messagePart/MessagePartText.d.ts +2 -1
  262. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -1
  263. package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
  264. package/dist/primitives/messagePart/useMessagePartData.d.ts +0 -1
  265. package/dist/primitives/messagePart/useMessagePartData.d.ts.map +1 -1
  266. package/dist/primitives/messagePart/useMessagePartFile.d.ts +0 -1
  267. package/dist/primitives/messagePart/useMessagePartFile.d.ts.map +1 -1
  268. package/dist/primitives/messagePart/useMessagePartImage.d.ts +0 -1
  269. package/dist/primitives/messagePart/useMessagePartImage.d.ts.map +1 -1
  270. package/dist/primitives/messagePart/useMessagePartReasoning.d.ts +0 -1
  271. package/dist/primitives/messagePart/useMessagePartReasoning.d.ts.map +1 -1
  272. package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -1
  273. package/dist/primitives/messagePart/useMessagePartText.d.ts +0 -1
  274. package/dist/primitives/messagePart/useMessagePartText.d.ts.map +1 -1
  275. package/dist/primitives/messagePart.d.ts +0 -2
  276. package/dist/primitives/queueItem/QueueItemRemove.d.ts +0 -1
  277. package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -1
  278. package/dist/primitives/queueItem/QueueItemSteer.d.ts +0 -1
  279. package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -1
  280. package/dist/primitives/queueItem/QueueItemText.d.ts +0 -1
  281. package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -1
  282. package/dist/primitives/queueItem.d.ts +0 -2
  283. package/dist/primitives/reasoning/useScrollLock.d.ts +0 -1
  284. package/dist/primitives/reasoning/useScrollLock.d.ts.map +1 -1
  285. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts +0 -1
  286. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts.map +1 -1
  287. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts +0 -1
  288. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts.map +1 -1
  289. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +2 -1
  290. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
  291. package/dist/primitives/selectionToolbar.d.ts +0 -2
  292. package/dist/primitives/suggestion/SuggestionDescription.d.ts +0 -1
  293. package/dist/primitives/suggestion/SuggestionDescription.d.ts.map +1 -1
  294. package/dist/primitives/suggestion/SuggestionTitle.d.ts +0 -1
  295. package/dist/primitives/suggestion/SuggestionTitle.d.ts.map +1 -1
  296. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +1 -5
  297. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
  298. package/dist/primitives/suggestion.d.ts +0 -2
  299. package/dist/primitives/thread/ThreadEmpty.d.ts +0 -1
  300. package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -1
  301. package/dist/primitives/thread/ThreadIf.d.ts +0 -1
  302. package/dist/primitives/thread/ThreadIf.d.ts.map +1 -1
  303. package/dist/primitives/thread/ThreadRoot.d.ts +0 -1
  304. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  305. package/dist/primitives/thread/ThreadScrollToBottom.d.ts +1 -4
  306. package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
  307. package/dist/primitives/thread/ThreadSuggestion.d.ts +13 -14
  308. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  309. package/dist/primitives/thread/ThreadViewport.d.ts +0 -1
  310. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  311. package/dist/primitives/thread/ThreadViewportFooter.d.ts +0 -1
  312. package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -1
  313. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.d.ts +2 -11
  314. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.d.ts.map +1 -1
  315. package/dist/primitives/thread/topAnchor/createReserveObservers.d.ts.map +1 -1
  316. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts.map +1 -1
  317. package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts +1 -4
  318. package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts.map +1 -1
  319. package/dist/primitives/thread/topAnchor/topAnchorUtils.d.ts.map +1 -1
  320. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.d.ts.map +1 -1
  321. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts +1 -7
  322. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
  323. package/dist/primitives/thread.d.ts +0 -2
  324. package/dist/primitives/threadList/ThreadListLoadMore.d.ts +0 -1
  325. package/dist/primitives/threadList/ThreadListLoadMore.d.ts.map +1 -1
  326. package/dist/primitives/threadList/ThreadListNew.d.ts +0 -1
  327. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
  328. package/dist/primitives/threadList/ThreadListRoot.d.ts +0 -1
  329. package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -1
  330. package/dist/primitives/threadList/ThreadListRoot.js +10 -3
  331. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
  332. package/dist/primitives/threadList.d.ts +0 -2
  333. package/dist/primitives/threadListFocusGroup.d.ts +25 -0
  334. package/dist/primitives/threadListFocusGroup.d.ts.map +1 -0
  335. package/dist/primitives/threadListFocusGroup.js +15 -0
  336. package/dist/primitives/threadListFocusGroup.js.map +1 -0
  337. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +0 -1
  338. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
  339. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +0 -1
  340. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
  341. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts +0 -1
  342. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
  343. package/dist/primitives/threadListItem/ThreadListItemRoot.js +45 -27
  344. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  345. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +0 -1
  346. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
  347. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +26 -2
  348. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  349. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +0 -1
  350. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  351. package/dist/primitives/threadListItem.d.ts +0 -2
  352. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts +0 -1
  353. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts.map +1 -1
  354. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +63 -38
  355. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
  356. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts +0 -1
  357. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts.map +1 -1
  358. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.d.ts +20 -4
  359. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.d.ts.map +1 -1
  360. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +95 -14
  361. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
  362. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts +0 -1
  363. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts.map +1 -1
  364. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts +0 -1
  365. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts.map +1 -1
  366. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +38 -21
  367. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
  368. package/dist/primitives/threadListItemMore/scope.d.ts +0 -1
  369. package/dist/primitives/threadListItemMore/scope.d.ts.map +1 -1
  370. package/dist/primitives/threadListItemMore.d.ts +0 -2
  371. package/dist/sandbox-host/SandboxHost.d.ts +1 -10
  372. package/dist/sandbox-host/SandboxHost.d.ts.map +1 -1
  373. package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -1
  374. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
  375. package/dist/unstable/useComposerInput.d.ts +2 -2
  376. package/dist/unstable/useComposerInput.d.ts.map +1 -1
  377. package/dist/unstable/useComposerInputHistory.d.ts +2 -2
  378. package/dist/unstable/useComposerInputHistory.d.ts.map +1 -1
  379. package/dist/unstable/useLiveCompletionAdapter.d.ts +4 -3
  380. package/dist/unstable/useLiveCompletionAdapter.d.ts.map +1 -1
  381. package/dist/unstable/useMentionAdapter.d.ts +19 -10
  382. package/dist/unstable/useMentionAdapter.d.ts.map +1 -1
  383. package/dist/unstable/useMessageStallDetection.d.ts +3 -1
  384. package/dist/unstable/useMessageStallDetection.d.ts.map +1 -1
  385. package/dist/unstable/useSlashCommandAdapter.d.ts +6 -4
  386. package/dist/unstable/useSlashCommandAdapter.d.ts.map +1 -1
  387. package/dist/utils/Primitive.d.ts +0 -1
  388. package/dist/utils/Primitive.d.ts.map +1 -1
  389. package/dist/utils/RequireAtLeastOne.d.ts +1 -1
  390. package/dist/utils/RequireAtLeastOne.d.ts.map +1 -1
  391. package/dist/utils/createActionButton.d.ts +0 -1
  392. package/dist/utils/createActionButton.d.ts.map +1 -1
  393. package/dist/utils/getSelectionMessageId.d.ts.map +1 -1
  394. package/dist/utils/getSelectionMessageId.js +32 -7
  395. package/dist/utils/getSelectionMessageId.js.map +1 -1
  396. package/dist/utils/hooks/useManagedRef.d.ts.map +1 -1
  397. package/dist/utils/hooks/useMediaQuery.d.ts.map +1 -1
  398. package/dist/utils/hooks/useMediaQuery.js +2 -2
  399. package/dist/utils/hooks/useMediaQuery.js.map +1 -1
  400. package/dist/utils/hooks/useOnResizeContent.d.ts.map +1 -1
  401. package/dist/utils/hooks/useOnScrollToBottom.d.ts.map +1 -1
  402. package/dist/utils/hooks/useSizeHandle.d.ts +0 -1
  403. package/dist/utils/hooks/useSizeHandle.d.ts.map +1 -1
  404. package/dist/utils/smooth/SmoothContext.d.ts +71 -72
  405. package/dist/utils/smooth/SmoothContext.d.ts.map +1 -1
  406. package/dist/utils/smooth/useSmooth.d.ts +4 -1
  407. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  408. package/dist/utils/smooth/useSmooth.js +7 -1
  409. package/dist/utils/smooth/useSmooth.js.map +1 -1
  410. package/dist/utils/useToolArgsFieldStatus.d.ts.map +1 -1
  411. package/package.json +19 -17
  412. package/src/index.ts +3 -0
  413. package/src/legacy-runtime/cloud/auiV0.ts +72 -3
  414. package/src/mcp-apps/McpAppRenderer.test.tsx +141 -0
  415. package/src/mcp-apps/McpAppRenderer.tsx +48 -10
  416. package/src/mcp-apps/McpAppsRemoteHost.test.ts +126 -0
  417. package/src/mcp-apps/McpAppsRemoteHost.ts +40 -1
  418. package/src/mcp-apps/app-frame.tsx +3 -1
  419. package/src/mcp-apps/bridge.ts +1 -1
  420. package/src/mcp-apps/types.ts +16 -8
  421. package/src/primitives/assistantModal/AssistantModalAnchor.tsx +6 -8
  422. package/src/primitives/assistantModal/AssistantModalContent.tsx +5 -5
  423. package/src/primitives/assistantModal/AssistantModalTrigger.test.tsx +80 -0
  424. package/src/primitives/assistantModal/AssistantModalTrigger.tsx +6 -8
  425. package/src/primitives/assistantModal/popoverRenderPrimitives.ts +6 -0
  426. package/src/primitives/composer/ComposerCompactContext.tsx +13 -0
  427. package/src/primitives/composer/ComposerInput.tsx +35 -0
  428. package/src/primitives/composer/ComposerRoot.test.tsx +161 -0
  429. package/src/primitives/composer/ComposerRoot.tsx +37 -7
  430. package/src/primitives/messagePart/MessagePartText.tsx +1 -0
  431. package/src/primitives/threadList/ThreadListRoot.tsx +8 -1
  432. package/src/primitives/threadListFocusGroup.ts +24 -0
  433. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +53 -5
  434. package/src/primitives/threadListItem/ThreadListItemTrigger.tsx +45 -0
  435. package/src/primitives/threadListItem/ThreadListKeyboardNav.test.tsx +141 -0
  436. package/src/primitives/threadListItemMore/ThreadListItemMoreContent.tsx +22 -1
  437. package/src/primitives/threadListItemMore/ThreadListItemMoreRoot.tsx +64 -3
  438. package/src/primitives/threadListItemMore/ThreadListItemMoreTrigger.tsx +29 -2
  439. package/src/tests/LocalThreadRuntimeCore.test.ts +4 -1
  440. package/src/tests/auiV0Encode.test.ts +134 -1
  441. package/src/tests/generative-ui.test.tsx +21 -1
  442. package/src/utils/getSelectionMessageId.test.ts +175 -0
  443. package/src/utils/getSelectionMessageId.ts +57 -6
  444. package/src/utils/hooks/useMediaQuery.ts +3 -2
  445. package/src/utils/smooth/useSmooth.test.tsx +26 -0
  446. package/src/utils/smooth/useSmooth.ts +7 -1
  447. package/dist/utils/json/is-json-equal.d.ts +0 -5
  448. package/dist/utils/json/is-json-equal.d.ts.map +0 -1
  449. package/dist/utils/json/is-json-equal.js +0 -26
  450. package/dist/utils/json/is-json-equal.js.map +0 -1
  451. package/dist/utils/json/is-json.d.ts +0 -10
  452. package/dist/utils/json/is-json.d.ts.map +0 -1
  453. package/dist/utils/json/is-json.js +0 -22
  454. package/dist/utils/json/is-json.js.map +0 -1
  455. package/src/primitives/threadListItem/ThreadListItemTrigger.ts +0 -23
  456. package/src/utils/json/is-json-equal.ts +0 -48
  457. package/src/utils/json/is-json.ts +0 -58
@@ -1,8 +1,8 @@
1
1
  import { usePopoverScope } from "./scope.js";
2
+ import { PopoverRenderTrigger } from "./popoverRenderPrimitives.js";
2
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
4
  import { forwardRef } from "@assistant-ui/tap/react-shim";
4
5
  import { jsx } from "react/jsx-runtime";
5
- import { Popover } from "radix-ui";
6
6
  //#region src/primitives/assistantModal/AssistantModalTrigger.tsx
7
7
  const AssistantModalPrimitiveTrigger = forwardRef((t0, ref) => {
8
8
  const $ = c(7);
@@ -20,7 +20,7 @@ const AssistantModalPrimitiveTrigger = forwardRef((t0, ref) => {
20
20
  const scope = usePopoverScope(__scopeAssistantModal);
21
21
  let t1;
22
22
  if ($[3] !== ref || $[4] !== rest || $[5] !== scope) {
23
- t1 = /* @__PURE__ */ jsx(Popover.Trigger, {
23
+ t1 = /* @__PURE__ */ jsx(PopoverRenderTrigger, {
24
24
  ...scope,
25
25
  ...rest,
26
26
  ref
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantModalTrigger.js","names":["ComponentPropsWithoutRef","ComponentRef","forwardRef","Popover","PopoverPrimitive","ScopedProps","usePopoverScope","AssistantModalPrimitiveTrigger","Element","Trigger","Props","t0","ref","$","_c","__scopeAssistantModal","rest","scope","t1","displayName"],"sources":["../../../src/primitives/assistantModal/AssistantModalTrigger.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type ComponentRef,\n forwardRef,\n} from \"react\";\nimport { Popover as PopoverPrimitive } from \"radix-ui\";\nimport { type ScopedProps, usePopoverScope } from \"./scope\";\n\nexport namespace AssistantModalPrimitiveTrigger {\n export type Element = ComponentRef<typeof PopoverPrimitive.Trigger>;\n export type Props = ComponentPropsWithoutRef<typeof PopoverPrimitive.Trigger>;\n}\n\nexport const AssistantModalPrimitiveTrigger = forwardRef<\n AssistantModalPrimitiveTrigger.Element,\n AssistantModalPrimitiveTrigger.Props\n>(\n (\n {\n __scopeAssistantModal,\n ...rest\n }: ScopedProps<AssistantModalPrimitiveTrigger.Props>,\n ref,\n ) => {\n const scope = usePopoverScope(__scopeAssistantModal);\n\n return <PopoverPrimitive.Trigger {...scope} {...rest} ref={ref} />;\n },\n);\n\nAssistantModalPrimitiveTrigger.displayName = \"AssistantModalPrimitive.Trigger\";\n"],"mappings":";;;;;;AAaA,MAAaO,iCAAiCL,YAI5CS,IAAAC,QAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAH,EAAA,OAAAF,IAAA;EACE,CAAA,CAAAI,0BAAAC,QAAAL;EAGoDE,EAAA,KAAAF;EAAAE,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAA;EAAAD,wBAAAF,EAAA;EAAAG,OAAAH,EAAA;CAAA;CAGpD,MAAAI,QAAcX,gBAAgBS,qBAAqB;CAAE,IAAAG;CAAA,IAAAL,EAAA,OAAAD,OAAAC,EAAA,OAAAG,QAAAH,EAAA,OAAAI,OAAA;EAE9CC,KAAA,oBAAA,QAAA,SAAA;GAAA,GAA8BD;GAAK,GAAMD;GAAWJ;EAAG,CAAA;EAAIC,EAAA,KAAAD;EAAAC,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OAA3DK;AAA2D,CAEtE;AAEAX,+BAA+BY,cAAc"}
1
+ {"version":3,"file":"AssistantModalTrigger.js","names":["ComponentRef","forwardRef","Popover","PopoverPrimitive","WithRenderPropProps","PopoverRenderTrigger","ScopedProps","usePopoverScope","AssistantModalPrimitiveTrigger","Element","Trigger","Props","t0","ref","$","_c","__scopeAssistantModal","rest","scope","t1","displayName"],"sources":["../../../src/primitives/assistantModal/AssistantModalTrigger.tsx"],"sourcesContent":["import { type ComponentRef, forwardRef } from \"react\";\nimport type { Popover as PopoverPrimitive } from \"radix-ui\";\nimport type { WithRenderPropProps } from \"../../utils/Primitive\";\nimport { PopoverRenderTrigger } from \"./popoverRenderPrimitives\";\nimport { type ScopedProps, usePopoverScope } from \"./scope\";\n\nexport namespace AssistantModalPrimitiveTrigger {\n export type Element = ComponentRef<typeof PopoverPrimitive.Trigger>;\n export type Props = WithRenderPropProps<typeof PopoverPrimitive.Trigger>;\n}\n\nexport const AssistantModalPrimitiveTrigger = forwardRef<\n AssistantModalPrimitiveTrigger.Element,\n AssistantModalPrimitiveTrigger.Props\n>(\n (\n {\n __scopeAssistantModal,\n ...rest\n }: ScopedProps<AssistantModalPrimitiveTrigger.Props>,\n ref,\n ) => {\n const scope = usePopoverScope(__scopeAssistantModal);\n\n return <PopoverRenderTrigger {...scope} {...rest} ref={ref} />;\n },\n);\n\nAssistantModalPrimitiveTrigger.displayName = \"AssistantModalPrimitive.Trigger\";\n"],"mappings":";;;;;;AAWA,MAAaQ,iCAAiCP,YAI5CW,IAAAC,QAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAH,EAAA,OAAAF,IAAA;EACE,CAAA,CAAAI,0BAAAC,QAAAL;EAGoDE,EAAA,KAAAF;EAAAE,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAA;EAAAD,wBAAAF,EAAA;EAAAG,OAAAH,EAAA;CAAA;CAGpD,MAAAI,QAAcX,gBAAgBS,qBAAqB;CAAE,IAAAG;CAAA,IAAAL,EAAA,OAAAD,OAAAC,EAAA,OAAAG,QAAAH,EAAA,OAAAI,OAAA;EAE9CC,KAAA,oBAAC,sBAAD;GAAqB,GAAKD;GAAK,GAAMD;GAAWJ;EAAG,CAAA;EAAIC,EAAA,KAAAD;EAAAC,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OAAvDK;AAAuD,CAElE;AAEAX,+BAA+BY,cAAc"}
@@ -0,0 +1,14 @@
1
+ import { Popover } from "radix-ui";
2
+ //#region src/primitives/assistantModal/popoverRenderPrimitives.d.ts
3
+ declare const PopoverRenderTrigger: import("react").ForwardRefExoticComponent<Omit<Popover.PopoverTriggerProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & {
4
+ render?: import("react").ReactElement | undefined;
5
+ } & import("react").RefAttributes<HTMLButtonElement>>;
6
+ declare const PopoverRenderAnchor: import("react").ForwardRefExoticComponent<Omit<Popover.PopoverAnchorProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
7
+ render?: import("react").ReactElement | undefined;
8
+ } & import("react").RefAttributes<HTMLDivElement>>;
9
+ declare const PopoverRenderContent: import("react").ForwardRefExoticComponent<Omit<Popover.PopoverContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
10
+ render?: import("react").ReactElement | undefined;
11
+ } & import("react").RefAttributes<HTMLDivElement>>;
12
+ //#endregion
13
+ export { PopoverRenderAnchor, PopoverRenderContent, PopoverRenderTrigger };
14
+ //# sourceMappingURL=popoverRenderPrimitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popoverRenderPrimitives.d.ts","names":[],"sources":["../../../src/primitives/assistantModal/popoverRenderPrimitives.ts"],"mappings":";;cAGa,sCAAoB,0BAAA,KAAA,QAAA,sCAAA,cAAA;;;cACpB,qCAAmB,0BAAA,KAAA,QAAA,qCAAA,cAAA;;;cACnB,sCAAoB,0BAAA,KAAA,QAAA,sCAAA,cAAA"}
@@ -0,0 +1,10 @@
1
+ import { withRenderProp } from "../../utils/Primitive.js";
2
+ import { Popover } from "radix-ui";
3
+ //#region src/primitives/assistantModal/popoverRenderPrimitives.ts
4
+ const PopoverRenderTrigger = withRenderProp(Popover.Trigger);
5
+ const PopoverRenderAnchor = withRenderProp(Popover.Anchor);
6
+ const PopoverRenderContent = withRenderProp(Popover.Content);
7
+ //#endregion
8
+ export { PopoverRenderAnchor, PopoverRenderContent, PopoverRenderTrigger };
9
+
10
+ //# sourceMappingURL=popoverRenderPrimitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popoverRenderPrimitives.js","names":["Popover","PopoverPrimitive","withRenderProp","PopoverRenderTrigger","Trigger","PopoverRenderAnchor","Anchor","PopoverRenderContent","Content"],"sources":["../../../src/primitives/assistantModal/popoverRenderPrimitives.ts"],"sourcesContent":["import { Popover as PopoverPrimitive } from \"radix-ui\";\nimport { withRenderProp } from \"../../utils/Primitive\";\n\nexport const PopoverRenderTrigger = withRenderProp(PopoverPrimitive.Trigger);\nexport const PopoverRenderAnchor = withRenderProp(PopoverPrimitive.Anchor);\nexport const PopoverRenderContent = withRenderProp(PopoverPrimitive.Content);\n"],"mappings":";;;AAGA,MAAaG,uBAAuBD,eAAeD,QAAiBG,OAAO;AAC3E,MAAaC,sBAAsBH,eAAeD,QAAiBK,MAAM;AACzE,MAAaC,uBAAuBL,eAAeD,QAAiBO,OAAO"}
@@ -1,6 +1,5 @@
1
1
  import { Popover } from "radix-ui";
2
2
  import { Scope } from "@radix-ui/react-context";
3
-
4
3
  //#region src/primitives/assistantModal/scope.d.ts
5
4
  declare const usePopoverScope: ReturnType<typeof Popover.createPopoverScope>;
6
5
  type ScopedProps<P> = P & {
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","names":[],"sources":["../../../src/primitives/assistantModal/scope.ts"],"mappings":";;;;cAGa,eAAA,EAAiB,UAAU,QAC/B,OAAA,CAAiB,kBAAA;AAAA,KAEd,WAAA,MAAiB,CAAA;EAAM,qBAAA,GAAwB,KAAK;AAAA"}
1
+ {"version":3,"file":"scope.d.ts","names":[],"sources":["../../../src/primitives/assistantModal/scope.ts"],"mappings":";;;cAGa,iBAAiB,kBACrB,QAAiB;KAEd,YAAY,KAAK;EAAM,wBAAwB"}
@@ -2,8 +2,6 @@ import { AssistantModalPrimitiveRoot } from "./assistantModal/AssistantModalRoot
2
2
  import { AssistantModalPrimitiveTrigger } from "./assistantModal/AssistantModalTrigger.js";
3
3
  import { AssistantModalPrimitiveContent } from "./assistantModal/AssistantModalContent.js";
4
4
  import { AssistantModalPrimitiveAnchor } from "./assistantModal/AssistantModalAnchor.js";
5
-
6
- //#region src/primitives/assistantModal.d.ts
7
5
  declare namespace assistantModal_d_exports {
8
6
  export { AssistantModalPrimitiveAnchor as Anchor, AssistantModalPrimitiveContent as Content, AssistantModalPrimitiveRoot as Root, AssistantModalPrimitiveTrigger as Trigger };
9
7
  }
@@ -1,5 +1,4 @@
1
1
  import { FC } from "react";
2
-
3
2
  //#region src/primitives/attachment/AttachmentName.d.ts
4
3
  declare namespace AttachmentPrimitiveName {
5
4
  type Props = Record<string, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentName.d.ts","names":[],"sources":["../../../src/primitives/attachment/AttachmentName.tsx"],"mappings":";;;kBAKiB,uBAAA;EAAA,KACH,KAAA,GAAQ,MAAM;AAAA;AAAA,cAGf,uBAAA,EAAyB,EAAE,CACtC,uBAAA,CAAwB,KAAA"}
1
+ {"version":3,"file":"AttachmentName.d.ts","names":[],"sources":["../../../src/primitives/attachment/AttachmentName.tsx"],"mappings":";;kBAKiB;OACH,QAAQ;;cAGT,yBAAyB,GACpC,wBAAwB"}
@@ -1,5 +1,4 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton.js";
2
-
3
2
  //#region src/primitives/attachment/AttachmentRemove.d.ts
4
3
  declare const useAttachmentRemove: () => () => void;
5
4
  declare namespace AttachmentPrimitiveRemove {
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentRemove.d.ts","names":[],"sources":["../../../src/primitives/attachment/AttachmentRemove.ts"],"mappings":";;;cAUM,mBAAA;AAAA,kBAUW,yBAAA;EAAA,KACH,OAAA,GAAU,mBAAA;EAAA,KACV,KAAA,GAAQ,iBAAA,QAAyB,mBAAA;AAAA;AAAA,cAGlC,yBAAA,kBAAyB,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,iBAAA,oBAAA,oBAAA,CAAA,iBAAA"}
1
+ {"version":3,"file":"AttachmentRemove.d.ts","names":[],"sources":["../../../src/primitives/attachment/AttachmentRemove.ts"],"mappings":";;cAUM;kBAUW;OACH,UAAU;OACV,QAAQ,yBAAyB;;cAGlC,2CAAyB,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA"}
@@ -1,6 +1,5 @@
1
1
  import { Primitive } from "../../utils/Primitive.js";
2
2
  import { ComponentPropsWithoutRef, ComponentRef } from "react";
3
-
4
3
  //#region src/primitives/attachment/AttachmentRoot.d.ts
5
4
  type PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;
6
5
  declare namespace AttachmentPrimitiveRoot {
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentRoot.d.ts","names":[],"sources":["../../../src/primitives/attachment/AttachmentRoot.tsx"],"mappings":";;;;KASK,iBAAA,GAAoB,wBAAwB,QAAQ,SAAA,CAAU,GAAA;AAAA,kBAElD,uBAAA;EAAA,KACH,OAAA,GAAU,YAAA,QAAoB,SAAA,CAAU,GAAA;EAHhC;;;;EAAA,KAQR,KAAA,GAAQ,iBAAA;AAAA;;AARgD;AAEtE;;;;;;;;;;;;cAuBa,uBAAA,kBAAuB,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,cAAA,oBAAA,cAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"AttachmentRoot.d.ts","names":[],"sources":["../../../src/primitives/attachment/AttachmentRoot.tsx"],"mappings":";;;KASK,oBAAoB,gCAAgC,UAAU;kBAElD;OACH,UAAU,oBAAoB,UAAU;;;;;OAKxC,QAAQ;;;;;;;;;;;;;;;;cAiBT,yCAAuB,0BAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA"}
@@ -1,6 +1,5 @@
1
1
  import { Primitive } from "../../utils/Primitive.js";
2
2
  import { ComponentPropsWithoutRef, ComponentRef } from "react";
3
-
4
3
  //#region src/primitives/attachment/AttachmentThumb.d.ts
5
4
  type PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;
6
5
  declare namespace AttachmentPrimitiveThumb {
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentThumb.d.ts","names":[],"sources":["../../../src/primitives/attachment/AttachmentThumb.tsx"],"mappings":";;;;KAUK,iBAAA,GAAoB,wBAAwB,QAAQ,SAAA,CAAU,GAAA;AAAA,kBAElD,wBAAA;EAAA,KACH,OAAA,GAAU,YAAA,QAAoB,SAAA,CAAU,GAAA;EAAA,KACxC,KAAA,GAAQ,iBAAA;AAAA;AAAA,cAGT,wBAAA,kBAAwB,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,cAAA,oBAAA,cAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"AttachmentThumb.d.ts","names":[],"sources":["../../../src/primitives/attachment/AttachmentThumb.tsx"],"mappings":";;;KAUK,oBAAoB,gCAAgC,UAAU;kBAElD;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ;;cAGT,0CAAwB,0BAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA"}
@@ -2,8 +2,6 @@ import { AttachmentPrimitiveRoot } from "./attachment/AttachmentRoot.js";
2
2
  import { AttachmentPrimitiveThumb } from "./attachment/AttachmentThumb.js";
3
3
  import { AttachmentPrimitiveName } from "./attachment/AttachmentName.js";
4
4
  import { AttachmentPrimitiveRemove } from "./attachment/AttachmentRemove.js";
5
-
6
- //#region src/primitives/attachment.d.ts
7
5
  declare namespace attachment_d_exports {
8
6
  export { AttachmentPrimitiveName as Name, AttachmentPrimitiveRemove as Remove, AttachmentPrimitiveRoot as Root, AttachmentPrimitiveThumb as unstable_Thumb };
9
7
  }
@@ -1,5 +1,4 @@
1
1
  import { FC } from "react";
2
-
3
2
  //#region src/primitives/branchPicker/BranchPickerCount.d.ts
4
3
  declare namespace BranchPickerPrimitiveCount {
5
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"BranchPickerCount.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerCount.tsx"],"mappings":";;;kBAUiB,0BAAA;;AAAjB;;;OAKc,KAAA,GAAQ,MAAM;AAAA;AAgB5B;;;;;;;;AACkC;;;;;AADlC,cAAa,0BAAA,EAA4B,EAAE,CACzC,0BAAA,CAA2B,KAAA"}
1
+ {"version":3,"file":"BranchPickerCount.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerCount.tsx"],"mappings":";;kBAUiB;;;;;OAKH,QAAQ;;;;;;;;;;;;;;;cAgBT,4BAA4B,GACvC,2BAA2B"}
@@ -1,5 +1,4 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton.js";
2
-
3
2
  //#region src/primitives/branchPicker/BranchPickerNext.d.ts
4
3
  declare const useBranchPickerNext: () => (() => void) | null;
5
4
  declare namespace BranchPickerPrimitiveNext {
@@ -1 +1 @@
1
- {"version":3,"file":"BranchPickerNext.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerNext.ts"],"mappings":";;;cASM,mBAAA;AAAA,kBAMW,yBAAA;EAAA,KACH,OAAA,GAAU,mBAAA;EAHvB;;;AAAA;EAAA,KAQa,KAAA,GAAQ,iBAAA,QAAyB,mBAAA;AAAA;;;;;;;;;;;;;AAAmB;cAgBrD,yBAAA,kBAAyB,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,iBAAA,oBAAA,oBAAA,CAAA,iBAAA"}
1
+ {"version":3,"file":"BranchPickerNext.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerNext.ts"],"mappings":";;cASM;kBAMW;OACH,UAAU;;;;;OAKV,QAAQ,yBAAyB;;;;;;;;;;;;;;;cAgBlC,2CAAyB,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA"}
@@ -1,5 +1,4 @@
1
1
  import { FC } from "react";
2
-
3
2
  //#region src/primitives/branchPicker/BranchPickerNumber.d.ts
4
3
  declare namespace BranchPickerPrimitiveNumber {
5
4
  type Props = Record<string, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"BranchPickerNumber.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerNumber.tsx"],"mappings":";;;kBAUiB,2BAAA;EAAA,KACH,KAAA,GAAQ,MAAM;AAAA;AAAA,cAGf,2BAAA,EAA6B,EAAE,CAC1C,2BAAA,CAA4B,KAAA"}
1
+ {"version":3,"file":"BranchPickerNumber.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerNumber.tsx"],"mappings":";;kBAUiB;OACH,QAAQ;;cAGT,6BAA6B,GACxC,4BAA4B"}
@@ -1,5 +1,4 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton.js";
2
-
3
2
  //#region src/primitives/branchPicker/BranchPickerPrevious.d.ts
4
3
  declare const useBranchPickerPrevious: () => (() => void) | null;
5
4
  declare namespace BranchPickerPrimitivePrevious {
@@ -1 +1 @@
1
- {"version":3,"file":"BranchPickerPrevious.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerPrevious.ts"],"mappings":";;;cASM,uBAAA;AAAA,kBAMW,6BAAA;EAAA,KACH,OAAA,GAAU,mBAAA;EAHvB;;;AAAA;EAAA,KAQa,KAAA,GAAQ,iBAAA,QAAyB,uBAAA;AAAA;;;;;;;;;;;;;AAAuB;cAgBzD,6BAAA,kBAA6B,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,iBAAA,oBAAA,oBAAA,CAAA,iBAAA"}
1
+ {"version":3,"file":"BranchPickerPrevious.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerPrevious.ts"],"mappings":";;cASM;kBAMW;OACH,UAAU;;;;;OAKV,QAAQ,yBAAyB;;;;;;;;;;;;;;;cAgBlC,+CAA6B,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA"}
@@ -1,6 +1,5 @@
1
1
  import { Primitive } from "../../utils/Primitive.js";
2
2
  import { ComponentPropsWithoutRef, ComponentRef } from "react";
3
-
4
3
  //#region src/primitives/branchPicker/BranchPickerRoot.d.ts
5
4
  declare namespace BranchPickerPrimitiveRoot {
6
5
  type Element = ComponentRef<typeof Primitive.div>;
@@ -1 +1 @@
1
- {"version":3,"file":"BranchPickerRoot.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerRoot.tsx"],"mappings":";;;;kBAUiB,yBAAA;EAAA,KACH,OAAA,GAAU,YAAA,QAAoB,SAAA,CAAU,GAAA;EAAA,KACxC,KAAA,GAAQ,wBAAA,QAAgC,SAAA,CAAU,GAAA;IAFtB;;;;;IAQtC,oBAAA;EAAA;AAAA;;;;;;;;;;;AAAoB;AAqBxB;;;;;;cAAa,yBAAA,kBAAyB,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,cAAA,oBAAA,cAAA,CAAA,cAAA;;;;;EAAA"}
1
+ {"version":3,"file":"BranchPickerRoot.d.ts","names":[],"sources":["../../../src/primitives/branchPicker/BranchPickerRoot.tsx"],"mappings":";;;kBAUiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;;;;;IAM5D;;;;;;;;;;;;;;;;;;;;cAqBS,2CAAyB,0BAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA"}
@@ -3,8 +3,6 @@ import { BranchPickerPrimitivePrevious } from "./branchPicker/BranchPickerPrevio
3
3
  import { BranchPickerPrimitiveCount } from "./branchPicker/BranchPickerCount.js";
4
4
  import { BranchPickerPrimitiveNumber } from "./branchPicker/BranchPickerNumber.js";
5
5
  import { BranchPickerPrimitiveRoot } from "./branchPicker/BranchPickerRoot.js";
6
-
7
- //#region src/primitives/branchPicker.d.ts
8
6
  declare namespace branchPicker_d_exports {
9
7
  export { BranchPickerPrimitiveCount as Count, BranchPickerPrimitiveNext as Next, BranchPickerPrimitiveNumber as Number, BranchPickerPrimitivePrevious as Previous, BranchPickerPrimitiveRoot as Root };
10
8
  }
@@ -1,5 +1,4 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton.js";
2
-
3
2
  //#region src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts
4
3
  declare const useChainOfThoughtAccordionTrigger: () => () => void;
5
4
  declare namespace ChainOfThoughtPrimitiveAccordionTrigger {
@@ -1 +1 @@
1
- {"version":3,"file":"ChainOfThoughtAccordionTrigger.d.ts","names":[],"sources":["../../../src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.ts"],"mappings":";;;cAUM,iCAAA;AAAA,kBAWW,uCAAA;EAAA,KACH,OAAA,GAAU,mBAAA;EAHvB;;;AAAA;EAAA,KAQa,KAAA,GAAQ,iBAAA,QACX,iCAAA;AAAA;;;;;;;;;;;;;AAAiC;cAiB/B,uCAAA,kBAAuC,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,iBAAA,oBAAA,oBAAA,CAAA,iBAAA"}
1
+ {"version":3,"file":"ChainOfThoughtAccordionTrigger.d.ts","names":[],"sources":["../../../src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.ts"],"mappings":";;cAUM;kBAWW;OACH,UAAU;;;;;OAKV,QAAQ,yBACX;;;;;;;;;;;;;;;cAiBE,yDAAuC,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA"}
@@ -1,6 +1,5 @@
1
1
  import { Primitive } from "../../utils/Primitive.js";
2
2
  import { ComponentPropsWithoutRef, ComponentRef } from "react";
3
-
4
3
  //#region src/primitives/chainOfThought/ChainOfThoughtRoot.d.ts
5
4
  type PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;
6
5
  declare namespace ChainOfThoughtPrimitiveRoot {
@@ -1 +1 @@
1
- {"version":3,"file":"ChainOfThoughtRoot.d.ts","names":[],"sources":["../../../src/primitives/chainOfThought/ChainOfThoughtRoot.tsx"],"mappings":";;;;KASK,iBAAA,GAAoB,wBAAwB,QAAQ,SAAA,CAAU,GAAA;AAAA,kBAElD,2BAAA;EAAA,KACH,OAAA,GAAU,YAAA,QAAoB,SAAA,CAAU,GAAA;EAAA,KACxC,KAAA,GAAQ,iBAAA;AAAA;;;;;;AAJgD;AAEtE;;;;;;;;;;cAqBa,2BAAA,kBAA2B,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,cAAA,oBAAA,cAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"ChainOfThoughtRoot.d.ts","names":[],"sources":["../../../src/primitives/chainOfThought/ChainOfThoughtRoot.tsx"],"mappings":";;;KASK,oBAAoB,gCAAgC,UAAU;kBAElD;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ;;;;;;;;;;;;;;;;;;cAmBT,6CAA2B,0BAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA"}
@@ -1,8 +1,6 @@
1
1
  import { ChainOfThoughtPrimitiveRoot } from "./chainOfThought/ChainOfThoughtRoot.js";
2
2
  import { ChainOfThoughtPrimitiveAccordionTrigger } from "./chainOfThought/ChainOfThoughtAccordionTrigger.js";
3
3
  import { ChainOfThoughtPrimitiveParts } from "./chainOfThought/ChainOfThoughtParts.js";
4
-
5
- //#region src/primitives/chainOfThought.d.ts
6
4
  declare namespace chainOfThought_d_exports {
7
5
  export { ChainOfThoughtPrimitiveAccordionTrigger as AccordionTrigger, ChainOfThoughtPrimitiveAccordionTrigger as AccordionTriggerPrimitive, ChainOfThoughtPrimitiveParts as Parts, ChainOfThoughtPrimitiveParts as PartsPrimitive, ChainOfThoughtPrimitiveRoot as Root, ChainOfThoughtPrimitiveRoot as RootPrimitive };
8
6
  }
@@ -1,10 +1,8 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton.js";
2
-
3
2
  //#region src/primitives/composer/ComposerAddAttachment.d.ts
4
- declare const useComposerAddAttachment: ({
5
- multiple
6
- }?: {
7
- /** allow selecting multiple files */multiple?: boolean | undefined;
3
+ declare const useComposerAddAttachment: ({ multiple }?: {
4
+ /** allow selecting multiple files */
5
+ multiple?: boolean | undefined;
8
6
  }) => (() => void) | null;
9
7
  declare namespace ComposerPrimitiveAddAttachment {
10
8
  type Element = ActionButtonElement;
@@ -15,7 +13,8 @@ declare const ComposerPrimitiveAddAttachment: import("react").ForwardRefExoticCo
15
13
  }, "ref"> & {
16
14
  render?: import("react").ReactElement | undefined;
17
15
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & {
18
- /** allow selecting multiple files */multiple?: boolean | undefined;
16
+ /** allow selecting multiple files */
17
+ multiple?: boolean | undefined;
19
18
  } & import("react").RefAttributes<HTMLButtonElement>>;
20
19
  //#endregion
21
20
  export { ComposerPrimitiveAddAttachment };
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerAddAttachment.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerAddAttachment.ts"],"mappings":";;;cAWM,wBAAA;EAA4B;AAAA;uCAIhC,QAAA;AAAA;AAAA,kBAyCe,8BAAA;EAAA,KACH,OAAA,GAAU,mBAAA;EAAA,KACV,KAAA,GAAQ,iBAAA,QAAyB,wBAAA;AAAA;AAAA,cAGlC,8BAAA,kBAA8B,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,iBAAA,oBAAA,oBAAA,CAAA,iBAAA"}
1
+ {"version":3,"file":"ComposerAddAttachment.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerAddAttachment.ts"],"mappings":";;cAWM,6BAA4B;;EAIhC;;kBAyCe;OACH,UAAU;OACV,QAAQ,yBAAyB;;cAGlC,gDAA8B,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA"}
@@ -1,5 +1,4 @@
1
1
  import React, { ReactElement } from "react";
2
-
3
2
  //#region src/primitives/composer/ComposerAttachmentDropzone.d.ts
4
3
  declare namespace ComposerPrimitiveAttachmentDropzone {
5
4
  type Element = HTMLDivElement;
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerAttachmentDropzone.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerAttachmentDropzone.tsx"],"mappings":";;;kBAgBiB,mCAAA;EAAA,KACH,OAAA,GAAU,cAAA;EAAA,KACV,KAAA,GAAQ,KAAA,CAAM,cAAA,CAAe,cAAA;IACvC,OAAA;IACA,MAAA,GAAS,YAAA;IACT,QAAA;EAAA;AAAA;AAAA,cAIS,mCAAA,EAAmC,KAAA,CAAA,yBAAA,CAAA,KAAA,CAAA,cAAA,CAAA,cAAA;;WALnC,YAAA"}
1
+ {"version":3,"file":"ComposerAttachmentDropzone.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerAttachmentDropzone.tsx"],"mappings":";;kBAgBiB;OACH,UAAU;OACV,QAAQ,MAAM,eAAe;IACvC;IACA,SAAS;IACT;;;cAIS,qCAAmC,MAAA,0BAAA,MAAA,eAAA;;WALnC"}
@@ -1,5 +1,4 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton.js";
2
-
3
2
  //#region src/primitives/composer/ComposerCancel.d.ts
4
3
  declare const useComposerCancel: () => (() => void) | null;
5
4
  declare namespace ComposerPrimitiveCancel {
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerCancel.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerCancel.ts"],"mappings":";;;cASM,iBAAA;AAAA,kBAMW,uBAAA;EAAA,KACH,OAAA,GAAU,mBAAA;EAHvB;;;AAAA;EAAA,KAQa,KAAA,GAAQ,iBAAA,QAAyB,iBAAA;AAAA;;;;;;;;;;;;;AAAiB;cAgBnD,uBAAA,kBAAuB,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,iBAAA,oBAAA,oBAAA,CAAA,iBAAA"}
1
+ {"version":3,"file":"ComposerCancel.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerCancel.ts"],"mappings":";;cASM;kBAMW;OACH,UAAU;;;;;OAKV,QAAQ,yBAAyB;;;;;;;;;;;;;;;cAgBlC,yCAAuB,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA"}
@@ -0,0 +1,9 @@
1
+ //#region src/primitives/composer/ComposerCompactContext.d.ts
2
+ type ComposerCompactContextValue = {
3
+ setMultiline: (multiline: boolean) => void;
4
+ };
5
+ declare const ComposerCompactContext: import("react").Context<ComposerCompactContextValue | null>;
6
+ declare const useComposerCompactContextOptional: () => ComposerCompactContextValue | null;
7
+ //#endregion
8
+ export { ComposerCompactContext, ComposerCompactContextValue, useComposerCompactContextOptional };
9
+ //# sourceMappingURL=ComposerCompactContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerCompactContext.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerCompactContext.tsx"],"mappings":";KAIY;EACV,eAAe;;cAGJ,wCAAsB,QAAA;cAGtB,yCAAiC"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { createContext, useContext } from "@assistant-ui/tap/react-shim";
3
+ //#region src/primitives/composer/ComposerCompactContext.tsx
4
+ const ComposerCompactContext = createContext(null);
5
+ const useComposerCompactContextOptional = () => {
6
+ return useContext(ComposerCompactContext);
7
+ };
8
+ //#endregion
9
+ export { ComposerCompactContext, useComposerCompactContextOptional };
10
+
11
+ //# sourceMappingURL=ComposerCompactContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerCompactContext.js","names":["createContext","useContext","ComposerCompactContextValue","setMultiline","multiline","ComposerCompactContext","useComposerCompactContextOptional"],"sources":["../../../src/primitives/composer/ComposerCompactContext.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport type ComposerCompactContextValue = {\n setMultiline: (multiline: boolean) => void;\n};\n\nexport const ComposerCompactContext =\n createContext<ComposerCompactContextValue | null>(null);\n\nexport const useComposerCompactContextOptional = () =>\n useContext(ComposerCompactContext);\n"],"mappings":";;;AAQA,MAAaK,yBACXL,cAAkD,IAAI;AAExD,MAAaM,0CAAoC;CAAA,OAC/CL,WAAWI,sBAAsB;AAAC"}
@@ -1,5 +1,4 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton.js";
2
-
3
2
  //#region src/primitives/composer/ComposerDictate.d.ts
4
3
  declare const useComposerDictate: () => (() => void) | null;
5
4
  declare namespace ComposerPrimitiveDictate {
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerDictate.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerDictate.ts"],"mappings":";;;cASM,kBAAA;AAAA,kBAMW,wBAAA;EAAA,KACH,OAAA,GAAU,mBAAA;EAAA,KACV,KAAA,GAAQ,iBAAA,QAAyB,kBAAA;AAAA;;AAJ9C;AAED;;;;;;;;;;cAiBa,wBAAA,kBAAwB,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,iBAAA,oBAAA,oBAAA,CAAA,iBAAA"}
1
+ {"version":3,"file":"ComposerDictate.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerDictate.ts"],"mappings":";;cASM;kBAMW;OACH,UAAU;OACV,QAAQ,yBAAyB;;;;;;;;;;;;;;cAelC,0CAAwB,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA"}
@@ -1,6 +1,5 @@
1
1
  import { Primitive } from "../../utils/Primitive.js";
2
2
  import { ComponentPropsWithoutRef, ComponentRef } from "react";
3
-
4
3
  //#region src/primitives/composer/ComposerDictationTranscript.d.ts
5
4
  declare namespace ComposerPrimitiveDictationTranscript {
6
5
  type Element = ComponentRef<typeof Primitive.span>;
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerDictationTranscript.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerDictationTranscript.tsx"],"mappings":";;;;kBAUiB,oCAAA;EAAA,KACH,OAAA,GAAU,YAAA,QAAoB,SAAA,CAAU,IAAA;EAAA,KACxC,KAAA,GAAQ,wBAAA,QAAgC,SAAA,CAAU,IAAA;AAAA;;;;;;;;;;;;;;;;cAkBnD,oCAAA,kBAAoC,yBAAA,CAAA,IAAA,CAAA,IAAA,iBAAA,eAAA,CAAA,eAAA,oBAAA,cAAA,CAAA,eAAA"}
1
+ {"version":3,"file":"ComposerDictationTranscript.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerDictationTranscript.tsx"],"mappings":";;;kBAUiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;;;;;;;;;;;;;;;;cAkBnD,sDAAoC,0BAAA,KAAA,qBAAA,gBAAA,mCAAA,eAAA"}
@@ -1,6 +1,5 @@
1
1
  import { ReactElement } from "react";
2
2
  import { TextareaAutosizeProps } from "react-textarea-autosize";
3
-
4
3
  //#region src/primitives/composer/ComposerInput.d.ts
5
4
  declare namespace ComposerPrimitiveInput {
6
5
  export type Element = HTMLTextAreaElement;
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerInput.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"mappings":";;;;kBAkCiB,sBAAA;EAAA,YACH,OAAA,GAAU,mBAAA;EAAA,KAEjB,SAAA;IAHgC;;;;IAQnC,OAAA;IAkE0C;;;IA9D1C,MAAA,GAAS,YAAA;IAXC;;;;IAgBV,cAAA;IALS;;;;IAUT,wBAAA;IAkBA;;;;IAbA,8BAAA;IAsCI;;;;IAjCJ,8BAAA;IA0CsD;;AAAe;AAqCzE;;;;IAvEI,kCAAA;IAuE+B;;;;IAlE/B,oBAAA;EAAA;EAAA,KAGG,eAAA;;;;;;;;IASC,UAAA;;;;;IAKA,aAAA;EAAA;IAGA,UAAA;;;;;;IAMA,aAAA;EAAA;EAAA,YAGM,KAAA,GAAQ,qBAAA,GAAwB,SAAA,GAAY,eAAA;EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqC7C,sBAAA,kBAAsB,yBAAA,CAAA,sBAAA,CAAA,KAAA,mBAAA,aAAA,CAAA,mBAAA"}
1
+ {"version":3,"file":"ComposerInput.d.ts","names":[],"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"mappings":";;;kBAoCiB;cACH,UAAU;OAEjB;;;;;IAKH;;;;IAIA,SAAS;;;;;IAKT;;;;;IAKA;;;;;IAKA;;;;;IAKA;;;;;;;;IAQA;;;;;IAKA;;OAGG;;;;;;;;IASC;;;;;IAKA;;IAGA;;;;;;IAMA;;cAGM,QAAQ,wBAAwB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqC7C,wCAAsB,0BAAA,uBAAA,wBAAA,cAAA"}
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { useComposerCompactContextOptional } from "./ComposerCompactContext.js";
2
3
  import { useOnScrollToBottom } from "../../utils/hooks/useOnScrollToBottom.js";
3
4
  import { useMediaQuery } from "../../utils/hooks/useMediaQuery.js";
4
5
  import { useComposerInputPluginRegistryOptional } from "./ComposerInputPluginContext.js";
@@ -48,9 +49,10 @@ const TOUCH_PRIMARY_QUERY = "(pointer: coarse) and (not (any-pointer: fine))";
48
49
  * />
49
50
  * ```
50
51
  */
51
- const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render, disabled: disabledProp, onChange, onKeyDown, onPaste, onSelect, submitOnEnter, submitMode, cancelOnEscape = true, unstable_focusOnRunStart = true, unstable_focusOnScrollToBottom = true, unstable_focusOnThreadSwitched = true, unstable_insertNewlineOnTouchEnter = false, addAttachmentOnPaste = true, ...rest }, forwardedRef) => {
52
+ const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render, disabled: disabledProp, onChange, onKeyDown, onPaste, onSelect, submitOnEnter, submitMode, cancelOnEscape = true, unstable_focusOnRunStart = true, unstable_focusOnScrollToBottom = true, unstable_focusOnThreadSwitched = true, unstable_insertNewlineOnTouchEnter = false, addAttachmentOnPaste = true, onHeightChange, ...rest }, forwardedRef) => {
52
53
  const aui = useAui();
53
54
  const pluginRegistry = useComposerInputPluginRegistryOptional();
55
+ const compactContext = useComposerCompactContextOptional();
54
56
  const declaredSubmitMode = submitMode ?? (submitOnEnter === false ? "none" : "enter");
55
57
  const isTouchPrimary = useMediaQuery(unstable_insertNewlineOnTouchEnter ? TOUCH_PRIMARY_QUERY : null);
56
58
  const effectiveSubmitMode = unstable_insertNewlineOnTouchEnter && isTouchPrimary && declaredSubmitMode === "enter" ? "none" : declaredSubmitMode;
@@ -107,6 +109,15 @@ const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render,
107
109
  console.error("Error adding attachment:", error);
108
110
  }
109
111
  };
112
+ const handleHeightChange = (height, meta) => {
113
+ onHeightChange?.(height, meta);
114
+ if (!compactContext) return;
115
+ const el = textareaRef.current;
116
+ if (!el || el.value === "") return;
117
+ const cs = getComputedStyle(el);
118
+ const contentHeight = cs.boxSizing === "border-box" ? height - parseFloat(cs.paddingTop) - parseFloat(cs.paddingBottom) - parseFloat(cs.borderTopWidth) - parseFloat(cs.borderBottomWidth) : height;
119
+ if (Math.round(contentHeight / meta.rowHeight) > 1) compactContext.setMultiline(true);
120
+ };
110
121
  const autoFocusEnabled = autoFocus && !isDisabled;
111
122
  const focus = useCallback(() => {
112
123
  const textarea = textareaRef.current;
@@ -134,6 +145,9 @@ const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render,
134
145
  focus,
135
146
  aui
136
147
  ]);
148
+ useEffect(() => {
149
+ if (value === "") compactContext?.setMultiline(false);
150
+ }, [value, compactContext]);
137
151
  const ariaComboboxProps = useTriggerPopoverAriaProps();
138
152
  const inputProps = {
139
153
  name: "input",
@@ -174,7 +188,8 @@ const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render,
174
188
  const pos_1 = target_0.selectionStart ?? target_0.value.length;
175
189
  if (pluginRegistry) for (const plugin_3 of pluginRegistry.getPlugins()) plugin_3.setCursorPosition(pos_1);
176
190
  }),
177
- onPaste: composeEventHandlers(onPaste, handlePaste)
191
+ onPaste: composeEventHandlers(onPaste, handlePaste),
192
+ ...compactContext ? { onHeightChange: handleHeightChange } : onHeightChange !== void 0 ? { onHeightChange } : {}
178
193
  };
179
194
  if (render && isValidElement(render)) {
180
195
  const renderChildren = rest.children !== void 0 ? rest.children : render.props.children;
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerInput.js","names":["composeEventHandlers","useComposedRefs","Slot","ClipboardEvent","KeyboardEvent","ReactElement","ReactNode","forwardRef","useCallback","useEffect","useRef","cloneElement","isValidElement","TextareaAutosize","TextareaAutosizeProps","useEscapeKeydown","useOnScrollToBottom","useMediaQuery","useAui","flushTapSync","useComposerInputPluginRegistryOptional","useComposerInputDisabled","useComposerInputValue","useTriggerPopoverAriaProps","TOUCH_PRIMARY_QUERY","ComposerPrimitiveInput","Element","HTMLTextAreaElement","BaseProps","asChild","render","cancelOnEscape","unstable_focusOnRunStart","unstable_focusOnScrollToBottom","unstable_focusOnThreadSwitched","unstable_insertNewlineOnTouchEnter","addAttachmentOnPaste","SubmitModeProps","submitMode","submitOnEnter","Props","autoFocus","disabled","disabledProp","onChange","onKeyDown","onPaste","onSelect","rest","forwardedRef","aui","pluginRegistry","declaredSubmitMode","isTouchPrimary","effectiveSubmitMode","value","isDisabled","textareaRef","ref","compositionRef","e","current","contains","target","Node","plugin","getPlugins","handleKeyDown","composer","getState","canCancel","cancel","preventDefault","handleKeyPress","nativeEvent","isComposing","key","threadState","thread","hasQueue","capabilities","queue","shiftKey","ctrlKey","metaKey","canSend","send","steer","isRunning","shouldSubmit","closest","requestSubmit","handlePaste","threadCapabilities","files","Array","from","clipboardData","attachments","length","Promise","all","map","file","addAttachment","error","console","autoFocusEnabled","focus","textarea","preventScroll","setSelectionRange","type","undefined","on","ariaComboboxProps","inputProps","name","const","React","ForwardedRef","ChangeEvent","isEditing","nativeIsComposing","setText","pos","selectionStart","setCursorPosition","onCompositionStart","CompositionEventHandler","onCompositionEnd","CompositionEvent","SyntheticEvent","renderChildren","children","props","Record","Component","Root","displayName"],"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Slot } from \"radix-ui\";\nimport {\n type ClipboardEvent,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n cloneElement,\n isValidElement,\n} from \"react\";\nimport TextareaAutosize, {\n type TextareaAutosizeProps,\n} from \"react-textarea-autosize\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { useOnScrollToBottom } from \"../../utils/hooks/useOnScrollToBottom\";\nimport { useMediaQuery } from \"../../utils/hooks/useMediaQuery\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { flushTapSync } from \"@assistant-ui/tap\";\nimport { useComposerInputPluginRegistryOptional } from \"./ComposerInputPluginContext\";\nimport {\n useComposerInputDisabled,\n useComposerInputValue,\n useTriggerPopoverAriaProps,\n} from \"./useComposerInputState\";\n\nconst TOUCH_PRIMARY_QUERY = \"(pointer: coarse) and (not (any-pointer: fine))\";\n\nexport namespace ComposerPrimitiveInput {\n export type Element = HTMLTextAreaElement;\n\n type BaseProps = {\n /**\n * Whether to render as a child component using Slot.\n * When true, the component will merge its props with its child.\n */\n asChild?: boolean | undefined;\n /**\n * A React element to use as the input container, with props merged in.\n */\n render?: ReactElement | undefined;\n /**\n * Whether to cancel message composition when Escape is pressed.\n * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to automatically focus the input when a new run starts.\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\n * @default true\n */\n unstable_focusOnThreadSwitched?: boolean | undefined;\n /**\n * Whether plain Enter on a touch-primary device should insert a newline\n * instead of submitting, detected via\n * `(pointer: coarse) and (not (any-pointer: fine))`. Only takes effect\n * when `submitMode` resolves to `\"enter\"`.\n * @default false\n */\n unstable_insertNewlineOnTouchEnter?: boolean | undefined;\n /**\n * Whether to automatically add pasted files as attachments.\n * @default true\n */\n addAttachmentOnPaste?: boolean | undefined;\n };\n\n type SubmitModeProps =\n | {\n /**\n * Controls how the Enter key submits messages.\n * - \"enter\": Plain Enter submits (Shift+Enter for newline)\n * - \"ctrlEnter\": Ctrl/Cmd+Enter submits (plain Enter for newline)\n * - \"none\": Keyboard submission disabled\n * @default \"enter\"\n */\n submitMode?: \"enter\" | \"ctrlEnter\" | \"none\" | undefined;\n /**\n * @deprecated Use `submitMode` instead\n * @ignore\n */\n submitOnEnter?: never;\n }\n | {\n submitMode?: never;\n /**\n * Whether to submit the message when Enter is pressed (without Shift).\n * @default true\n * @deprecated Use `submitMode` instead. Will be removed in a future version.\n */\n submitOnEnter?: boolean | undefined;\n };\n\n export type Props = TextareaAutosizeProps & BaseProps & SubmitModeProps;\n}\n\n/**\n * A text input component for composing messages.\n *\n * This component provides a rich text input experience with automatic resizing,\n * keyboard shortcuts, file paste support, and intelligent focus management.\n * It integrates with the composer context to manage message state and submission.\n *\n * When rendered inside `Unstable_TriggerPopoverRoot` and a popover is open, the\n * underlying `<textarea>` automatically receives `aria-controls`,\n * `aria-expanded`, `aria-haspopup`, and `aria-activedescendant` for the\n * combobox relationship. These computed attributes override user-provided\n * values for those four ARIA props while the popover is open.\n *\n * @example\n * ```tsx\n * // Ctrl/Cmd+Enter to submit (plain Enter inserts newline)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitMode=\"ctrlEnter\"\n * />\n *\n * // Insert a newline on Enter on touch-primary devices.\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * unstable_insertNewlineOnTouchEnter\n * />\n *\n * // Old API (deprecated, still supported)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitOnEnter={true}\n * />\n * ```\n */\nexport const ComposerPrimitiveInput = forwardRef<\n ComposerPrimitiveInput.Element,\n ComposerPrimitiveInput.Props\n>(\n (\n {\n autoFocus = false,\n asChild,\n render,\n disabled: disabledProp,\n onChange,\n onKeyDown,\n onPaste,\n onSelect,\n submitOnEnter,\n submitMode,\n cancelOnEscape = true,\n unstable_focusOnRunStart = true,\n unstable_focusOnScrollToBottom = true,\n unstable_focusOnThreadSwitched = true,\n unstable_insertNewlineOnTouchEnter = false,\n addAttachmentOnPaste = true,\n ...rest\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n\n const declaredSubmitMode =\n submitMode ?? (submitOnEnter === false ? \"none\" : \"enter\");\n const isTouchPrimary = useMediaQuery(\n unstable_insertNewlineOnTouchEnter ? TOUCH_PRIMARY_QUERY : null,\n );\n const effectiveSubmitMode =\n unstable_insertNewlineOnTouchEnter &&\n isTouchPrimary &&\n declaredSubmitMode === \"enter\"\n ? \"none\"\n : declaredSubmitMode;\n\n const value = useComposerInputValue();\n const isDisabled = useComposerInputDisabled(disabledProp);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const ref = useComposedRefs(forwardedRef, textareaRef);\n // suppress text/cursor broadcasts during IME composition\n const compositionRef = useRef(false);\n\n useEscapeKeydown((e) => {\n // Only handle ESC if it originated from within this input\n if (!textareaRef.current?.contains(e.target as Node)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle Escape first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (!cancelOnEscape) return;\n\n const composer = aui.composer();\n if (composer.getState().canCancel) {\n composer.cancel();\n e.preventDefault();\n }\n });\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (isDisabled) return;\n\n // ignore IME composition events\n if (e.nativeEvent.isComposing) return;\n\n // Let registered plugins (mention, slash command, etc.) handle keyboard events first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (e.key === \"Enter\") {\n const threadState = aui.thread().getState();\n const hasQueue = threadState.capabilities.queue;\n\n // Steer hotkey: Cmd/Ctrl+Shift+Enter (respects submitMode=\"none\" and canSend)\n if (\n e.shiftKey &&\n (e.ctrlKey || e.metaKey) &&\n hasQueue &&\n declaredSubmitMode !== \"none\" &&\n aui.composer().getState().canSend\n ) {\n e.preventDefault();\n aui.composer().send({ steer: true });\n return;\n }\n\n // Regular newline: Shift+Enter\n if (e.shiftKey) return;\n\n // Block submission when running unless queue is supported\n if (threadState.isRunning && !hasQueue) return;\n\n let shouldSubmit = false;\n if (effectiveSubmitMode === \"ctrlEnter\") {\n shouldSubmit = e.ctrlKey || e.metaKey;\n } else if (effectiveSubmitMode === \"enter\") {\n shouldSubmit = true;\n }\n\n if (shouldSubmit) {\n e.preventDefault();\n textareaRef.current?.closest(\"form\")?.requestSubmit();\n }\n }\n };\n\n const handlePaste = async (e: ClipboardEvent<HTMLTextAreaElement>) => {\n if (!addAttachmentOnPaste) return;\n const threadCapabilities = aui.thread().getState().capabilities;\n const files = Array.from(e.clipboardData?.files || []);\n\n if (threadCapabilities.attachments && files.length > 0) {\n try {\n e.preventDefault();\n await Promise.all(\n files.map((file) => aui.composer().addAttachment(file)),\n );\n } catch (error) {\n console.error(\"Error adding attachment:\", error);\n }\n }\n };\n\n const autoFocusEnabled = autoFocus && !isDisabled;\n const focus = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea || !autoFocusEnabled) return;\n\n textarea.focus({ preventScroll: true });\n textarea.setSelectionRange(textarea.value.length, textarea.value.length);\n }, [autoFocusEnabled]);\n\n useEffect(() => focus(), [focus]);\n\n useOnScrollToBottom(() => {\n if (\n aui.composer().getState().type === \"thread\" &&\n unstable_focusOnScrollToBottom\n ) {\n focus();\n }\n });\n\n useEffect(() => {\n if (\n aui.composer().getState().type !== \"thread\" ||\n !unstable_focusOnRunStart\n )\n return undefined;\n\n return aui.on(\"thread.runStart\", focus);\n }, [unstable_focusOnRunStart, focus, aui]);\n\n useEffect(() => {\n if (\n aui.composer().getState().type !== \"thread\" ||\n !unstable_focusOnThreadSwitched\n )\n return undefined;\n\n return aui.on(\"threadListItem.switchedTo\", focus);\n }, [unstable_focusOnThreadSwitched, focus, aui]);\n\n const ariaComboboxProps = useTriggerPopoverAriaProps();\n\n const inputProps = {\n name: \"input\" as const,\n value,\n ...rest,\n ...ariaComboboxProps,\n ref: ref as React.ForwardedRef<HTMLTextAreaElement>,\n disabled: isDisabled,\n onChange: composeEventHandlers(\n onChange,\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!aui.composer().getState().isEditing) return;\n const nativeIsComposing =\n (e.nativeEvent as { isComposing?: boolean }).isComposing === true;\n // recover stuck compositionRef when the browser drops compositionend\n if (compositionRef.current && !nativeIsComposing) {\n compositionRef.current = false;\n }\n const isComposing = nativeIsComposing || compositionRef.current;\n // keep controlled value in sync mid-IME so react does not reset the textarea to a stale value\n flushTapSync(() => {\n aui.composer().setText(e.target.value);\n });\n if (isComposing) return;\n const pos = e.target.selectionStart ?? e.target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyPress),\n onCompositionStart: composeEventHandlers(\n (rest as { onCompositionStart?: React.CompositionEventHandler })\n .onCompositionStart,\n () => {\n compositionRef.current = true;\n },\n ),\n onCompositionEnd: composeEventHandlers(\n (rest as { onCompositionEnd?: React.CompositionEventHandler })\n .onCompositionEnd,\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n if (!aui.composer().getState().isEditing) return;\n const target = e.target as HTMLTextAreaElement;\n flushTapSync(() => {\n aui.composer().setText(target.value);\n });\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onSelect: composeEventHandlers(\n onSelect,\n (e: React.SyntheticEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) return;\n const target = e.target as HTMLTextAreaElement;\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onPaste: composeEventHandlers(onPaste, handlePaste),\n };\n\n if (render && isValidElement(render)) {\n const renderChildren =\n (rest as any).children !== undefined\n ? ((rest as any).children as ReactNode)\n : ((render.props as Record<string, unknown>).children as ReactNode);\n return (\n <Slot.Root {...inputProps}>\n {cloneElement(render, undefined, renderChildren)}\n </Slot.Root>\n );\n }\n\n const Component = asChild ? Slot.Root : TextareaAutosize;\n return <Component {...inputProps} />;\n },\n);\n\nComposerPrimitiveInput.displayName = \"ComposerPrimitive.Input\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"ComposerInput.js","names":["composeEventHandlers","useComposedRefs","Slot","ClipboardEvent","KeyboardEvent","ReactElement","ReactNode","forwardRef","useCallback","useEffect","useRef","cloneElement","isValidElement","TextareaAutosize","TextareaAutosizeProps","TextareaHeightChangeMeta","useEscapeKeydown","useOnScrollToBottom","useMediaQuery","useAui","flushTapSync","useComposerInputPluginRegistryOptional","useComposerCompactContextOptional","useComposerInputDisabled","useComposerInputValue","useTriggerPopoverAriaProps","TOUCH_PRIMARY_QUERY","ComposerPrimitiveInput","Element","HTMLTextAreaElement","BaseProps","asChild","render","cancelOnEscape","unstable_focusOnRunStart","unstable_focusOnScrollToBottom","unstable_focusOnThreadSwitched","unstable_insertNewlineOnTouchEnter","addAttachmentOnPaste","SubmitModeProps","submitMode","submitOnEnter","Props","autoFocus","disabled","disabledProp","onChange","onKeyDown","onPaste","onSelect","onHeightChange","rest","forwardedRef","aui","pluginRegistry","compactContext","declaredSubmitMode","isTouchPrimary","effectiveSubmitMode","value","isDisabled","textareaRef","ref","compositionRef","e","current","contains","target","Node","plugin","getPlugins","handleKeyDown","composer","getState","canCancel","cancel","preventDefault","handleKeyPress","nativeEvent","isComposing","key","threadState","thread","hasQueue","capabilities","queue","shiftKey","ctrlKey","metaKey","canSend","send","steer","isRunning","shouldSubmit","closest","requestSubmit","handlePaste","threadCapabilities","files","Array","from","clipboardData","attachments","length","Promise","all","map","file","addAttachment","error","console","handleHeightChange","height","meta","el","cs","getComputedStyle","contentHeight","boxSizing","parseFloat","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","Math","round","rowHeight","setMultiline","autoFocusEnabled","focus","textarea","preventScroll","setSelectionRange","type","undefined","on","ariaComboboxProps","inputProps","name","const","React","ForwardedRef","ChangeEvent","isEditing","nativeIsComposing","setText","pos","selectionStart","setCursorPosition","onCompositionStart","CompositionEventHandler","onCompositionEnd","CompositionEvent","SyntheticEvent","renderChildren","children","props","Record","Component","Root","displayName"],"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Slot } from \"radix-ui\";\nimport {\n type ClipboardEvent,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n cloneElement,\n isValidElement,\n} from \"react\";\nimport TextareaAutosize, {\n type TextareaAutosizeProps,\n type TextareaHeightChangeMeta,\n} from \"react-textarea-autosize\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { useOnScrollToBottom } from \"../../utils/hooks/useOnScrollToBottom\";\nimport { useMediaQuery } from \"../../utils/hooks/useMediaQuery\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { flushTapSync } from \"@assistant-ui/tap\";\nimport { useComposerInputPluginRegistryOptional } from \"./ComposerInputPluginContext\";\nimport { useComposerCompactContextOptional } from \"./ComposerCompactContext\";\nimport {\n useComposerInputDisabled,\n useComposerInputValue,\n useTriggerPopoverAriaProps,\n} from \"./useComposerInputState\";\n\nconst TOUCH_PRIMARY_QUERY = \"(pointer: coarse) and (not (any-pointer: fine))\";\n\nexport namespace ComposerPrimitiveInput {\n export type Element = HTMLTextAreaElement;\n\n type BaseProps = {\n /**\n * Whether to render as a child component using Slot.\n * When true, the component will merge its props with its child.\n */\n asChild?: boolean | undefined;\n /**\n * A React element to use as the input container, with props merged in.\n */\n render?: ReactElement | undefined;\n /**\n * Whether to cancel message composition when Escape is pressed.\n * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to automatically focus the input when a new run starts.\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\n * @default true\n */\n unstable_focusOnThreadSwitched?: boolean | undefined;\n /**\n * Whether plain Enter on a touch-primary device should insert a newline\n * instead of submitting, detected via\n * `(pointer: coarse) and (not (any-pointer: fine))`. Only takes effect\n * when `submitMode` resolves to `\"enter\"`.\n * @default false\n */\n unstable_insertNewlineOnTouchEnter?: boolean | undefined;\n /**\n * Whether to automatically add pasted files as attachments.\n * @default true\n */\n addAttachmentOnPaste?: boolean | undefined;\n };\n\n type SubmitModeProps =\n | {\n /**\n * Controls how the Enter key submits messages.\n * - \"enter\": Plain Enter submits (Shift+Enter for newline)\n * - \"ctrlEnter\": Ctrl/Cmd+Enter submits (plain Enter for newline)\n * - \"none\": Keyboard submission disabled\n * @default \"enter\"\n */\n submitMode?: \"enter\" | \"ctrlEnter\" | \"none\" | undefined;\n /**\n * @deprecated Use `submitMode` instead\n * @ignore\n */\n submitOnEnter?: never;\n }\n | {\n submitMode?: never;\n /**\n * Whether to submit the message when Enter is pressed (without Shift).\n * @default true\n * @deprecated Use `submitMode` instead. Will be removed in a future version.\n */\n submitOnEnter?: boolean | undefined;\n };\n\n export type Props = TextareaAutosizeProps & BaseProps & SubmitModeProps;\n}\n\n/**\n * A text input component for composing messages.\n *\n * This component provides a rich text input experience with automatic resizing,\n * keyboard shortcuts, file paste support, and intelligent focus management.\n * It integrates with the composer context to manage message state and submission.\n *\n * When rendered inside `Unstable_TriggerPopoverRoot` and a popover is open, the\n * underlying `<textarea>` automatically receives `aria-controls`,\n * `aria-expanded`, `aria-haspopup`, and `aria-activedescendant` for the\n * combobox relationship. These computed attributes override user-provided\n * values for those four ARIA props while the popover is open.\n *\n * @example\n * ```tsx\n * // Ctrl/Cmd+Enter to submit (plain Enter inserts newline)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitMode=\"ctrlEnter\"\n * />\n *\n * // Insert a newline on Enter on touch-primary devices.\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * unstable_insertNewlineOnTouchEnter\n * />\n *\n * // Old API (deprecated, still supported)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitOnEnter={true}\n * />\n * ```\n */\nexport const ComposerPrimitiveInput = forwardRef<\n ComposerPrimitiveInput.Element,\n ComposerPrimitiveInput.Props\n>(\n (\n {\n autoFocus = false,\n asChild,\n render,\n disabled: disabledProp,\n onChange,\n onKeyDown,\n onPaste,\n onSelect,\n submitOnEnter,\n submitMode,\n cancelOnEscape = true,\n unstable_focusOnRunStart = true,\n unstable_focusOnScrollToBottom = true,\n unstable_focusOnThreadSwitched = true,\n unstable_insertNewlineOnTouchEnter = false,\n addAttachmentOnPaste = true,\n onHeightChange,\n ...rest\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n const compactContext = useComposerCompactContextOptional();\n\n const declaredSubmitMode =\n submitMode ?? (submitOnEnter === false ? \"none\" : \"enter\");\n const isTouchPrimary = useMediaQuery(\n unstable_insertNewlineOnTouchEnter ? TOUCH_PRIMARY_QUERY : null,\n );\n const effectiveSubmitMode =\n unstable_insertNewlineOnTouchEnter &&\n isTouchPrimary &&\n declaredSubmitMode === \"enter\"\n ? \"none\"\n : declaredSubmitMode;\n\n const value = useComposerInputValue();\n const isDisabled = useComposerInputDisabled(disabledProp);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const ref = useComposedRefs(forwardedRef, textareaRef);\n // suppress text/cursor broadcasts during IME composition\n const compositionRef = useRef(false);\n\n useEscapeKeydown((e) => {\n // Only handle ESC if it originated from within this input\n if (!textareaRef.current?.contains(e.target as Node)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle Escape first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (!cancelOnEscape) return;\n\n const composer = aui.composer();\n if (composer.getState().canCancel) {\n composer.cancel();\n e.preventDefault();\n }\n });\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (isDisabled) return;\n\n // ignore IME composition events\n if (e.nativeEvent.isComposing) return;\n\n // Let registered plugins (mention, slash command, etc.) handle keyboard events first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (e.key === \"Enter\") {\n const threadState = aui.thread().getState();\n const hasQueue = threadState.capabilities.queue;\n\n // Steer hotkey: Cmd/Ctrl+Shift+Enter (respects submitMode=\"none\" and canSend)\n if (\n e.shiftKey &&\n (e.ctrlKey || e.metaKey) &&\n hasQueue &&\n declaredSubmitMode !== \"none\" &&\n aui.composer().getState().canSend\n ) {\n e.preventDefault();\n aui.composer().send({ steer: true });\n return;\n }\n\n // Regular newline: Shift+Enter\n if (e.shiftKey) return;\n\n // Block submission when running unless queue is supported\n if (threadState.isRunning && !hasQueue) return;\n\n let shouldSubmit = false;\n if (effectiveSubmitMode === \"ctrlEnter\") {\n shouldSubmit = e.ctrlKey || e.metaKey;\n } else if (effectiveSubmitMode === \"enter\") {\n shouldSubmit = true;\n }\n\n if (shouldSubmit) {\n e.preventDefault();\n textareaRef.current?.closest(\"form\")?.requestSubmit();\n }\n }\n };\n\n const handlePaste = async (e: ClipboardEvent<HTMLTextAreaElement>) => {\n if (!addAttachmentOnPaste) return;\n const threadCapabilities = aui.thread().getState().capabilities;\n const files = Array.from(e.clipboardData?.files || []);\n\n if (threadCapabilities.attachments && files.length > 0) {\n try {\n e.preventDefault();\n await Promise.all(\n files.map((file) => aui.composer().addAttachment(file)),\n );\n } catch (error) {\n console.error(\"Error adding attachment:\", error);\n }\n }\n };\n\n const handleHeightChange = (\n height: number,\n meta: TextareaHeightChangeMeta,\n ) => {\n onHeightChange?.(height, meta);\n if (!compactContext) return;\n const el = textareaRef.current;\n if (!el || el.value === \"\") return;\n const cs = getComputedStyle(el);\n const contentHeight =\n cs.boxSizing === \"border-box\"\n ? height -\n parseFloat(cs.paddingTop) -\n parseFloat(cs.paddingBottom) -\n parseFloat(cs.borderTopWidth) -\n parseFloat(cs.borderBottomWidth)\n : height;\n if (Math.round(contentHeight / meta.rowHeight) > 1) {\n compactContext.setMultiline(true);\n }\n };\n\n const autoFocusEnabled = autoFocus && !isDisabled;\n const focus = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea || !autoFocusEnabled) return;\n\n textarea.focus({ preventScroll: true });\n textarea.setSelectionRange(textarea.value.length, textarea.value.length);\n }, [autoFocusEnabled]);\n\n useEffect(() => focus(), [focus]);\n\n useOnScrollToBottom(() => {\n if (\n aui.composer().getState().type === \"thread\" &&\n unstable_focusOnScrollToBottom\n ) {\n focus();\n }\n });\n\n useEffect(() => {\n if (\n aui.composer().getState().type !== \"thread\" ||\n !unstable_focusOnRunStart\n )\n return undefined;\n\n return aui.on(\"thread.runStart\", focus);\n }, [unstable_focusOnRunStart, focus, aui]);\n\n useEffect(() => {\n if (\n aui.composer().getState().type !== \"thread\" ||\n !unstable_focusOnThreadSwitched\n )\n return undefined;\n\n return aui.on(\"threadListItem.switchedTo\", focus);\n }, [unstable_focusOnThreadSwitched, focus, aui]);\n\n useEffect(() => {\n if (value === \"\") compactContext?.setMultiline(false);\n }, [value, compactContext]);\n\n const ariaComboboxProps = useTriggerPopoverAriaProps();\n\n const inputProps = {\n name: \"input\" as const,\n value,\n ...rest,\n ...ariaComboboxProps,\n ref: ref as React.ForwardedRef<HTMLTextAreaElement>,\n disabled: isDisabled,\n onChange: composeEventHandlers(\n onChange,\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!aui.composer().getState().isEditing) return;\n const nativeIsComposing =\n (e.nativeEvent as { isComposing?: boolean }).isComposing === true;\n // recover stuck compositionRef when the browser drops compositionend\n if (compositionRef.current && !nativeIsComposing) {\n compositionRef.current = false;\n }\n const isComposing = nativeIsComposing || compositionRef.current;\n // keep controlled value in sync mid-IME so react does not reset the textarea to a stale value\n flushTapSync(() => {\n aui.composer().setText(e.target.value);\n });\n if (isComposing) return;\n const pos = e.target.selectionStart ?? e.target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyPress),\n onCompositionStart: composeEventHandlers(\n (rest as { onCompositionStart?: React.CompositionEventHandler })\n .onCompositionStart,\n () => {\n compositionRef.current = true;\n },\n ),\n onCompositionEnd: composeEventHandlers(\n (rest as { onCompositionEnd?: React.CompositionEventHandler })\n .onCompositionEnd,\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n if (!aui.composer().getState().isEditing) return;\n const target = e.target as HTMLTextAreaElement;\n flushTapSync(() => {\n aui.composer().setText(target.value);\n });\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onSelect: composeEventHandlers(\n onSelect,\n (e: React.SyntheticEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) return;\n const target = e.target as HTMLTextAreaElement;\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onPaste: composeEventHandlers(onPaste, handlePaste),\n ...(compactContext\n ? { onHeightChange: handleHeightChange }\n : onHeightChange !== undefined\n ? { onHeightChange }\n : {}),\n };\n\n if (render && isValidElement(render)) {\n const renderChildren =\n (rest as any).children !== undefined\n ? ((rest as any).children as ReactNode)\n : ((render.props as Record<string, unknown>).children as ReactNode);\n return (\n <Slot.Root {...inputProps}>\n {cloneElement(render, undefined, renderChildren)}\n </Slot.Root>\n );\n }\n\n const Component = asChild ? Slot.Root : TextareaAutosize;\n return <Component {...inputProps} />;\n },\n);\n\nComposerPrimitiveInput.displayName = \"ComposerPrimitive.Input\";\n"],"mappings":"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"}