@assistant-ui/react 0.14.16 → 0.14.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/dist/client/ExternalThread.d.ts +5 -3
  2. package/dist/client/ExternalThread.d.ts.map +1 -1
  3. package/dist/client/ExternalThread.js +745 -255
  4. package/dist/client/ExternalThread.js.map +1 -1
  5. package/dist/client/InMemoryThreadList.d.ts +1 -1
  6. package/dist/client/InMemoryThreadList.d.ts.map +1 -1
  7. package/dist/client/InMemoryThreadList.js +299 -113
  8. package/dist/client/InMemoryThreadList.js.map +1 -1
  9. package/dist/client/SingleThreadList.d.ts +1 -6
  10. package/dist/client/SingleThreadList.d.ts.map +1 -1
  11. package/dist/client/SingleThreadList.js +143 -55
  12. package/dist/client/SingleThreadList.js.map +1 -1
  13. package/dist/context/ReadonlyStore.js.map +1 -1
  14. package/dist/context/providers/MessageProvider.js +38 -5
  15. package/dist/context/providers/MessageProvider.js.map +1 -1
  16. package/dist/context/providers/ThreadViewportProvider.js +76 -20
  17. package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
  18. package/dist/context/react/ThreadViewportContext.js.map +1 -1
  19. package/dist/context/react/utils/createContextHook.js.map +1 -1
  20. package/dist/context/react/utils/createContextStoreHook.js +17 -2
  21. package/dist/context/react/utils/createContextStoreHook.js.map +1 -1
  22. package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
  23. package/dist/context/react/utils/ensureBinding.js.map +1 -1
  24. package/dist/context/react/utils/useRuntimeState.js +18 -2
  25. package/dist/context/react/utils/useRuntimeState.js.map +1 -1
  26. package/dist/context/stores/ThreadViewport.js.map +1 -1
  27. package/dist/devtools/DevToolsHooks.js.map +1 -1
  28. package/dist/hooks/useMessageQuote.js.map +1 -1
  29. package/dist/hooks/useMessageTiming.js +4 -1
  30. package/dist/hooks/useMessageTiming.js.map +1 -1
  31. package/dist/hooks/useToolCallElapsed.d.ts +23 -0
  32. package/dist/hooks/useToolCallElapsed.d.ts.map +1 -0
  33. package/dist/hooks/useToolCallElapsed.js +72 -0
  34. package/dist/hooks/useToolCallElapsed.js.map +1 -0
  35. package/dist/index.d.ts +6 -2
  36. package/dist/index.js +5 -1
  37. package/dist/internal.js.map +1 -1
  38. package/dist/legacy-runtime/AssistantRuntimeProvider.js +46 -10
  39. package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
  40. package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
  41. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js +27 -6
  42. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js.map +1 -1
  43. package/dist/legacy-runtime/hooks/AssistantContext.js +13 -2
  44. package/dist/legacy-runtime/hooks/AssistantContext.js.map +1 -1
  45. package/dist/legacy-runtime/hooks/AttachmentContext.js +9 -1
  46. package/dist/legacy-runtime/hooks/AttachmentContext.js.map +1 -1
  47. package/dist/legacy-runtime/hooks/ComposerContext.js +9 -1
  48. package/dist/legacy-runtime/hooks/ComposerContext.js.map +1 -1
  49. package/dist/legacy-runtime/hooks/MessageContext.js +12 -2
  50. package/dist/legacy-runtime/hooks/MessageContext.js.map +1 -1
  51. package/dist/legacy-runtime/hooks/MessagePartContext.js +9 -1
  52. package/dist/legacy-runtime/hooks/MessagePartContext.js.map +1 -1
  53. package/dist/legacy-runtime/hooks/ThreadContext.js +33 -5
  54. package/dist/legacy-runtime/hooks/ThreadContext.js.map +1 -1
  55. package/dist/legacy-runtime/hooks/ThreadListItemContext.js +9 -1
  56. package/dist/legacy-runtime/hooks/ThreadListItemContext.js.map +1 -1
  57. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js +3 -3
  58. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js.map +1 -1
  59. package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js +71 -31
  60. package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js.map +1 -1
  61. package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
  62. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +24 -16
  63. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
  64. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js +17 -12
  65. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js.map +1 -1
  66. package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js +17 -3
  67. package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js.map +1 -1
  68. package/dist/mcp-apps/McpAppRenderer.d.ts +2 -10
  69. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  70. package/dist/mcp-apps/McpAppRenderer.js +9 -8
  71. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  72. package/dist/mcp-apps/McpAppsRemoteHost.d.ts +1 -8
  73. package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -1
  74. package/dist/mcp-apps/McpAppsRemoteHost.js +6 -5
  75. package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
  76. package/dist/mcp-apps/app-frame.js +33 -14
  77. package/dist/mcp-apps/app-frame.js.map +1 -1
  78. package/dist/mcp-apps/bridge.js.map +1 -1
  79. package/dist/mcp-apps/types.js.map +1 -1
  80. package/dist/mcp-apps/utils.js.map +1 -1
  81. package/dist/model-context/frame/useAssistantFrameHost.js +32 -14
  82. package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
  83. package/dist/model-context/makeAssistantVisible.js +64 -26
  84. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  85. package/dist/primitives/actionBar/ActionBarCopy.js +94 -20
  86. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  87. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  88. package/dist/primitives/actionBar/ActionBarExportMarkdown.js +105 -37
  89. package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
  90. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +60 -11
  91. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  92. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +60 -11
  93. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  94. package/dist/primitives/actionBar/ActionBarInteractionContext.js +3 -1
  95. package/dist/primitives/actionBar/ActionBarInteractionContext.js.map +1 -1
  96. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  97. package/dist/primitives/actionBar/ActionBarRoot.js +84 -25
  98. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  99. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
  100. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +45 -14
  101. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
  102. package/dist/primitives/actionBar/useActionBarFloatStatus.js +22 -10
  103. package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
  104. package/dist/primitives/actionBar.js.map +1 -1
  105. package/dist/primitives/actionBarMore/ActionBarMoreContent.js +44 -7
  106. package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
  107. package/dist/primitives/actionBarMore/ActionBarMoreItem.js +28 -6
  108. package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
  109. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +103 -36
  110. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
  111. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +28 -6
  112. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
  113. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +28 -6
  114. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
  115. package/dist/primitives/actionBarMore/scope.js.map +1 -1
  116. package/dist/primitives/actionBarMore.js.map +1 -1
  117. package/dist/primitives/assistantModal/AssistantModalAnchor.js +27 -6
  118. package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
  119. package/dist/primitives/assistantModal/AssistantModalContent.js +71 -10
  120. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
  121. package/dist/primitives/assistantModal/AssistantModalRoot.js +93 -26
  122. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
  123. package/dist/primitives/assistantModal/AssistantModalTrigger.js +27 -6
  124. package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
  125. package/dist/primitives/assistantModal/scope.js.map +1 -1
  126. package/dist/primitives/assistantModal.js.map +1 -1
  127. package/dist/primitives/attachment/AttachmentName.js +13 -1
  128. package/dist/primitives/attachment/AttachmentName.js.map +1 -1
  129. package/dist/primitives/attachment/AttachmentRemove.js +11 -4
  130. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
  131. package/dist/primitives/attachment/AttachmentRoot.js +13 -4
  132. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
  133. package/dist/primitives/attachment/AttachmentThumb.js +20 -9
  134. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
  135. package/dist/primitives/attachment.js.map +1 -1
  136. package/dist/primitives/branchPicker/BranchPickerCount.js +14 -2
  137. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  138. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  139. package/dist/primitives/branchPicker/BranchPickerNumber.js +14 -2
  140. package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
  141. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  142. package/dist/primitives/branchPicker/BranchPickerRoot.js +34 -6
  143. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  144. package/dist/primitives/branchPicker.js.map +1 -1
  145. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +16 -5
  146. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  147. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +13 -4
  148. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
  149. package/dist/primitives/chainOfThought.js.map +1 -1
  150. package/dist/primitives/composer/ComposerAddAttachment.js +37 -24
  151. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  152. package/dist/primitives/composer/ComposerAttachmentDropzone.js +124 -49
  153. package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
  154. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  155. package/dist/primitives/composer/ComposerDictate.js.map +1 -1
  156. package/dist/primitives/composer/ComposerDictationTranscript.js +32 -7
  157. package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
  158. package/dist/primitives/composer/ComposerInput.js +29 -29
  159. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  160. package/dist/primitives/composer/ComposerInputPluginContext.js +71 -25
  161. package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -1
  162. package/dist/primitives/composer/ComposerQuote.js +92 -23
  163. package/dist/primitives/composer/ComposerQuote.js.map +1 -1
  164. package/dist/primitives/composer/ComposerRoot.js +45 -11
  165. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  166. package/dist/primitives/composer/ComposerSend.js +9 -2
  167. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  168. package/dist/primitives/composer/ComposerStopDictation.js +15 -5
  169. package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
  170. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
  171. package/dist/primitives/composer/trigger/TriggerPopover.js +215 -75
  172. package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
  173. package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
  174. package/dist/primitives/composer/trigger/TriggerPopoverBack.js +35 -7
  175. package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
  176. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +134 -28
  177. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
  178. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
  179. package/dist/primitives/composer/trigger/TriggerPopoverItems.js +132 -28
  180. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
  181. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +2 -10
  182. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
  183. package/dist/primitives/composer/trigger/TriggerPopoverResource.js +126 -53
  184. package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
  185. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +181 -78
  186. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
  187. package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -1
  188. package/dist/primitives/composer/trigger/index.js.map +1 -1
  189. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +2 -6
  190. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -1
  191. package/dist/primitives/composer/trigger/triggerDetectionResource.js +30 -15
  192. package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -1
  193. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts +2 -17
  194. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -1
  195. package/dist/primitives/composer/trigger/triggerKeyboardResource.js +117 -59
  196. package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -1
  197. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts +2 -10
  198. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -1
  199. package/dist/primitives/composer/trigger/triggerNavigationResource.js +204 -71
  200. package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -1
  201. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +2 -10
  202. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
  203. package/dist/primitives/composer/trigger/triggerSelectionResource.js +51 -14
  204. package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
  205. package/dist/primitives/composer.js.map +1 -1
  206. package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -1
  207. package/dist/primitives/error/ErrorMessage.js +28 -6
  208. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  209. package/dist/primitives/error/ErrorRoot.js +14 -5
  210. package/dist/primitives/error/ErrorRoot.js.map +1 -1
  211. package/dist/primitives/error.js.map +1 -1
  212. package/dist/primitives/message/MessageError.js +2 -1
  213. package/dist/primitives/message/MessageError.js.map +1 -1
  214. package/dist/primitives/message/MessageIf.js +50 -20
  215. package/dist/primitives/message/MessageIf.js.map +1 -1
  216. package/dist/primitives/message/MessageParts.js +41 -7
  217. package/dist/primitives/message/MessageParts.js.map +1 -1
  218. package/dist/primitives/message/MessagePartsGrouped.js +399 -94
  219. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  220. package/dist/primitives/message/MessageRoot.js +197 -65
  221. package/dist/primitives/message/MessageRoot.js.map +1 -1
  222. package/dist/primitives/message.js.map +1 -1
  223. package/dist/primitives/messagePart/MessagePartImage.js +15 -5
  224. package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
  225. package/dist/primitives/messagePart/MessagePartText.d.ts +5 -2
  226. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -1
  227. package/dist/primitives/messagePart/MessagePartText.js +35 -7
  228. package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
  229. package/dist/primitives/messagePart/useMessagePartData.js +5 -4
  230. package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
  231. package/dist/primitives/messagePart/useMessagePartFile.js +5 -4
  232. package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
  233. package/dist/primitives/messagePart/useMessagePartImage.js +5 -4
  234. package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
  235. package/dist/primitives/messagePart/useMessagePartReasoning.js +5 -4
  236. package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
  237. package/dist/primitives/messagePart/useMessagePartSource.js +5 -4
  238. package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
  239. package/dist/primitives/messagePart/useMessagePartText.js +5 -4
  240. package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
  241. package/dist/primitives/messagePart.js.map +1 -1
  242. package/dist/primitives/queueItem/QueueItemRemove.js +11 -4
  243. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
  244. package/dist/primitives/queueItem/QueueItemSteer.js +11 -4
  245. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
  246. package/dist/primitives/queueItem/QueueItemText.js +20 -6
  247. package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
  248. package/dist/primitives/queueItem.js.map +1 -1
  249. package/dist/primitives/reasoning/useScrollLock.js +61 -34
  250. package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
  251. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +56 -16
  252. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
  253. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +120 -59
  254. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
  255. package/dist/primitives/selectionToolbar.js.map +1 -1
  256. package/dist/primitives/suggestion/SuggestionDescription.js +20 -6
  257. package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
  258. package/dist/primitives/suggestion/SuggestionTitle.js +20 -6
  259. package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
  260. package/dist/primitives/suggestion/SuggestionTrigger.js +39 -26
  261. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  262. package/dist/primitives/suggestion.js.map +1 -1
  263. package/dist/primitives/thread/ThreadEmpty.js +6 -2
  264. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  265. package/dist/primitives/thread/ThreadIf.js +32 -10
  266. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  267. package/dist/primitives/thread/ThreadRoot.js +13 -4
  268. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  269. package/dist/primitives/thread/ThreadScrollToBottom.js +24 -6
  270. package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
  271. package/dist/primitives/thread/ThreadSuggestion.js +18 -6
  272. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  273. package/dist/primitives/thread/ThreadViewport.js +185 -47
  274. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  275. package/dist/primitives/thread/ThreadViewportFooter.js +22 -9
  276. package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
  277. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js.map +1 -1
  278. package/dist/primitives/thread/topAnchor/createReserveObservers.js.map +1 -1
  279. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -1
  280. package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -1
  281. package/dist/primitives/thread/topAnchor/topAnchorUtils.js.map +1 -1
  282. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +19 -4
  283. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
  284. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
  285. package/dist/primitives/thread/useThreadViewportAutoScroll.js +21 -16
  286. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  287. package/dist/primitives/thread.js.map +1 -1
  288. package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -1
  289. package/dist/primitives/threadList/ThreadListNew.js +53 -11
  290. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  291. package/dist/primitives/threadList/ThreadListRoot.js +13 -4
  292. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
  293. package/dist/primitives/threadList.js.map +1 -1
  294. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  295. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
  296. package/dist/primitives/threadListItem/ThreadListItemRoot.js +26 -7
  297. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  298. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  299. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  300. package/dist/primitives/threadListItem.js.map +1 -1
  301. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +44 -7
  302. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
  303. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +28 -6
  304. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
  305. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +25 -5
  306. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
  307. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +28 -6
  308. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
  309. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +28 -6
  310. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
  311. package/dist/primitives/threadListItemMore/scope.js.map +1 -1
  312. package/dist/primitives/threadListItemMore.js.map +1 -1
  313. package/dist/sandbox-host/SandboxHost.js.map +1 -1
  314. package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
  315. package/dist/tests/setup.js.map +1 -1
  316. package/dist/unstable/useComposerInputHistory.d.ts +30 -0
  317. package/dist/unstable/useComposerInputHistory.d.ts.map +1 -0
  318. package/dist/unstable/useComposerInputHistory.js +117 -0
  319. package/dist/unstable/useComposerInputHistory.js.map +1 -0
  320. package/dist/unstable/useMentionAdapter.js.map +1 -1
  321. package/dist/unstable/useMessageStallDetection.d.ts +29 -0
  322. package/dist/unstable/useMessageStallDetection.d.ts.map +1 -0
  323. package/dist/unstable/useMessageStallDetection.js +69 -0
  324. package/dist/unstable/useMessageStallDetection.js.map +1 -0
  325. package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
  326. package/dist/utils/Primitive.js +57 -12
  327. package/dist/utils/Primitive.js.map +1 -1
  328. package/dist/utils/createActionButton.js +23 -7
  329. package/dist/utils/createActionButton.js.map +1 -1
  330. package/dist/utils/getSelectionMessageId.js.map +1 -1
  331. package/dist/utils/hooks/useManagedRef.js +16 -8
  332. package/dist/utils/hooks/useManagedRef.js.map +1 -1
  333. package/dist/utils/hooks/useMediaQuery.js +25 -10
  334. package/dist/utils/hooks/useMediaQuery.js.map +1 -1
  335. package/dist/utils/hooks/useOnResizeContent.js +29 -19
  336. package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
  337. package/dist/utils/hooks/useOnScrollToBottom.js +20 -4
  338. package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
  339. package/dist/utils/hooks/useSizeHandle.js +23 -15
  340. package/dist/utils/hooks/useSizeHandle.js.map +1 -1
  341. package/dist/utils/json/is-json-equal.js.map +1 -1
  342. package/dist/utils/json/is-json.js.map +1 -1
  343. package/dist/utils/smooth/SmoothContext.js +41 -11
  344. package/dist/utils/smooth/SmoothContext.js.map +1 -1
  345. package/dist/utils/smooth/useSmooth.d.ts +40 -2
  346. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  347. package/dist/utils/smooth/useSmooth.js +52 -13
  348. package/dist/utils/smooth/useSmooth.js.map +1 -1
  349. package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
  350. package/dist/utils/useToolArgsFieldStatus.d.ts.map +1 -1
  351. package/dist/utils/useToolArgsFieldStatus.js +13 -5
  352. package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
  353. package/package.json +6 -6
  354. package/src/client/ExternalThread.ts +146 -74
  355. package/src/client/InMemoryThreadList.ts +23 -21
  356. package/src/client/SingleThreadList.ts +29 -27
  357. package/src/hooks/useToolCallElapsed.ts +52 -0
  358. package/src/index.ts +19 -0
  359. package/src/mcp-apps/McpAppRenderer.tsx +5 -3
  360. package/src/mcp-apps/McpAppsRemoteHost.ts +5 -3
  361. package/src/primitives/composer/ComposerInput.test.tsx +1 -1
  362. package/src/primitives/composer/ComposerInput.tsx +3 -3
  363. package/src/primitives/composer/trigger/TriggerPopover.tsx +4 -5
  364. package/src/primitives/composer/trigger/TriggerPopoverResource.ts +5 -3
  365. package/src/primitives/composer/trigger/triggerDetectionResource.ts +21 -21
  366. package/src/primitives/composer/trigger/triggerKeyboardResource.test.ts +5 -4
  367. package/src/primitives/composer/trigger/triggerKeyboardResource.ts +99 -101
  368. package/src/primitives/composer/trigger/triggerNavigationResource.ts +92 -98
  369. package/src/primitives/composer/trigger/triggerSelectionResource.ts +76 -76
  370. package/src/primitives/messagePart/MessagePartText.tsx +3 -2
  371. package/src/primitives/reasoning/useScrollLock.ts +25 -2
  372. package/src/primitives/thread/useThreadViewportAutoScroll.ts +8 -0
  373. package/src/tests/external-thread-branches.test.tsx +160 -0
  374. package/src/tests/shouldContinue.test.ts +33 -0
  375. package/src/tests/toolCallTiming.test.tsx +221 -0
  376. package/src/unstable/useComposerInputHistory.test.tsx +201 -0
  377. package/src/unstable/useComposerInputHistory.ts +160 -0
  378. package/src/unstable/useMessageStallDetection.ts +91 -0
  379. package/src/utils/smooth/useSmooth.test.tsx +95 -0
  380. package/src/utils/smooth/useSmooth.ts +82 -10
