@ulearning/ai-sdk 0.0.0-stage → 1.0.0-next.0
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/LICENSE +21 -0
- package/README.md +12 -2
- package/dist/_virtual/_rolldown/runtime.js +12 -0
- package/dist/adapters/OpenAIRealtimeVoiceAdapter.d.ts +22 -0
- package/dist/adapters/OpenAIRealtimeVoiceAdapter.d.ts.map +1 -0
- package/dist/adapters/OpenAIRealtimeVoiceAdapter.js +296 -0
- package/dist/adapters/OpenAIRealtimeVoiceAdapter.js.map +1 -0
- package/dist/assistant-transport.d.ts +33 -0
- package/dist/assistant-transport.d.ts.map +1 -0
- package/dist/assistant-transport.js +18 -0
- package/dist/assistant-transport.js.map +1 -0
- package/dist/augmentations.d.ts +33 -0
- package/dist/augmentations.d.ts.map +1 -0
- package/dist/augmentations.js +0 -0
- package/dist/context/ReadonlyStore.d.ts +4 -0
- package/dist/context/ReadonlyStore.d.ts.map +1 -0
- package/dist/context/ReadonlyStore.js +7 -0
- package/dist/context/ReadonlyStore.js.map +1 -0
- package/dist/context/index.d.ts +13 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +12 -0
- package/dist/context/providers/AttachmentByIndexProvider.d.ts +2 -0
- package/dist/context/providers/AttachmentByIndexProvider.d.ts.map +1 -0
- package/dist/context/providers/AttachmentByIndexProvider.js +2 -0
- package/dist/context/providers/ChainOfThoughtByIndicesProvider.d.ts +2 -0
- package/dist/context/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -0
- package/dist/context/providers/ChainOfThoughtByIndicesProvider.js +2 -0
- package/dist/context/providers/MessageByIndexProvider.d.ts +2 -0
- package/dist/context/providers/MessageByIndexProvider.d.ts.map +1 -0
- package/dist/context/providers/MessageByIndexProvider.js +2 -0
- package/dist/context/providers/MessageProvider.d.ts +3 -0
- package/dist/context/providers/MessageProvider.d.ts.map +1 -0
- package/dist/context/providers/MessageProvider.js +25 -0
- package/dist/context/providers/MessageProvider.js.map +1 -0
- package/dist/context/providers/PartByIndexProvider.d.ts +2 -0
- package/dist/context/providers/PartByIndexProvider.d.ts.map +1 -0
- package/dist/context/providers/PartByIndexProvider.js +2 -0
- package/dist/context/providers/SuggestionByIndexProvider.d.ts +2 -0
- package/dist/context/providers/SuggestionByIndexProvider.d.ts.map +1 -0
- package/dist/context/providers/SuggestionByIndexProvider.js +2 -0
- package/dist/context/providers/TextMessagePartProvider.d.ts +2 -0
- package/dist/context/providers/TextMessagePartProvider.d.ts.map +1 -0
- package/dist/context/providers/TextMessagePartProvider.js +2 -0
- package/dist/context/providers/ThreadListItemProvider.d.ts +2 -0
- package/dist/context/providers/ThreadListItemProvider.d.ts.map +1 -0
- package/dist/context/providers/ThreadListItemProvider.js +2 -0
- package/dist/context/providers/ThreadViewportProvider.d.ts +6 -0
- package/dist/context/providers/ThreadViewportProvider.d.ts.map +1 -0
- package/dist/context/providers/ThreadViewportProvider.js +32 -0
- package/dist/context/providers/ThreadViewportProvider.js.map +1 -0
- package/dist/context/stores/ThreadViewport.d.ts +88 -0
- package/dist/context/stores/ThreadViewport.d.ts.map +1 -0
- package/dist/context/stores/ThreadViewport.js +130 -0
- package/dist/context/stores/ThreadViewport.js.map +1 -0
- package/dist/context/vue/ThreadViewportContext.d.ts +24 -0
- package/dist/context/vue/ThreadViewportContext.d.ts.map +1 -0
- package/dist/context/vue/ThreadViewportContext.js +10 -0
- package/dist/context/vue/ThreadViewportContext.js.map +1 -0
- package/dist/context/vue/utils/createContextHook.d.ts +11 -0
- package/dist/context/vue/utils/createContextHook.d.ts.map +1 -0
- package/dist/context/vue/utils/createContextHook.js +20 -0
- package/dist/context/vue/utils/createContextHook.js.map +1 -0
- package/dist/context/vue/utils/createContextStoreHook.d.ts +22 -0
- package/dist/context/vue/utils/createContextStoreHook.d.ts.map +1 -0
- package/dist/context/vue/utils/createContextStoreHook.js +48 -0
- package/dist/context/vue/utils/createContextStoreHook.js.map +1 -0
- package/dist/devtools/DevToolsHooks.d.ts +32 -0
- package/dist/devtools/DevToolsHooks.d.ts.map +1 -0
- package/dist/devtools/DevToolsHooks.js +84 -0
- package/dist/devtools/DevToolsHooks.js.map +1 -0
- package/dist/hooks/useMessageQuote.d.ts +17 -0
- package/dist/hooks/useMessageQuote.d.ts.map +1 -0
- package/dist/hooks/useMessageQuote.js +23 -0
- package/dist/hooks/useMessageQuote.js.map +1 -0
- package/dist/hooks/useMessageTiming.d.ts +17 -0
- package/dist/hooks/useMessageTiming.d.ts.map +1 -0
- package/dist/hooks/useMessageTiming.js +22 -0
- package/dist/hooks/useMessageTiming.js.map +1 -0
- package/dist/hooks/useToolCallElapsed.d.ts +22 -0
- package/dist/hooks/useToolCallElapsed.d.ts.map +1 -0
- package/dist/hooks/useToolCallElapsed.js +54 -0
- package/dist/hooks/useToolCallElapsed.js.map +1 -0
- package/dist/index.d.ts +155 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/internal.d.ts +9 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +24 -0
- package/dist/internal.js.map +1 -0
- package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts +13 -0
- package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts.map +1 -0
- package/dist/legacy-runtime/AssistantRuntimeProvider.js +37 -0
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -0
- package/dist/mcp-apps/McpAppRenderer.d.ts +60 -0
- package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -0
- package/dist/mcp-apps/McpAppRenderer.js +223 -0
- package/dist/mcp-apps/McpAppRenderer.js.map +1 -0
- package/dist/mcp-apps/McpAppsRemoteHost.d.ts +3 -0
- package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -0
- package/dist/mcp-apps/McpAppsRemoteHost.js +101 -0
- package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -0
- package/dist/mcp-apps/app-frame.d.ts +3 -0
- package/dist/mcp-apps/app-frame.d.ts.map +1 -0
- package/dist/mcp-apps/app-frame.js +213 -0
- package/dist/mcp-apps/app-frame.js.map +1 -0
- package/dist/mcp-apps/bridge.d.ts +18 -0
- package/dist/mcp-apps/bridge.d.ts.map +1 -0
- package/dist/mcp-apps/bridge.js +319 -0
- package/dist/mcp-apps/bridge.js.map +1 -0
- package/dist/mcp-apps/csp.d.ts +4 -0
- package/dist/mcp-apps/csp.d.ts.map +1 -0
- package/dist/mcp-apps/csp.js +92 -0
- package/dist/mcp-apps/csp.js.map +1 -0
- package/dist/mcp-apps/index.d.ts +5 -0
- package/dist/mcp-apps/index.d.ts.map +1 -0
- package/dist/mcp-apps/index.js +4 -0
- package/dist/mcp-apps/types.d.ts +161 -0
- package/dist/mcp-apps/types.d.ts.map +1 -0
- package/dist/mcp-apps/types.js +6 -0
- package/dist/mcp-apps/types.js.map +1 -0
- package/dist/mcp-apps/utils.d.ts +12 -0
- package/dist/mcp-apps/utils.d.ts.map +1 -0
- package/dist/mcp-apps/utils.js +18 -0
- package/dist/mcp-apps/utils.js.map +1 -0
- package/dist/model-context/frame/useAssistantFrameHost.d.ts +35 -0
- package/dist/model-context/frame/useAssistantFrameHost.d.ts.map +1 -0
- package/dist/model-context/frame/useAssistantFrameHost.js +109 -0
- package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -0
- package/dist/model-context/makeAssistantVisible.d.ts +11 -0
- package/dist/model-context/makeAssistantVisible.d.ts.map +1 -0
- package/dist/model-context/makeAssistantVisible.js +102 -0
- package/dist/model-context/makeAssistantVisible.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarCopy.d.ts +45 -0
- package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarCopy.js +71 -0
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarEdit.d.ts +55 -0
- package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarEdit.js +47 -0
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts +26 -0
- package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js +39 -0
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +13 -0
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +28 -0
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +13 -0
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +28 -0
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarInteractionContext.d.ts +7 -0
- package/dist/primitives/actionBar/ActionBarInteractionContext.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarInteractionContext.js +8 -0
- package/dist/primitives/actionBar/ActionBarInteractionContext.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarReload.d.ts +56 -0
- package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarReload.js +48 -0
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarRoot.d.ts +78 -0
- package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarRoot.js +69 -0
- package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarSpeak.d.ts +17 -0
- package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarSpeak.js +13 -0
- package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts +17 -0
- package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js +13 -0
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -0
- package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts +15 -0
- package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts.map +1 -0
- package/dist/primitives/actionBar/useActionBarFloatStatus.js +24 -0
- package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -0
- package/dist/primitives/actionBar.d.ts +10 -0
- package/dist/primitives/actionBar.d.ts.map +1 -0
- package/dist/primitives/actionBar.js +25 -0
- package/dist/primitives/actionBar.js.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts +47 -0
- package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js +29 -0
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts +19 -0
- package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js +24 -0
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.d.ts +10 -0
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.d.ts.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +39 -0
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts +16 -0
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +24 -0
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts +17 -0
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts.map +1 -0
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +24 -0
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -0
- package/dist/primitives/actionBarMore/scope.d.ts +5 -0
- package/dist/primitives/actionBarMore/scope.d.ts.map +1 -0
- package/dist/primitives/actionBarMore/scope.js +7 -0
- package/dist/primitives/actionBarMore/scope.js.map +1 -0
- package/dist/primitives/actionBarMore.d.ts +6 -0
- package/dist/primitives/actionBarMore.d.ts.map +1 -0
- package/dist/primitives/actionBarMore.js +17 -0
- package/dist/primitives/actionBarMore.js.map +1 -0
- package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts +17 -0
- package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts.map +1 -0
- package/dist/primitives/assistantModal/AssistantModalAnchor.js +24 -0
- package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -0
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts +50 -0
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -0
- package/dist/primitives/assistantModal/AssistantModalContent.js +42 -0
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -0
- package/dist/primitives/assistantModal/AssistantModalRoot.d.ts +14 -0
- package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -0
- package/dist/primitives/assistantModal/AssistantModalRoot.js +35 -0
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -0
- package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts +16 -0
- package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts.map +1 -0
- package/dist/primitives/assistantModal/AssistantModalTrigger.js +24 -0
- package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -0
- package/dist/primitives/assistantModal/popoverRenderPrimitives.d.ts +139 -0
- package/dist/primitives/assistantModal/popoverRenderPrimitives.d.ts.map +1 -0
- package/dist/primitives/assistantModal/popoverRenderPrimitives.js +9 -0
- package/dist/primitives/assistantModal/popoverRenderPrimitives.js.map +1 -0
- package/dist/primitives/assistantModal/scope.d.ts +5 -0
- package/dist/primitives/assistantModal/scope.d.ts.map +1 -0
- package/dist/primitives/assistantModal/scope.js +7 -0
- package/dist/primitives/assistantModal/scope.js.map +1 -0
- package/dist/primitives/assistantModal.d.ts +5 -0
- package/dist/primitives/assistantModal.d.ts.map +1 -0
- package/dist/primitives/assistantModal.js +15 -0
- package/dist/primitives/assistantModal.js.map +1 -0
- package/dist/primitives/attachment/AttachmentName.d.ts +5 -0
- package/dist/primitives/attachment/AttachmentName.d.ts.map +1 -0
- package/dist/primitives/attachment/AttachmentName.js +14 -0
- package/dist/primitives/attachment/AttachmentName.js.map +1 -0
- package/dist/primitives/attachment/AttachmentRemove.d.ts +17 -0
- package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -0
- package/dist/primitives/attachment/AttachmentRemove.js +15 -0
- package/dist/primitives/attachment/AttachmentRemove.js.map +1 -0
- package/dist/primitives/attachment/AttachmentRoot.d.ts +30 -0
- package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -0
- package/dist/primitives/attachment/AttachmentRoot.js +40 -0
- package/dist/primitives/attachment/AttachmentRoot.js.map +1 -0
- package/dist/primitives/attachment/AttachmentThumb.d.ts +12 -0
- package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -0
- package/dist/primitives/attachment/AttachmentThumb.js +32 -0
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -0
- package/dist/primitives/attachment.d.ts +7 -0
- package/dist/primitives/attachment.d.ts.map +1 -0
- package/dist/primitives/attachment.js +15 -0
- package/dist/primitives/attachment.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerCount.d.ts +22 -0
- package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerCount.js +27 -0
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts +34 -0
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNext.js +26 -0
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNumber.d.ts +5 -0
- package/dist/primitives/branchPicker/BranchPickerNumber.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNumber.js +14 -0
- package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +34 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.js +26 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +43 -0
- package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerRoot.js +46 -0
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -0
- package/dist/primitives/branchPicker.d.ts +6 -0
- package/dist/primitives/branchPicker.d.ts.map +1 -0
- package/dist/primitives/branchPicker.js +17 -0
- package/dist/primitives/branchPicker.js.map +1 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +30 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +49 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtParts.d.ts +2 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtParts.js +2 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts +12 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts.map +1 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +26 -0
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -0
- package/dist/primitives/chainOfThought.d.ts +4 -0
- package/dist/primitives/chainOfThought.d.ts.map +1 -0
- package/dist/primitives/chainOfThought.js +13 -0
- package/dist/primitives/chainOfThought.js.map +1 -0
- package/dist/primitives/composer/ComposerAddAttachment.d.ts +26 -0
- package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerAddAttachment.js +56 -0
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -0
- package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts +16 -0
- package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerAttachmentDropzone.js +66 -0
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -0
- package/dist/primitives/composer/ComposerAttachments.d.ts +2 -0
- package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerAttachments.js +2 -0
- package/dist/primitives/composer/ComposerCancel.d.ts +37 -0
- package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerCancel.js +32 -0
- package/dist/primitives/composer/ComposerCancel.js.map +1 -0
- package/dist/primitives/composer/ComposerCompactContext.d.ts +7 -0
- package/dist/primitives/composer/ComposerCompactContext.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerCompactContext.js +8 -0
- package/dist/primitives/composer/ComposerCompactContext.js.map +1 -0
- package/dist/primitives/composer/ComposerDictate.d.ts +29 -0
- package/dist/primitives/composer/ComposerDictate.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerDictate.js +25 -0
- package/dist/primitives/composer/ComposerDictate.js.map +1 -0
- package/dist/primitives/composer/ComposerDictationTranscript.d.ts +27 -0
- package/dist/primitives/composer/ComposerDictationTranscript.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerDictationTranscript.js +42 -0
- package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -0
- package/dist/primitives/composer/ComposerIf.d.ts +3 -0
- package/dist/primitives/composer/ComposerIf.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerIf.js +2 -0
- package/dist/primitives/composer/ComposerInput.d.ts +132 -0
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerInput.js +239 -0
- package/dist/primitives/composer/ComposerInput.js.map +1 -0
- package/dist/primitives/composer/ComposerInputPluginContext.d.ts +40 -0
- package/dist/primitives/composer/ComposerInputPluginContext.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerInputPluginContext.js +30 -0
- package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -0
- package/dist/primitives/composer/ComposerQueue.d.ts +2 -0
- package/dist/primitives/composer/ComposerQueue.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerQueue.js +2 -0
- package/dist/primitives/composer/ComposerQuote.d.ts +58 -0
- package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerQuote.js +95 -0
- package/dist/primitives/composer/ComposerQuote.js.map +1 -0
- package/dist/primitives/composer/ComposerResume.d.ts +27 -0
- package/dist/primitives/composer/ComposerResume.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerResume.js +24 -0
- package/dist/primitives/composer/ComposerResume.js.map +1 -0
- package/dist/primitives/composer/ComposerRoot.d.ts +56 -0
- package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerRoot.js +96 -0
- package/dist/primitives/composer/ComposerRoot.js.map +1 -0
- package/dist/primitives/composer/ComposerSend.d.ts +34 -0
- package/dist/primitives/composer/ComposerSend.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerSend.js +28 -0
- package/dist/primitives/composer/ComposerSend.js.map +1 -0
- package/dist/primitives/composer/ComposerStopDictation.d.ts +29 -0
- package/dist/primitives/composer/ComposerStopDictation.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerStopDictation.js +29 -0
- package/dist/primitives/composer/ComposerStopDictation.js.map +1 -0
- package/dist/primitives/composer/composerInputSelector.d.ts +3 -0
- package/dist/primitives/composer/composerInputSelector.d.ts.map +1 -0
- package/dist/primitives/composer/composerInputSelector.js +6 -0
- package/dist/primitives/composer/composerInputSelector.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts +63 -0
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopover.js +161 -0
- package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts +30 -0
- package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js +49 -0
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts +16 -0
- package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js +34 -0
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +34 -0
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +70 -0
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts +27 -0
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js +41 -0
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +36 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js +71 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +48 -0
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js +67 -0
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +58 -0
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +128 -0
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -0
- package/dist/primitives/composer/trigger/detectTrigger.d.ts +18 -0
- package/dist/primitives/composer/trigger/detectTrigger.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/detectTrigger.js +39 -0
- package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -0
- package/dist/primitives/composer/trigger/index.d.ts +20 -0
- package/dist/primitives/composer/trigger/index.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/index.js +15 -0
- package/dist/primitives/composer/trigger/index.js.map +1 -0
- package/dist/primitives/composer/trigger/matchesTriggerItemQuery.d.ts +3 -0
- package/dist/primitives/composer/trigger/matchesTriggerItemQuery.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/matchesTriggerItemQuery.js +8 -0
- package/dist/primitives/composer/trigger/matchesTriggerItemQuery.js.map +1 -0
- package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +17 -0
- package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/triggerDetectionResource.js +25 -0
- package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -0
- package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts +30 -0
- package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js +85 -0
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -0
- package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts +23 -0
- package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/triggerNavigationResource.js +88 -0
- package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +37 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.js +52 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -0
- package/dist/primitives/composer/useComposerCancelWithFocus.d.ts +2 -0
- package/dist/primitives/composer/useComposerCancelWithFocus.d.ts.map +1 -0
- package/dist/primitives/composer/useComposerCancelWithFocus.js +31 -0
- package/dist/primitives/composer/useComposerCancelWithFocus.js.map +1 -0
- package/dist/primitives/composer/useComposerInputState.d.ts +11 -0
- package/dist/primitives/composer/useComposerInputState.d.ts.map +1 -0
- package/dist/primitives/composer/useComposerInputState.js +33 -0
- package/dist/primitives/composer/useComposerInputState.js.map +1 -0
- package/dist/primitives/composer/useTextareaAutosize.d.ts +13 -0
- package/dist/primitives/composer/useTextareaAutosize.d.ts.map +1 -0
- package/dist/primitives/composer/useTextareaAutosize.js +113 -0
- package/dist/primitives/composer/useTextareaAutosize.js.map +1 -0
- package/dist/primitives/composer.d.ts +73 -0
- package/dist/primitives/composer.d.ts.map +1 -0
- package/dist/primitives/composer.js +64 -0
- package/dist/primitives/composer.js.map +1 -0
- package/dist/primitives/dropdownMenuRenderPrimitives.d.ts +173 -0
- package/dist/primitives/dropdownMenuRenderPrimitives.d.ts.map +1 -0
- package/dist/primitives/dropdownMenuRenderPrimitives.js +10 -0
- package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -0
- package/dist/primitives/error/ErrorMessage.d.ts +12 -0
- package/dist/primitives/error/ErrorMessage.d.ts.map +1 -0
- package/dist/primitives/error/ErrorMessage.js +27 -0
- package/dist/primitives/error/ErrorMessage.js.map +1 -0
- package/dist/primitives/error/ErrorRoot.d.ts +12 -0
- package/dist/primitives/error/ErrorRoot.d.ts.map +1 -0
- package/dist/primitives/error/ErrorRoot.js +27 -0
- package/dist/primitives/error/ErrorRoot.js.map +1 -0
- package/dist/primitives/error.d.ts +3 -0
- package/dist/primitives/error.d.ts.map +1 -0
- package/dist/primitives/error.js +11 -0
- package/dist/primitives/error.js.map +1 -0
- package/dist/primitives/message/MessageAttachments.d.ts +2 -0
- package/dist/primitives/message/MessageAttachments.d.ts.map +1 -0
- package/dist/primitives/message/MessageAttachments.js +2 -0
- package/dist/primitives/message/MessageError.d.ts +7 -0
- package/dist/primitives/message/MessageError.d.ts.map +1 -0
- package/dist/primitives/message/MessageError.js +14 -0
- package/dist/primitives/message/MessageError.js.map +1 -0
- package/dist/primitives/message/MessageIf.d.ts +27 -0
- package/dist/primitives/message/MessageIf.d.ts.map +1 -0
- package/dist/primitives/message/MessageIf.js +54 -0
- package/dist/primitives/message/MessageIf.js.map +1 -0
- package/dist/primitives/message/MessageParts.d.ts +7 -0
- package/dist/primitives/message/MessageParts.d.ts.map +1 -0
- package/dist/primitives/message/MessageParts.js +40 -0
- package/dist/primitives/message/MessageParts.js.map +1 -0
- package/dist/primitives/message/MessagePartsGrouped.d.ts +153 -0
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -0
- package/dist/primitives/message/MessagePartsGrouped.js +114 -0
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -0
- package/dist/primitives/message/MessageRoot.d.ts +35 -0
- package/dist/primitives/message/MessageRoot.d.ts.map +1 -0
- package/dist/primitives/message/MessageRoot.js +104 -0
- package/dist/primitives/message/MessageRoot.js.map +1 -0
- package/dist/primitives/message.d.ts +13 -0
- package/dist/primitives/message.d.ts.map +1 -0
- package/dist/primitives/message.js +27 -0
- package/dist/primitives/message.js.map +1 -0
- package/dist/primitives/messagePart/MessagePartImage.d.ts +12 -0
- package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -0
- package/dist/primitives/messagePart/MessagePartImage.js +27 -0
- package/dist/primitives/messagePart/MessagePartImage.js.map +1 -0
- package/dist/primitives/messagePart/MessagePartInProgress.d.ts +2 -0
- package/dist/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -0
- package/dist/primitives/messagePart/MessagePartInProgress.js +2 -0
- package/dist/primitives/messagePart/MessagePartText.d.ts +19 -0
- package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -0
- package/dist/primitives/messagePart/MessagePartText.js +33 -0
- package/dist/primitives/messagePart/MessagePartText.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartData.d.ts +18 -0
- package/dist/primitives/messagePart/useMessagePartData.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartData.js +32 -0
- package/dist/primitives/messagePart/useMessagePartData.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartFile.d.ts +19 -0
- package/dist/primitives/messagePart/useMessagePartFile.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartFile.js +33 -0
- package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartImage.d.ts +19 -0
- package/dist/primitives/messagePart/useMessagePartImage.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartImage.js +32 -0
- package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.d.ts +19 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.js +32 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartSource.d.ts +39 -0
- package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartSource.js +34 -0
- package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartText.d.ts +21 -0
- package/dist/primitives/messagePart/useMessagePartText.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartText.js +32 -0
- package/dist/primitives/messagePart/useMessagePartText.js.map +1 -0
- package/dist/primitives/messagePart.d.ts +5 -0
- package/dist/primitives/messagePart.d.ts.map +1 -0
- package/dist/primitives/messagePart.js +15 -0
- package/dist/primitives/messagePart.js.map +1 -0
- package/dist/primitives/queueItem/QueueItemRemove.d.ts +25 -0
- package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -0
- package/dist/primitives/queueItem/QueueItemRemove.js +23 -0
- package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -0
- package/dist/primitives/queueItem/QueueItemSteer.d.ts +25 -0
- package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -0
- package/dist/primitives/queueItem/QueueItemSteer.js +23 -0
- package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -0
- package/dist/primitives/queueItem/QueueItemText.d.ts +20 -0
- package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -0
- package/dist/primitives/queueItem/QueueItemText.js +35 -0
- package/dist/primitives/queueItem/QueueItemText.js.map +1 -0
- package/dist/primitives/queueItem.d.ts +4 -0
- package/dist/primitives/queueItem.d.ts.map +1 -0
- package/dist/primitives/queueItem.js +13 -0
- package/dist/primitives/queueItem.js.map +1 -0
- package/dist/primitives/reasoning/useScrollLock.d.ts +29 -0
- package/dist/primitives/reasoning/useScrollLock.d.ts.map +1 -0
- package/dist/primitives/reasoning/useScrollLock.js +108 -0
- package/dist/primitives/reasoning/useScrollLock.js.map +1 -0
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts +13 -0
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts.map +1 -0
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +43 -0
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -0
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts +20 -0
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts.map +1 -0
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +147 -0
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -0
- package/dist/primitives/selectionToolbar.d.ts +3 -0
- package/dist/primitives/selectionToolbar.d.ts.map +1 -0
- package/dist/primitives/selectionToolbar.js +11 -0
- package/dist/primitives/selectionToolbar.js.map +1 -0
- package/dist/primitives/suggestion/SuggestionDescription.d.ts +13 -0
- package/dist/primitives/suggestion/SuggestionDescription.d.ts.map +1 -0
- package/dist/primitives/suggestion/SuggestionDescription.js +28 -0
- package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -0
- package/dist/primitives/suggestion/SuggestionTitle.d.ts +20 -0
- package/dist/primitives/suggestion/SuggestionTitle.d.ts.map +1 -0
- package/dist/primitives/suggestion/SuggestionTitle.js +35 -0
- package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -0
- package/dist/primitives/suggestion/SuggestionTrigger.d.ts +72 -0
- package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -0
- package/dist/primitives/suggestion/SuggestionTrigger.js +29 -0
- package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -0
- package/dist/primitives/suggestion.d.ts +4 -0
- package/dist/primitives/suggestion.d.ts.map +1 -0
- package/dist/primitives/suggestion.js +13 -0
- package/dist/primitives/suggestion.js.map +1 -0
- package/dist/primitives/thread/ThreadEmpty.d.ts +11 -0
- package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadEmpty.js +17 -0
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -0
- package/dist/primitives/thread/ThreadIf.d.ts +19 -0
- package/dist/primitives/thread/ThreadIf.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadIf.js +33 -0
- package/dist/primitives/thread/ThreadIf.js.map +1 -0
- package/dist/primitives/thread/ThreadLoadEarlier.d.ts +23 -0
- package/dist/primitives/thread/ThreadLoadEarlier.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadLoadEarlier.js +23 -0
- package/dist/primitives/thread/ThreadLoadEarlier.js.map +1 -0
- package/dist/primitives/thread/ThreadMessages.d.ts +2 -0
- package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadMessages.js +2 -0
- package/dist/primitives/thread/ThreadRoot.d.ts +37 -0
- package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadRoot.js +84 -0
- package/dist/primitives/thread/ThreadRoot.js.map +1 -0
- package/dist/primitives/thread/ThreadRootElementContext.d.ts +4 -0
- package/dist/primitives/thread/ThreadRootElementContext.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadRootElementContext.js +8 -0
- package/dist/primitives/thread/ThreadRootElementContext.js.map +1 -0
- package/dist/primitives/thread/ThreadScrollToBottom.d.ts +22 -0
- package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadScrollToBottom.js +17 -0
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -0
- package/dist/primitives/thread/ThreadSuggestion.d.ts +80 -0
- package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadSuggestion.js +23 -0
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -0
- package/dist/primitives/thread/ThreadSuggestions.d.ts +2 -0
- package/dist/primitives/thread/ThreadSuggestions.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadSuggestions.js +2 -0
- package/dist/primitives/thread/ThreadViewport.d.ts +115 -0
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadViewport.js +96 -0
- package/dist/primitives/thread/ThreadViewport.js.map +1 -0
- package/dist/primitives/thread/ThreadViewportFooter.d.ts +13 -0
- package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadViewportFooter.js +39 -0
- package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -0
- package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.d.ts +22 -0
- package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.d.ts.map +1 -0
- package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js +51 -0
- package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js.map +1 -0
- package/dist/primitives/thread/topAnchor/createReserveObservers.d.ts +5 -0
- package/dist/primitives/thread/topAnchor/createReserveObservers.d.ts.map +1 -0
- package/dist/primitives/thread/topAnchor/createReserveObservers.js +37 -0
- package/dist/primitives/thread/topAnchor/createReserveObservers.js.map +1 -0
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts +26 -0
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts.map +1 -0
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js +139 -0
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -0
- package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts +27 -0
- package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts.map +1 -0
- package/dist/primitives/thread/topAnchor/topAnchorTurn.js +30 -0
- package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -0
- package/dist/primitives/thread/topAnchor/topAnchorUtils.d.ts +15 -0
- package/dist/primitives/thread/topAnchor/topAnchorUtils.d.ts.map +1 -0
- package/dist/primitives/thread/topAnchor/topAnchorUtils.js +46 -0
- package/dist/primitives/thread/topAnchor/topAnchorUtils.js.map +1 -0
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.d.ts +8 -0
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.d.ts.map +1 -0
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +21 -0
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -0
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts +32 -0
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -0
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +74 -0
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -0
- package/dist/primitives/thread.d.ts +15 -0
- package/dist/primitives/thread.d.ts.map +1 -0
- package/dist/primitives/thread.js +33 -0
- package/dist/primitives/thread.js.map +1 -0
- package/dist/primitives/threadList/ThreadListItems.d.ts +2 -0
- package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -0
- package/dist/primitives/threadList/ThreadListItems.js +2 -0
- package/dist/primitives/threadList/ThreadListLoadMore.d.ts +17 -0
- package/dist/primitives/threadList/ThreadListLoadMore.d.ts.map +1 -0
- package/dist/primitives/threadList/ThreadListLoadMore.js +13 -0
- package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -0
- package/dist/primitives/threadList/ThreadListNew.d.ts +11 -0
- package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -0
- package/dist/primitives/threadList/ThreadListNew.js +29 -0
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -0
- package/dist/primitives/threadList/ThreadListRoot.d.ts +12 -0
- package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -0
- package/dist/primitives/threadList/ThreadListRoot.js +25 -0
- package/dist/primitives/threadList/ThreadListRoot.js.map +1 -0
- package/dist/primitives/threadList.d.ts +6 -0
- package/dist/primitives/threadList.d.ts.map +1 -0
- package/dist/primitives/threadList.js +16 -0
- package/dist/primitives/threadList.js.map +1 -0
- package/dist/primitives/threadListFocusGroup.d.ts +28 -0
- package/dist/primitives/threadListFocusGroup.d.ts.map +1 -0
- package/dist/primitives/threadListFocusGroup.js +64 -0
- package/dist/primitives/threadListFocusGroup.js.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +17 -0
- package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemArchive.js +12 -0
- package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +17 -0
- package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemDelete.js +12 -0
- package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts +12 -0
- package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemRoot.js +61 -0
- package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemTitle.d.ts +2 -0
- package/dist/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemTitle.js +2 -0
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +13 -0
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js +35 -0
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +17 -0
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +13 -0
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -0
- package/dist/primitives/threadListItem.d.ts +7 -0
- package/dist/primitives/threadListItem.d.ts.map +1 -0
- package/dist/primitives/threadListItem.js +19 -0
- package/dist/primitives/threadListItem.js.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts +47 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +48 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts +19 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +24 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.d.ts +19 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.d.ts.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +45 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts +16 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +24 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts +17 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts.map +1 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +42 -0
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -0
- package/dist/primitives/threadListItemMore/scope.d.ts +5 -0
- package/dist/primitives/threadListItemMore/scope.d.ts.map +1 -0
- package/dist/primitives/threadListItemMore/scope.js +7 -0
- package/dist/primitives/threadListItemMore/scope.js.map +1 -0
- package/dist/primitives/threadListItemMore.d.ts +6 -0
- package/dist/primitives/threadListItemMore.d.ts.map +1 -0
- package/dist/primitives/threadListItemMore.js +17 -0
- package/dist/primitives/threadListItemMore.js.map +1 -0
- package/dist/sandbox-host/SandboxHost.d.ts +38 -0
- package/dist/sandbox-host/SandboxHost.d.ts.map +1 -0
- package/dist/sandbox-host/SandboxHost.js +146 -0
- package/dist/sandbox-host/SandboxHost.js.map +1 -0
- package/dist/unstable/useComposerInput.d.ts +87 -0
- package/dist/unstable/useComposerInput.d.ts.map +1 -0
- package/dist/unstable/useComposerInput.js +77 -0
- package/dist/unstable/useComposerInput.js.map +1 -0
- package/dist/unstable/useComposerInputHistory.d.ts +27 -0
- package/dist/unstable/useComposerInputHistory.d.ts.map +1 -0
- package/dist/unstable/useComposerInputHistory.js +125 -0
- package/dist/unstable/useComposerInputHistory.js.map +1 -0
- package/dist/unstable/useLiveCompletionAdapter.d.ts +52 -0
- package/dist/unstable/useLiveCompletionAdapter.d.ts.map +1 -0
- package/dist/unstable/useLiveCompletionAdapter.js +184 -0
- package/dist/unstable/useLiveCompletionAdapter.js.map +1 -0
- package/dist/unstable/useMentionAdapter.d.ts +95 -0
- package/dist/unstable/useMentionAdapter.d.ts.map +1 -0
- package/dist/unstable/useMentionAdapter.js +129 -0
- package/dist/unstable/useMentionAdapter.js.map +1 -0
- package/dist/unstable/useMessageStallDetection.d.ts +30 -0
- package/dist/unstable/useMessageStallDetection.d.ts.map +1 -0
- package/dist/unstable/useMessageStallDetection.js +92 -0
- package/dist/unstable/useMessageStallDetection.js.map +1 -0
- package/dist/unstable/useModelContextSnapshot.d.ts +32 -0
- package/dist/unstable/useModelContextSnapshot.d.ts.map +1 -0
- package/dist/unstable/useModelContextSnapshot.js +46 -0
- package/dist/unstable/useModelContextSnapshot.js.map +1 -0
- package/dist/unstable/useSlashCommandAdapter.d.ts +53 -0
- package/dist/unstable/useSlashCommandAdapter.d.ts.map +1 -0
- package/dist/unstable/useSlashCommandAdapter.js +84 -0
- package/dist/unstable/useSlashCommandAdapter.js.map +1 -0
- package/dist/unstable/webmcp/WebMcpRegistrationResource.d.ts +12 -0
- package/dist/unstable/webmcp/WebMcpRegistrationResource.d.ts.map +1 -0
- package/dist/unstable/webmcp/WebMcpRegistrationResource.js +47 -0
- package/dist/unstable/webmcp/WebMcpRegistrationResource.js.map +1 -0
- package/dist/unstable/webmcp/convertTools.d.ts +18 -0
- package/dist/unstable/webmcp/convertTools.d.ts.map +1 -0
- package/dist/unstable/webmcp/convertTools.js +160 -0
- package/dist/unstable/webmcp/convertTools.js.map +1 -0
- package/dist/unstable/webmcp/useWebMcpProvider.d.ts +23 -0
- package/dist/unstable/webmcp/useWebMcpProvider.d.ts.map +1 -0
- package/dist/unstable/webmcp/useWebMcpProvider.js +111 -0
- package/dist/unstable/webmcp/useWebMcpProvider.js.map +1 -0
- package/dist/unstable/webmcp/webmcp-host.d.ts +36 -0
- package/dist/unstable/webmcp/webmcp-host.d.ts.map +1 -0
- package/dist/unstable/webmcp/webmcp-host.js +28 -0
- package/dist/unstable/webmcp/webmcp-host.js.map +1 -0
- package/dist/utils/Primitive.d.ts +28 -0
- package/dist/utils/Primitive.d.ts.map +1 -0
- package/dist/utils/Primitive.js +229 -0
- package/dist/utils/Primitive.js.map +1 -0
- package/dist/utils/RequireAtLeastOne.d.ts +4 -0
- package/dist/utils/RequireAtLeastOne.d.ts.map +1 -0
- package/dist/utils/RequireAtLeastOne.js +0 -0
- package/dist/utils/createActionButton.d.ts +18 -0
- package/dist/utils/createActionButton.d.ts.map +1 -0
- package/dist/utils/createActionButton.js +39 -0
- package/dist/utils/createActionButton.js.map +1 -0
- package/dist/utils/getSelectionMessageId.d.ts +2 -0
- package/dist/utils/getSelectionMessageId.d.ts.map +1 -0
- package/dist/utils/getSelectionMessageId.js +84 -0
- package/dist/utils/getSelectionMessageId.js.map +1 -0
- package/dist/utils/hooks/useManagedRef.d.ts +2 -0
- package/dist/utils/hooks/useManagedRef.d.ts.map +1 -0
- package/dist/utils/hooks/useManagedRef.js +15 -0
- package/dist/utils/hooks/useManagedRef.js.map +1 -0
- package/dist/utils/hooks/useMediaQuery.d.ts +3 -0
- package/dist/utils/hooks/useMediaQuery.d.ts.map +1 -0
- package/dist/utils/hooks/useMediaQuery.js +33 -0
- package/dist/utils/hooks/useMediaQuery.js.map +1 -0
- package/dist/utils/hooks/useOnScrollToBottom.d.ts +7 -0
- package/dist/utils/hooks/useOnScrollToBottom.d.ts.map +1 -0
- package/dist/utils/hooks/useOnScrollToBottom.js +15 -0
- package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -0
- package/dist/utils/hooks/useSizeHandle.d.ts +12 -0
- package/dist/utils/hooks/useSizeHandle.d.ts.map +1 -0
- package/dist/utils/hooks/useSizeHandle.js +33 -0
- package/dist/utils/hooks/useSizeHandle.js.map +1 -0
- package/dist/utils/isCompositionKey.d.ts +2 -0
- package/dist/utils/isCompositionKey.d.ts.map +1 -0
- package/dist/utils/isCompositionKey.js +5 -0
- package/dist/utils/isCompositionKey.js.map +1 -0
- package/dist/utils/smooth/SmoothContext.d.ts +117 -0
- package/dist/utils/smooth/SmoothContext.d.ts.map +1 -0
- package/dist/utils/smooth/SmoothContext.js +40 -0
- package/dist/utils/smooth/SmoothContext.js.map +1 -0
- package/dist/utils/smooth/useSmooth.d.ts +63 -0
- package/dist/utils/smooth/useSmooth.d.ts.map +1 -0
- package/dist/utils/smooth/useSmooth.js +144 -0
- package/dist/utils/smooth/useSmooth.js.map +1 -0
- package/dist/utils/useIsomorphicLayoutEffect.d.ts +2 -0
- package/dist/utils/useIsomorphicLayoutEffect.d.ts.map +1 -0
- package/dist/utils/useIsomorphicLayoutEffect.js +1 -0
- package/package.json +115 -3
- package/src/adapters/OpenAIRealtimeVoiceAdapter.test.ts +761 -0
- package/src/adapters/OpenAIRealtimeVoiceAdapter.ts +388 -0
- package/src/assistant-transport.ts +98 -0
- package/src/augmentations.ts +35 -0
- package/src/context/ReadonlyStore.ts +7 -0
- package/src/context/index.ts +23 -0
- package/src/context/providers/AttachmentByIndexProvider.tsx +6 -0
- package/src/context/providers/ChainOfThoughtByIndicesProvider.tsx +3 -0
- package/src/context/providers/MessageByIndexProvider.tsx +3 -0
- package/src/context/providers/MessageProvider.tsx +34 -0
- package/src/context/providers/PartByIndexProvider.tsx +3 -0
- package/src/context/providers/SuggestionByIndexProvider.tsx +6 -0
- package/src/context/providers/TextMessagePartProvider.tsx +3 -0
- package/src/context/providers/ThreadListItemProvider.tsx +6 -0
- package/src/context/providers/ThreadViewportProvider.tsx +49 -0
- package/src/context/providers/vue-providers.test.tsx +326 -0
- package/src/context/stores/ThreadViewport.test.ts +29 -0
- package/src/context/stores/ThreadViewport.ts +278 -0
- package/src/context/vue/ThreadViewportContext.ts +22 -0
- package/src/context/vue/utils/createContextHook.ts +26 -0
- package/src/context/vue/utils/createContextStoreHook.ts +93 -0
- package/src/devtools/DevToolsHooks.test.ts +40 -0
- package/src/devtools/DevToolsHooks.ts +142 -0
- package/src/hooks/message-readers.test.ts +128 -0
- package/src/hooks/useMessageQuote.ts +25 -0
- package/src/hooks/useMessageTiming.ts +26 -0
- package/src/hooks/useToolCallElapsed.test.tsx +172 -0
- package/src/hooks/useToolCallElapsed.ts +65 -0
- package/src/index.ts +623 -0
- package/src/internal.ts +33 -0
- package/src/legacy-runtime/AssistantRuntimeProvider.tsx +61 -0
- package/src/mcp-apps/McpAppRenderer.composer.test.tsx +129 -0
- package/src/mcp-apps/McpAppRenderer.test.tsx +906 -0
- package/src/mcp-apps/McpAppRenderer.tsx +411 -0
- package/src/mcp-apps/McpAppsRemoteHost.concurrent.test.tsx +226 -0
- package/src/mcp-apps/McpAppsRemoteHost.test.ts +152 -0
- package/src/mcp-apps/McpAppsRemoteHost.ts +160 -0
- package/src/mcp-apps/app-frame.test.tsx +648 -0
- package/src/mcp-apps/app-frame.tsx +351 -0
- package/src/mcp-apps/bridge.test.ts +836 -0
- package/src/mcp-apps/bridge.ts +538 -0
- package/src/mcp-apps/csp.test.ts +112 -0
- package/src/mcp-apps/csp.ts +124 -0
- package/src/mcp-apps/index.ts +23 -0
- package/src/mcp-apps/types.ts +176 -0
- package/src/mcp-apps/utils.ts +23 -0
- package/src/model-context/frame/SPEC_AssistantFrame.md +105 -0
- package/src/model-context/frame/useAssistantFrameHost.detach.test.tsx +155 -0
- package/src/model-context/frame/useAssistantFrameHost.reload.test.tsx +116 -0
- package/src/model-context/frame/useAssistantFrameHost.test.tsx +43 -0
- package/src/model-context/frame/useAssistantFrameHost.ts +137 -0
- package/src/model-context/makeAssistantVisible.test.tsx +460 -0
- package/src/model-context/makeAssistantVisible.tsx +184 -0
- package/src/model-context/registry/SPEC_ModelContextRegistry.md +40 -0
- package/src/primitives/actionBar/ActionBarCopy.test.tsx +28 -0
- package/src/primitives/actionBar/ActionBarCopy.tsx +100 -0
- package/src/primitives/actionBar/ActionBarEdit.ts +63 -0
- package/src/primitives/actionBar/ActionBarExportMarkdown.test.tsx +83 -0
- package/src/primitives/actionBar/ActionBarExportMarkdown.tsx +65 -0
- package/src/primitives/actionBar/ActionBarFeedback.test.tsx +59 -0
- package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +48 -0
- package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +48 -0
- package/src/primitives/actionBar/ActionBarInteractionContext.ts +13 -0
- package/src/primitives/actionBar/ActionBarReload.ts +64 -0
- package/src/primitives/actionBar/ActionBarRoot.tsx +119 -0
- package/src/primitives/actionBar/ActionBarSpeak.ts +25 -0
- package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +24 -0
- package/src/primitives/actionBar/useActionBarFloatStatus.ts +48 -0
- package/src/primitives/actionBar.ts +9 -0
- package/src/primitives/actionBarMore/ActionBarMoreContent.tsx +45 -0
- package/src/primitives/actionBarMore/ActionBarMoreItem.tsx +22 -0
- package/src/primitives/actionBarMore/ActionBarMoreRoot.test.ts +70 -0
- package/src/primitives/actionBarMore/ActionBarMoreRoot.tsx +46 -0
- package/src/primitives/actionBarMore/ActionBarMoreSeparator.tsx +26 -0
- package/src/primitives/actionBarMore/ActionBarMoreTrigger.tsx +26 -0
- package/src/primitives/actionBarMore/scope.ts +6 -0
- package/src/primitives/actionBarMore.ts +5 -0
- package/src/primitives/assistantModal/AssistantModalAnchor.tsx +22 -0
- package/src/primitives/assistantModal/AssistantModalContent.tsx +85 -0
- package/src/primitives/assistantModal/AssistantModalRoot.test.tsx +153 -0
- package/src/primitives/assistantModal/AssistantModalRoot.tsx +48 -0
- package/src/primitives/assistantModal/AssistantModalTrigger.test.tsx +65 -0
- package/src/primitives/assistantModal/AssistantModalTrigger.tsx +22 -0
- package/src/primitives/assistantModal/popoverRenderPrimitives.ts +6 -0
- package/src/primitives/assistantModal/scope.ts +6 -0
- package/src/primitives/assistantModal.ts +4 -0
- package/src/primitives/attachment/AttachmentName.tsx +16 -0
- package/src/primitives/attachment/AttachmentRemove.ts +28 -0
- package/src/primitives/attachment/AttachmentRoot.tsx +52 -0
- package/src/primitives/attachment/AttachmentThumb.test.tsx +179 -0
- package/src/primitives/attachment/AttachmentThumb.tsx +41 -0
- package/src/primitives/attachment.ts +7 -0
- package/src/primitives/branchPicker/BranchPickerCount.tsx +33 -0
- package/src/primitives/branchPicker/BranchPickerNext.ts +42 -0
- package/src/primitives/branchPicker/BranchPickerNumber.tsx +16 -0
- package/src/primitives/branchPicker/BranchPickerPrevious.ts +42 -0
- package/src/primitives/branchPicker/BranchPickerRoot.tsx +64 -0
- package/src/primitives/branchPicker.ts +5 -0
- package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.test.tsx +116 -0
- package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.tsx +63 -0
- package/src/primitives/chainOfThought/ChainOfThoughtParts.tsx +3 -0
- package/src/primitives/chainOfThought/ChainOfThoughtRoot.tsx +33 -0
- package/src/primitives/chainOfThought.ts +14 -0
- package/src/primitives/composer/ComposerAddAttachment.test.tsx +101 -0
- package/src/primitives/composer/ComposerAddAttachment.thread-scope.test.tsx +225 -0
- package/src/primitives/composer/ComposerAddAttachment.ts +88 -0
- package/src/primitives/composer/ComposerAttachmentDropzone.test.tsx +351 -0
- package/src/primitives/composer/ComposerAttachmentDropzone.tsx +109 -0
- package/src/primitives/composer/ComposerAttachments.tsx +6 -0
- package/src/primitives/composer/ComposerCancel.focus.test.tsx +324 -0
- package/src/primitives/composer/ComposerCancel.ts +52 -0
- package/src/primitives/composer/ComposerCompactContext.tsx +10 -0
- package/src/primitives/composer/ComposerDictate.ts +37 -0
- package/src/primitives/composer/ComposerDictationTranscript.tsx +55 -0
- package/src/primitives/composer/ComposerDisabledThread.test.tsx +118 -0
- package/src/primitives/composer/ComposerIf.ts +4 -0
- package/src/primitives/composer/ComposerInput.focus-on-run-start.test.tsx +145 -0
- package/src/primitives/composer/ComposerInput.test.tsx +712 -0
- package/src/primitives/composer/ComposerInput.text-change.test.tsx +77 -0
- package/src/primitives/composer/ComposerInput.thread-scope.test.tsx +83 -0
- package/src/primitives/composer/ComposerInput.tsx +462 -0
- package/src/primitives/composer/ComposerInputPluginContext.tsx +80 -0
- package/src/primitives/composer/ComposerPreview.native.test.ts +157 -0
- package/src/primitives/composer/ComposerQueue.tsx +3 -0
- package/src/primitives/composer/ComposerQuote.tsx +143 -0
- package/src/primitives/composer/ComposerResume.ts +35 -0
- package/src/primitives/composer/ComposerRoot.test.tsx +429 -0
- package/src/primitives/composer/ComposerRoot.tsx +155 -0
- package/src/primitives/composer/ComposerSend.ts +43 -0
- package/src/primitives/composer/ComposerStopDictation.ts +43 -0
- package/src/primitives/composer/composerInputSelector.ts +4 -0
- package/src/primitives/composer/trigger/TriggerPopover.native.test.ts +309 -0
- package/src/primitives/composer/trigger/TriggerPopover.tsx +248 -0
- package/src/primitives/composer/trigger/TriggerPopoverAction.tsx +61 -0
- package/src/primitives/composer/trigger/TriggerPopoverBack.tsx +51 -0
- package/src/primitives/composer/trigger/TriggerPopoverBehavior.test.tsx +113 -0
- package/src/primitives/composer/trigger/TriggerPopoverCategories.tsx +123 -0
- package/src/primitives/composer/trigger/TriggerPopoverDirective.tsx +55 -0
- package/src/primitives/composer/trigger/TriggerPopoverExports.test.ts +61 -0
- package/src/primitives/composer/trigger/TriggerPopoverItems.tsx +121 -0
- package/src/primitives/composer/trigger/TriggerPopoverResource.ts +146 -0
- package/src/primitives/composer/trigger/TriggerPopoverRootContext.test.tsx +159 -0
- package/src/primitives/composer/trigger/TriggerPopoverRootContext.tsx +236 -0
- package/src/primitives/composer/trigger/detectTrigger.test.ts +197 -0
- package/src/primitives/composer/trigger/detectTrigger.ts +78 -0
- package/src/primitives/composer/trigger/index.ts +33 -0
- package/src/primitives/composer/trigger/matchesTriggerItemQuery.test.ts +52 -0
- package/src/primitives/composer/trigger/matchesTriggerItemQuery.ts +13 -0
- package/src/primitives/composer/trigger/triggerDetectionResource.ts +47 -0
- package/src/primitives/composer/trigger/triggerKeyboardResource.test.ts +233 -0
- package/src/primitives/composer/trigger/triggerKeyboardResource.ts +150 -0
- package/src/primitives/composer/trigger/triggerNavigationResource.ts +129 -0
- package/src/primitives/composer/trigger/triggerSelectionResource.test.ts +173 -0
- package/src/primitives/composer/trigger/triggerSelectionResource.ts +133 -0
- package/src/primitives/composer/useAuiState.composer.test.tsx +93 -0
- package/src/primitives/composer/useComposerCancelWithFocus.ts +51 -0
- package/src/primitives/composer/useComposerInputState.ts +58 -0
- package/src/primitives/composer/useTextareaAutosize.ts +140 -0
- package/src/primitives/composer.ts +88 -0
- package/src/primitives/dropdownMenuRenderPrimitives.test.tsx +64 -0
- package/src/primitives/dropdownMenuRenderPrimitives.ts +14 -0
- package/src/primitives/error/ErrorMessage.tsx +39 -0
- package/src/primitives/error/ErrorRoot.tsx +34 -0
- package/src/primitives/error.ts +2 -0
- package/src/primitives/message/MessageAttachments.tsx +6 -0
- package/src/primitives/message/MessageError.ts +13 -0
- package/src/primitives/message/MessageIf.test.tsx +83 -0
- package/src/primitives/message/MessageIf.ts +110 -0
- package/src/primitives/message/MessageParts.test.tsx +119 -0
- package/src/primitives/message/MessageParts.tsx +64 -0
- package/src/primitives/message/MessagePartsGrouped.test.tsx +682 -0
- package/src/primitives/message/MessagePartsGrouped.tool-interaction.test.tsx +97 -0
- package/src/primitives/message/MessagePartsGrouped.tsx +374 -0
- package/src/primitives/message/MessageRoot.anchors.test.ts +167 -0
- package/src/primitives/message/MessageRoot.test.tsx +272 -0
- package/src/primitives/message/MessageRoot.tsx +145 -0
- package/src/primitives/message.ts +15 -0
- package/src/primitives/messagePart/MessagePartImage.tsx +29 -0
- package/src/primitives/messagePart/MessagePartInProgress.ts +3 -0
- package/src/primitives/messagePart/MessagePartText.test.tsx +114 -0
- package/src/primitives/messagePart/MessagePartText.tsx +54 -0
- package/src/primitives/messagePart/useMessagePartData.test.ts +118 -0
- package/src/primitives/messagePart/useMessagePartData.ts +34 -0
- package/src/primitives/messagePart/useMessagePartFile.ts +42 -0
- package/src/primitives/messagePart/useMessagePartImage.ts +41 -0
- package/src/primitives/messagePart/useMessagePartReasoning.ts +42 -0
- package/src/primitives/messagePart/useMessagePartSource.ts +43 -0
- package/src/primitives/messagePart/useMessagePartText.ts +45 -0
- package/src/primitives/messagePart.ts +4 -0
- package/src/primitives/native-action-bindings.test.ts +181 -0
- package/src/primitives/native-display-bindings.test.ts +159 -0
- package/src/primitives/queueItem/QueueItemRemove.ts +36 -0
- package/src/primitives/queueItem/QueueItemSteer.ts +36 -0
- package/src/primitives/queueItem/QueueItemText.tsx +48 -0
- package/src/primitives/queueItem.ts +3 -0
- package/src/primitives/reasoning/useScrollLock.test.tsx +296 -0
- package/src/primitives/reasoning/useScrollLock.ts +160 -0
- package/src/primitives/selectionToolbar/SelectionToolbarQuote.tsx +56 -0
- package/src/primitives/selectionToolbar/SelectionToolbarRoot.test.tsx +439 -0
- package/src/primitives/selectionToolbar/SelectionToolbarRoot.tsx +206 -0
- package/src/primitives/selectionToolbar.ts +8 -0
- package/src/primitives/suggestion/SuggestionDescription.tsx +35 -0
- package/src/primitives/suggestion/SuggestionTitle.tsx +43 -0
- package/src/primitives/suggestion/SuggestionTrigger.ts +59 -0
- package/src/primitives/suggestion.ts +3 -0
- package/src/primitives/thread/ThreadEmpty.ts +19 -0
- package/src/primitives/thread/ThreadIf.ts +42 -0
- package/src/primitives/thread/ThreadLoadEarlier.tsx +34 -0
- package/src/primitives/thread/ThreadMessages.tsx +9 -0
- package/src/primitives/thread/ThreadRoot.test.tsx +419 -0
- package/src/primitives/thread/ThreadRoot.tsx +119 -0
- package/src/primitives/thread/ThreadRootElementContext.ts +9 -0
- package/src/primitives/thread/ThreadScrollToBottom.ts +45 -0
- package/src/primitives/thread/ThreadSuggestion.ts +55 -0
- package/src/primitives/thread/ThreadSuggestions.tsx +7 -0
- package/src/primitives/thread/ThreadViewport.thread-scope.test.tsx +58 -0
- package/src/primitives/thread/ThreadViewport.tsx +219 -0
- package/src/primitives/thread/ThreadViewportFooter.tsx +46 -0
- package/src/primitives/thread/topAnchor/computeTopAnchorSlack.test.ts +131 -0
- package/src/primitives/thread/topAnchor/computeTopAnchorSlack.ts +94 -0
- package/src/primitives/thread/topAnchor/createReserveObservers.ts +50 -0
- package/src/primitives/thread/topAnchor/mountTopAnchorReserve.test.ts +570 -0
- package/src/primitives/thread/topAnchor/mountTopAnchorReserve.ts +221 -0
- package/src/primitives/thread/topAnchor/topAnchorTurn.test.ts +115 -0
- package/src/primitives/thread/topAnchor/topAnchorTurn.ts +59 -0
- package/src/primitives/thread/topAnchor/topAnchorUtils.ts +58 -0
- package/src/primitives/thread/topAnchor/useTopAnchorReserve.ts +23 -0
- package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +1887 -0
- package/src/primitives/thread/useThreadViewportAutoScroll.ts +140 -0
- package/src/primitives/thread.ts +17 -0
- package/src/primitives/threadList/ThreadListItems.tsx +6 -0
- package/src/primitives/threadList/ThreadListLoadMore.tsx +25 -0
- package/src/primitives/threadList/ThreadListNew.tsx +47 -0
- package/src/primitives/threadList/ThreadListRoot.tsx +29 -0
- package/src/primitives/threadList.ts +5 -0
- package/src/primitives/threadListFocusGroup.ts +91 -0
- package/src/primitives/threadListItem/ThreadListItemArchive.ts +23 -0
- package/src/primitives/threadListItem/ThreadListItemDelete.ts +23 -0
- package/src/primitives/threadListItem/ThreadListItemRoot.tsx +100 -0
- package/src/primitives/threadListItem/ThreadListItemTitle.test.tsx +63 -0
- package/src/primitives/threadListItem/ThreadListItemTitle.tsx +3 -0
- package/src/primitives/threadListItem/ThreadListItemTrigger.tsx +51 -0
- package/src/primitives/threadListItem/ThreadListItemUnarchive.test.tsx +55 -0
- package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +25 -0
- package/src/primitives/threadListItem/ThreadListKeyboardNav.test.tsx +348 -0
- package/src/primitives/threadListItem.ts +6 -0
- package/src/primitives/threadListItemMore/ThreadListItemMoreContent.tsx +81 -0
- package/src/primitives/threadListItemMore/ThreadListItemMoreItem.tsx +22 -0
- package/src/primitives/threadListItemMore/ThreadListItemMoreRoot.tsx +79 -0
- package/src/primitives/threadListItemMore/ThreadListItemMoreSeparator.tsx +26 -0
- package/src/primitives/threadListItemMore/ThreadListItemMoreTrigger.tsx +62 -0
- package/src/primitives/threadListItemMore/scope.ts +6 -0
- package/src/primitives/threadListItemMore.ts +5 -0
- package/src/sandbox-host/SandboxHost.test.tsx +579 -0
- package/src/sandbox-host/SandboxHost.tsx +271 -0
- package/src/tests/DataRenderers.test.tsx +218 -0
- package/src/tests/MessageParts.loading.test.tsx +105 -0
- package/src/tests/MessageParts.rendererOptions.test.tsx +125 -0
- package/src/tests/RemoteThreadListRuntime.adapterProvider.test.tsx +187 -0
- package/src/tests/RemoteThreadListRuntime.deferredProvider.test.tsx +99 -0
- package/src/tests/RemoteThreadListRuntime.reloadMainThread.test.tsx +113 -0
- package/src/tests/augmentations.test.ts +95 -0
- package/src/tests/generative-ui.primitive.test.tsx +176 -0
- package/src/tests/generative-ui.test.tsx +130 -0
- package/src/tests/in-memory-thread-list.test.tsx +142 -0
- package/src/tests/local-runtime-queue.test.tsx +506 -0
- package/src/tests/messageAction.ts +67 -0
- package/src/tests/messagePartSwitchRace.test.tsx +222 -0
- package/src/tests/messagePartTypeMismatch.test.tsx +153 -0
- package/src/tests/remote-thread-list-test-helpers.ts +40 -0
- package/src/tests/setup.ts +5 -0
- package/src/tests/threadListItemIsRunning.test.tsx +215 -0
- package/src/tests/threadMessageById.test.tsx +293 -0
- package/src/tests/toolCallTiming.test.tsx +324 -0
- package/src/tests/vue.ts +124 -0
- package/src/unstable/useComposerInput.test.tsx +201 -0
- package/src/unstable/useComposerInput.ts +125 -0
- package/src/unstable/useComposerInputHistory.test.tsx +207 -0
- package/src/unstable/useComposerInputHistory.thread-scope.test.tsx +128 -0
- package/src/unstable/useComposerInputHistory.ts +163 -0
- package/src/unstable/useLiveCompletionAdapter.test.tsx +760 -0
- package/src/unstable/useLiveCompletionAdapter.ts +217 -0
- package/src/unstable/useMentionAdapter.test.tsx +380 -0
- package/src/unstable/useMentionAdapter.ts +276 -0
- package/src/unstable/useMessageStallDetection.lifecycle.test.ts +120 -0
- package/src/unstable/useMessageStallDetection.test.tsx +59 -0
- package/src/unstable/useMessageStallDetection.ts +147 -0
- package/src/unstable/useModelContextSnapshot.test.tsx +181 -0
- package/src/unstable/useModelContextSnapshot.ts +85 -0
- package/src/unstable/useSlashCommandAdapter.test.tsx +172 -0
- package/src/unstable/useSlashCommandAdapter.ts +145 -0
- package/src/unstable/webmcp/WebMcpRegistrationResource.test.ts +150 -0
- package/src/unstable/webmcp/WebMcpRegistrationResource.ts +92 -0
- package/src/unstable/webmcp/__tests__/webmcp.fake.tsx +177 -0
- package/src/unstable/webmcp/convertTools.test.ts +605 -0
- package/src/unstable/webmcp/convertTools.ts +256 -0
- package/src/unstable/webmcp/useWebMcpProvider.test.tsx +543 -0
- package/src/unstable/webmcp/useWebMcpProvider.ts +185 -0
- package/src/unstable/webmcp/webmcp-host.test.ts +142 -0
- package/src/unstable/webmcp/webmcp-host.ts +83 -0
- package/src/utils/Primitive.test.tsx +551 -0
- package/src/utils/Primitive.tsx +363 -0
- package/src/utils/RequireAtLeastOne.ts +7 -0
- package/src/utils/createActionButton.child-cancel.test.tsx +82 -0
- package/src/utils/createActionButton.test.tsx +114 -0
- package/src/utils/createActionButton.tsx +75 -0
- package/src/utils/getSelectionMessageId.test.ts +609 -0
- package/src/utils/getSelectionMessageId.ts +133 -0
- package/src/utils/hooks/useManagedRef.ts +19 -0
- package/src/utils/hooks/useMediaQuery.test.tsx +60 -0
- package/src/utils/hooks/useMediaQuery.ts +44 -0
- package/src/utils/hooks/useOnScrollToBottom.ts +23 -0
- package/src/utils/hooks/useSizeHandle.ts +39 -0
- package/src/utils/isCompositionKey.ts +5 -0
- package/src/utils/smooth/SmoothContext.test.tsx +224 -0
- package/src/utils/smooth/SmoothContext.tsx +82 -0
- package/src/utils/smooth/useSmooth.test.tsx +499 -0
- package/src/utils/smooth/useSmooth.ts +266 -0
- package/src/utils/useIsomorphicLayoutEffect.test.tsx +25 -0
- package/src/utils/useIsomorphicLayoutEffect.ts +1 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { detectTrigger } from "./detectTrigger.js";
|
|
2
|
+
import { resource, useMemo, useState } from "@ulearning/ai-tap";
|
|
3
|
+
// src/primitives/composer/trigger/triggerDetectionResource.ts
|
|
4
|
+
/** Tracks cursor position and derives the active trigger + query from composer text. */
|
|
5
|
+
const useTriggerDetectionResource = ({ text, triggerChar, matcher }) => {
|
|
6
|
+
const [cursorPosition, setCursorPosition] = useState(text.length);
|
|
7
|
+
const trigger = useMemo(() => {
|
|
8
|
+
const pos = Math.min(cursorPosition, text.length);
|
|
9
|
+
return detectTrigger(text, triggerChar, pos, matcher);
|
|
10
|
+
}, [
|
|
11
|
+
cursorPosition,
|
|
12
|
+
matcher,
|
|
13
|
+
text,
|
|
14
|
+
triggerChar
|
|
15
|
+
]);
|
|
16
|
+
return {
|
|
17
|
+
trigger,
|
|
18
|
+
query: trigger?.query ?? "",
|
|
19
|
+
setCursorPosition
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
const TriggerDetectionResource = resource(useTriggerDetectionResource);
|
|
23
|
+
export { TriggerDetectionResource };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=triggerDetectionResource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerDetectionResource.js","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerDetectionResource.ts"],"sourcesContent":["import { useMemo, useState } from \"@ulearning/ai-tap\";\nimport { resource } from \"@ulearning/ai-tap\";\nimport {\n detectTrigger,\n type TriggerMatch,\n type TriggerMatcher,\n} from \"./detectTrigger\";\n\n/** Detected trigger position within the composer text. */\nexport type DetectedTrigger = TriggerMatch;\n\nexport type TriggerDetectionResourceOutput = {\n /** Detected trigger (or `null` when inactive). */\n readonly trigger: DetectedTrigger | null;\n /** Current query string (empty when no trigger active). */\n readonly query: string;\n /** Update the tracked cursor position (wired to composer input). */\n setCursorPosition(pos: number): void;\n};\n\n/** Tracks cursor position and derives the active trigger + query from composer text. */\nconst useTriggerDetectionResource = ({\n text,\n triggerChar,\n matcher,\n}: {\n text: string;\n triggerChar: string;\n matcher?: TriggerMatcher | undefined;\n}): TriggerDetectionResourceOutput => {\n const [cursorPosition, setCursorPosition] = useState(text.length);\n\n const trigger = useMemo(() => {\n const pos = Math.min(cursorPosition, text.length);\n return detectTrigger(text, triggerChar, pos, matcher);\n }, [cursorPosition, matcher, text, triggerChar]);\n\n const query = trigger?.query ?? \"\";\n\n return {\n trigger,\n query,\n setCursorPosition,\n };\n};\n\nexport const TriggerDetectionResource = resource(useTriggerDetectionResource);\n"],"mappings":";;;;AAqBA,MAAM,+BAA+B,EACnC,MACA,aACA,cAKoC;CACpC,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,KAAK,MAAM;CAEhE,MAAM,UAAU,cAAc;EAC5B,MAAM,MAAM,KAAK,IAAI,gBAAgB,KAAK,MAAM;EAChD,OAAO,cAAc,MAAM,aAAa,KAAK,OAAO;CACtD,GAAG;EAAC;EAAgB;EAAS;EAAM;CAAW,CAAC;CAI/C,OAAO;EACL;EACA,OAJY,SAAS,SAAS;EAK9B;CACF;AACF;AAEA,MAAa,2BAA2B,SAAS,2BAA2B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Unstable_TriggerCategory, Unstable_TriggerItem } from "@ulearning/ai-core";
|
|
2
|
+
/** Key event shape accepted by the keyboard handler. */
|
|
3
|
+
export type TriggerPopoverKeyEvent = {
|
|
4
|
+
readonly key: string;
|
|
5
|
+
readonly shiftKey: boolean;
|
|
6
|
+
preventDefault(): void;
|
|
7
|
+
};
|
|
8
|
+
export type TriggerKeyboardResourceOutput = {
|
|
9
|
+
/** Index of the currently highlighted entry within the navigable list. */
|
|
10
|
+
readonly highlightedIndex: number;
|
|
11
|
+
/** ID of the currently highlighted item (for `aria-activedescendant`). */
|
|
12
|
+
readonly highlightedItemId: string | undefined;
|
|
13
|
+
/** Move the highlight to an entry index (e.g. from pointer hover). Out-of-range values are ignored. */
|
|
14
|
+
highlightIndex(index: number): void;
|
|
15
|
+
/** Handle a key event; returns `true` if it was consumed. */
|
|
16
|
+
handleKeyDown(e: TriggerPopoverKeyEvent): boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare const TriggerKeyboardResource: import("@ulearning/ai-tap").Resource<TriggerKeyboardResourceOutput, [{
|
|
19
|
+
navigableList: readonly (Unstable_TriggerCategory | Unstable_TriggerItem)[];
|
|
20
|
+
isSearchMode: boolean;
|
|
21
|
+
activeCategoryId: string | null;
|
|
22
|
+
query: string;
|
|
23
|
+
popoverId: string;
|
|
24
|
+
open: boolean;
|
|
25
|
+
selectItem: (item: Unstable_TriggerItem) => void;
|
|
26
|
+
selectCategory: (categoryId: string) => void;
|
|
27
|
+
goBack: () => void;
|
|
28
|
+
close: () => void;
|
|
29
|
+
}]>;
|
|
30
|
+
//# sourceMappingURL=triggerKeyboardResource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerKeyboardResource.d.ts","mappings":"AAEA,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,oBAAoB;AAS3B;AACA,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO;IAC1B,cAAc,IAAI,IAAI;CACvB;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C;IACA,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IACjC;IACA,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS;IAC9C;IACA,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IACnC;IACA,aAAa,CAAC,CAAC,EAAE,sBAAsB,GAAG,OAAO;CAClD;AAuHD,eAAO,MAAM,uBAAuB;mBArGnB,SAAS,CAAC,wBAAwB,GAAG,oBAAoB,CAAC,EAAE;kBAC7D,OAAO;sBACH,MAAM,GAAG,IAAI;WACxB,MAAM;eACF,MAAM;UACX,OAAO;gBACD,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI;oBAChC,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI;YACpC,MAAM,IAAI;WACX,MAAM,IAAI;GA4FwD","names":[],"ignoreList":[],"sources":["../../../../src/primitives/composer/trigger/triggerKeyboardResource.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { resource, useEffectEvent, useState } from "@ulearning/ai-tap";
|
|
2
|
+
// src/primitives/composer/trigger/triggerKeyboardResource.ts
|
|
3
|
+
/** Relies on `Unstable_TriggerCategory` never carrying a `type` field. */
|
|
4
|
+
function isTriggerItem(x) {
|
|
5
|
+
return "type" in x;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Owns keyboard-driven highlight state for the popover. Delegates selection,
|
|
9
|
+
* category drill-in, back, and close to the callbacks supplied by the parent.
|
|
10
|
+
*/
|
|
11
|
+
const useTriggerKeyboardResource = ({ navigableList, isSearchMode, activeCategoryId, query, popoverId, open, selectItem, selectCategory, goBack, close }) => {
|
|
12
|
+
const [highlightedIndex, setHighlightedIndex] = useState(0);
|
|
13
|
+
const [highlightScope, setHighlightScope] = useState({
|
|
14
|
+
navigableList,
|
|
15
|
+
isSearchMode,
|
|
16
|
+
activeCategoryId
|
|
17
|
+
});
|
|
18
|
+
if (highlightScope.navigableList !== navigableList || highlightScope.isSearchMode !== isSearchMode || highlightScope.activeCategoryId !== activeCategoryId) {
|
|
19
|
+
setHighlightScope({
|
|
20
|
+
navigableList,
|
|
21
|
+
isSearchMode,
|
|
22
|
+
activeCategoryId
|
|
23
|
+
});
|
|
24
|
+
setHighlightedIndex(0);
|
|
25
|
+
}
|
|
26
|
+
const highlightIndex = useEffectEvent((index) => {
|
|
27
|
+
if (index < 0 || index >= navigableList.length) return;
|
|
28
|
+
if (index === highlightedIndex) return;
|
|
29
|
+
setHighlightedIndex(index);
|
|
30
|
+
});
|
|
31
|
+
const handleKeyDown = useEffectEvent((e) => {
|
|
32
|
+
if (!open) return false;
|
|
33
|
+
switch (e.key) {
|
|
34
|
+
case "ArrowDown":
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
setHighlightedIndex((prev) => {
|
|
37
|
+
const len = navigableList.length;
|
|
38
|
+
if (len === 0) return 0;
|
|
39
|
+
return prev < len - 1 ? prev + 1 : 0;
|
|
40
|
+
});
|
|
41
|
+
return true;
|
|
42
|
+
case "ArrowUp":
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
setHighlightedIndex((prev) => {
|
|
45
|
+
const len = navigableList.length;
|
|
46
|
+
if (len === 0) return 0;
|
|
47
|
+
return prev > 0 ? prev - 1 : len - 1;
|
|
48
|
+
});
|
|
49
|
+
return true;
|
|
50
|
+
case "Enter":
|
|
51
|
+
case "Tab": {
|
|
52
|
+
if (e.shiftKey) return false;
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
const item = navigableList[highlightedIndex];
|
|
55
|
+
if (!item) return true;
|
|
56
|
+
if (isTriggerItem(item)) selectItem(item);
|
|
57
|
+
else selectCategory(item.id);
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
case "Escape":
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
close();
|
|
63
|
+
return true;
|
|
64
|
+
case "Backspace":
|
|
65
|
+
if (activeCategoryId && query === "") {
|
|
66
|
+
e.preventDefault();
|
|
67
|
+
goBack();
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
default: return false;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const highlightedEntry = navigableList[highlightedIndex];
|
|
75
|
+
return {
|
|
76
|
+
highlightedIndex,
|
|
77
|
+
highlightedItemId: open && highlightedEntry ? `${popoverId}-option-${highlightedEntry.id}` : void 0,
|
|
78
|
+
highlightIndex,
|
|
79
|
+
handleKeyDown
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
const TriggerKeyboardResource = resource(useTriggerKeyboardResource);
|
|
83
|
+
export { TriggerKeyboardResource };
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=triggerKeyboardResource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerKeyboardResource.js","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerKeyboardResource.ts"],"sourcesContent":["import { useEffectEvent, useState } from \"@ulearning/ai-tap\";\nimport { resource } from \"@ulearning/ai-tap\";\nimport type {\n Unstable_TriggerCategory,\n Unstable_TriggerItem,\n} from \"@ulearning/ai-core\";\n\n/** Relies on `Unstable_TriggerCategory` never carrying a `type` field. */\nfunction isTriggerItem(\n x: Unstable_TriggerItem | Unstable_TriggerCategory,\n): x is Unstable_TriggerItem {\n return \"type\" in x;\n}\n\n/** Key event shape accepted by the keyboard handler. */\nexport type TriggerPopoverKeyEvent = {\n readonly key: string;\n readonly shiftKey: boolean;\n preventDefault(): void;\n};\n\nexport type TriggerKeyboardResourceOutput = {\n /** Index of the currently highlighted entry within the navigable list. */\n readonly highlightedIndex: number;\n /** ID of the currently highlighted item (for `aria-activedescendant`). */\n readonly highlightedItemId: string | undefined;\n /** Move the highlight to an entry index (e.g. from pointer hover). Out-of-range values are ignored. */\n highlightIndex(index: number): void;\n /** Handle a key event; returns `true` if it was consumed. */\n handleKeyDown(e: TriggerPopoverKeyEvent): boolean;\n};\n\n/**\n * Owns keyboard-driven highlight state for the popover. Delegates selection,\n * category drill-in, back, and close to the callbacks supplied by the parent.\n */\nconst useTriggerKeyboardResource = ({\n navigableList,\n isSearchMode,\n activeCategoryId,\n query,\n popoverId,\n open,\n selectItem,\n selectCategory,\n goBack,\n close,\n}: {\n navigableList: readonly (Unstable_TriggerCategory | Unstable_TriggerItem)[];\n isSearchMode: boolean;\n activeCategoryId: string | null;\n query: string;\n popoverId: string;\n open: boolean;\n selectItem: (item: Unstable_TriggerItem) => void;\n selectCategory: (categoryId: string) => void;\n goBack: () => void;\n close: () => void;\n}): TriggerKeyboardResourceOutput => {\n const [highlightedIndex, setHighlightedIndex] = useState(0);\n const [highlightScope, setHighlightScope] = useState({\n navigableList,\n isSearchMode,\n activeCategoryId,\n });\n\n if (\n highlightScope.navigableList !== navigableList ||\n highlightScope.isSearchMode !== isSearchMode ||\n highlightScope.activeCategoryId !== activeCategoryId\n ) {\n setHighlightScope({ navigableList, isSearchMode, activeCategoryId });\n setHighlightedIndex(0);\n }\n\n const highlightIndex = useEffectEvent((index: number) => {\n if (index < 0 || index >= navigableList.length) return;\n if (index === highlightedIndex) return;\n setHighlightedIndex(index);\n });\n\n const handleKeyDown = useEffectEvent((e: TriggerPopoverKeyEvent): boolean => {\n if (!open) return false;\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n setHighlightedIndex((prev) => {\n const len = navigableList.length;\n if (len === 0) return 0;\n return prev < len - 1 ? prev + 1 : 0;\n });\n return true;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n setHighlightedIndex((prev) => {\n const len = navigableList.length;\n if (len === 0) return 0;\n return prev > 0 ? prev - 1 : len - 1;\n });\n return true;\n }\n case \"Enter\":\n case \"Tab\": {\n if (e.shiftKey) return false;\n e.preventDefault();\n const item = navigableList[highlightedIndex];\n if (!item) return true;\n\n if (isTriggerItem(item)) {\n selectItem(item);\n } else {\n selectCategory(item.id);\n }\n return true;\n }\n case \"Escape\": {\n e.preventDefault();\n close();\n return true;\n }\n case \"Backspace\": {\n if (activeCategoryId && query === \"\") {\n e.preventDefault();\n goBack();\n return true;\n }\n return false;\n }\n default:\n return false;\n }\n });\n\n const highlightedEntry = navigableList[highlightedIndex];\n const highlightedItemId =\n open && highlightedEntry\n ? `${popoverId}-option-${highlightedEntry.id}`\n : undefined;\n\n return {\n highlightedIndex,\n highlightedItemId,\n highlightIndex,\n handleKeyDown,\n };\n};\n\nexport const TriggerKeyboardResource = resource(useTriggerKeyboardResource);\n"],"mappings":";;;AAQA,SAAS,cACP,GAC2B;CAC3B,OAAO,UAAU;AACnB;;;;;AAwBA,MAAM,8BAA8B,EAClC,eACA,cACA,kBACA,OACA,WACA,MACA,YACA,gBACA,QACA,YAYmC;CACnC,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,CAAC;CAC1D,MAAM,CAAC,gBAAgB,qBAAqB,SAAS;EACnD;EACA;EACA;CACF,CAAC;CAED,IACE,eAAe,kBAAkB,iBACjC,eAAe,iBAAiB,gBAChC,eAAe,qBAAqB,kBACpC;EACA,kBAAkB;GAAE;GAAe;GAAc;EAAiB,CAAC;EACnE,oBAAoB,CAAC;CACvB;CAEA,MAAM,iBAAiB,gBAAgB,UAAkB;EACvD,IAAI,QAAQ,KAAK,SAAS,cAAc,QAAQ;EAChD,IAAI,UAAU,kBAAkB;EAChC,oBAAoB,KAAK;CAC3B,CAAC;CAED,MAAM,gBAAgB,gBAAgB,MAAuC;EAC3E,IAAI,CAAC,MAAM,OAAO;EAElB,QAAQ,EAAE,KAAV;GACE,KAAK;IACH,EAAE,eAAe;IACjB,qBAAqB,SAAS;KAC5B,MAAM,MAAM,cAAc;KAC1B,IAAI,QAAQ,GAAG,OAAO;KACtB,OAAO,OAAO,MAAM,IAAI,OAAO,IAAI;IACrC,CAAC;IACD,OAAO;GAET,KAAK;IACH,EAAE,eAAe;IACjB,qBAAqB,SAAS;KAC5B,MAAM,MAAM,cAAc;KAC1B,IAAI,QAAQ,GAAG,OAAO;KACtB,OAAO,OAAO,IAAI,OAAO,IAAI,MAAM;IACrC,CAAC;IACD,OAAO;GAET,KAAK;GACL,KAAK,OAAO;IACV,IAAI,EAAE,UAAU,OAAO;IACvB,EAAE,eAAe;IACjB,MAAM,OAAO,cAAc;IAC3B,IAAI,CAAC,MAAM,OAAO;IAElB,IAAI,cAAc,IAAI,GACpB,WAAW,IAAI;SAEf,eAAe,KAAK,EAAE;IAExB,OAAO;GACT;GACA,KAAK;IACH,EAAE,eAAe;IACjB,MAAM;IACN,OAAO;GAET,KAAK;IACH,IAAI,oBAAoB,UAAU,IAAI;KACpC,EAAE,eAAe;KACjB,OAAO;KACP,OAAO;IACT;IACA,OAAO;GAET,SACE,OAAO;EACX;CACF,CAAC;CAED,MAAM,mBAAmB,cAAc;CAMvC,OAAO;EACL;EACA,mBANA,QAAQ,mBACJ,GAAG,UAAU,UAAU,iBAAiB,OACxC,KAAA;EAKJ;EACA;CACF;AACF;AAEA,MAAa,0BAA0B,SAAS,0BAA0B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Unstable_TriggerAdapter, Unstable_TriggerCategory, Unstable_TriggerItem } from "@ulearning/ai-core";
|
|
2
|
+
export type TriggerNavigationResourceOutput = {
|
|
3
|
+
/** Filtered categories visible in the list (empty in search mode). */
|
|
4
|
+
readonly categories: readonly Unstable_TriggerCategory[];
|
|
5
|
+
/** Filtered items visible in the list. */
|
|
6
|
+
readonly items: readonly Unstable_TriggerItem[];
|
|
7
|
+
/** `true` when the current list is search results rather than categories. */
|
|
8
|
+
readonly isSearchMode: boolean;
|
|
9
|
+
/** Currently drilled-into category id (or `null` for the top level). */
|
|
10
|
+
readonly activeCategoryId: string | null;
|
|
11
|
+
/** Flat list used for keyboard navigation (categories or items). */
|
|
12
|
+
readonly navigableList: readonly (Unstable_TriggerCategory | Unstable_TriggerItem)[];
|
|
13
|
+
/** Drill into a category. */
|
|
14
|
+
selectCategory(categoryId: string): void;
|
|
15
|
+
/** Return to the top-level category list. */
|
|
16
|
+
goBack(): void;
|
|
17
|
+
};
|
|
18
|
+
export declare const TriggerNavigationResource: import("@ulearning/ai-tap").Resource<TriggerNavigationResourceOutput, [{
|
|
19
|
+
adapter: Unstable_TriggerAdapter | undefined;
|
|
20
|
+
query: string;
|
|
21
|
+
open: boolean;
|
|
22
|
+
}]>;
|
|
23
|
+
//# sourceMappingURL=triggerNavigationResource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerNavigationResource.d.ts","mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,oBAAoB;AAG3B,MAAM,MAAM,+BAA+B,GAAG;IAC5C;IACA,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE;IACxD;IACA,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE;IAC/C;IACA,QAAQ,CAAC,YAAY,EAAE,OAAO;IAC9B;IACA,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IACxC;IACA,QAAQ,CAAC,aAAa,EAAE,SAAS,CAC7B,wBAAwB,GACxB,oBAAoB,CACvB,EAAE;IACH;IACA,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC;IACA,MAAM,IAAI,IAAI;CACf;AAqGD,eAAO,MAAM,yBAAyB;aA1F3B,uBAAuB,GAAG,SAAS;WACrC,MAAM;UACP,OAAO;GAwFgE","names":[],"ignoreList":[],"sources":["../../../../src/primitives/composer/trigger/triggerNavigationResource.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { matchesTriggerItemQuery } from "./matchesTriggerItemQuery.js";
|
|
2
|
+
import { resource, useEffectEvent, useMemo, useState } from "@ulearning/ai-tap";
|
|
3
|
+
// src/primitives/composer/trigger/triggerNavigationResource.ts
|
|
4
|
+
/**
|
|
5
|
+
* Computes categories, items, search results, and navigation state from the
|
|
6
|
+
* adapter + current query. Pure derivation — no side effects on the composer.
|
|
7
|
+
*/
|
|
8
|
+
const useTriggerNavigationResource = ({ adapter, query, open }) => {
|
|
9
|
+
const [activeCategoryId, setActiveCategoryId] = useState(null);
|
|
10
|
+
const [wasOpen, setWasOpen] = useState(open);
|
|
11
|
+
if (wasOpen !== open) {
|
|
12
|
+
setWasOpen(open);
|
|
13
|
+
if (!open) setActiveCategoryId(null);
|
|
14
|
+
}
|
|
15
|
+
const categories = useMemo(() => {
|
|
16
|
+
if (!open || !adapter) return [];
|
|
17
|
+
return adapter.categories();
|
|
18
|
+
}, [open, adapter]);
|
|
19
|
+
const effectiveActiveCategoryId = open ? activeCategoryId : null;
|
|
20
|
+
const allItems = useMemo(() => {
|
|
21
|
+
if (!effectiveActiveCategoryId || !adapter) return [];
|
|
22
|
+
return adapter.categoryItems(effectiveActiveCategoryId);
|
|
23
|
+
}, [effectiveActiveCategoryId, adapter]);
|
|
24
|
+
const searchResults = useMemo(() => {
|
|
25
|
+
if (!open || !adapter || effectiveActiveCategoryId) return null;
|
|
26
|
+
if (!query && categories.length > 0) return null;
|
|
27
|
+
if (adapter.search) return adapter.search(query);
|
|
28
|
+
const all = [];
|
|
29
|
+
const lower = query.toLowerCase();
|
|
30
|
+
for (const cat of categories) for (const item of adapter.categoryItems(cat.id)) if (matchesTriggerItemQuery(item, lower)) all.push(item);
|
|
31
|
+
return all;
|
|
32
|
+
}, [
|
|
33
|
+
open,
|
|
34
|
+
adapter,
|
|
35
|
+
query,
|
|
36
|
+
effectiveActiveCategoryId,
|
|
37
|
+
categories
|
|
38
|
+
]);
|
|
39
|
+
const isSearchMode = searchResults !== null;
|
|
40
|
+
const filteredCategories = useMemo(() => {
|
|
41
|
+
if (isSearchMode) return [];
|
|
42
|
+
if (!query) return categories;
|
|
43
|
+
const lower = query.toLowerCase();
|
|
44
|
+
return categories.filter((cat) => cat.label.toLowerCase().includes(lower));
|
|
45
|
+
}, [
|
|
46
|
+
categories,
|
|
47
|
+
query,
|
|
48
|
+
isSearchMode
|
|
49
|
+
]);
|
|
50
|
+
const filteredItems = useMemo(() => {
|
|
51
|
+
if (isSearchMode) return searchResults ?? [];
|
|
52
|
+
if (!query) return allItems;
|
|
53
|
+
const lower = query.toLowerCase();
|
|
54
|
+
return allItems.filter((item) => matchesTriggerItemQuery(item, lower));
|
|
55
|
+
}, [
|
|
56
|
+
allItems,
|
|
57
|
+
query,
|
|
58
|
+
isSearchMode,
|
|
59
|
+
searchResults
|
|
60
|
+
]);
|
|
61
|
+
return {
|
|
62
|
+
categories: filteredCategories,
|
|
63
|
+
items: filteredItems,
|
|
64
|
+
isSearchMode,
|
|
65
|
+
activeCategoryId: effectiveActiveCategoryId,
|
|
66
|
+
navigableList: useMemo(() => {
|
|
67
|
+
if (isSearchMode) return searchResults ?? [];
|
|
68
|
+
if (effectiveActiveCategoryId) return filteredItems;
|
|
69
|
+
return filteredCategories;
|
|
70
|
+
}, [
|
|
71
|
+
isSearchMode,
|
|
72
|
+
searchResults,
|
|
73
|
+
effectiveActiveCategoryId,
|
|
74
|
+
filteredItems,
|
|
75
|
+
filteredCategories
|
|
76
|
+
]),
|
|
77
|
+
selectCategory: useEffectEvent((categoryId) => {
|
|
78
|
+
setActiveCategoryId(categoryId);
|
|
79
|
+
}),
|
|
80
|
+
goBack: useEffectEvent(() => {
|
|
81
|
+
setActiveCategoryId(null);
|
|
82
|
+
})
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
const TriggerNavigationResource = resource(useTriggerNavigationResource);
|
|
86
|
+
export { TriggerNavigationResource };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=triggerNavigationResource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerNavigationResource.js","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerNavigationResource.ts"],"sourcesContent":["import { useEffectEvent, useMemo, useState } from \"@ulearning/ai-tap\";\nimport { resource } from \"@ulearning/ai-tap\";\nimport type {\n Unstable_TriggerAdapter,\n Unstable_TriggerCategory,\n Unstable_TriggerItem,\n} from \"@ulearning/ai-core\";\nimport { matchesTriggerItemQuery } from \"./matchesTriggerItemQuery\";\n\nexport type TriggerNavigationResourceOutput = {\n /** Filtered categories visible in the list (empty in search mode). */\n readonly categories: readonly Unstable_TriggerCategory[];\n /** Filtered items visible in the list. */\n readonly items: readonly Unstable_TriggerItem[];\n /** `true` when the current list is search results rather than categories. */\n readonly isSearchMode: boolean;\n /** Currently drilled-into category id (or `null` for the top level). */\n readonly activeCategoryId: string | null;\n /** Flat list used for keyboard navigation (categories or items). */\n readonly navigableList: readonly (\n | Unstable_TriggerCategory\n | Unstable_TriggerItem\n )[];\n /** Drill into a category. */\n selectCategory(categoryId: string): void;\n /** Return to the top-level category list. */\n goBack(): void;\n};\n\n/**\n * Computes categories, items, search results, and navigation state from the\n * adapter + current query. Pure derivation — no side effects on the composer.\n */\nconst useTriggerNavigationResource = ({\n adapter,\n query,\n open,\n}: {\n adapter: Unstable_TriggerAdapter | undefined;\n query: string;\n open: boolean;\n}): TriggerNavigationResourceOutput => {\n const [activeCategoryId, setActiveCategoryId] = useState<string | null>(null);\n const [wasOpen, setWasOpen] = useState(open);\n\n if (wasOpen !== open) {\n setWasOpen(open);\n if (!open) setActiveCategoryId(null);\n }\n\n const categories = useMemo<readonly Unstable_TriggerCategory[]>(() => {\n if (!open || !adapter) return [];\n return adapter.categories();\n }, [open, adapter]);\n\n const effectiveActiveCategoryId = open ? activeCategoryId : null;\n\n const allItems = useMemo<readonly Unstable_TriggerItem[]>(() => {\n if (!effectiveActiveCategoryId || !adapter) return [];\n return adapter.categoryItems(effectiveActiveCategoryId);\n }, [effectiveActiveCategoryId, adapter]);\n\n const searchResults = useMemo<readonly Unstable_TriggerItem[] | null>(() => {\n if (!open || !adapter || effectiveActiveCategoryId) return null;\n // If categories exist and query is empty, show categories first (not search)\n if (!query && categories.length > 0) return null;\n if (adapter.search) return adapter.search(query);\n\n // fallback: no adapter.search\n const all: Unstable_TriggerItem[] = [];\n const lower = query.toLowerCase();\n for (const cat of categories) {\n for (const item of adapter.categoryItems(cat.id)) {\n if (matchesTriggerItemQuery(item, lower)) {\n all.push(item);\n }\n }\n }\n return all;\n }, [open, adapter, query, effectiveActiveCategoryId, categories]);\n\n const isSearchMode = searchResults !== null;\n\n const filteredCategories = useMemo(() => {\n if (isSearchMode) return [];\n if (!query) return categories;\n const lower = query.toLowerCase();\n return categories.filter((cat) => cat.label.toLowerCase().includes(lower));\n }, [categories, query, isSearchMode]);\n\n const filteredItems = useMemo(() => {\n if (isSearchMode) return searchResults ?? [];\n if (!query) return allItems;\n const lower = query.toLowerCase();\n return allItems.filter((item) => matchesTriggerItemQuery(item, lower));\n }, [allItems, query, isSearchMode, searchResults]);\n\n const navigableList = useMemo(() => {\n if (isSearchMode) return searchResults ?? [];\n if (effectiveActiveCategoryId) return filteredItems;\n return filteredCategories;\n }, [\n isSearchMode,\n searchResults,\n effectiveActiveCategoryId,\n filteredItems,\n filteredCategories,\n ]);\n\n const selectCategory = useEffectEvent((categoryId: string) => {\n setActiveCategoryId(categoryId);\n });\n\n const goBack = useEffectEvent(() => {\n setActiveCategoryId(null);\n });\n\n return {\n categories: filteredCategories,\n items: filteredItems,\n isSearchMode,\n activeCategoryId: effectiveActiveCategoryId,\n navigableList,\n selectCategory,\n goBack,\n };\n};\n\nexport const TriggerNavigationResource = resource(useTriggerNavigationResource);\n"],"mappings":";;;;;;;AAiCA,MAAM,gCAAgC,EACpC,SACA,OACA,WAKqC;CACrC,MAAM,CAAC,kBAAkB,uBAAuB,SAAwB,IAAI;CAC5E,MAAM,CAAC,SAAS,cAAc,SAAS,IAAI;CAE3C,IAAI,YAAY,MAAM;EACpB,WAAW,IAAI;EACf,IAAI,CAAC,MAAM,oBAAoB,IAAI;CACrC;CAEA,MAAM,aAAa,cAAmD;EACpE,IAAI,CAAC,QAAQ,CAAC,SAAS,OAAO,CAAC;EAC/B,OAAO,QAAQ,WAAW;CAC5B,GAAG,CAAC,MAAM,OAAO,CAAC;CAElB,MAAM,4BAA4B,OAAO,mBAAmB;CAE5D,MAAM,WAAW,cAA+C;EAC9D,IAAI,CAAC,6BAA6B,CAAC,SAAS,OAAO,CAAC;EACpD,OAAO,QAAQ,cAAc,yBAAyB;CACxD,GAAG,CAAC,2BAA2B,OAAO,CAAC;CAEvC,MAAM,gBAAgB,cAAsD;EAC1E,IAAI,CAAC,QAAQ,CAAC,WAAW,2BAA2B,OAAO;EAE3D,IAAI,CAAC,SAAS,WAAW,SAAS,GAAG,OAAO;EAC5C,IAAI,QAAQ,QAAQ,OAAO,QAAQ,OAAO,KAAK;EAG/C,MAAM,MAA8B,CAAC;EACrC,MAAM,QAAQ,MAAM,YAAY;EAChC,KAAK,MAAM,OAAO,YAChB,KAAK,MAAM,QAAQ,QAAQ,cAAc,IAAI,EAAE,GAC7C,IAAI,wBAAwB,MAAM,KAAK,GACrC,IAAI,KAAK,IAAI;EAInB,OAAO;CACT,GAAG;EAAC;EAAM;EAAS;EAAO;EAA2B;CAAU,CAAC;CAEhE,MAAM,eAAe,kBAAkB;CAEvC,MAAM,qBAAqB,cAAc;EACvC,IAAI,cAAc,OAAO,CAAC;EAC1B,IAAI,CAAC,OAAO,OAAO;EACnB,MAAM,QAAQ,MAAM,YAAY;EAChC,OAAO,WAAW,QAAQ,QAAQ,IAAI,MAAM,YAAY,CAAC,CAAC,SAAS,KAAK,CAAC;CAC3E,GAAG;EAAC;EAAY;EAAO;CAAY,CAAC;CAEpC,MAAM,gBAAgB,cAAc;EAClC,IAAI,cAAc,OAAO,iBAAiB,CAAC;EAC3C,IAAI,CAAC,OAAO,OAAO;EACnB,MAAM,QAAQ,MAAM,YAAY;EAChC,OAAO,SAAS,QAAQ,SAAS,wBAAwB,MAAM,KAAK,CAAC;CACvE,GAAG;EAAC;EAAU;EAAO;EAAc;CAAa,CAAC;CAsBjD,OAAO;EACL,YAAY;EACZ,OAAO;EACP;EACA,kBAAkB;EAClB,eAzBoB,cAAc;GAClC,IAAI,cAAc,OAAO,iBAAiB,CAAC;GAC3C,IAAI,2BAA2B,OAAO;GACtC,OAAO;EACT,GAAG;GACD;GACA;GACA;GACA;GACA;EACF,CAec;EACZ,gBAdqB,gBAAgB,eAAuB;GAC5D,oBAAoB,UAAU;EAChC,CAYe;EACb,QAXa,qBAAqB;GAClC,oBAAoB,IAAI;EAC1B,CASO;CACP;AACF;AAEA,MAAa,4BAA4B,SAAS,4BAA4B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Unstable_DirectiveFormatter, Unstable_TriggerItem } from "@ulearning/ai-core";
|
|
2
|
+
import type { AssistantClient } from "@ulearning/ai-store";
|
|
3
|
+
import type { DetectedTrigger } from "./triggerDetectionResource.js";
|
|
4
|
+
/**
|
|
5
|
+
* External override for selection (used by Lexical's DirectivePlugin).
|
|
6
|
+
* Returns whether it handled the item, and calls `onInserted` once the
|
|
7
|
+
* insertion has reached the composer.
|
|
8
|
+
*/
|
|
9
|
+
export type SelectItemOverride = (item: Unstable_TriggerItem, onInserted: () => void) => boolean;
|
|
10
|
+
export type TriggerBehavior = {
|
|
11
|
+
readonly kind: "directive";
|
|
12
|
+
readonly formatter: Unstable_DirectiveFormatter;
|
|
13
|
+
readonly onInserted?: (item: Unstable_TriggerItem) => void;
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: "action";
|
|
16
|
+
readonly formatter: Unstable_DirectiveFormatter;
|
|
17
|
+
readonly onExecute: (item: Unstable_TriggerItem) => void;
|
|
18
|
+
readonly removeOnExecute?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export type TriggerSelectionResourceOutput = {
|
|
21
|
+
/** Select an item — runs override (if any) then applies behavior. */
|
|
22
|
+
selectItem(item: Unstable_TriggerItem): void;
|
|
23
|
+
/** Close the popover (moves cursor before trigger to deactivate detection). */
|
|
24
|
+
close(): void;
|
|
25
|
+
/** Register a Lexical-style selection override. Returns unregister fn. */
|
|
26
|
+
registerSelectItemOverride(fn: SelectItemOverride): () => void;
|
|
27
|
+
};
|
|
28
|
+
export declare const TriggerSelectionResource: import("@ulearning/ai-tap").Resource<TriggerSelectionResourceOutput, [{
|
|
29
|
+
behavior: TriggerBehavior | undefined;
|
|
30
|
+
trigger: DetectedTrigger | null;
|
|
31
|
+
aui: AssistantClient;
|
|
32
|
+
triggerChar: string;
|
|
33
|
+
setCursorPosition: (pos: number) => void;
|
|
34
|
+
/** Called after a successful selection so the parent can reset nav state. */
|
|
35
|
+
onSelected: () => void;
|
|
36
|
+
}]>;
|
|
37
|
+
//# sourceMappingURL=triggerSelectionResource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerSelectionResource.d.ts","mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,oBAAoB;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA4B;AAEjE;;;;;AAKA,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,oBAAoB,EAC1B,UAAU,EAAE,MAAM,IAAI,KACnB,OAAO;AAEZ,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,2BAA2B;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI;CAC3D,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ;IACvB,QAAQ,CAAC,SAAS,EAAE,2BAA2B;IAC/C,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI;IACxD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO;CACnC;AAEL,MAAM,MAAM,8BAA8B,GAAG;IAC3C;IACA,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAC5C;IACA,KAAK,IAAI,IAAI;IACb;IACA,0BAA0B,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,IAAI;CAC/D;AA6FD,eAAO,MAAM,wBAAwB;cAnFzB,eAAe,GAAG,SAAS;aAC5B,eAAe,GAAG,IAAI;SAC1B,eAAe;iBACP,MAAM;uBACA,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IACxC;gBACY,MAAM,IAAI;GA6EqD","names":[],"ignoreList":[],"sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { resource, useEffectEvent, useRef } from "@ulearning/ai-tap";
|
|
2
|
+
// src/primitives/composer/trigger/triggerSelectionResource.ts
|
|
3
|
+
/** Owns composer text mutation + behavior dispatch on item selection. */
|
|
4
|
+
const useTriggerSelectionResource = ({ behavior, trigger, aui, setCursorPosition, onSelected }) => {
|
|
5
|
+
const selectItemOverrideRef = useRef(null);
|
|
6
|
+
const registerSelectItemOverride = useEffectEvent((fn) => {
|
|
7
|
+
selectItemOverrideRef.current = fn;
|
|
8
|
+
return () => {
|
|
9
|
+
if (selectItemOverrideRef.current === fn) selectItemOverrideRef.current = null;
|
|
10
|
+
};
|
|
11
|
+
});
|
|
12
|
+
return {
|
|
13
|
+
selectItem: useEffectEvent((item) => {
|
|
14
|
+
if (!trigger || !behavior) return;
|
|
15
|
+
const reportInserted = () => {
|
|
16
|
+
if (behavior.kind === "directive") behavior.onInserted?.(item);
|
|
17
|
+
};
|
|
18
|
+
if (selectItemOverrideRef.current?.(item, reportInserted)) {
|
|
19
|
+
onSelected();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const currentText = aui.composer.getState().text;
|
|
23
|
+
const before = currentText.slice(0, trigger.offset);
|
|
24
|
+
const after = currentText.slice(trigger.endOffset);
|
|
25
|
+
const insertDirective = () => {
|
|
26
|
+
const directive = behavior.formatter.serialize(item);
|
|
27
|
+
aui.composer.setText(before + directive + (after.startsWith(" ") ? after : ` ${after}`), { origin: "user" });
|
|
28
|
+
setCursorPosition(before.length + directive.length + 1);
|
|
29
|
+
};
|
|
30
|
+
if (behavior.kind === "directive") {
|
|
31
|
+
insertDirective();
|
|
32
|
+
behavior.onInserted?.(item);
|
|
33
|
+
} else {
|
|
34
|
+
if (behavior.removeOnExecute) {
|
|
35
|
+
aui.composer.setText(before + (after.startsWith(" ") ? after.slice(1) : after), { origin: "user" });
|
|
36
|
+
setCursorPosition(before.length);
|
|
37
|
+
} else insertDirective();
|
|
38
|
+
behavior.onExecute(item);
|
|
39
|
+
}
|
|
40
|
+
onSelected();
|
|
41
|
+
}),
|
|
42
|
+
close: useEffectEvent(() => {
|
|
43
|
+
onSelected();
|
|
44
|
+
if (trigger) setCursorPosition(trigger.offset);
|
|
45
|
+
}),
|
|
46
|
+
registerSelectItemOverride
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
const TriggerSelectionResource = resource(useTriggerSelectionResource);
|
|
50
|
+
export { TriggerSelectionResource };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=triggerSelectionResource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerSelectionResource.js","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"sourcesContent":["import { useEffectEvent, useRef } from \"@ulearning/ai-tap\";\nimport { resource } from \"@ulearning/ai-tap\";\nimport type {\n Unstable_DirectiveFormatter,\n Unstable_TriggerItem,\n} from \"@ulearning/ai-core\";\nimport type { AssistantClient } from \"@ulearning/ai-store\";\nimport type { DetectedTrigger } from \"./triggerDetectionResource\";\n\n/**\n * External override for selection (used by Lexical's DirectivePlugin).\n * Returns whether it handled the item, and calls `onInserted` once the\n * insertion has reached the composer.\n */\nexport type SelectItemOverride = (\n item: Unstable_TriggerItem,\n onInserted: () => void,\n) => boolean;\n\nexport type TriggerBehavior =\n | {\n readonly kind: \"directive\";\n readonly formatter: Unstable_DirectiveFormatter;\n readonly onInserted?: (item: Unstable_TriggerItem) => void;\n }\n | {\n readonly kind: \"action\";\n readonly formatter: Unstable_DirectiveFormatter;\n readonly onExecute: (item: Unstable_TriggerItem) => void;\n readonly removeOnExecute?: boolean;\n };\n\nexport type TriggerSelectionResourceOutput = {\n /** Select an item — runs override (if any) then applies behavior. */\n selectItem(item: Unstable_TriggerItem): void;\n /** Close the popover (moves cursor before trigger to deactivate detection). */\n close(): void;\n /** Register a Lexical-style selection override. Returns unregister fn. */\n registerSelectItemOverride(fn: SelectItemOverride): () => void;\n};\n\n/** Owns composer text mutation + behavior dispatch on item selection. */\nconst useTriggerSelectionResource = ({\n behavior,\n trigger,\n aui,\n setCursorPosition,\n onSelected,\n}: {\n behavior: TriggerBehavior | undefined;\n trigger: DetectedTrigger | null;\n aui: AssistantClient;\n triggerChar: string;\n setCursorPosition: (pos: number) => void;\n /** Called after a successful selection so the parent can reset nav state. */\n onSelected: () => void;\n}): TriggerSelectionResourceOutput => {\n // Select-item override: lets Lexical's DirectivePlugin intercept selection\n // and drive its own node insertion.\n const selectItemOverrideRef = useRef<SelectItemOverride | null>(null);\n\n const registerSelectItemOverride = useEffectEvent(\n (fn: SelectItemOverride) => {\n selectItemOverrideRef.current = fn;\n return () => {\n if (selectItemOverrideRef.current === fn) {\n selectItemOverrideRef.current = null;\n }\n };\n },\n );\n\n const selectItem = useEffectEvent((item: Unstable_TriggerItem) => {\n if (!trigger || !behavior) return;\n\n const reportInserted = () => {\n if (behavior.kind === \"directive\") behavior.onInserted?.(item);\n };\n\n if (selectItemOverrideRef.current?.(item, reportInserted)) {\n onSelected();\n return;\n }\n\n const currentText = aui.composer.getState().text;\n const before = currentText.slice(0, trigger.offset);\n const after = currentText.slice(trigger.endOffset);\n\n const insertDirective = () => {\n const directive = behavior.formatter.serialize(item);\n aui.composer.setText(\n before + directive + (after.startsWith(\" \") ? after : ` ${after}`),\n { origin: \"user\" },\n );\n setCursorPosition(before.length + directive.length + 1);\n };\n\n if (behavior.kind === \"directive\") {\n insertDirective();\n behavior.onInserted?.(item);\n } else {\n if (behavior.removeOnExecute) {\n aui.composer.setText(\n before + (after.startsWith(\" \") ? after.slice(1) : after),\n { origin: \"user\" },\n );\n setCursorPosition(before.length);\n } else {\n // Leave directive chip in the composer as an audit trail\n insertDirective();\n }\n behavior.onExecute(item);\n }\n\n onSelected();\n });\n\n const close = useEffectEvent(() => {\n onSelected();\n // Move cursor before the trigger so trigger detection deactivates\n if (trigger) {\n setCursorPosition(trigger.offset);\n }\n });\n\n return {\n selectItem,\n close,\n registerSelectItemOverride,\n };\n};\n\nexport const TriggerSelectionResource = resource(useTriggerSelectionResource);\n"],"mappings":";;;AA0CA,MAAM,+BAA+B,EACnC,UACA,SACA,KACA,mBACA,iBASoC;CAGpC,MAAM,wBAAwB,OAAkC,IAAI;CAEpE,MAAM,6BAA6B,gBAChC,OAA2B;EAC1B,sBAAsB,UAAU;EAChC,aAAa;GACX,IAAI,sBAAsB,YAAY,IACpC,sBAAsB,UAAU;EAEpC;CACF,CACF;CAuDA,OAAO;EACL,YAtDiB,gBAAgB,SAA+B;GAChE,IAAI,CAAC,WAAW,CAAC,UAAU;GAE3B,MAAM,uBAAuB;IAC3B,IAAI,SAAS,SAAS,aAAa,SAAS,aAAa,IAAI;GAC/D;GAEA,IAAI,sBAAsB,UAAU,MAAM,cAAc,GAAG;IACzD,WAAW;IACX;GACF;GAEA,MAAM,cAAc,IAAI,SAAS,SAAS,CAAC,CAAC;GAC5C,MAAM,SAAS,YAAY,MAAM,GAAG,QAAQ,MAAM;GAClD,MAAM,QAAQ,YAAY,MAAM,QAAQ,SAAS;GAEjD,MAAM,wBAAwB;IAC5B,MAAM,YAAY,SAAS,UAAU,UAAU,IAAI;IACnD,IAAI,SAAS,QACX,SAAS,aAAa,MAAM,WAAW,GAAG,IAAI,QAAQ,IAAI,UAC1D,EAAE,QAAQ,OAAO,CACnB;IACA,kBAAkB,OAAO,SAAS,UAAU,SAAS,CAAC;GACxD;GAEA,IAAI,SAAS,SAAS,aAAa;IACjC,gBAAgB;IAChB,SAAS,aAAa,IAAI;GAC5B,OAAO;IACL,IAAI,SAAS,iBAAiB;KAC5B,IAAI,SAAS,QACX,UAAU,MAAM,WAAW,GAAG,IAAI,MAAM,MAAM,CAAC,IAAI,QACnD,EAAE,QAAQ,OAAO,CACnB;KACA,kBAAkB,OAAO,MAAM;IACjC,OAEE,gBAAgB;IAElB,SAAS,UAAU,IAAI;GACzB;GAEA,WAAW;EACb,CAWW;EACT,OAVY,qBAAqB;GACjC,WAAW;GAEX,IAAI,SACF,kBAAkB,QAAQ,MAAM;EAEpC,CAIM;EACJ;CACF;AACF;AAEA,MAAa,2BAA2B,SAAS,2BAA2B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComposerCancelWithFocus.d.ts","mappings":"AASA,eAAO,MAAM,0BAA0B,GAAI,QAAQ,MAAM,IAAI,cAI1B,WAAW,GAAG,IAAI,SAqCpD","names":[],"ignoreList":[],"sources":["../../../src/primitives/composer/useComposerCancelWithFocus.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { COMPOSER_INPUT_SELECTOR } from "./composerInputSelector.js";
|
|
3
|
+
import { useThreadRootElementRef } from "../thread/ThreadRootElementContext.js";
|
|
4
|
+
import { useAui } from "@ulearning/ai-store";
|
|
5
|
+
// src/primitives/composer/useComposerCancelWithFocus.ts
|
|
6
|
+
const COMPOSER_SELECTOR = "[data-aui-composer-type]";
|
|
7
|
+
const THREAD_SELECTOR = "[data-aui-thread-root]";
|
|
8
|
+
const useComposerCancelWithFocus = (cancel) => {
|
|
9
|
+
const aui = useAui();
|
|
10
|
+
const threadRootRef = useThreadRootElementRef();
|
|
11
|
+
const cancelWithFocus = (source) => {
|
|
12
|
+
const root = threadRootRef?.value;
|
|
13
|
+
const doc = source?.ownerDocument;
|
|
14
|
+
const active = doc?.activeElement;
|
|
15
|
+
const composer = source?.closest(COMPOSER_SELECTOR);
|
|
16
|
+
const shouldRestore = aui.composer.getState().type === "edit" && root && active && composer?.getAttribute("data-aui-composer-type") === "edit" && composer.contains(active) && composer.closest(THREAD_SELECTOR) === root;
|
|
17
|
+
const candidates = shouldRestore ? Array.from(root.querySelectorAll(COMPOSER_INPUT_SELECTOR)).filter((input) => input.closest(THREAD_SELECTOR) === root && input.closest(COMPOSER_SELECTOR)?.getAttribute("data-aui-composer-type") === "thread") : [];
|
|
18
|
+
cancel();
|
|
19
|
+
if (!doc || !active || !shouldRestore) return;
|
|
20
|
+
if (doc.activeElement !== active && doc.activeElement !== doc.body) return;
|
|
21
|
+
for (const input of candidates) {
|
|
22
|
+
if (!input.isConnected || input.closest("[hidden], [inert]")) continue;
|
|
23
|
+
input.focus({ preventScroll: true });
|
|
24
|
+
if (doc.activeElement !== active && doc.activeElement !== doc.body) break;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
return cancelWithFocus;
|
|
28
|
+
};
|
|
29
|
+
export { useComposerCancelWithFocus };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=useComposerCancelWithFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComposerCancelWithFocus.js","names":[],"sources":["../../../src/primitives/composer/useComposerCancelWithFocus.ts"],"sourcesContent":["\"use client\";\n\nimport { useAui } from \"@ulearning/ai-store\";\nimport { useThreadRootElementRef } from \"../thread/ThreadRootElementContext\";\nimport { COMPOSER_INPUT_SELECTOR } from \"./composerInputSelector\";\n\nconst COMPOSER_SELECTOR = \"[data-aui-composer-type]\";\nconst THREAD_SELECTOR = \"[data-aui-thread-root]\";\n\nexport const useComposerCancelWithFocus = (cancel: () => void) => {\n const aui = useAui();\n const threadRootRef = useThreadRootElementRef();\n\n const cancelWithFocus = (source: HTMLElement | null) => {\n const root = threadRootRef?.value;\n const doc = source?.ownerDocument;\n const active = doc?.activeElement;\n const composer = source?.closest(COMPOSER_SELECTOR);\n const shouldRestore =\n aui.composer.getState().type === \"edit\" &&\n root &&\n active &&\n composer?.getAttribute(\"data-aui-composer-type\") === \"edit\" &&\n composer.contains(active) &&\n composer.closest(THREAD_SELECTOR) === root;\n const candidates = shouldRestore\n ? Array.from(\n root.querySelectorAll<HTMLElement>(COMPOSER_INPUT_SELECTOR),\n ).filter(\n (input) =>\n input.closest(THREAD_SELECTOR) === root &&\n input\n .closest(COMPOSER_SELECTOR)\n ?.getAttribute(\"data-aui-composer-type\") === \"thread\",\n )\n : [];\n\n cancel();\n\n if (!doc || !active || !shouldRestore) return;\n if (doc.activeElement !== active && doc.activeElement !== doc.body) return;\n\n for (const input of candidates) {\n if (!input.isConnected || input.closest(\"[hidden], [inert]\")) continue;\n input.focus({ preventScroll: true });\n if (doc.activeElement !== active && doc.activeElement !== doc.body) break;\n }\n };\n\n return cancelWithFocus;\n};\n"],"mappings":";;;;;AAMA,MAAM,oBAAoB;AAC1B,MAAM,kBAAkB;AAExB,MAAa,8BAA8B,WAAuB;CAChE,MAAM,MAAM,OAAO;CACnB,MAAM,gBAAgB,wBAAwB;CAE9C,MAAM,mBAAmB,WAA+B;EACtD,MAAM,OAAO,eAAe;EAC5B,MAAM,MAAM,QAAQ;EACpB,MAAM,SAAS,KAAK;EACpB,MAAM,WAAW,QAAQ,QAAQ,iBAAiB;EAClD,MAAM,gBACJ,IAAI,SAAS,SAAS,CAAC,CAAC,SAAS,UACjC,QACA,UACA,UAAU,aAAa,wBAAwB,MAAM,UACrD,SAAS,SAAS,MAAM,KACxB,SAAS,QAAQ,eAAe,MAAM;EACxC,MAAM,aAAa,gBACf,MAAM,KACJ,KAAK,iBAA8B,uBAAuB,CAC5D,CAAC,CAAC,QACC,UACC,MAAM,QAAQ,eAAe,MAAM,QACnC,MACG,QAAQ,iBAAiB,CAAC,EACzB,aAAa,wBAAwB,MAAM,QACnD,IACA,CAAC;EAEL,OAAO;EAEP,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe;EACvC,IAAI,IAAI,kBAAkB,UAAU,IAAI,kBAAkB,IAAI,MAAM;EAEpE,KAAK,MAAM,SAAS,YAAY;GAC9B,IAAI,CAAC,MAAM,eAAe,MAAM,QAAQ,mBAAmB,GAAG;GAC9D,MAAM,MAAM,EAAE,eAAe,KAAK,CAAC;GACnC,IAAI,IAAI,kBAAkB,UAAU,IAAI,kBAAkB,IAAI,MAAM;EACtE;CACF;CAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type MaybeRefOrGetter } from "vue";
|
|
2
|
+
export type TriggerPopoverAriaProps = {
|
|
3
|
+
"aria-controls"?: string;
|
|
4
|
+
"aria-expanded"?: true;
|
|
5
|
+
"aria-haspopup"?: "listbox";
|
|
6
|
+
"aria-activedescendant"?: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare function useComposerInputValue(): Readonly<import("vue").ShallowRef<string>>;
|
|
9
|
+
export declare function useComposerInputDisabled(disabled?: MaybeRefOrGetter<boolean | undefined>): import("vue").ComputedRef<boolean>;
|
|
10
|
+
export declare function useTriggerPopoverAriaProps(): import("vue").ComputedRef<TriggerPopoverAriaProps>;
|
|
11
|
+
//# sourceMappingURL=useComposerInputState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComposerInputState.d.ts","mappings":"AAEA,OAAO,EAOL,KAAK,gBAAgB,EACtB,MAAM,KAAK;AAIZ,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,CAAC,EAAE,MAAM;IACxB,eAAe,CAAC,EAAE,IAAI;IACtB,eAAe,CAAC,EAAE,SAAS;IAC3B,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS;CAC7C;AAED,wBAAgB,qBAAqB;AAIrC,wBAAgB,wBAAwB,CACtC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC;AAUlD,wBAAgB,0BAA0B","names":[],"ignoreList":[],"sources":["../../../src/primitives/composer/useComposerInputState.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useTriggerPopoverActiveAriaOptional } from "./trigger/TriggerPopoverRootContext.js";
|
|
3
|
+
import { computed, getCurrentInstance, onActivated, onDeactivated, shallowRef, toValue } from "vue";
|
|
4
|
+
import { useAuiState } from "@ulearning/ai-store";
|
|
5
|
+
// src/primitives/composer/useComposerInputState.ts
|
|
6
|
+
function useComposerInputValue() {
|
|
7
|
+
return useAuiState((s) => s.composer.isEditing ? s.composer.text : "");
|
|
8
|
+
}
|
|
9
|
+
function useComposerInputDisabled(disabled) {
|
|
10
|
+
const composerDisabled = useAuiState((s) => s.thread.isDisabled || s.composer.dictation?.inputDisabled);
|
|
11
|
+
return computed(() => Boolean(composerDisabled.value) || Boolean(toValue(disabled)));
|
|
12
|
+
}
|
|
13
|
+
function useTriggerPopoverAriaProps() {
|
|
14
|
+
const activeAria = useTriggerPopoverActiveAriaOptional();
|
|
15
|
+
const active = shallowRef(true);
|
|
16
|
+
if (getCurrentInstance()) {
|
|
17
|
+
onActivated(() => {
|
|
18
|
+
active.value = true;
|
|
19
|
+
});
|
|
20
|
+
onDeactivated(() => {
|
|
21
|
+
active.value = false;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return computed(() => active.value && activeAria.value ? {
|
|
25
|
+
"aria-controls": activeAria.value.popoverId,
|
|
26
|
+
"aria-expanded": true,
|
|
27
|
+
"aria-haspopup": "listbox",
|
|
28
|
+
"aria-activedescendant": activeAria.value.highlightedItemId
|
|
29
|
+
} : {});
|
|
30
|
+
}
|
|
31
|
+
export { useComposerInputDisabled, useComposerInputValue, useTriggerPopoverAriaProps };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=useComposerInputState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComposerInputState.js","names":[],"sources":["../../../src/primitives/composer/useComposerInputState.ts"],"sourcesContent":["\"use client\";\n\nimport {\n computed,\n getCurrentInstance,\n onActivated,\n onDeactivated,\n shallowRef,\n toValue,\n type MaybeRefOrGetter,\n} from \"vue\";\nimport { useAuiState } from \"@ulearning/ai-store\";\nimport { useTriggerPopoverActiveAriaOptional } from \"./trigger/TriggerPopoverRootContext\";\n\nexport type TriggerPopoverAriaProps = {\n \"aria-controls\"?: string;\n \"aria-expanded\"?: true;\n \"aria-haspopup\"?: \"listbox\";\n \"aria-activedescendant\"?: string | undefined;\n};\n\nexport function useComposerInputValue() {\n return useAuiState((s) => (s.composer.isEditing ? s.composer.text : \"\"));\n}\n\nexport function useComposerInputDisabled(\n disabled?: MaybeRefOrGetter<boolean | undefined>,\n) {\n const composerDisabled = useAuiState(\n (s) => s.thread.isDisabled || s.composer.dictation?.inputDisabled,\n );\n return computed(\n () => Boolean(composerDisabled.value) || Boolean(toValue(disabled)),\n );\n}\n\nexport function useTriggerPopoverAriaProps() {\n const activeAria = useTriggerPopoverActiveAriaOptional();\n const active = shallowRef(true);\n if (getCurrentInstance()) {\n onActivated(() => {\n active.value = true;\n });\n onDeactivated(() => {\n active.value = false;\n });\n }\n return computed<TriggerPopoverAriaProps>(() =>\n active.value && activeAria.value\n ? {\n \"aria-controls\": activeAria.value.popoverId,\n \"aria-expanded\": true,\n \"aria-haspopup\": \"listbox\",\n \"aria-activedescendant\": activeAria.value.highlightedItemId,\n }\n : {},\n );\n}\n"],"mappings":";;;;;AAqBA,SAAgB,wBAAwB;CACtC,OAAO,aAAa,MAAO,EAAE,SAAS,YAAY,EAAE,SAAS,OAAO,EAAG;AACzE;AAEA,SAAgB,yBACd,UACA;CACA,MAAM,mBAAmB,aACtB,MAAM,EAAE,OAAO,cAAc,EAAE,SAAS,WAAW,aACtD;CACA,OAAO,eACC,QAAQ,iBAAiB,KAAK,KAAK,QAAQ,QAAQ,QAAQ,CAAC,CACpE;AACF;AAEA,SAAgB,6BAA6B;CAC3C,MAAM,aAAa,oCAAoC;CACvD,MAAM,SAAS,WAAW,IAAI;CAC9B,IAAI,mBAAmB,GAAG;EACxB,kBAAkB;GAChB,OAAO,QAAQ;EACjB,CAAC;EACD,oBAAoB;GAClB,OAAO,QAAQ;EACjB,CAAC;CACH;CACA,OAAO,eACL,OAAO,SAAS,WAAW,QACvB;EACE,iBAAiB,WAAW,MAAM;EAClC,iBAAiB;EACjB,iBAAiB;EACjB,yBAAyB,WAAW,MAAM;CAC5C,IACA,CAAC,CACP;AACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type MaybeRefOrGetter, type Ref } from "vue";
|
|
2
|
+
export type TextareaHeightChangeMeta = {
|
|
3
|
+
rowHeight: number;
|
|
4
|
+
};
|
|
5
|
+
export type TextareaAutosizeOptions = {
|
|
6
|
+
minRows?: number | undefined;
|
|
7
|
+
maxRows?: number | undefined;
|
|
8
|
+
cacheMeasurements?: boolean | undefined;
|
|
9
|
+
onHeightChange?: ((height: number, meta: TextareaHeightChangeMeta) => void) | undefined;
|
|
10
|
+
};
|
|
11
|
+
/** Measure a separate textarea so resizing never disturbs the user's selection. */
|
|
12
|
+
export declare function useTextareaAutosize(element: Ref<HTMLTextAreaElement | null>, value: MaybeRefOrGetter<string>, options: TextareaAutosizeOptions, enabled: () => boolean, layoutInputs: () => readonly unknown[]): void;
|
|
13
|
+
//# sourceMappingURL=useTextareaAutosize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTextareaAutosize.d.ts","mappings":"AAAA,OAAO,EAAkB,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK;AAGrE,MAAM,MAAM,wBAAwB,GAAG;IAAE,SAAS,EAAE,MAAM;CAAE;AAC5D,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS;IAC5B,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS;IACvC,cAAc,CAAC,EACX,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC,GAC1D,SAAS;CACd;AA0BD;AACA,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,EACxC,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,MAAM,OAAO,EACtB,YAAY,EAAE,MAAM,SAAS,OAAO,EAAE","names":[],"ignoreList":[],"sources":["../../../src/primitives/composer/useTextareaAutosize.ts"],"sourcesContent":[null]}
|