@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.
- package/dist/client/ExternalThread.d.ts +5 -3
- package/dist/client/ExternalThread.d.ts.map +1 -1
- package/dist/client/ExternalThread.js +745 -255
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/client/InMemoryThreadList.d.ts +1 -1
- package/dist/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/client/InMemoryThreadList.js +299 -113
- package/dist/client/InMemoryThreadList.js.map +1 -1
- package/dist/client/SingleThreadList.d.ts +1 -6
- package/dist/client/SingleThreadList.d.ts.map +1 -1
- package/dist/client/SingleThreadList.js +143 -55
- package/dist/client/SingleThreadList.js.map +1 -1
- package/dist/context/ReadonlyStore.js.map +1 -1
- package/dist/context/providers/MessageProvider.js +38 -5
- package/dist/context/providers/MessageProvider.js.map +1 -1
- package/dist/context/providers/ThreadViewportProvider.js +76 -20
- package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
- package/dist/context/react/ThreadViewportContext.js.map +1 -1
- package/dist/context/react/utils/createContextHook.js.map +1 -1
- package/dist/context/react/utils/createContextStoreHook.js +17 -2
- package/dist/context/react/utils/createContextStoreHook.js.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
- package/dist/context/react/utils/ensureBinding.js.map +1 -1
- package/dist/context/react/utils/useRuntimeState.js +18 -2
- package/dist/context/react/utils/useRuntimeState.js.map +1 -1
- package/dist/context/stores/ThreadViewport.js.map +1 -1
- package/dist/devtools/DevToolsHooks.js.map +1 -1
- package/dist/hooks/useMessageQuote.js.map +1 -1
- package/dist/hooks/useMessageTiming.js +4 -1
- package/dist/hooks/useMessageTiming.js.map +1 -1
- package/dist/hooks/useToolCallElapsed.d.ts +23 -0
- package/dist/hooks/useToolCallElapsed.d.ts.map +1 -0
- package/dist/hooks/useToolCallElapsed.js +72 -0
- package/dist/hooks/useToolCallElapsed.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -1
- package/dist/internal.js.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js +46 -10
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js +27 -6
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js.map +1 -1
- package/dist/legacy-runtime/hooks/AssistantContext.js +13 -2
- package/dist/legacy-runtime/hooks/AssistantContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js +9 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js +9 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/MessageContext.js +12 -2
- package/dist/legacy-runtime/hooks/MessageContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js +9 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.js +33 -5
- package/dist/legacy-runtime/hooks/ThreadContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js +9 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js +3 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js +71 -31
- package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +24 -16
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js +17 -12
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js +17 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.d.ts +2 -10
- package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.js +9 -8
- package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
- package/dist/mcp-apps/McpAppsRemoteHost.d.ts +1 -8
- package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -1
- package/dist/mcp-apps/McpAppsRemoteHost.js +6 -5
- package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
- package/dist/mcp-apps/app-frame.js +33 -14
- package/dist/mcp-apps/app-frame.js.map +1 -1
- package/dist/mcp-apps/bridge.js.map +1 -1
- package/dist/mcp-apps/types.js.map +1 -1
- package/dist/mcp-apps/utils.js.map +1 -1
- package/dist/model-context/frame/useAssistantFrameHost.js +32 -14
- package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +64 -26
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js +94 -20
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js +105 -37
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +60 -11
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +60 -11
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarInteractionContext.js +3 -1
- package/dist/primitives/actionBar/ActionBarInteractionContext.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.js +84 -25
- package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js +45 -14
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
- package/dist/primitives/actionBar/useActionBarFloatStatus.js +22 -10
- package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
- package/dist/primitives/actionBar.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js +44 -7
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +103 -36
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
- package/dist/primitives/actionBarMore/scope.js.map +1 -1
- package/dist/primitives/actionBarMore.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.js +27 -6
- package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js +71 -10
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js +93 -26
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.js +27 -6
- package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
- package/dist/primitives/assistantModal/scope.js.map +1 -1
- package/dist/primitives/assistantModal.js.map +1 -1
- package/dist/primitives/attachment/AttachmentName.js +13 -1
- package/dist/primitives/attachment/AttachmentName.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.js +11 -4
- package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.js +13 -4
- package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js +20 -9
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/attachment.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerCount.js +14 -2
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNumber.js +14 -2
- package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js +34 -6
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/branchPicker.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +16 -5
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +13 -4
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
- package/dist/primitives/chainOfThought.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.js +37 -24
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js +124 -49
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerDictate.js.map +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.js +32 -7
- package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +29 -29
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerInputPluginContext.js +71 -25
- package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -1
- package/dist/primitives/composer/ComposerQuote.js +92 -23
- package/dist/primitives/composer/ComposerQuote.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.js +45 -11
- package/dist/primitives/composer/ComposerRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.js +9 -2
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/composer/ComposerStopDictation.js +15 -5
- package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.js +215 -75
- package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js +35 -7
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +134 -28
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js +132 -28
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +2 -10
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js +126 -53
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +181 -78
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
- package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -1
- package/dist/primitives/composer/trigger/index.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +2 -6
- package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerDetectionResource.js +30 -15
- package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts +2 -17
- package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js +117 -59
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts +2 -10
- package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerNavigationResource.js +204 -71
- package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +2 -10
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.js +51 -14
- package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
- package/dist/primitives/composer.js.map +1 -1
- package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -1
- package/dist/primitives/error/ErrorMessage.js +28 -6
- package/dist/primitives/error/ErrorMessage.js.map +1 -1
- package/dist/primitives/error/ErrorRoot.js +14 -5
- package/dist/primitives/error/ErrorRoot.js.map +1 -1
- package/dist/primitives/error.js.map +1 -1
- package/dist/primitives/message/MessageError.js +2 -1
- package/dist/primitives/message/MessageError.js.map +1 -1
- package/dist/primitives/message/MessageIf.js +50 -20
- package/dist/primitives/message/MessageIf.js.map +1 -1
- package/dist/primitives/message/MessageParts.js +41 -7
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +399 -94
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/message/MessageRoot.js +197 -65
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/message.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartImage.js +15 -5
- package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartText.d.ts +5 -2
- package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -1
- package/dist/primitives/messagePart/MessagePartText.js +35 -7
- package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartData.js +5 -4
- package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartFile.js +5 -4
- package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartImage.js +5 -4
- package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartReasoning.js +5 -4
- package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartSource.js +5 -4
- package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartText.js +5 -4
- package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
- package/dist/primitives/messagePart.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemRemove.js +11 -4
- package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemSteer.js +11 -4
- package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemText.js +20 -6
- package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
- package/dist/primitives/queueItem.js.map +1 -1
- package/dist/primitives/reasoning/useScrollLock.js +61 -34
- package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +56 -16
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +120 -59
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
- package/dist/primitives/selectionToolbar.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.js +20 -6
- package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.js +20 -6
- package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.js +39 -26
- package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
- package/dist/primitives/suggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadEmpty.js +6 -2
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
- package/dist/primitives/thread/ThreadIf.js +32 -10
- package/dist/primitives/thread/ThreadIf.js.map +1 -1
- package/dist/primitives/thread/ThreadRoot.js +13 -4
- package/dist/primitives/thread/ThreadRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.js +24 -6
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js +18 -6
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +185 -47
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.js +22 -9
- package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
- package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js.map +1 -1
- package/dist/primitives/thread/topAnchor/createReserveObservers.js.map +1 -1
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -1
- package/dist/primitives/thread/topAnchor/topAnchorUtils.js.map +1 -1
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +19 -4
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +21 -16
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/thread.js.map +1 -1
- package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.js +53 -11
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.js +13 -4
- package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
- package/dist/primitives/threadList.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.js +26 -7
- package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
- package/dist/primitives/threadListItem.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +44 -7
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +25 -5
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
- package/dist/primitives/threadListItemMore/scope.js.map +1 -1
- package/dist/primitives/threadListItemMore.js.map +1 -1
- package/dist/sandbox-host/SandboxHost.js.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
- package/dist/tests/setup.js.map +1 -1
- package/dist/unstable/useComposerInputHistory.d.ts +30 -0
- package/dist/unstable/useComposerInputHistory.d.ts.map +1 -0
- package/dist/unstable/useComposerInputHistory.js +117 -0
- package/dist/unstable/useComposerInputHistory.js.map +1 -0
- package/dist/unstable/useMentionAdapter.js.map +1 -1
- package/dist/unstable/useMessageStallDetection.d.ts +29 -0
- package/dist/unstable/useMessageStallDetection.d.ts.map +1 -0
- package/dist/unstable/useMessageStallDetection.js +69 -0
- package/dist/unstable/useMessageStallDetection.js.map +1 -0
- package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
- package/dist/utils/Primitive.js +57 -12
- package/dist/utils/Primitive.js.map +1 -1
- package/dist/utils/createActionButton.js +23 -7
- package/dist/utils/createActionButton.js.map +1 -1
- package/dist/utils/getSelectionMessageId.js.map +1 -1
- package/dist/utils/hooks/useManagedRef.js +16 -8
- package/dist/utils/hooks/useManagedRef.js.map +1 -1
- package/dist/utils/hooks/useMediaQuery.js +25 -10
- package/dist/utils/hooks/useMediaQuery.js.map +1 -1
- package/dist/utils/hooks/useOnResizeContent.js +29 -19
- package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.js +20 -4
- package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
- package/dist/utils/hooks/useSizeHandle.js +23 -15
- package/dist/utils/hooks/useSizeHandle.js.map +1 -1
- package/dist/utils/json/is-json-equal.js.map +1 -1
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/smooth/SmoothContext.js +41 -11
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/useSmooth.d.ts +40 -2
- package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
- package/dist/utils/smooth/useSmooth.js +52 -13
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
- package/dist/utils/useToolArgsFieldStatus.d.ts.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.js +13 -5
- package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
- package/package.json +6 -6
- package/src/client/ExternalThread.ts +146 -74
- package/src/client/InMemoryThreadList.ts +23 -21
- package/src/client/SingleThreadList.ts +29 -27
- package/src/hooks/useToolCallElapsed.ts +52 -0
- package/src/index.ts +19 -0
- package/src/mcp-apps/McpAppRenderer.tsx +5 -3
- package/src/mcp-apps/McpAppsRemoteHost.ts +5 -3
- package/src/primitives/composer/ComposerInput.test.tsx +1 -1
- package/src/primitives/composer/ComposerInput.tsx +3 -3
- package/src/primitives/composer/trigger/TriggerPopover.tsx +4 -5
- package/src/primitives/composer/trigger/TriggerPopoverResource.ts +5 -3
- package/src/primitives/composer/trigger/triggerDetectionResource.ts +21 -21
- package/src/primitives/composer/trigger/triggerKeyboardResource.test.ts +5 -4
- package/src/primitives/composer/trigger/triggerKeyboardResource.ts +99 -101
- package/src/primitives/composer/trigger/triggerNavigationResource.ts +92 -98
- package/src/primitives/composer/trigger/triggerSelectionResource.ts +76 -76
- package/src/primitives/messagePart/MessagePartText.tsx +3 -2
- package/src/primitives/reasoning/useScrollLock.ts +25 -2
- package/src/primitives/thread/useThreadViewportAutoScroll.ts +8 -0
- package/src/tests/external-thread-branches.test.tsx +160 -0
- package/src/tests/shouldContinue.test.ts +33 -0
- package/src/tests/toolCallTiming.test.tsx +221 -0
- package/src/unstable/useComposerInputHistory.test.tsx +201 -0
- package/src/unstable/useComposerInputHistory.ts +160 -0
- package/src/unstable/useMessageStallDetection.ts +91 -0
- package/src/utils/smooth/useSmooth.test.tsx +95 -0
- package/src/utils/smooth/useSmooth.ts +82 -10
|
@@ -4,7 +4,8 @@ import { useComposerInputPluginRegistryOptional } from "../ComposerInputPluginCo
|
|
|
4
4
|
import { useTriggerPopoverAriaPublish, useTriggerPopoverRootContext } from "./TriggerPopoverRootContext.js";
|
|
5
5
|
import { TriggerPopoverResource } from "./TriggerPopoverResource.js";
|
|
6
6
|
import { useAui, useAuiState } from "@assistant-ui/store";
|
|
7
|
-
import {
|
|
7
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
8
|
+
import { createContext, forwardRef, useContext, useEffect, useEffectEvent, useId, useRef, useState } from "@assistant-ui/tap/react-shim";
|
|
8
9
|
import { jsx } from "react/jsx-runtime";
|
|
9
10
|
import { useResource } from "@assistant-ui/tap";
|
|
10
11
|
//#region src/primitives/composer/trigger/TriggerPopover.tsx
|
|
@@ -14,7 +15,9 @@ const useTriggerPopoverScopeContext = () => {
|
|
|
14
15
|
if (!ctx) throw new Error("useTriggerPopoverScopeContext must be used within ComposerPrimitive.TriggerPopover");
|
|
15
16
|
return ctx;
|
|
16
17
|
};
|
|
17
|
-
const useTriggerPopoverScopeContextOptional = () =>
|
|
18
|
+
const useTriggerPopoverScopeContextOptional = () => {
|
|
19
|
+
return useContext(TriggerPopoverScopeContext);
|
|
20
|
+
};
|
|
18
21
|
const TriggerBehaviorRegistrationContext = createContext(null);
|
|
19
22
|
/** Obtain the registration handle from the parent `<TriggerPopover>`. */
|
|
20
23
|
const useTriggerBehaviorRegistration = () => {
|
|
@@ -49,97 +52,234 @@ const useTriggerBehaviorRegistration = () => {
|
|
|
49
52
|
* </ComposerPrimitive.Unstable_TriggerPopover>
|
|
50
53
|
* ```
|
|
51
54
|
*/
|
|
52
|
-
const ComposerPrimitiveTriggerPopover = forwardRef((
|
|
55
|
+
const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
|
|
56
|
+
const $ = c(59);
|
|
57
|
+
let adapter;
|
|
58
|
+
let ariaLabel;
|
|
59
|
+
let char;
|
|
60
|
+
let children;
|
|
61
|
+
let props;
|
|
62
|
+
if ($[0] !== t0) {
|
|
63
|
+
({char, adapter, "aria-label": ariaLabel, children, ...props} = t0);
|
|
64
|
+
$[0] = t0;
|
|
65
|
+
$[1] = adapter;
|
|
66
|
+
$[2] = ariaLabel;
|
|
67
|
+
$[3] = char;
|
|
68
|
+
$[4] = children;
|
|
69
|
+
$[5] = props;
|
|
70
|
+
} else {
|
|
71
|
+
adapter = $[1];
|
|
72
|
+
ariaLabel = $[2];
|
|
73
|
+
char = $[3];
|
|
74
|
+
children = $[4];
|
|
75
|
+
props = $[5];
|
|
76
|
+
}
|
|
53
77
|
const aui = useAui();
|
|
54
|
-
const text = useAuiState(
|
|
78
|
+
const text = useAuiState(_temp);
|
|
55
79
|
const popoverId = useId();
|
|
56
80
|
const behaviorRef = useRef(null);
|
|
57
81
|
const [behavior, setBehavior] = useState(null);
|
|
58
82
|
const registrationCountRef = useRef(0);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
83
|
+
let t1;
|
|
84
|
+
if ($[6] !== char) {
|
|
85
|
+
t1 = (next) => {
|
|
86
|
+
registrationCountRef.current = registrationCountRef.current + 1;
|
|
87
|
+
if (process.env.NODE_ENV !== "production" && registrationCountRef.current > 1) console.warn(`[assistant-ui] TriggerPopover "${char}" received more than one behavior child. Exactly one <TriggerPopover.Directive> or <TriggerPopover.Action> is allowed per TriggerPopover; the last registration wins.`);
|
|
88
|
+
behaviorRef.current = next;
|
|
89
|
+
setBehavior(next);
|
|
90
|
+
return () => {
|
|
91
|
+
registrationCountRef.current = Math.max(0, registrationCountRef.current - 1);
|
|
92
|
+
if (behaviorRef.current === next) {
|
|
93
|
+
behaviorRef.current = null;
|
|
94
|
+
setBehavior(null);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
70
97
|
};
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
const
|
|
82
|
-
|
|
98
|
+
$[6] = char;
|
|
99
|
+
$[7] = t1;
|
|
100
|
+
} else t1 = $[7];
|
|
101
|
+
const register = t1;
|
|
102
|
+
let t2;
|
|
103
|
+
if ($[8] !== register) {
|
|
104
|
+
t2 = { register };
|
|
105
|
+
$[8] = register;
|
|
106
|
+
$[9] = t2;
|
|
107
|
+
} else t2 = $[9];
|
|
108
|
+
const registration = t2;
|
|
109
|
+
const t3 = behavior ?? void 0;
|
|
110
|
+
let t4;
|
|
111
|
+
if ($[10] !== adapter || $[11] !== aui || $[12] !== char || $[13] !== popoverId || $[14] !== t3 || $[15] !== text) {
|
|
112
|
+
t4 = TriggerPopoverResource({
|
|
113
|
+
adapter,
|
|
114
|
+
text,
|
|
115
|
+
triggerChar: char,
|
|
116
|
+
behavior: t3,
|
|
117
|
+
aui,
|
|
118
|
+
popoverId
|
|
119
|
+
});
|
|
120
|
+
$[10] = adapter;
|
|
121
|
+
$[11] = aui;
|
|
122
|
+
$[12] = char;
|
|
123
|
+
$[13] = popoverId;
|
|
124
|
+
$[14] = t3;
|
|
125
|
+
$[15] = text;
|
|
126
|
+
$[16] = t4;
|
|
127
|
+
} else t4 = $[16];
|
|
128
|
+
const resource = useResource(t4);
|
|
129
|
+
let t5;
|
|
130
|
+
if ($[17] !== resource) {
|
|
131
|
+
t5 = () => resource;
|
|
132
|
+
$[17] = resource;
|
|
133
|
+
$[18] = t5;
|
|
134
|
+
} else t5 = $[18];
|
|
135
|
+
const getResource = useEffectEvent(t5);
|
|
83
136
|
const root = useTriggerPopoverRootContext();
|
|
84
|
-
|
|
85
|
-
|
|
137
|
+
let t6;
|
|
138
|
+
if ($[19] !== behavior || $[20] !== char || $[21] !== getResource || $[22] !== root) {
|
|
139
|
+
t6 = () => root.register({
|
|
86
140
|
char,
|
|
87
141
|
...behavior ? { behavior } : {},
|
|
88
|
-
resource:
|
|
142
|
+
resource: getResource()
|
|
89
143
|
});
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
144
|
+
$[19] = behavior;
|
|
145
|
+
$[20] = char;
|
|
146
|
+
$[21] = getResource;
|
|
147
|
+
$[22] = root;
|
|
148
|
+
$[23] = t6;
|
|
149
|
+
} else t6 = $[23];
|
|
150
|
+
let t7;
|
|
151
|
+
if ($[24] !== behavior || $[25] !== char || $[26] !== root) {
|
|
152
|
+
t7 = [
|
|
153
|
+
root,
|
|
154
|
+
char,
|
|
155
|
+
behavior
|
|
156
|
+
];
|
|
157
|
+
$[24] = behavior;
|
|
158
|
+
$[25] = char;
|
|
159
|
+
$[26] = root;
|
|
160
|
+
$[27] = t7;
|
|
161
|
+
} else t7 = $[27];
|
|
162
|
+
useEffect(t6, t7);
|
|
95
163
|
const pluginRegistry = useComposerInputPluginRegistryOptional();
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
164
|
+
let t8;
|
|
165
|
+
if ($[28] !== getResource || $[29] !== pluginRegistry) {
|
|
166
|
+
t8 = () => {
|
|
167
|
+
if (!pluginRegistry) return;
|
|
168
|
+
return pluginRegistry.register(getResource());
|
|
169
|
+
};
|
|
170
|
+
$[28] = getResource;
|
|
171
|
+
$[29] = pluginRegistry;
|
|
172
|
+
$[30] = t8;
|
|
173
|
+
} else t8 = $[30];
|
|
174
|
+
let t9;
|
|
175
|
+
if ($[31] !== pluginRegistry) {
|
|
176
|
+
t9 = [pluginRegistry];
|
|
177
|
+
$[31] = pluginRegistry;
|
|
178
|
+
$[32] = t9;
|
|
179
|
+
} else t9 = $[32];
|
|
180
|
+
useEffect(t8, t9);
|
|
100
181
|
const open = behavior !== null && resource.open;
|
|
101
182
|
const aria = useTriggerPopoverAriaPublish();
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
183
|
+
let t10;
|
|
184
|
+
let t11;
|
|
185
|
+
if ($[33] !== aria || $[34] !== char || $[35] !== open) {
|
|
186
|
+
t10 = () => {
|
|
187
|
+
if (!open) return;
|
|
188
|
+
return () => {
|
|
189
|
+
aria.setActiveAria(char, null);
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
t11 = [
|
|
193
|
+
aria,
|
|
194
|
+
char,
|
|
195
|
+
open
|
|
196
|
+
];
|
|
197
|
+
$[33] = aria;
|
|
198
|
+
$[34] = char;
|
|
199
|
+
$[35] = open;
|
|
200
|
+
$[36] = t10;
|
|
201
|
+
$[37] = t11;
|
|
202
|
+
} else {
|
|
203
|
+
t10 = $[36];
|
|
204
|
+
t11 = $[37];
|
|
205
|
+
}
|
|
206
|
+
useEffect(t10, t11);
|
|
207
|
+
let t12;
|
|
208
|
+
let t13;
|
|
209
|
+
if ($[38] !== aria || $[39] !== char || $[40] !== open || $[41] !== popoverId || $[42] !== resource.highlightedItemId) {
|
|
210
|
+
t12 = () => {
|
|
211
|
+
if (!open) return;
|
|
212
|
+
aria.setActiveAria(char, {
|
|
213
|
+
popoverId,
|
|
214
|
+
highlightedItemId: resource.highlightedItemId
|
|
215
|
+
});
|
|
106
216
|
};
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
open
|
|
111
|
-
]);
|
|
112
|
-
useEffect(() => {
|
|
113
|
-
if (!open) return;
|
|
114
|
-
aria.setActiveAria(char, {
|
|
217
|
+
t13 = [
|
|
218
|
+
aria,
|
|
219
|
+
char,
|
|
115
220
|
popoverId,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
aria
|
|
120
|
-
char
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
resource.highlightedItemId
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
221
|
+
open,
|
|
222
|
+
resource.highlightedItemId
|
|
223
|
+
];
|
|
224
|
+
$[38] = aria;
|
|
225
|
+
$[39] = char;
|
|
226
|
+
$[40] = open;
|
|
227
|
+
$[41] = popoverId;
|
|
228
|
+
$[42] = resource.highlightedItemId;
|
|
229
|
+
$[43] = t12;
|
|
230
|
+
$[44] = t13;
|
|
231
|
+
} else {
|
|
232
|
+
t12 = $[43];
|
|
233
|
+
t13 = $[44];
|
|
234
|
+
}
|
|
235
|
+
useEffect(t12, t13);
|
|
236
|
+
let t14;
|
|
237
|
+
if ($[45] !== ariaLabel || $[46] !== children || $[47] !== forwardedRef || $[48] !== open || $[49] !== popoverId || $[50] !== props || $[51] !== resource.highlightedItemId) {
|
|
238
|
+
t14 = open ? /* @__PURE__ */ jsx(Primitive.div, {
|
|
239
|
+
role: "listbox",
|
|
240
|
+
id: popoverId,
|
|
241
|
+
"aria-label": ariaLabel ?? "Suggestions",
|
|
242
|
+
"aria-activedescendant": resource.highlightedItemId,
|
|
243
|
+
"data-state": "open",
|
|
244
|
+
...props,
|
|
245
|
+
ref: forwardedRef,
|
|
246
|
+
children
|
|
247
|
+
}) : children;
|
|
248
|
+
$[45] = ariaLabel;
|
|
249
|
+
$[46] = children;
|
|
250
|
+
$[47] = forwardedRef;
|
|
251
|
+
$[48] = open;
|
|
252
|
+
$[49] = popoverId;
|
|
253
|
+
$[50] = props;
|
|
254
|
+
$[51] = resource.highlightedItemId;
|
|
255
|
+
$[52] = t14;
|
|
256
|
+
} else t14 = $[52];
|
|
257
|
+
let t15;
|
|
258
|
+
if ($[53] !== resource || $[54] !== t14) {
|
|
259
|
+
t15 = /* @__PURE__ */ jsx(TriggerPopoverScopeContext.Provider, {
|
|
128
260
|
value: resource,
|
|
129
|
-
children:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
261
|
+
children: t14
|
|
262
|
+
});
|
|
263
|
+
$[53] = resource;
|
|
264
|
+
$[54] = t14;
|
|
265
|
+
$[55] = t15;
|
|
266
|
+
} else t15 = $[55];
|
|
267
|
+
let t16;
|
|
268
|
+
if ($[56] !== registration || $[57] !== t15) {
|
|
269
|
+
t16 = /* @__PURE__ */ jsx(TriggerBehaviorRegistrationContext.Provider, {
|
|
270
|
+
value: registration,
|
|
271
|
+
children: t15
|
|
272
|
+
});
|
|
273
|
+
$[56] = registration;
|
|
274
|
+
$[57] = t15;
|
|
275
|
+
$[58] = t16;
|
|
276
|
+
} else t16 = $[58];
|
|
277
|
+
return t16;
|
|
141
278
|
});
|
|
142
279
|
ComposerPrimitiveTriggerPopover.displayName = "ComposerPrimitive.TriggerPopover";
|
|
280
|
+
function _temp(s) {
|
|
281
|
+
return s.composer.text;
|
|
282
|
+
}
|
|
143
283
|
//#endregion
|
|
144
284
|
export { ComposerPrimitiveTriggerPopover, useTriggerBehaviorRegistration, useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional };
|
|
145
285
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopover.js","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\nimport { useResource } from \"@assistant-ui/tap\";\nimport type { Unstable_TriggerAdapter } from \"@assistant-ui/core\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ComponentRef,\n} from \"react\";\nimport { Primitive } from \"../../../utils/Primitive\";\nimport { useComposerInputPluginRegistryOptional } from \"../ComposerInputPluginContext\";\nimport {\n TriggerPopoverResource,\n type TriggerPopoverResourceOutput,\n} from \"./TriggerPopoverResource\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\nimport {\n useTriggerPopoverAriaPublish,\n useTriggerPopoverRootContext,\n} from \"./TriggerPopoverRootContext\";\n\nconst TriggerPopoverScopeContext =\n createContext<TriggerPopoverResourceOutput | null>(null);\n\nexport const useTriggerPopoverScopeContext = () => {\n const ctx = useContext(TriggerPopoverScopeContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverScopeContext must be used within ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport const useTriggerPopoverScopeContextOptional = () =>\n useContext(TriggerPopoverScopeContext);\n\n/** Registration API exposed to behavior sub-primitives. */\nexport type TriggerBehaviorRegistration = {\n register(behavior: TriggerBehavior): () => void;\n};\n\nconst TriggerBehaviorRegistrationContext =\n createContext<TriggerBehaviorRegistration | null>(null);\n\n/** Obtain the registration handle from the parent `<TriggerPopover>`. */\nexport const useTriggerBehaviorRegistration = () => {\n const ctx = useContext(TriggerBehaviorRegistrationContext);\n if (!ctx)\n throw new Error(\n \"TriggerPopover.Directive / TriggerPopover.Action must be rendered inside ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport namespace ComposerPrimitiveTriggerPopover {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"onSelect\"\n > & {\n /** The character(s) that activate this trigger (e.g. `\"@\"`, `\"/\"`). Also serves as the trigger identity within the root. */\n readonly char: string;\n /** Adapter providing categories and items. */\n readonly adapter?: Unstable_TriggerAdapter | undefined;\n };\n}\n\n/**\n * Declares a trigger and renders its popover container. The popover only\n * renders its DOM (and children) when the trigger character is active in the\n * composer input and a behavior sub-primitive has been registered.\n *\n * A behavior is contributed by rendering exactly one of\n * `<TriggerPopover.Directive>` or `<TriggerPopover.Action>` as a child. Without\n * a behavior the trigger stays closed.\n *\n * Must be placed inside `ComposerPrimitive.Unstable_TriggerPopoverRoot`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover\n * char=\"@\"\n * adapter={mentionAdapter}\n * >\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive formatter={formatter} />\n * <ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * {(cats) => cats.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * <ComposerPrimitive.Unstable_TriggerPopoverItems>\n * {(items) => items.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverItems>\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopover = forwardRef<\n ComposerPrimitiveTriggerPopover.Element,\n ComposerPrimitiveTriggerPopover.Props\n>(\n (\n { char, adapter, \"aria-label\": ariaLabel, children, ...props },\n forwardedRef,\n ) => {\n const aui = useAui();\n const text = useAuiState((s) => s.composer.text);\n const popoverId = useId();\n\n // Track in state (for resource reactivity) + ref (dev warning on duplicate registrations).\n const behaviorRef = useRef<TriggerBehavior | null>(null);\n const [behavior, setBehavior] = useState<TriggerBehavior | null>(null);\n const registrationCountRef = useRef(0);\n\n const register = useCallback<TriggerBehaviorRegistration[\"register\"]>(\n (next) => {\n registrationCountRef.current += 1;\n if (\n process.env.NODE_ENV !== \"production\" &&\n registrationCountRef.current > 1\n ) {\n console.warn(\n `[assistant-ui] TriggerPopover \"${char}\" received more than one behavior child. Exactly one <TriggerPopover.Directive> or <TriggerPopover.Action> is allowed per TriggerPopover; the last registration wins.`,\n );\n }\n behaviorRef.current = next;\n setBehavior(next);\n return () => {\n registrationCountRef.current = Math.max(\n 0,\n registrationCountRef.current - 1,\n );\n if (behaviorRef.current === next) {\n behaviorRef.current = null;\n setBehavior(null);\n }\n };\n },\n [char],\n );\n\n const registration = useMemo<TriggerBehaviorRegistration>(\n () => ({ register }),\n [register],\n );\n\n const resource = useResource(\n TriggerPopoverResource({\n adapter,\n text,\n triggerChar: char,\n behavior: behavior ?? undefined,\n aui,\n popoverId,\n }),\n );\n\n // Wrapper changes per render, but tap-stable methods inside don't.\n const resourceRef = useRef(resource);\n resourceRef.current = resource;\n\n const root = useTriggerPopoverRootContext();\n useEffect(() => {\n return root.register({\n char,\n ...(behavior ? { behavior } : {}),\n resource: resourceRef.current,\n });\n }, [root, char, behavior]);\n\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n useEffect(() => {\n if (!pluginRegistry) return undefined;\n return pluginRegistry.register(resourceRef.current);\n }, [pluginRegistry]);\n\n const open = behavior !== null && resource.open;\n\n const aria = useTriggerPopoverAriaPublish();\n\n useEffect(() => {\n if (!open) return undefined;\n return () => {\n aria.setActiveAria(char, null);\n };\n }, [aria, char, open]);\n\n useEffect(() => {\n if (!open) return;\n aria.setActiveAria(char, {\n popoverId,\n highlightedItemId: resource.highlightedItemId,\n });\n }, [aria, char, popoverId, open, resource.highlightedItemId]);\n\n return (\n <TriggerBehaviorRegistrationContext.Provider value={registration}>\n <TriggerPopoverScopeContext.Provider value={resource}>\n {open ? (\n <Primitive.div\n role=\"listbox\"\n id={popoverId}\n aria-label={ariaLabel ?? \"Suggestions\"}\n aria-activedescendant={resource.highlightedItemId}\n data-state=\"open\"\n {...props}\n ref={forwardedRef}\n >\n {children}\n </Primitive.div>\n ) : (\n children\n )}\n </TriggerPopoverScopeContext.Provider>\n </TriggerBehaviorRegistrationContext.Provider>\n );\n },\n);\n\nComposerPrimitiveTriggerPopover.displayName =\n \"ComposerPrimitive.TriggerPopover\";\n"],"mappings":";;;;;;;;;;AA8BA,MAAM,6BACJ,cAAmD,IAAI;AAEzD,MAAa,sCAAsC;CACjD,MAAM,MAAM,WAAW,0BAA0B;CACjD,IAAI,CAAC,KACH,MAAM,IAAI,MACR,oFACF;CACF,OAAO;AACT;AAEA,MAAa,8CACX,WAAW,0BAA0B;AAOvC,MAAM,qCACJ,cAAkD,IAAI;;AAGxD,MAAa,uCAAuC;CAClD,MAAM,MAAM,WAAW,kCAAkC;CACzD,IAAI,CAAC,KACH,MAAM,IAAI,MACR,2GACF;CACF,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,MAAa,kCAAkC,YAK3C,EAAE,MAAM,SAAS,cAAc,WAAW,UAAU,GAAG,SACvD,iBACG;CACH,MAAM,MAAM,OAAO;CACnB,MAAM,OAAO,aAAa,MAAM,EAAE,SAAS,IAAI;CAC/C,MAAM,YAAY,MAAM;CAGxB,MAAM,cAAc,OAA+B,IAAI;CACvD,MAAM,CAAC,UAAU,eAAe,SAAiC,IAAI;CACrE,MAAM,uBAAuB,OAAO,CAAC;CAErC,MAAM,WAAW,aACd,SAAS;EACR,qBAAqB,WAAW;EAChC,IACE,QAAQ,IAAI,aAAa,gBACzB,qBAAqB,UAAU,GAE/B,QAAQ,KACN,kCAAkC,KAAK,sKACzC;EAEF,YAAY,UAAU;EACtB,YAAY,IAAI;EAChB,aAAa;GACX,qBAAqB,UAAU,KAAK,IAClC,GACA,qBAAqB,UAAU,CACjC;GACA,IAAI,YAAY,YAAY,MAAM;IAChC,YAAY,UAAU;IACtB,YAAY,IAAI;GAClB;EACF;CACF,GACA,CAAC,IAAI,CACP;CAEA,MAAM,eAAe,eACZ,EAAE,SAAS,IAClB,CAAC,QAAQ,CACX;CAEA,MAAM,WAAW,YACf,uBAAuB;EACrB;EACA;EACA,aAAa;EACb,UAAU,YAAY,KAAA;EACtB;EACA;CACF,CAAC,CACH;CAGA,MAAM,cAAc,OAAO,QAAQ;CACnC,YAAY,UAAU;CAEtB,MAAM,OAAO,6BAA6B;CAC1C,gBAAgB;EACd,OAAO,KAAK,SAAS;GACnB;GACA,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;GAC/B,UAAU,YAAY;EACxB,CAAC;CACH,GAAG;EAAC;EAAM;EAAM;CAAQ,CAAC;CAEzB,MAAM,iBAAiB,uCAAuC;CAC9D,gBAAgB;EACd,IAAI,CAAC,gBAAgB,OAAO,KAAA;EAC5B,OAAO,eAAe,SAAS,YAAY,OAAO;CACpD,GAAG,CAAC,cAAc,CAAC;CAEnB,MAAM,OAAO,aAAa,QAAQ,SAAS;CAE3C,MAAM,OAAO,6BAA6B;CAE1C,gBAAgB;EACd,IAAI,CAAC,MAAM,OAAO,KAAA;EAClB,aAAa;GACX,KAAK,cAAc,MAAM,IAAI;EAC/B;CACF,GAAG;EAAC;EAAM;EAAM;CAAI,CAAC;CAErB,gBAAgB;EACd,IAAI,CAAC,MAAM;EACX,KAAK,cAAc,MAAM;GACvB;GACA,mBAAmB,SAAS;EAC9B,CAAC;CACH,GAAG;EAAC;EAAM;EAAM;EAAW;EAAM,SAAS;CAAiB,CAAC;CAE5D,OACE,oBAAC,mCAAmC,UAApC;EAA6C,OAAO;YAClD,oBAAC,2BAA2B,UAA5B;GAAqC,OAAO;aACzC,OACC,oBAAC,UAAU,KAAX;IACE,MAAK;IACL,IAAI;IACJ,cAAY,aAAa;IACzB,yBAAuB,SAAS;IAChC,cAAW;IACX,GAAI;IACJ,KAAK;IAEJ;GACY,CAAA,IAEf;EAEiC,CAAA;CACM,CAAA;AAEjD,CACF;AAEA,gCAAgC,cAC9B"}
|
|
1
|
+
{"version":3,"file":"TriggerPopover.js","names":["c","_c","useAui","useAuiState","useResource","Unstable_TriggerAdapter","createContext","forwardRef","useCallback","useContext","useEffect","useEffectEvent","useId","useMemo","useRef","useState","ComponentPropsWithoutRef","ComponentRef","Primitive","useComposerInputPluginRegistryOptional","TriggerPopoverResource","TriggerPopoverResourceOutput","TriggerBehavior","useTriggerPopoverAriaPublish","useTriggerPopoverRootContext","TriggerPopoverScopeContext","useTriggerPopoverScopeContext","ctx","Error","useTriggerPopoverScopeContextOptional","TriggerBehaviorRegistration","register","behavior","TriggerBehaviorRegistrationContext","useTriggerBehaviorRegistration","ComposerPrimitiveTriggerPopover","Element","div","Props","Omit","char","adapter","t0","forwardedRef","$","ariaLabel","children","props","aui","text","_temp","popoverId","behaviorRef","setBehavior","registrationCountRef","t1","next","current","process","env","NODE_ENV","console","warn","Math","max","t2","registration","t3","undefined","t4","triggerChar","resource","t5","getResource","root","t6","t7","pluginRegistry","t8","t9","open","aria","t10","t11","setActiveAria","t12","t13","highlightedItemId","t14","t15","t16","displayName","s","composer"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\nimport { useResource } from \"@assistant-ui/tap\";\nimport type { Unstable_TriggerAdapter } from \"@assistant-ui/core\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useEffectEvent,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ComponentRef,\n} from \"react\";\nimport { Primitive } from \"../../../utils/Primitive\";\nimport { useComposerInputPluginRegistryOptional } from \"../ComposerInputPluginContext\";\nimport {\n TriggerPopoverResource,\n type TriggerPopoverResourceOutput,\n} from \"./TriggerPopoverResource\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\nimport {\n useTriggerPopoverAriaPublish,\n useTriggerPopoverRootContext,\n} from \"./TriggerPopoverRootContext\";\n\nconst TriggerPopoverScopeContext =\n createContext<TriggerPopoverResourceOutput | null>(null);\n\nexport const useTriggerPopoverScopeContext = () => {\n const ctx = useContext(TriggerPopoverScopeContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverScopeContext must be used within ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport const useTriggerPopoverScopeContextOptional = () =>\n useContext(TriggerPopoverScopeContext);\n\n/** Registration API exposed to behavior sub-primitives. */\nexport type TriggerBehaviorRegistration = {\n register(behavior: TriggerBehavior): () => void;\n};\n\nconst TriggerBehaviorRegistrationContext =\n createContext<TriggerBehaviorRegistration | null>(null);\n\n/** Obtain the registration handle from the parent `<TriggerPopover>`. */\nexport const useTriggerBehaviorRegistration = () => {\n const ctx = useContext(TriggerBehaviorRegistrationContext);\n if (!ctx)\n throw new Error(\n \"TriggerPopover.Directive / TriggerPopover.Action must be rendered inside ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport namespace ComposerPrimitiveTriggerPopover {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"onSelect\"\n > & {\n /** The character(s) that activate this trigger (e.g. `\"@\"`, `\"/\"`). Also serves as the trigger identity within the root. */\n readonly char: string;\n /** Adapter providing categories and items. */\n readonly adapter?: Unstable_TriggerAdapter | undefined;\n };\n}\n\n/**\n * Declares a trigger and renders its popover container. The popover only\n * renders its DOM (and children) when the trigger character is active in the\n * composer input and a behavior sub-primitive has been registered.\n *\n * A behavior is contributed by rendering exactly one of\n * `<TriggerPopover.Directive>` or `<TriggerPopover.Action>` as a child. Without\n * a behavior the trigger stays closed.\n *\n * Must be placed inside `ComposerPrimitive.Unstable_TriggerPopoverRoot`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover\n * char=\"@\"\n * adapter={mentionAdapter}\n * >\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive formatter={formatter} />\n * <ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * {(cats) => cats.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * <ComposerPrimitive.Unstable_TriggerPopoverItems>\n * {(items) => items.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverItems>\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopover = forwardRef<\n ComposerPrimitiveTriggerPopover.Element,\n ComposerPrimitiveTriggerPopover.Props\n>(\n (\n { char, adapter, \"aria-label\": ariaLabel, children, ...props },\n forwardedRef,\n ) => {\n const aui = useAui();\n const text = useAuiState((s) => s.composer.text);\n const popoverId = useId();\n\n // Track in state (for resource reactivity) + ref (dev warning on duplicate registrations).\n const behaviorRef = useRef<TriggerBehavior | null>(null);\n const [behavior, setBehavior] = useState<TriggerBehavior | null>(null);\n const registrationCountRef = useRef(0);\n\n const register = useCallback<TriggerBehaviorRegistration[\"register\"]>(\n (next) => {\n registrationCountRef.current += 1;\n if (\n process.env.NODE_ENV !== \"production\" &&\n registrationCountRef.current > 1\n ) {\n console.warn(\n `[assistant-ui] TriggerPopover \"${char}\" received more than one behavior child. Exactly one <TriggerPopover.Directive> or <TriggerPopover.Action> is allowed per TriggerPopover; the last registration wins.`,\n );\n }\n behaviorRef.current = next;\n setBehavior(next);\n return () => {\n registrationCountRef.current = Math.max(\n 0,\n registrationCountRef.current - 1,\n );\n if (behaviorRef.current === next) {\n behaviorRef.current = null;\n setBehavior(null);\n }\n };\n },\n [char],\n );\n\n const registration = useMemo<TriggerBehaviorRegistration>(\n () => ({ register }),\n [register],\n );\n\n const resource = useResource(\n TriggerPopoverResource({\n adapter,\n text,\n triggerChar: char,\n behavior: behavior ?? undefined,\n aui,\n popoverId,\n }),\n );\n\n const getResource = useEffectEvent(() => resource);\n\n const root = useTriggerPopoverRootContext();\n useEffect(() => {\n return root.register({\n char,\n ...(behavior ? { behavior } : {}),\n resource: getResource(),\n });\n }, [root, char, behavior]);\n\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n useEffect(() => {\n if (!pluginRegistry) return undefined;\n return pluginRegistry.register(getResource());\n }, [pluginRegistry]);\n\n const open = behavior !== null && resource.open;\n\n const aria = useTriggerPopoverAriaPublish();\n\n useEffect(() => {\n if (!open) return undefined;\n return () => {\n aria.setActiveAria(char, null);\n };\n }, [aria, char, open]);\n\n useEffect(() => {\n if (!open) return;\n aria.setActiveAria(char, {\n popoverId,\n highlightedItemId: resource.highlightedItemId,\n });\n }, [aria, char, popoverId, open, resource.highlightedItemId]);\n\n return (\n <TriggerBehaviorRegistrationContext.Provider value={registration}>\n <TriggerPopoverScopeContext.Provider value={resource}>\n {open ? (\n <Primitive.div\n role=\"listbox\"\n id={popoverId}\n aria-label={ariaLabel ?? \"Suggestions\"}\n aria-activedescendant={resource.highlightedItemId}\n data-state=\"open\"\n {...props}\n ref={forwardedRef}\n >\n {children}\n </Primitive.div>\n ) : (\n children\n )}\n </TriggerPopoverScopeContext.Provider>\n </TriggerBehaviorRegistrationContext.Provider>\n );\n },\n);\n\nComposerPrimitiveTriggerPopover.displayName =\n \"ComposerPrimitive.TriggerPopover\";\n"],"mappings":";;;;;;;;;;;AA+BA,MAAMyB,6BACJnB,cAAmD,IAAI;AAEzD,MAAaoB,sCAAgC;CAC3C,MAAAC,MAAYlB,WAAWgB,0BAA0B;CACjD,IAAI,CAACE,KACH,MAAM,IAAIC,MACR,oFACF;CAAE,OACGD;AAAG;AAGZ,MAAaE,8CAAwC;CAAA,OACnDpB,WAAWgB,0BAA0B;AAAC;AAOxC,MAAMQ,qCACJ3B,cAAkD,IAAI;;AAGxD,MAAa4B,uCAAiC;CAC5C,MAAAP,MAAYlB,WAAWwB,kCAAkC;CACzD,IAAI,CAACN,KACH,MAAM,IAAIC,MACR,2GACF;CAAE,OACGD;AAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CZ,MAAaQ,kCAAkC5B,YAI7CmC,IAAAC,iBAAA;CAAA,MAAAC,IAAA3C,EAAA,EAAA;CAAA,IAAAwC;CAAA,IAAAI;CAAA,IAAAL;CAAA,IAAAM;CAAA,IAAAC;CAAA,IAAAH,EAAA,OAAAF,IAAA;EACE,CAAA,CAAAF,MAAAC,SAAA,cAAAI,WAAAC,aAAAC,SAAAL;EAA8DE,EAAA,KAAAF;EAAAE,EAAA,KAAAH;EAAAG,EAAA,KAAAC;EAAAD,EAAA,KAAAJ;EAAAI,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAA;EAAAN,UAAAG,EAAA;EAAAC,YAAAD,EAAA;EAAAJ,OAAAI,EAAA;EAAAE,WAAAF,EAAA;EAAAG,QAAAH,EAAA;CAAA;CAG9D,MAAAI,MAAY9C,OAAO;CACnB,MAAA+C,OAAa9C,YAAY+C,KAAsB;CAC/C,MAAAC,YAAkBvC,MAAM;CAGxB,MAAAwC,cAAoBtC,OAA+B,IAAI;CACvD,MAAA,CAAAkB,UAAAqB,eAAgCtC,SAAiC,IAAI;CACrE,MAAAuC,uBAA6BxC,OAAO,CAAC;CAAE,IAAAyC;CAAA,IAAAX,EAAA,OAAAJ,MAAA;EAGrCe,MAAAC,SAAA;GACEF,qBAAoBG,UAApBH,qBAAoBG,UAAY;GAChC,IACEC,QAAOC,IAAIC,aAAc,gBACzBN,qBAAoBG,UAAW,GAE/BI,QAAOC,KACL,kCAAkCtB,KAAI,sKACxC;GAEFY,YAAWK,UAAWD;GACtBH,YAAYG,IAAI;GAAC,aACV;IACLF,qBAAoBG,UAAWM,KAAIC,IACjC,GACAV,qBAAoBG,UAAW,CACjC;IACA,IAAIL,YAAWK,YAAaD,MAAI;KAC9BJ,YAAWK,UAAW;KACtBJ,YAAY,IAAI;IAAC;GAClB;EACF;EACFT,EAAA,KAAAJ;EAAAI,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAvBH,MAAAb,WAAiBwB;CAyBf,IAAAU;CAAA,IAAArB,EAAA,OAAAb,UAAA;EAGOkC,KAAA,EAAAlC,SAAW;EAACa,EAAA,KAAAb;EAAAa,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CADrB,MAAAsB,eACSD;CASK,MAAAE,KAAAnC,YAAAoC,KAAAA;CAAqB,IAAAC;CAAA,IAAAzB,EAAA,QAAAH,WAAAG,EAAA,QAAAI,OAAAJ,EAAA,QAAAJ,QAAAI,EAAA,QAAAO,aAAAP,EAAA,QAAAuB,MAAAvB,EAAA,QAAAK,MAAA;EAJjCoB,KAAAjD,uBAAuB;GAAAqB;GAAAQ;GAAAqB,aAGR9B;GAAIR,UACPmC;GAAqBnB;GAAAG;EAGjC,CAAC;EAACP,EAAA,MAAAH;EAAAG,EAAA,MAAAI;EAAAJ,EAAA,MAAAJ;EAAAI,EAAA,MAAAO;EAAAP,EAAA,MAAAuB;EAAAvB,EAAA,MAAAK;EAAAL,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CARJ,MAAA2B,WAAiBnE,YACfiE,EAQF;CAAE,IAAAG;CAAA,IAAA5B,EAAA,QAAA2B,UAAA;EAEiCC,WAAMD;EAAQ3B,EAAA,MAAA2B;EAAA3B,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAAjD,MAAA6B,cAAoB9D,eAAe6D,EAAc;CAEjD,MAAAE,OAAalD,6BAA6B;CAAE,IAAAmD;CAAA,IAAA/B,EAAA,QAAAZ,YAAAY,EAAA,QAAAJ,QAAAI,EAAA,QAAA6B,eAAA7B,EAAA,QAAA8B,MAAA;EAClCC,WACDD,KAAI3C,SAAU;GAAAS;GAAA,GAEfR,WAAA,EAAAA,SAA2B,IAA3B,CAA2B;GAACuC,UACtBE,YAAY;EACxB,CAAC;EACF7B,EAAA,MAAAZ;EAAAY,EAAA,MAAAJ;EAAAI,EAAA,MAAA6B;EAAA7B,EAAA,MAAA8B;EAAA9B,EAAA,MAAA+B;CAAA,OAAAA,KAAA/B,EAAA;CAAA,IAAAgC;CAAA,IAAAhC,EAAA,QAAAZ,YAAAY,EAAA,QAAAJ,QAAAI,EAAA,QAAA8B,MAAA;EAAEE,KAAA;GAACF;GAAMlC;GAAMR;EAAQ;EAACY,EAAA,MAAAZ;EAAAY,EAAA,MAAAJ;EAAAI,EAAA,MAAA8B;EAAA9B,EAAA,MAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CANzBlC,UAAUiE,IAMPC,EAAsB;CAEzB,MAAAC,iBAAuB1D,uCAAuC;CAAE,IAAA2D;CAAA,IAAAlC,EAAA,QAAA6B,eAAA7B,EAAA,QAAAiC,gBAAA;EACtDC,WAAA;GACR,IAAI,CAACD,gBAAc;GAAmB,OAC/BA,eAAc9C,SAAU0C,YAAY,CAAC;EAAC;EAC9C7B,EAAA,MAAA6B;EAAA7B,EAAA,MAAAiC;EAAAjC,EAAA,MAAAkC;CAAA,OAAAA,KAAAlC,EAAA;CAAA,IAAAmC;CAAA,IAAAnC,EAAA,QAAAiC,gBAAA;EAAEE,KAAA,CAACF,cAAc;EAACjC,EAAA,MAAAiC;EAAAjC,EAAA,MAAAmC;CAAA,OAAAA,KAAAnC,EAAA;CAHnBlC,UAAUoE,IAGPC,EAAgB;CAEnB,MAAAC,OAAahD,aAAa,QAAQuC,SAAQS;CAE1C,MAAAC,OAAa1D,6BAA6B;CAAE,IAAA2D;CAAA,IAAAC;CAAA,IAAAvC,EAAA,QAAAqC,QAAArC,EAAA,QAAAJ,QAAAI,EAAA,QAAAoC,MAAA;EAElCE,YAAA;GACR,IAAI,CAACF,MAAI;GAAmB,aACrB;IACLC,KAAIG,cAAe5C,MAAM,IAAI;GAAC;EAC/B;EACA2C,MAAA;GAACF;GAAMzC;GAAMwC;EAAI;EAACpC,EAAA,MAAAqC;EAAArC,EAAA,MAAAJ;EAAAI,EAAA,MAAAoC;EAAApC,EAAA,MAAAsC;EAAAtC,EAAA,MAAAuC;CAAA,OAAA;EAAAD,MAAAtC,EAAA;EAAAuC,MAAAvC,EAAA;CAAA;CALrBlC,UAAUwE,KAKPC,GAAkB;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAA1C,EAAA,QAAAqC,QAAArC,EAAA,QAAAJ,QAAAI,EAAA,QAAAoC,QAAApC,EAAA,QAAAO,aAAAP,EAAA,QAAA2B,SAAAgB,mBAAA;EAEZF,YAAA;GACR,IAAI,CAACL,MAAI;GACTC,KAAIG,cAAe5C,MAAM;IAAAW;IAAAoC,mBAEJhB,SAAQgB;GAC7B,CAAC;EAAC;EACDD,MAAA;GAACL;GAAMzC;GAAMW;GAAW6B;GAAMT,SAAQgB;EAAkB;EAAC3C,EAAA,MAAAqC;EAAArC,EAAA,MAAAJ;EAAAI,EAAA,MAAAoC;EAAApC,EAAA,MAAAO;EAAAP,EAAA,MAAA2B,SAAAgB;EAAA3C,EAAA,MAAAyC;EAAAzC,EAAA,MAAA0C;CAAA,OAAA;EAAAD,MAAAzC,EAAA;EAAA0C,MAAA1C,EAAA;CAAA;CAN5DlC,UAAU2E,KAMPC,GAAyD;CAAC,IAAAE;CAAA,IAAA5C,EAAA,QAAAC,aAAAD,EAAA,QAAAE,YAAAF,EAAA,QAAAD,gBAAAC,EAAA,QAAAoC,QAAApC,EAAA,QAAAO,aAAAP,EAAA,QAAAG,SAAAH,EAAA,QAAA2B,SAAAgB,mBAAA;EAKtDC,MAAAR,OACC,oBAAA,UAAA,KAAA;GACO,MAAA;GACD7B,IAAAA;GACQ,cAAAN,aAAA;GACW,yBAAA0B,SAAQgB;GACpB,cAAA;GAAM,GACbxC;GACCJ,KAAAA;GAEJG;EACH,CAAA,IAXDA;EAcAF,EAAA,MAAAC;EAAAD,EAAA,MAAAE;EAAAF,EAAA,MAAAD;EAAAC,EAAA,MAAAoC;EAAApC,EAAA,MAAAO;EAAAP,EAAA,MAAAG;EAAAH,EAAA,MAAA2B,SAAAgB;EAAA3C,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAAA,IAAA6C;CAAA,IAAA7C,EAAA,QAAA2B,YAAA3B,EAAA,QAAA4C,KAAA;EAfHC,MAAA,oBAAA,2BAAA,UAAA;GAA4ClB,OAAAA;aACzCiB;EAeH,CAAA;EAAsC5C,EAAA,MAAA2B;EAAA3B,EAAA,MAAA4C;EAAA5C,EAAA,MAAA6C;CAAA,OAAAA,MAAA7C,EAAA;CAAA,IAAA8C;CAAA,IAAA9C,EAAA,QAAAsB,gBAAAtB,EAAA,QAAA6C,KAAA;EAjBxCC,MAAA,oBAAA,mCAAA,UAAA;GAAoDxB,OAAAA;aAClDuB;EAiBF,CAAA;EAA8C7C,EAAA,MAAAsB;EAAAtB,EAAA,MAAA6C;EAAA7C,EAAA,MAAA8C;CAAA,OAAAA,MAAA9C,EAAA;CAAA,OAlB9C8C;AAkB8C,CAGpD;AAEAvD,gCAAgCwD,cAC9B;AArHA,SAAAzC,MAAA0C,GAAA;CAAA,OAKkCA,EAACC,SAAS5C;AAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopoverAction.js","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverAction.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 ComposerPrimitiveTriggerPopoverAction {\n export type Props = {\n /** Defaults to `unstable_defaultDirectiveFormatter`. */\n readonly formatter?: Unstable_DirectiveFormatter | undefined;\n /** Fires the moment an item is selected; runs regardless of `removeOnExecute`. */\n readonly onExecute: (item: Unstable_TriggerItem) => void;\n /** When true, strips the trigger text after executing. Defaults to `false` (keeps audit-trail chip). */\n readonly removeOnExecute?: boolean | undefined;\n };\n}\n\n/**\n * Configures a `<TriggerPopover>` to fire a handler when an item is selected,\n * optionally leaving a directive chip behind as an audit trail. Render exactly\n * one behavior sub-primitive per `<TriggerPopover>`.\n *\n * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Action`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"/\" adapter={slashAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Action\n * onExecute={(item) => commandHandlers[item.id]?.()}\n * removeOnExecute={false}\n * />\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverAction: FC<\n ComposerPrimitiveTriggerPopoverAction.Props\n> = ({ formatter, onExecute, removeOnExecute }) => {\n const { register } = useTriggerBehaviorRegistration();\n const onExecuteRef = useRef(onExecute);\n onExecuteRef.current = onExecute;\n\n useEffect(() => {\n const behavior: TriggerBehavior = {\n kind: \"action\",\n formatter: formatter ?? unstable_defaultDirectiveFormatter,\n onExecute: (item) => onExecuteRef.current(item),\n ...(removeOnExecute !== undefined ? { removeOnExecute } : {}),\n };\n return register(behavior);\n }, [register, formatter, removeOnExecute]);\n\n return null;\n};\n\nComposerPrimitiveTriggerPopoverAction.displayName =\n \"ComposerPrimitive.TriggerPopoverAction\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,
|
|
1
|
+
{"version":3,"file":"TriggerPopoverAction.js","names":["Unstable_DirectiveFormatter","Unstable_TriggerItem","unstable_defaultDirectiveFormatter","useEffect","useRef","FC","useTriggerBehaviorRegistration","TriggerBehavior","ComposerPrimitiveTriggerPopoverAction","Props","formatter","onExecute","item","removeOnExecute","register","onExecuteRef","current","behavior","kind","undefined","displayName"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverAction.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 ComposerPrimitiveTriggerPopoverAction {\n export type Props = {\n /** Defaults to `unstable_defaultDirectiveFormatter`. */\n readonly formatter?: Unstable_DirectiveFormatter | undefined;\n /** Fires the moment an item is selected; runs regardless of `removeOnExecute`. */\n readonly onExecute: (item: Unstable_TriggerItem) => void;\n /** When true, strips the trigger text after executing. Defaults to `false` (keeps audit-trail chip). */\n readonly removeOnExecute?: boolean | undefined;\n };\n}\n\n/**\n * Configures a `<TriggerPopover>` to fire a handler when an item is selected,\n * optionally leaving a directive chip behind as an audit trail. Render exactly\n * one behavior sub-primitive per `<TriggerPopover>`.\n *\n * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Action`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"/\" adapter={slashAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Action\n * onExecute={(item) => commandHandlers[item.id]?.()}\n * removeOnExecute={false}\n * />\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverAction: FC<\n ComposerPrimitiveTriggerPopoverAction.Props\n> = ({ formatter, onExecute, removeOnExecute }) => {\n const { register } = useTriggerBehaviorRegistration();\n const onExecuteRef = useRef(onExecute);\n onExecuteRef.current = onExecute;\n\n useEffect(() => {\n const behavior: TriggerBehavior = {\n kind: \"action\",\n formatter: formatter ?? unstable_defaultDirectiveFormatter,\n onExecute: (item) => onExecuteRef.current(item),\n ...(removeOnExecute !== undefined ? { removeOnExecute } : {}),\n };\n return register(behavior);\n }, [register, formatter, removeOnExecute]);\n\n return null;\n};\n\nComposerPrimitiveTriggerPopoverAction.displayName =\n \"ComposerPrimitive.TriggerPopoverAction\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAaQ,yCAER,EAAEE,WAAWC,WAAWE,sBAAsB;CACjD,MAAM,EAAEC,aAAaR,+BAA+B;CACpD,MAAMS,eAAeX,OAAOO,SAAS;CACrCI,aAAaC,UAAUL;CAEvBR,gBAAgB;EAOd,OAAOW,SAASG;GALdC,MAAM;GACNR,WAAWA,aAAaR;GACxBS,YAAYC,SAASG,aAAaC,QAAQJ,IAAI;GAC9C,GAAIC,oBAAoBM,KAAAA,IAAY,EAAEN,gBAAgB,IAAI,CAAC;EAE7CI,CAAQ;CAC1B,GAAG;EAACH;EAAUJ;EAAWG;CAAe,CAAC;CAEzC,OAAO;AACT;AAEAL,sCAAsCY,cACpC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Primitive } from "../../../utils/Primitive.js";
|
|
3
3
|
import { useTriggerPopoverScopeContext } from "./TriggerPopover.js";
|
|
4
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
4
5
|
import { forwardRef } from "@assistant-ui/tap/react-shim";
|
|
5
6
|
import { jsx } from "react/jsx-runtime";
|
|
6
7
|
import { composeEventHandlers } from "@radix-ui/primitive";
|
|
@@ -9,15 +10,42 @@ import { composeEventHandlers } from "@radix-ui/primitive";
|
|
|
9
10
|
* A button that navigates back from category items to the category list.
|
|
10
11
|
* Only renders when a category is active (drill-down view).
|
|
11
12
|
*/
|
|
12
|
-
const ComposerPrimitiveTriggerPopoverBack = forwardRef((
|
|
13
|
+
const ComposerPrimitiveTriggerPopoverBack = forwardRef((t0, forwardedRef) => {
|
|
14
|
+
const $ = c(10);
|
|
15
|
+
let onClick;
|
|
16
|
+
let props;
|
|
17
|
+
if ($[0] !== t0) {
|
|
18
|
+
({onClick, ...props} = t0);
|
|
19
|
+
$[0] = t0;
|
|
20
|
+
$[1] = onClick;
|
|
21
|
+
$[2] = props;
|
|
22
|
+
} else {
|
|
23
|
+
onClick = $[1];
|
|
24
|
+
props = $[2];
|
|
25
|
+
}
|
|
13
26
|
const { activeCategoryId, isSearchMode, goBack, open } = useTriggerPopoverScopeContext();
|
|
14
27
|
if (!open || !activeCategoryId || isSearchMode) return null;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
let t1;
|
|
29
|
+
if ($[3] !== goBack || $[4] !== onClick) {
|
|
30
|
+
t1 = composeEventHandlers(onClick, goBack);
|
|
31
|
+
$[3] = goBack;
|
|
32
|
+
$[4] = onClick;
|
|
33
|
+
$[5] = t1;
|
|
34
|
+
} else t1 = $[5];
|
|
35
|
+
let t2;
|
|
36
|
+
if ($[6] !== forwardedRef || $[7] !== props || $[8] !== t1) {
|
|
37
|
+
t2 = /* @__PURE__ */ jsx(Primitive.button, {
|
|
38
|
+
type: "button",
|
|
39
|
+
...props,
|
|
40
|
+
ref: forwardedRef,
|
|
41
|
+
onClick: t1
|
|
42
|
+
});
|
|
43
|
+
$[6] = forwardedRef;
|
|
44
|
+
$[7] = props;
|
|
45
|
+
$[8] = t1;
|
|
46
|
+
$[9] = t2;
|
|
47
|
+
} else t2 = $[9];
|
|
48
|
+
return t2;
|
|
21
49
|
});
|
|
22
50
|
ComposerPrimitiveTriggerPopoverBack.displayName = "ComposerPrimitive.TriggerPopoverBack";
|
|
23
51
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopoverBack.js","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverBack.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\n\nexport namespace ComposerPrimitiveTriggerPopoverBack {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button>;\n}\n\n/**\n * A button that navigates back from category items to the category list.\n * Only renders when a category is active (drill-down view).\n */\nexport const ComposerPrimitiveTriggerPopoverBack = forwardRef<\n ComposerPrimitiveTriggerPopoverBack.Element,\n ComposerPrimitiveTriggerPopoverBack.Props\n>(({ onClick, ...props }, forwardedRef) => {\n const { activeCategoryId, isSearchMode, goBack, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || !activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, goBack)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverBack.displayName =\n \"ComposerPrimitive.TriggerPopoverBack\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TriggerPopoverBack.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","forwardRef","composeEventHandlers","useTriggerPopoverScopeContext","ComposerPrimitiveTriggerPopoverBack","Element","button","Props","t0","forwardedRef","$","onClick","props","activeCategoryId","isSearchMode","goBack","open","t1","t2","displayName"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverBack.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\n\nexport namespace ComposerPrimitiveTriggerPopoverBack {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button>;\n}\n\n/**\n * A button that navigates back from category items to the category list.\n * Only renders when a category is active (drill-down view).\n */\nexport const ComposerPrimitiveTriggerPopoverBack = forwardRef<\n ComposerPrimitiveTriggerPopoverBack.Element,\n ComposerPrimitiveTriggerPopoverBack.Props\n>(({ onClick, ...props }, forwardedRef) => {\n const { activeCategoryId, isSearchMode, goBack, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || !activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, goBack)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverBack.displayName =\n \"ComposerPrimitive.TriggerPopoverBack\";\n"],"mappings":";;;;;;;;;;;;AAoBA,MAAaQ,sCAAsCH,YAGjDO,IAAAC,iBAAA;CAAA,MAAAC,IAAAb,EAAA,EAAA;CAAA,IAAAc;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAG,YAAAC,SAAAJ;EAAqBE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,UAAAD,EAAA;EAAAE,QAAAF,EAAA;CAAA;CACtB,MAAA,EAAAG,kBAAAC,cAAAC,QAAAC,SACEb,8BAA8B;CAEhC,IAAI,CAACa,QAAD,CAAUH,oBAAVC,cAA0C,OAAS;CAAK,IAAAG;CAAA,IAAAP,EAAA,OAAAK,UAAAL,EAAA,OAAAC,SAAA;EAO/CM,KAAAf,qBAAqBS,SAASI,MAAM;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAC;EAAAD,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAD,gBAAAC,EAAA,OAAAE,SAAAF,EAAA,OAAAO,IAAA;EAJhDC,KAAA,oBAAA,UAAA,QAAA;GACO,MAAA;GAAQ,GACTN;GACCH,KAAAA;GACI,SAAAQ;EAAqC,CAAA;EAC9CP,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OALFQ;AAKE,CAEL;AAEDd,oCAAoCe,cAClC"}
|