@@ -1,7 +1,8 @@
1
1
  "use client";
2
2
  import { Primitive } from "../../../utils/Primitive.js";
3
3
  import { useTriggerPopoverScopeContext } from "./TriggerPopover.js";
4
- import { forwardRef, useCallback } from "@assistant-ui/tap/react-shim";
4
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
+ import { forwardRef } from "@assistant-ui/tap/react-shim";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
  import { composeEventHandlers } from "@radix-ui/primitive";
7
8
  //#region src/primitives/composer/trigger/TriggerPopoverCategories.tsx
@@ -9,43 +10,148 @@ import { composeEventHandlers } from "@radix-ui/primitive";
9
10
  * Renders the top-level category list via a render function.
10
11
  * Only renders when no category is active and search mode is off.
11
12
  */
12
- const ComposerPrimitiveTriggerPopoverCategories = forwardRef(({ children, "aria-label": ariaLabel, ...props }, forwardedRef) => {
13
+ const ComposerPrimitiveTriggerPopoverCategories = forwardRef((t0, forwardedRef) => {
14
+ const $ = c(12);
15
+ let ariaLabel;
16
+ let children;
17
+ let props;
18
+ if ($[0] !== t0) {
19
+ ({children, "aria-label": ariaLabel, ...props} = t0);
20
+ $[0] = t0;
21
+ $[1] = ariaLabel;
22
+ $[2] = children;
23
+ $[3] = props;
24
+ } else {
25
+ ariaLabel = $[1];
26
+ children = $[2];
27
+ props = $[3];
28
+ }
13
29
  const { categories, activeCategoryId, isSearchMode, open } = useTriggerPopoverScopeContext();
14
30
  if (!open || activeCategoryId || isSearchMode) return null;
15
- return /* @__PURE__ */ jsx(Primitive.div, {
16
- role: "group",
17
- "aria-label": ariaLabel ?? "Categories",
18
- ...props,
19
- ref: forwardedRef,
20
- children: children(categories)
21
- });
31
+ const t1 = ariaLabel ?? "Categories";
32
+ let t2;
33
+ if ($[4] !== categories || $[5] !== children) {
34
+ t2 = children(categories);
35
+ $[4] = categories;
36
+ $[5] = children;
37
+ $[6] = t2;
38
+ } else t2 = $[6];
39
+ let t3;
40
+ if ($[7] !== forwardedRef || $[8] !== props || $[9] !== t1 || $[10] !== t2) {
41
+ t3 = /* @__PURE__ */ jsx(Primitive.div, {
42
+ role: "group",
43
+ "aria-label": t1,
44
+ ...props,
45
+ ref: forwardedRef,
46
+ children: t2
47
+ });
48
+ $[7] = forwardedRef;
49
+ $[8] = props;
50
+ $[9] = t1;
51
+ $[10] = t2;
52
+ $[11] = t3;
53
+ } else t3 = $[11];
54
+ return t3;
22
55
  });
23
56
  ComposerPrimitiveTriggerPopoverCategories.displayName = "ComposerPrimitive.TriggerPopoverCategories";
24
57
  /**
25
58
  * A button that selects a category and triggers drill-down navigation.
26
59
  * Automatically receives `data-highlighted` when keyboard-navigated.
27
60
  */
28
- const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef(({ categoryId, onClick, onMouseMove, ...props }, forwardedRef) => {
61
+ const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef((t0, forwardedRef) => {
62
+ const $ = c(30);
63
+ let categoryId;
64
+ let onClick;
65
+ let onMouseMove;
66
+ let props;
67
+ if ($[0] !== t0) {
68
+ ({categoryId, onClick, onMouseMove, ...props} = t0);
69
+ $[0] = t0;
70
+ $[1] = categoryId;
71
+ $[2] = onClick;
72
+ $[3] = onMouseMove;
73
+ $[4] = props;
74
+ } else {
75
+ categoryId = $[1];
76
+ onClick = $[2];
77
+ onMouseMove = $[3];
78
+ props = $[4];
79
+ }
29
80
  const { selectCategory, highlightIndex, categories, highlightedIndex, activeCategoryId, isSearchMode, popoverId } = useTriggerPopoverScopeContext();
30
- const handleClick = useCallback(() => {
31
- selectCategory(categoryId);
32
- }, [selectCategory, categoryId]);
33
- const categoryIndex = categories.findIndex((c) => c.id === categoryId);
81
+ let t1;
82
+ if ($[5] !== categoryId || $[6] !== selectCategory) {
83
+ t1 = () => {
84
+ selectCategory(categoryId);
85
+ };
86
+ $[5] = categoryId;
87
+ $[6] = selectCategory;
88
+ $[7] = t1;
89
+ } else t1 = $[7];
90
+ const handleClick = t1;
91
+ let t2;
92
+ if ($[8] !== categories || $[9] !== categoryId) {
93
+ let t3;
94
+ if ($[11] !== categoryId) {
95
+ t3 = (c) => c.id === categoryId;
96
+ $[11] = categoryId;
97
+ $[12] = t3;
98
+ } else t3 = $[12];
99
+ t2 = categories.findIndex(t3);
100
+ $[8] = categories;
101
+ $[9] = categoryId;
102
+ $[10] = t2;
103
+ } else t2 = $[10];
104
+ const categoryIndex = t2;
34
105
  const isHighlighted = !activeCategoryId && !isSearchMode && categoryIndex === highlightedIndex;
35
- const handleMouseMove = useCallback(() => {
36
- highlightIndex(categoryIndex);
37
- }, [highlightIndex, categoryIndex]);
38
- return /* @__PURE__ */ jsx(Primitive.button, {
39
- type: "button",
40
- role: "option",
41
- id: `${popoverId}-option-${categoryId}`,
42
- "aria-selected": isHighlighted,
43
- "data-highlighted": isHighlighted ? "" : void 0,
44
- ...props,
45
- ref: forwardedRef,
46
- onClick: composeEventHandlers(onClick, handleClick),
47
- onMouseMove: composeEventHandlers(onMouseMove, handleMouseMove)
48
- });
106
+ let t3;
107
+ if ($[13] !== categoryIndex || $[14] !== highlightIndex) {
108
+ t3 = () => {
109
+ highlightIndex(categoryIndex);
110
+ };
111
+ $[13] = categoryIndex;
112
+ $[14] = highlightIndex;
113
+ $[15] = t3;
114
+ } else t3 = $[15];
115
+ const handleMouseMove = t3;
116
+ const t4 = `${popoverId}-option-${categoryId}`;
117
+ const t5 = isHighlighted ? "" : void 0;
118
+ let t6;
119
+ if ($[16] !== handleClick || $[17] !== onClick) {
120
+ t6 = composeEventHandlers(onClick, handleClick);
121
+ $[16] = handleClick;
122
+ $[17] = onClick;
123
+ $[18] = t6;
124
+ } else t6 = $[18];
125
+ let t7;
126
+ if ($[19] !== handleMouseMove || $[20] !== onMouseMove) {
127
+ t7 = composeEventHandlers(onMouseMove, handleMouseMove);
128
+ $[19] = handleMouseMove;
129
+ $[20] = onMouseMove;
130
+ $[21] = t7;
131
+ } else t7 = $[21];
132
+ let t8;
133
+ if ($[22] !== forwardedRef || $[23] !== isHighlighted || $[24] !== props || $[25] !== t4 || $[26] !== t5 || $[27] !== t6 || $[28] !== t7) {
134
+ t8 = /* @__PURE__ */ jsx(Primitive.button, {
135
+ type: "button",
136
+ role: "option",
137
+ id: t4,
138
+ "aria-selected": isHighlighted,
139
+ "data-highlighted": t5,
140
+ ...props,
141
+ ref: forwardedRef,
142
+ onClick: t6,
143
+ onMouseMove: t7
144
+ });
145
+ $[22] = forwardedRef;
146
+ $[23] = isHighlighted;
147
+ $[24] = props;
148
+ $[25] = t4;
149
+ $[26] = t5;
150
+ $[27] = t6;
151
+ $[28] = t7;
152
+ $[29] = t8;
153
+ } else t8 = $[29];
154
+ return t8;
49
155
  });
50
156
  ComposerPrimitiveTriggerPopoverCategoryItem.displayName = "ComposerPrimitive.TriggerPopoverCategoryItem";
51
157
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverCategories.js","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\nimport type { Unstable_TriggerCategory } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategories {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;\n };\n}\n\n/**\n * Renders the top-level category list via a render function.\n * Only renders when no category is active and search mode is off.\n */\nexport const ComposerPrimitiveTriggerPopoverCategories = forwardRef<\n ComposerPrimitiveTriggerPopoverCategories.Element,\n ComposerPrimitiveTriggerPopoverCategories.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { categories, activeCategoryId, isSearchMode, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.div\n role=\"group\"\n aria-label={ariaLabel ?? \"Categories\"}\n {...props}\n ref={forwardedRef}\n >\n {children(categories)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverCategories.displayName =\n \"ComposerPrimitive.TriggerPopoverCategories\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategoryItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n categoryId: string;\n };\n}\n\n/**\n * A button that selects a category and triggers drill-down navigation.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef<\n ComposerPrimitiveTriggerPopoverCategoryItem.Element,\n ComposerPrimitiveTriggerPopoverCategoryItem.Props\n>(({ categoryId, onClick, onMouseMove, ...props }, forwardedRef) => {\n const {\n selectCategory,\n highlightIndex,\n categories,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectCategory(categoryId);\n }, [selectCategory, categoryId]);\n\n const categoryIndex = categories.findIndex((c) => c.id === categoryId);\n const isHighlighted =\n !activeCategoryId && !isSearchMode && categoryIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(categoryIndex);\n }, [highlightIndex, categoryIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${categoryId}`}\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted ? \"\" : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleClick)}\n onMouseMove={composeEventHandlers(onMouseMove, handleMouseMove)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverCategoryItem.displayName =\n \"ComposerPrimitive.TriggerPopoverCategoryItem\";\n"],"mappings":";;;;;;;;;;;AA4BA,MAAa,4CAA4C,YAGtD,EAAE,UAAU,cAAc,WAAW,GAAG,SAAS,iBAAiB;CACnE,MAAM,EAAE,YAAY,kBAAkB,cAAc,SAClD,8BAA8B;CAEhC,IAAI,CAAC,QAAQ,oBAAoB,cAAc,OAAO;CAEtD,OACE,oBAAC,UAAU,KAAX;EACE,MAAK;EACL,cAAY,aAAa;EACzB,GAAI;EACJ,KAAK;YAEJ,SAAS,UAAU;CACP,CAAA;AAEnB,CAAC;AAED,0CAA0C,cACxC;;;;;AAaF,MAAa,8CAA8C,YAGxD,EAAE,YAAY,SAAS,aAAa,GAAG,SAAS,iBAAiB;CAClE,MAAM,EACJ,gBACA,gBACA,YACA,kBACA,kBACA,cACA,cACE,8BAA8B;CAElC,MAAM,cAAc,kBAAkB;EACpC,eAAe,UAAU;CAC3B,GAAG,CAAC,gBAAgB,UAAU,CAAC;CAE/B,MAAM,gBAAgB,WAAW,WAAW,MAAM,EAAE,OAAO,UAAU;CACrE,MAAM,gBACJ,CAAC,oBAAoB,CAAC,gBAAgB,kBAAkB;CAE1D,MAAM,kBAAkB,kBAAkB;EACxC,eAAe,aAAa;CAC9B,GAAG,CAAC,gBAAgB,aAAa,CAAC;CAElC,OACE,oBAAC,UAAU,QAAX;EACE,MAAK;EACL,MAAK;EACL,IAAI,GAAG,UAAU,UAAU;EAC3B,iBAAe;EACf,oBAAkB,gBAAgB,KAAK,KAAA;EACvC,GAAI;EACJ,KAAK;EACL,SAAS,qBAAqB,SAAS,WAAW;EAClD,aAAa,qBAAqB,aAAa,eAAe;CAC/D,CAAA;AAEL,CAAC;AAED,4CAA4C,cAC1C"}
1
+ {"version":3,"file":"TriggerPopoverCategories.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","ReactNode","forwardRef","useCallback","composeEventHandlers","useTriggerPopoverScopeContext","Unstable_TriggerCategory","ComposerPrimitiveTriggerPopoverCategories","Element","div","Props","Omit","children","categories","t0","forwardedRef","$","ariaLabel","props","activeCategoryId","isSearchMode","open","t1","t2","t3","displayName","ComposerPrimitiveTriggerPopoverCategoryItem","button","categoryId","onClick","onMouseMove","selectCategory","highlightIndex","highlightedIndex","popoverId","handleClick","id","findIndex","categoryIndex","isHighlighted","handleMouseMove","t4","t5","undefined","t6","t7","t8"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\nimport type { Unstable_TriggerCategory } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategories {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;\n };\n}\n\n/**\n * Renders the top-level category list via a render function.\n * Only renders when no category is active and search mode is off.\n */\nexport const ComposerPrimitiveTriggerPopoverCategories = forwardRef<\n ComposerPrimitiveTriggerPopoverCategories.Element,\n ComposerPrimitiveTriggerPopoverCategories.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { categories, activeCategoryId, isSearchMode, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.div\n role=\"group\"\n aria-label={ariaLabel ?? \"Categories\"}\n {...props}\n ref={forwardedRef}\n >\n {children(categories)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverCategories.displayName =\n \"ComposerPrimitive.TriggerPopoverCategories\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategoryItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n categoryId: string;\n };\n}\n\n/**\n * A button that selects a category and triggers drill-down navigation.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef<\n ComposerPrimitiveTriggerPopoverCategoryItem.Element,\n ComposerPrimitiveTriggerPopoverCategoryItem.Props\n>(({ categoryId, onClick, onMouseMove, ...props }, forwardedRef) => {\n const {\n selectCategory,\n highlightIndex,\n categories,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectCategory(categoryId);\n }, [selectCategory, categoryId]);\n\n const categoryIndex = categories.findIndex((c) => c.id === categoryId);\n const isHighlighted =\n !activeCategoryId && !isSearchMode && categoryIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(categoryIndex);\n }, [highlightIndex, categoryIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${categoryId}`}\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted ? \"\" : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleClick)}\n onMouseMove={composeEventHandlers(onMouseMove, handleMouseMove)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverCategoryItem.displayName =\n \"ComposerPrimitive.TriggerPopoverCategoryItem\";\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverDirective.js","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverDirective.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n Unstable_DirectiveFormatter,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport { unstable_defaultDirectiveFormatter } from \"@assistant-ui/core\";\nimport { useEffect, useRef, type FC } from \"react\";\nimport { useTriggerBehaviorRegistration } from \"./TriggerPopover\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\n\nexport namespace ComposerPrimitiveTriggerPopoverDirective {\n export type Props = {\n /** Defaults to `unstable_defaultDirectiveFormatter`. */\n readonly formatter?: Unstable_DirectiveFormatter | undefined;\n /** Fires after an item has been inserted into the composer. */\n readonly onInserted?: ((item: Unstable_TriggerItem) => void) | undefined;\n };\n}\n\n/**\n * Configures a `<TriggerPopover>` to insert a directive chip when an item is\n * selected. Render exactly one behavior sub-primitive per `<TriggerPopover>`.\n *\n * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Directive`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"@\" adapter={mentionAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive\n * formatter={unstable_defaultDirectiveFormatter}\n * onInserted={(item) => track(\"mention\", item.id)}\n * />\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverDirective: FC<\n ComposerPrimitiveTriggerPopoverDirective.Props\n> = ({ formatter, onInserted }) => {\n const { register } = useTriggerBehaviorRegistration();\n const onInsertedRef = useRef(onInserted);\n onInsertedRef.current = onInserted;\n\n useEffect(() => {\n const behavior: TriggerBehavior = {\n kind: \"directive\",\n formatter: formatter ?? unstable_defaultDirectiveFormatter,\n onInserted: (item) => onInsertedRef.current?.(item),\n };\n return register(behavior);\n }, [register, formatter]);\n\n return null;\n};\n\nComposerPrimitiveTriggerPopoverDirective.displayName =\n \"ComposerPrimitive.TriggerPopoverDirective\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoCA,MAAa,4CAER,EAAE,WAAW,iBAAiB;CACjC,MAAM,EAAE,aAAa,+BAA+B;CACpD,MAAM,gBAAgB,OAAO,UAAU;CACvC,cAAc,UAAU;CAExB,gBAAgB;EAMd,OAAO,SAAS;GAJd,MAAM;GACN,WAAW,aAAa;GACxB,aAAa,SAAS,cAAc,UAAU,IAAI;EAE7B,CAAC;CAC1B,GAAG,CAAC,UAAU,SAAS,CAAC;CAExB,OAAO;AACT;AAEA,yCAAyC,cACvC"}
1
+ {"version":3,"file":"TriggerPopoverDirective.js","names":["Unstable_DirectiveFormatter","Unstable_TriggerItem","unstable_defaultDirectiveFormatter","useEffect","useRef","FC","useTriggerBehaviorRegistration","TriggerBehavior","ComposerPrimitiveTriggerPopoverDirective","Props","formatter","onInserted","item","register","onInsertedRef","current","behavior","kind","displayName"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverDirective.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n Unstable_DirectiveFormatter,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport { unstable_defaultDirectiveFormatter } from \"@assistant-ui/core\";\nimport { useEffect, useRef, type FC } from \"react\";\nimport { useTriggerBehaviorRegistration } from \"./TriggerPopover\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\n\nexport namespace ComposerPrimitiveTriggerPopoverDirective {\n export type Props = {\n /** Defaults to `unstable_defaultDirectiveFormatter`. */\n readonly formatter?: Unstable_DirectiveFormatter | undefined;\n /** Fires after an item has been inserted into the composer. */\n readonly onInserted?: ((item: Unstable_TriggerItem) => void) | undefined;\n };\n}\n\n/**\n * Configures a `<TriggerPopover>` to insert a directive chip when an item is\n * selected. Render exactly one behavior sub-primitive per `<TriggerPopover>`.\n *\n * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Directive`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"@\" adapter={mentionAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive\n * formatter={unstable_defaultDirectiveFormatter}\n * onInserted={(item) => track(\"mention\", item.id)}\n * />\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverDirective: FC<\n ComposerPrimitiveTriggerPopoverDirective.Props\n> = ({ formatter, onInserted }) => {\n const { register } = useTriggerBehaviorRegistration();\n const onInsertedRef = useRef(onInserted);\n onInsertedRef.current = onInserted;\n\n useEffect(() => {\n const behavior: TriggerBehavior = {\n kind: \"directive\",\n formatter: formatter ?? unstable_defaultDirectiveFormatter,\n onInserted: (item) => onInsertedRef.current?.(item),\n };\n return register(behavior);\n }, [register, formatter]);\n\n return null;\n};\n\nComposerPrimitiveTriggerPopoverDirective.displayName =\n \"ComposerPrimitive.TriggerPopoverDirective\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoCA,MAAaQ,4CAER,EAAEE,WAAWC,iBAAiB;CACjC,MAAM,EAAEE,aAAaP,+BAA+B;CACpD,MAAMQ,gBAAgBV,OAAOO,UAAU;CACvCG,cAAcC,UAAUJ;CAExBR,gBAAgB;EAMd,OAAOU,SAASG;GAJdC,MAAM;GACNP,WAAWA,aAAaR;GACxBS,aAAaC,SAASE,cAAcC,UAAUH,IAAI;EAEpCI,CAAQ;CAC1B,GAAG,CAACH,UAAUH,SAAS,CAAC;CAExB,OAAO;AACT;AAEAF,yCAAyCU,cACvC"}
@@ -1,7 +1,8 @@
1
1
  "use client";
2
2
  import { Primitive } from "../../../utils/Primitive.js";
3
3
  import { useTriggerPopoverScopeContext } from "./TriggerPopover.js";
4
- import { forwardRef, useCallback } from "@assistant-ui/tap/react-shim";
4
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
+ import { forwardRef } from "@assistant-ui/tap/react-shim";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
  import { composeEventHandlers } from "@radix-ui/primitive";
7
8
  //#region src/primitives/composer/trigger/TriggerPopoverItems.tsx
@@ -9,43 +10,146 @@ import { composeEventHandlers } from "@radix-ui/primitive";
9
10
  * Renders the list of items within a category or search results via a render function.
10
11
  * Only renders when a category is active or search mode is on.
11
12
  */
12
- const ComposerPrimitiveTriggerPopoverItems = forwardRef(({ children, "aria-label": ariaLabel, ...props }, forwardedRef) => {
13
+ const ComposerPrimitiveTriggerPopoverItems = forwardRef((t0, forwardedRef) => {
14
+ const $ = c(12);
15
+ let ariaLabel;
16
+ let children;
17
+ let props;
18
+ if ($[0] !== t0) {
19
+ ({children, "aria-label": ariaLabel, ...props} = t0);
20
+ $[0] = t0;
21
+ $[1] = ariaLabel;
22
+ $[2] = children;
23
+ $[3] = props;
24
+ } else {
25
+ ariaLabel = $[1];
26
+ children = $[2];
27
+ props = $[3];
28
+ }
13
29
  const { items, activeCategoryId, isSearchMode, open } = useTriggerPopoverScopeContext();
14
30
  if (!open || !activeCategoryId && !isSearchMode) return null;
15
- return /* @__PURE__ */ jsx(Primitive.div, {
16
- role: "group",
17
- "aria-label": ariaLabel ?? "Items",
18
- ...props,
19
- ref: forwardedRef,
20
- children: children(items)
21
- });
31
+ const t1 = ariaLabel ?? "Items";
32
+ let t2;
33
+ if ($[4] !== children || $[5] !== items) {
34
+ t2 = children(items);
35
+ $[4] = children;
36
+ $[5] = items;
37
+ $[6] = t2;
38
+ } else t2 = $[6];
39
+ let t3;
40
+ if ($[7] !== forwardedRef || $[8] !== props || $[9] !== t1 || $[10] !== t2) {
41
+ t3 = /* @__PURE__ */ jsx(Primitive.div, {
42
+ role: "group",
43
+ "aria-label": t1,
44
+ ...props,
45
+ ref: forwardedRef,
46
+ children: t2
47
+ });
48
+ $[7] = forwardedRef;
49
+ $[8] = props;
50
+ $[9] = t1;
51
+ $[10] = t2;
52
+ $[11] = t3;
53
+ } else t3 = $[11];
54
+ return t3;
22
55
  });
23
56
  ComposerPrimitiveTriggerPopoverItems.displayName = "ComposerPrimitive.TriggerPopoverItems";
24
57
  /**
25
58
  * A button that selects a trigger item.
26
59
  * Automatically receives `data-highlighted` when keyboard-navigated.
27
60
  */
28
- const ComposerPrimitiveTriggerPopoverItem = forwardRef(({ item, index: indexProp, onClick, onMouseMove, ...props }, forwardedRef) => {
61
+ const ComposerPrimitiveTriggerPopoverItem = forwardRef((t0, forwardedRef) => {
62
+ const $ = c(30);
63
+ let indexProp;
64
+ let item;
65
+ let onClick;
66
+ let onMouseMove;
67
+ let props;
68
+ if ($[0] !== t0) {
69
+ ({item, index: indexProp, onClick, onMouseMove, ...props} = t0);
70
+ $[0] = t0;
71
+ $[1] = indexProp;
72
+ $[2] = item;
73
+ $[3] = onClick;
74
+ $[4] = onMouseMove;
75
+ $[5] = props;
76
+ } else {
77
+ indexProp = $[1];
78
+ item = $[2];
79
+ onClick = $[3];
80
+ onMouseMove = $[4];
81
+ props = $[5];
82
+ }
29
83
  const { selectItem, highlightIndex, items, highlightedIndex, activeCategoryId, isSearchMode, popoverId } = useTriggerPopoverScopeContext();
30
- const handleClick = useCallback(() => {
31
- selectItem(item);
32
- }, [selectItem, item]);
33
- const itemIndex = indexProp ?? items.findIndex((i) => i.id === item.id);
84
+ let t1;
85
+ if ($[6] !== item || $[7] !== selectItem) {
86
+ t1 = () => {
87
+ selectItem(item);
88
+ };
89
+ $[6] = item;
90
+ $[7] = selectItem;
91
+ $[8] = t1;
92
+ } else t1 = $[8];
93
+ const handleClick = t1;
94
+ let t2;
95
+ if ($[9] !== indexProp || $[10] !== item.id || $[11] !== items) {
96
+ t2 = indexProp ?? items.findIndex((i) => i.id === item.id);
97
+ $[9] = indexProp;
98
+ $[10] = item.id;
99
+ $[11] = items;
100
+ $[12] = t2;
101
+ } else t2 = $[12];
102
+ const itemIndex = t2;
34
103
  const isHighlighted = (isSearchMode || activeCategoryId !== null) && itemIndex === highlightedIndex;
35
- const handleMouseMove = useCallback(() => {
36
- highlightIndex(itemIndex);
37
- }, [highlightIndex, itemIndex]);
38
- return /* @__PURE__ */ jsx(Primitive.button, {
39
- type: "button",
40
- role: "option",
41
- id: `${popoverId}-option-${item.id}`,
42
- "aria-selected": isHighlighted,
43
- "data-highlighted": isHighlighted ? "" : void 0,
44
- ...props,
45
- ref: forwardedRef,
46
- onClick: composeEventHandlers(onClick, handleClick),
47
- onMouseMove: composeEventHandlers(onMouseMove, handleMouseMove)
48
- });
104
+ let t3;
105
+ if ($[13] !== highlightIndex || $[14] !== itemIndex) {
106
+ t3 = () => {
107
+ highlightIndex(itemIndex);
108
+ };
109
+ $[13] = highlightIndex;
110
+ $[14] = itemIndex;
111
+ $[15] = t3;
112
+ } else t3 = $[15];
113
+ const handleMouseMove = t3;
114
+ const t4 = `${popoverId}-option-${item.id}`;
115
+ const t5 = isHighlighted ? "" : void 0;
116
+ let t6;
117
+ if ($[16] !== handleClick || $[17] !== onClick) {
118
+ t6 = composeEventHandlers(onClick, handleClick);
119
+ $[16] = handleClick;
120
+ $[17] = onClick;
121
+ $[18] = t6;
122
+ } else t6 = $[18];
123
+ let t7;
124
+ if ($[19] !== handleMouseMove || $[20] !== onMouseMove) {
125
+ t7 = composeEventHandlers(onMouseMove, handleMouseMove);
126
+ $[19] = handleMouseMove;
127
+ $[20] = onMouseMove;
128
+ $[21] = t7;
129
+ } else t7 = $[21];
130
+ let t8;
131
+ if ($[22] !== forwardedRef || $[23] !== isHighlighted || $[24] !== props || $[25] !== t4 || $[26] !== t5 || $[27] !== t6 || $[28] !== t7) {
132
+ t8 = /* @__PURE__ */ jsx(Primitive.button, {
133
+ type: "button",
134
+ role: "option",
135
+ id: t4,
136
+ "aria-selected": isHighlighted,
137
+ "data-highlighted": t5,
138
+ ...props,
139
+ ref: forwardedRef,
140
+ onClick: t6,
141
+ onMouseMove: t7
142
+ });
143
+ $[22] = forwardedRef;
144
+ $[23] = isHighlighted;
145
+ $[24] = props;
146
+ $[25] = t4;
147
+ $[26] = t5;
148
+ $[27] = t6;
149
+ $[28] = t7;
150
+ $[29] = t8;
151
+ } else t8 = $[29];
152
+ return t8;
49
153
  });
50
154
  ComposerPrimitiveTriggerPopoverItem.displayName = "ComposerPrimitive.TriggerPopoverItem";
51
155
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverItems.js","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\nimport type { Unstable_TriggerItem } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverItems {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (items: readonly Unstable_TriggerItem[]) => ReactNode;\n };\n}\n\n/**\n * Renders the list of items within a category or search results via a render function.\n * Only renders when a category is active or search mode is on.\n */\nexport const ComposerPrimitiveTriggerPopoverItems = forwardRef<\n ComposerPrimitiveTriggerPopoverItems.Element,\n ComposerPrimitiveTriggerPopoverItems.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { items, activeCategoryId, isSearchMode, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || (!activeCategoryId && !isSearchMode)) return null;\n\n return (\n <Primitive.div\n role=\"group\"\n aria-label={ariaLabel ?? \"Items\"}\n {...props}\n ref={forwardedRef}\n >\n {children(items)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverItems.displayName =\n \"ComposerPrimitive.TriggerPopoverItems\";\n\nexport namespace ComposerPrimitiveTriggerPopoverItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n item: Unstable_TriggerItem;\n index?: number | undefined;\n };\n}\n\n/**\n * A button that selects a trigger item.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverItem = forwardRef<\n ComposerPrimitiveTriggerPopoverItem.Element,\n ComposerPrimitiveTriggerPopoverItem.Props\n>(\n (\n { item, index: indexProp, onClick, onMouseMove, ...props },\n forwardedRef,\n ) => {\n const {\n selectItem,\n highlightIndex,\n items,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectItem(item);\n }, [selectItem, item]);\n\n const itemIndex = indexProp ?? items.findIndex((i) => i.id === item.id);\n const isHighlighted =\n (isSearchMode || activeCategoryId !== null) &&\n itemIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(itemIndex);\n }, [highlightIndex, itemIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${item.id}`}\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted ? \"\" : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleClick)}\n onMouseMove={composeEventHandlers(onMouseMove, handleMouseMove)}\n />\n );\n },\n);\n\nComposerPrimitiveTriggerPopoverItem.displayName =\n \"ComposerPrimitive.TriggerPopoverItem\";\n"],"mappings":";;;;;;;;;;;AA4BA,MAAa,uCAAuC,YAGjD,EAAE,UAAU,cAAc,WAAW,GAAG,SAAS,iBAAiB;CACnE,MAAM,EAAE,OAAO,kBAAkB,cAAc,SAC7C,8BAA8B;CAEhC,IAAI,CAAC,QAAS,CAAC,oBAAoB,CAAC,cAAe,OAAO;CAE1D,OACE,oBAAC,UAAU,KAAX;EACE,MAAK;EACL,cAAY,aAAa;EACzB,GAAI;EACJ,KAAK;YAEJ,SAAS,KAAK;CACF,CAAA;AAEnB,CAAC;AAED,qCAAqC,cACnC;;;;;AAcF,MAAa,sCAAsC,YAK/C,EAAE,MAAM,OAAO,WAAW,SAAS,aAAa,GAAG,SACnD,iBACG;CACH,MAAM,EACJ,YACA,gBACA,OACA,kBACA,kBACA,cACA,cACE,8BAA8B;CAElC,MAAM,cAAc,kBAAkB;EACpC,WAAW,IAAI;CACjB,GAAG,CAAC,YAAY,IAAI,CAAC;CAErB,MAAM,YAAY,aAAa,MAAM,WAAW,MAAM,EAAE,OAAO,KAAK,EAAE;CACtE,MAAM,iBACH,gBAAgB,qBAAqB,SACtC,cAAc;CAEhB,MAAM,kBAAkB,kBAAkB;EACxC,eAAe,SAAS;CAC1B,GAAG,CAAC,gBAAgB,SAAS,CAAC;CAE9B,OACE,oBAAC,UAAU,QAAX;EACE,MAAK;EACL,MAAK;EACL,IAAI,GAAG,UAAU,UAAU,KAAK;EAChC,iBAAe;EACf,oBAAkB,gBAAgB,KAAK,KAAA;EACvC,GAAI;EACJ,KAAK;EACL,SAAS,qBAAqB,SAAS,WAAW;EAClD,aAAa,qBAAqB,aAAa,eAAe;CAC/D,CAAA;AAEL,CACF;AAEA,oCAAoC,cAClC"}
1
+ {"version":3,"file":"TriggerPopoverItems.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","ReactNode","forwardRef","useCallback","composeEventHandlers","useTriggerPopoverScopeContext","Unstable_TriggerItem","ComposerPrimitiveTriggerPopoverItems","Element","div","Props","Omit","children","items","t0","forwardedRef","$","ariaLabel","props","activeCategoryId","isSearchMode","open","t1","t2","t3","displayName","ComposerPrimitiveTriggerPopoverItem","button","item","index","indexProp","onClick","onMouseMove","selectItem","highlightIndex","highlightedIndex","popoverId","handleClick","id","findIndex","i","itemIndex","isHighlighted","handleMouseMove","t4","t5","undefined","t6","t7","t8"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\nimport type { Unstable_TriggerItem } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverItems {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (items: readonly Unstable_TriggerItem[]) => ReactNode;\n };\n}\n\n/**\n * Renders the list of items within a category or search results via a render function.\n * Only renders when a category is active or search mode is on.\n */\nexport const ComposerPrimitiveTriggerPopoverItems = forwardRef<\n ComposerPrimitiveTriggerPopoverItems.Element,\n ComposerPrimitiveTriggerPopoverItems.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { items, activeCategoryId, isSearchMode, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || (!activeCategoryId && !isSearchMode)) return null;\n\n return (\n <Primitive.div\n role=\"group\"\n aria-label={ariaLabel ?? \"Items\"}\n {...props}\n ref={forwardedRef}\n >\n {children(items)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverItems.displayName =\n \"ComposerPrimitive.TriggerPopoverItems\";\n\nexport namespace ComposerPrimitiveTriggerPopoverItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n item: Unstable_TriggerItem;\n index?: number | undefined;\n };\n}\n\n/**\n * A button that selects a trigger item.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverItem = forwardRef<\n ComposerPrimitiveTriggerPopoverItem.Element,\n ComposerPrimitiveTriggerPopoverItem.Props\n>(\n (\n { item, index: indexProp, onClick, onMouseMove, ...props },\n forwardedRef,\n ) => {\n const {\n selectItem,\n highlightIndex,\n items,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectItem(item);\n }, [selectItem, item]);\n\n const itemIndex = indexProp ?? items.findIndex((i) => i.id === item.id);\n const isHighlighted =\n (isSearchMode || activeCategoryId !== null) &&\n itemIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(itemIndex);\n }, [highlightIndex, itemIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${item.id}`}\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted ? \"\" : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleClick)}\n onMouseMove={composeEventHandlers(onMouseMove, handleMouseMove)}\n />\n );\n },\n);\n\nComposerPrimitiveTriggerPopoverItem.displayName =\n \"ComposerPrimitive.TriggerPopoverItem\";\n"],"mappings":"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"}
@@ -29,22 +29,14 @@ type TriggerPopoverResourceOutput = {
29
29
  setCursorPosition(pos: number): void;
30
30
  registerSelectItemOverride(fn: SelectItemOverride): () => void;
31
31
  };
32
- /** Composes detection, navigation, keyboard, and selection sub-resources. */
33
- declare const TriggerPopoverResource: (props: {
32
+ declare const TriggerPopoverResource: import("@assistant-ui/tap").Resource<TriggerPopoverResourceOutput, [{
34
33
  adapter: Unstable_TriggerAdapter | undefined;
35
34
  text: string;
36
35
  triggerChar: string;
37
36
  behavior: TriggerBehavior | undefined;
38
37
  aui: AssistantClient; /** Stable ID for accessible element IDs (pass React's useId() from component layer). */
39
38
  popoverId: string;
40
- }) => import("@assistant-ui/tap").ResourceElement<TriggerPopoverResourceOutput, {
41
- adapter: Unstable_TriggerAdapter | undefined;
42
- text: string;
43
- triggerChar: string;
44
- behavior: TriggerBehavior | undefined;
45
- aui: AssistantClient; /** Stable ID for accessible element IDs (pass React's useId() from component layer). */
46
- popoverId: string;
47
- }>;
39
+ }]>;
48
40
  //#endregion
49
41
  export { OnSelectBehavior, type SelectItemOverride, type TriggerBehavior, type TriggerPopoverKeyEvent, TriggerPopoverResource, TriggerPopoverResourceOutput };
50
42
  //# sourceMappingURL=TriggerPopoverResource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverResource.ts"],"mappings":";;;;;;;KAqBY,gBAAA,GAAmB,eAAe;AAAA,KAElC,4BAAA;EAAA,SACD,IAAA;EAAA,SACA,KAAA;EAAA,SACA,gBAAA;EAAA,SACA,UAAA,WAAqB,wBAAA;EAAA,SACrB,KAAA,WAAgB,oBAAA;EAAA,SAChB,gBAAA;EAAA,SACA,YAAA,WAFgB;EAAA,SAIhB,SAAA,UAiBsB;EAAA,SAftB,iBAAA;EAET,cAAA,CAAe,UAAA;EACf,MAAA;EACA,UAAA,CAAW,IAAA,EAAM,oBAAA;EACjB,KAAA,UAZS;EAcT,cAAA,CAAe,KAAA;EACf,aAAA,CAAc,CAAA;IAAA,SACH,GAAA;IAAA,SACA,QAAA;IACT,cAAA;EAAA;EAGF,iBAAA,CAAkB,GAAA;EAClB,0BAAA,CAA2B,EAAA,EAAI,kBAAA;AAAA;;cAIpB,sBAAA,GAAsB,KAAA;WAQxB,uBAAA;;;YAGC,eAAA;OACL,eAAA,EAvBL;;;WAmBS,uBAAA;;;YAGC,eAAA;OACL,eAAA,EAhB0B"}
1
+ {"version":3,"file":"TriggerPopoverResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverResource.ts"],"mappings":";;;;;;;KAqBY,gBAAA,GAAmB,eAAe;AAAA,KAElC,4BAAA;EAAA,SACD,IAAA;EAAA,SACA,KAAA;EAAA,SACA,gBAAA;EAAA,SACA,UAAA,WAAqB,wBAAA;EAAA,SACrB,KAAA,WAAgB,oBAAA;EAAA,SAChB,gBAAA;EAAA,SACA,YAAA,WAFgB;EAAA,SAIhB,SAAA,UAiBsB;EAAA,SAftB,iBAAA;EAET,cAAA,CAAe,UAAA;EACf,MAAA;EACA,UAAA,CAAW,IAAA,EAAM,oBAAA;EACjB,KAAA,UAZS;EAcT,cAAA,CAAe,KAAA;EACf,aAAA,CAAc,CAAA;IAAA,SACH,GAAA;IAAA,SACA,QAAA;IACT,cAAA;EAAA;EAGF,iBAAA,CAAkB,GAAA;EAClB,0BAAA,CAA2B,EAAA,EAAI,kBAAA;AAAA;AAAA,cAwFpB,sBAAA,8BAAsB,QAAA,CAAA,4BAAA;WA5ExB,uBAAA;;;YAGC,eAAA;OACL,eAAA,EAxBU"}