@assistant-ui/react 0.14.18 → 0.14.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/ExternalThread.d.ts +3 -2
- package/dist/client/ExternalThread.d.ts.map +1 -1
- package/dist/client/ExternalThread.js +721 -256
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/client/InMemoryThreadList.js +292 -108
- package/dist/client/InMemoryThreadList.js.map +1 -1
- package/dist/client/SingleThreadList.js +139 -53
- package/dist/client/SingleThreadList.js.map +1 -1
- package/dist/context/ReadonlyStore.js.map +1 -1
- package/dist/context/providers/MessageProvider.js +38 -5
- package/dist/context/providers/MessageProvider.js.map +1 -1
- package/dist/context/providers/ThreadViewportProvider.js +76 -20
- package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
- package/dist/context/react/ThreadViewportContext.js.map +1 -1
- package/dist/context/react/utils/createContextHook.js.map +1 -1
- package/dist/context/react/utils/createContextStoreHook.js +17 -2
- package/dist/context/react/utils/createContextStoreHook.js.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
- package/dist/context/react/utils/ensureBinding.js.map +1 -1
- package/dist/context/react/utils/useRuntimeState.js +18 -2
- package/dist/context/react/utils/useRuntimeState.js.map +1 -1
- package/dist/context/stores/ThreadViewport.js.map +1 -1
- package/dist/devtools/DevToolsHooks.js.map +1 -1
- package/dist/hooks/useMessageQuote.js.map +1 -1
- package/dist/hooks/useMessageTiming.js +4 -1
- package/dist/hooks/useMessageTiming.js.map +1 -1
- package/dist/hooks/useToolCallElapsed.d.ts +23 -0
- package/dist/hooks/useToolCallElapsed.d.ts.map +1 -0
- package/dist/hooks/useToolCallElapsed.js +72 -0
- package/dist/hooks/useToolCallElapsed.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +3 -1
- package/dist/internal.js.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js +46 -10
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js +27 -6
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js.map +1 -1
- package/dist/legacy-runtime/hooks/AssistantContext.js +13 -2
- package/dist/legacy-runtime/hooks/AssistantContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js +9 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js +9 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/MessageContext.js +12 -2
- package/dist/legacy-runtime/hooks/MessageContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js +9 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.js +33 -5
- package/dist/legacy-runtime/hooks/ThreadContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js +9 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js +3 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js +71 -31
- package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +24 -16
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js +17 -12
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js +17 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.js +6 -6
- package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
- package/dist/mcp-apps/McpAppsRemoteHost.js +3 -3
- package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
- package/dist/mcp-apps/app-frame.js +33 -14
- package/dist/mcp-apps/app-frame.js.map +1 -1
- package/dist/mcp-apps/bridge.js.map +1 -1
- package/dist/mcp-apps/types.js.map +1 -1
- package/dist/mcp-apps/utils.js.map +1 -1
- package/dist/model-context/frame/useAssistantFrameHost.js +32 -14
- package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +64 -26
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js +94 -20
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js +105 -37
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +60 -11
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +60 -11
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarInteractionContext.js +3 -1
- package/dist/primitives/actionBar/ActionBarInteractionContext.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.js +84 -25
- package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js +45 -14
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
- package/dist/primitives/actionBar/useActionBarFloatStatus.js +22 -10
- package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
- package/dist/primitives/actionBar.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js +44 -7
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +103 -36
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
- package/dist/primitives/actionBarMore/scope.js.map +1 -1
- package/dist/primitives/actionBarMore.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.js +27 -6
- package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js +71 -10
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js +93 -26
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.js +27 -6
- package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
- package/dist/primitives/assistantModal/scope.js.map +1 -1
- package/dist/primitives/assistantModal.js.map +1 -1
- package/dist/primitives/attachment/AttachmentName.js +13 -1
- package/dist/primitives/attachment/AttachmentName.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.js +11 -4
- package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.js +13 -4
- package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js +20 -9
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/attachment.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerCount.js +14 -2
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNumber.js +14 -2
- package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js +34 -6
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/branchPicker.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +16 -5
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +13 -4
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
- package/dist/primitives/chainOfThought.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.js +37 -24
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js +124 -49
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerDictate.js.map +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.js +32 -7
- package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +26 -26
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerInputPluginContext.js +71 -25
- package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -1
- package/dist/primitives/composer/ComposerQuote.js +92 -23
- package/dist/primitives/composer/ComposerQuote.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.js +45 -11
- package/dist/primitives/composer/ComposerRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.js +9 -2
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/composer/ComposerStopDictation.js +15 -5
- package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.js +215 -75
- package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js +35 -7
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +134 -28
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js +132 -28
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js +124 -52
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +181 -78
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
- package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -1
- package/dist/primitives/composer/trigger/index.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerDetectionResource.js +28 -14
- package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js +115 -58
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerNavigationResource.js +202 -70
- package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.js +49 -13
- package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
- package/dist/primitives/composer.js.map +1 -1
- package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -1
- package/dist/primitives/error/ErrorMessage.js +28 -6
- package/dist/primitives/error/ErrorMessage.js.map +1 -1
- package/dist/primitives/error/ErrorRoot.js +14 -5
- package/dist/primitives/error/ErrorRoot.js.map +1 -1
- package/dist/primitives/error.js.map +1 -1
- package/dist/primitives/message/MessageError.js +2 -1
- package/dist/primitives/message/MessageError.js.map +1 -1
- package/dist/primitives/message/MessageIf.js +50 -20
- package/dist/primitives/message/MessageIf.js.map +1 -1
- package/dist/primitives/message/MessageParts.js +41 -7
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +399 -94
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/message/MessageRoot.js +197 -65
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/message.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartImage.js +15 -5
- package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartText.js +35 -7
- package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartData.js +5 -4
- package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartFile.js +5 -4
- package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartImage.js +5 -4
- package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartReasoning.js +5 -4
- package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartSource.js +5 -4
- package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartText.js +5 -4
- package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
- package/dist/primitives/messagePart.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemRemove.js +11 -4
- package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemSteer.js +11 -4
- package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemText.js +20 -6
- package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
- package/dist/primitives/queueItem.js.map +1 -1
- package/dist/primitives/reasoning/useScrollLock.js +61 -43
- package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +56 -16
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +120 -59
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
- package/dist/primitives/selectionToolbar.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.js +20 -6
- package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.js +20 -6
- package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.js +39 -26
- package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
- package/dist/primitives/suggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadEmpty.js +6 -2
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
- package/dist/primitives/thread/ThreadIf.js +32 -10
- package/dist/primitives/thread/ThreadIf.js.map +1 -1
- package/dist/primitives/thread/ThreadRoot.js +13 -4
- package/dist/primitives/thread/ThreadRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.js +24 -6
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js +18 -6
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +185 -47
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.js +22 -9
- package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
- package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js.map +1 -1
- package/dist/primitives/thread/topAnchor/createReserveObservers.js.map +1 -1
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -1
- package/dist/primitives/thread/topAnchor/topAnchorUtils.js.map +1 -1
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +19 -4
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +16 -16
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/thread.js.map +1 -1
- package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.js +53 -11
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.js +13 -4
- package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
- package/dist/primitives/threadList.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.js +26 -7
- package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
- package/dist/primitives/threadListItem.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +44 -7
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +25 -5
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
- package/dist/primitives/threadListItemMore/scope.js.map +1 -1
- package/dist/primitives/threadListItemMore.js.map +1 -1
- package/dist/sandbox-host/SandboxHost.js.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
- package/dist/tests/setup.js.map +1 -1
- package/dist/unstable/useComposerInputHistory.js.map +1 -1
- package/dist/unstable/useMentionAdapter.js.map +1 -1
- package/dist/unstable/useMessageStallDetection.d.ts +29 -0
- package/dist/unstable/useMessageStallDetection.d.ts.map +1 -0
- package/dist/unstable/useMessageStallDetection.js +69 -0
- package/dist/unstable/useMessageStallDetection.js.map +1 -0
- package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
- package/dist/utils/Primitive.js +57 -12
- package/dist/utils/Primitive.js.map +1 -1
- package/dist/utils/createActionButton.js +23 -7
- package/dist/utils/createActionButton.js.map +1 -1
- package/dist/utils/getSelectionMessageId.js.map +1 -1
- package/dist/utils/hooks/useManagedRef.js +16 -8
- package/dist/utils/hooks/useManagedRef.js.map +1 -1
- package/dist/utils/hooks/useMediaQuery.js +25 -10
- package/dist/utils/hooks/useMediaQuery.js.map +1 -1
- package/dist/utils/hooks/useOnResizeContent.js +29 -19
- package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.js +20 -4
- package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
- package/dist/utils/hooks/useSizeHandle.js +23 -15
- package/dist/utils/hooks/useSizeHandle.js.map +1 -1
- package/dist/utils/json/is-json-equal.js.map +1 -1
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/smooth/SmoothContext.js +41 -11
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/useSmooth.js +5 -5
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.js +13 -5
- package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
- package/package.json +9 -9
- package/src/client/ExternalThread.ts +81 -52
- package/src/client/InMemoryThreadList.ts +12 -14
- package/src/hooks/useToolCallElapsed.ts +52 -0
- package/src/index.ts +11 -0
- package/src/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.test.ts +10 -6
- package/src/primitives/composer/trigger/TriggerPopover.tsx +4 -5
- package/src/tests/toolCallTiming.test.tsx +221 -0
- package/src/unstable/useMessageStallDetection.ts +91 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryThreadList.js","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"sourcesContent":["import { useState, useMemo } from \"react\";\nimport { resource, withKey, type ResourceElement } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useClientLookup,\n Derived,\n attachTransformScopes,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\n\nexport type InMemoryThreadListProps = {\n thread: (threadId: string) => ResourceElement<ClientOutput<\"thread\">>;\n onSwitchToThread?: (threadId: string) => void;\n onSwitchToNewThread?: () => void;\n};\n\ntype ThreadData = {\n id: string;\n title?: string;\n status: \"regular\" | \"archived\";\n custom?: Record<string, unknown> | undefined;\n};\n\n// ThreadListItem Client\nconst useThreadListItemClient = (props: {\n data: ThreadData;\n onSwitchTo: () => void;\n onUpdateCustom: (custom: Record<string, unknown> | undefined) => void;\n onArchive: () => void;\n onUnarchive: () => void;\n onDelete: () => void;\n}): ClientOutput<\"threadListItem\"> => {\n const { data, onSwitchTo, onUpdateCustom, onArchive, onUnarchive, onDelete } =\n props;\n const state = useMemo(\n () => ({\n id: data.id,\n remoteId: undefined,\n externalId: undefined,\n title: data.title,\n status: data.status,\n custom: data.custom,\n }),\n [data.id, data.title, data.status, data.custom],\n );\n\n return {\n getState: () => state,\n switchTo: onSwitchTo,\n rename: () => {},\n updateCustom: onUpdateCustom,\n archive: onArchive,\n unarchive: onUnarchive,\n delete: onDelete,\n generateTitle: () => {},\n initialize: async () => ({ remoteId: data.id, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst ThreadListItemClient = resource(useThreadListItemClient);\n\n// InMemoryThreadList Client\nconst useInMemoryThreadList = (\n props: InMemoryThreadListProps,\n): ClientOutput<\"threads\"> => {\n const {\n thread: threadFactory,\n onSwitchToThread,\n onSwitchToNewThread,\n } = props;\n\n const [mainThreadId, setMainThreadId] = useState(\"main\");\n const [threads, setThreads] = useState<readonly ThreadData[]>(() => [\n { id: \"main\", title: \"Main Thread\", status: \"regular\" },\n ]);\n\n const handleSwitchToThread = (threadId: string) => {\n setMainThreadId(threadId);\n onSwitchToThread?.(threadId);\n };\n\n const handleArchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"archived\" as const } : t,\n ),\n );\n };\n\n const handleUnarchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"regular\" as const } : t,\n ),\n );\n };\n\n const handleUpdateCustom = (\n threadId: string,\n custom: Record<string, unknown> | undefined,\n ) => {\n setThreads((prev) =>\n prev.map((t) => (t.id === threadId ? { ...t, custom } : t)),\n );\n };\n\n const handleDelete = (threadId: string) => {\n setThreads((prev) => prev.filter((t) => t.id !== threadId));\n if (mainThreadId === threadId) {\n const remaining = threads.filter((t) => t.id !== threadId);\n setMainThreadId(remaining[0]?.id || \"main\");\n }\n };\n\n const handleSwitchToNewThread = () => {\n const newId = `thread-${Date.now()}`;\n setThreads((prev) => [\n ...prev,\n { id: newId, title: \"New Thread\", status: \"regular\" },\n ]);\n setMainThreadId(newId);\n onSwitchToNewThread?.();\n };\n\n const threadListItems = useClientLookup(\n () =>\n threads.map((t) =>\n withKey(\n t.id,\n ThreadListItemClient({\n data: t,\n onSwitchTo: () => handleSwitchToThread(t.id),\n onUpdateCustom: (custom) => handleUpdateCustom(t.id, custom),\n onArchive: () => handleArchive(t.id),\n onUnarchive: () => handleUnarchive(t.id),\n onDelete: () => handleDelete(t.id),\n }),\n ),\n ),\n [threads],\n );\n\n // Create the main thread\n const mainThreadClient = useClientResource(threadFactory(mainThreadId));\n\n const state = useMemo(() => {\n const regularThreads = threads.filter((t) => t.status === \"regular\");\n const archivedThreads = threads.filter((t) => t.status === \"archived\");\n\n return {\n mainThreadId,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: regularThreads.map((t) => t.id),\n archivedThreadIds: archivedThreads.map((t) => t.id),\n threadItems: threadListItems.state,\n main: mainThreadClient.state,\n };\n }, [mainThreadId, threads, threadListItems.state, mainThreadClient.state]);\n\n return {\n getState: () => state,\n switchToThread: handleSwitchToThread,\n switchToNewThread: handleSwitchToNewThread,\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (selector === \"main\") {\n const index = threads.findIndex((t) => t.id === mainThreadId);\n return threadListItems.get({ index: index === -1 ? 0 : index });\n }\n if (\"id\" in selector) {\n const index = threads.findIndex((t) => t.id === selector.id);\n return threadListItems.get({ index });\n }\n return threadListItems.get(selector);\n },\n thread: () => mainThreadClient.methods,\n };\n};\n\nexport const InMemoryThreadList = resource(useInMemoryThreadList);\n\nattachTransformScopes(useInMemoryThreadList, (scopes, parent) => {\n scopes.thread ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n scopes.threadListItem ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.threads().thread(\"main\").composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":";;;;;;AAaA,MAAM,mBAAmB,QAAQ,QAAQ;AAgBzC,MAAM,2BAA2B,UAOK;CACpC,MAAM,EAAE,MAAM,YAAY,gBAAgB,WAAW,aAAa,aAChE;CACF,MAAM,QAAQ,eACL;EACL,IAAI,KAAK;EACT,UAAU,KAAA;EACV,YAAY,KAAA;EACZ,OAAO,KAAK;EACZ,QAAQ,KAAK;EACb,QAAQ,KAAK;CACf,IACA;EAAC,KAAK;EAAI,KAAK;EAAO,KAAK;EAAQ,KAAK;CAAM,CAChD;CAEA,OAAO;EACL,gBAAgB;EAChB,UAAU;EACV,cAAc,CAAC;EACf,cAAc;EACd,SAAS;EACT,WAAW;EACX,QAAQ;EACR,qBAAqB,CAAC;EACtB,YAAY,aAAa;GAAE,UAAU,KAAK;GAAI,YAAY,KAAA;EAAU;EACpE,cAAc,CAAC;CACjB;AACF;AAEA,MAAM,uBAAuB,SAAS,uBAAuB;AAG7D,MAAM,yBACJ,UAC4B;CAC5B,MAAM,EACJ,QAAQ,eACR,kBACA,wBACE;CAEJ,MAAM,CAAC,cAAc,mBAAmB,SAAS,MAAM;CACvD,MAAM,CAAC,SAAS,cAAc,eAAsC,CAClE;EAAE,IAAI;EAAQ,OAAO;EAAe,QAAQ;CAAU,CACxD,CAAC;CAED,MAAM,wBAAwB,aAAqB;EACjD,gBAAgB,QAAQ;EACxB,mBAAmB,QAAQ;CAC7B;CAEA,MAAM,iBAAiB,aAAqB;EAC1C,YAAY,SACV,KAAK,KAAK,MACR,EAAE,OAAO,WAAW;GAAE,GAAG;GAAG,QAAQ;EAAoB,IAAI,CAC9D,CACF;CACF;CAEA,MAAM,mBAAmB,aAAqB;EAC5C,YAAY,SACV,KAAK,KAAK,MACR,EAAE,OAAO,WAAW;GAAE,GAAG;GAAG,QAAQ;EAAmB,IAAI,CAC7D,CACF;CACF;CAEA,MAAM,sBACJ,UACA,WACG;EACH,YAAY,SACV,KAAK,KAAK,MAAO,EAAE,OAAO,WAAW;GAAE,GAAG;GAAG;EAAO,IAAI,CAAE,CAC5D;CACF;CAEA,MAAM,gBAAgB,aAAqB;EACzC,YAAY,SAAS,KAAK,QAAQ,MAAM,EAAE,OAAO,QAAQ,CAAC;EAC1D,IAAI,iBAAiB,UAEnB,gBADkB,QAAQ,QAAQ,MAAM,EAAE,OAAO,QACzB,CAAC,CAAC,EAAE,EAAE,MAAM,MAAM;CAE9C;CAEA,MAAM,gCAAgC;EACpC,MAAM,QAAQ,UAAU,KAAK,IAAI;EACjC,YAAY,SAAS,CACnB,GAAG,MACH;GAAE,IAAI;GAAO,OAAO;GAAc,QAAQ;EAAU,CACtD,CAAC;EACD,gBAAgB,KAAK;EACrB,sBAAsB;CACxB;CAEA,MAAM,kBAAkB,sBAEpB,QAAQ,KAAK,MACX,QACE,EAAE,IACF,qBAAqB;EACnB,MAAM;EACN,kBAAkB,qBAAqB,EAAE,EAAE;EAC3C,iBAAiB,WAAW,mBAAmB,EAAE,IAAI,MAAM;EAC3D,iBAAiB,cAAc,EAAE,EAAE;EACnC,mBAAmB,gBAAgB,EAAE,EAAE;EACvC,gBAAgB,aAAa,EAAE,EAAE;CACnC,CAAC,CACH,CACF,GACF,CAAC,OAAO,CACV;CAGA,MAAM,mBAAmB,kBAAkB,cAAc,YAAY,CAAC;CAEtE,MAAM,QAAQ,cAAc;EAC1B,MAAM,iBAAiB,QAAQ,QAAQ,MAAM,EAAE,WAAW,SAAS;EACnE,MAAM,kBAAkB,QAAQ,QAAQ,MAAM,EAAE,WAAW,UAAU;EAErE,OAAO;GACL;GACA,aAAa;GACb,WAAW;GACX,eAAe;GACf,SAAS;GACT,WAAW,eAAe,KAAK,MAAM,EAAE,EAAE;GACzC,mBAAmB,gBAAgB,KAAK,MAAM,EAAE,EAAE;GAClD,aAAa,gBAAgB;GAC7B,MAAM,iBAAiB;EACzB;CACF,GAAG;EAAC;EAAc;EAAS,gBAAgB;EAAO,iBAAiB;CAAK,CAAC;CAEzE,OAAO;EACL,gBAAgB;EAChB,gBAAgB;EAChB,mBAAmB;EACnB,6BAA6B;EAC7B,cAAc;EACd,gBAAgB;EAChB,OAAO,aAAa;GAClB,IAAI,aAAa,QAAQ;IACvB,MAAM,QAAQ,QAAQ,WAAW,MAAM,EAAE,OAAO,YAAY;IAC5D,OAAO,gBAAgB,IAAI,EAAE,OAAO,UAAU,KAAK,IAAI,MAAM,CAAC;GAChE;GACA,IAAI,QAAQ,UAAU;IACpB,MAAM,QAAQ,QAAQ,WAAW,MAAM,EAAE,OAAO,SAAS,EAAE;IAC3D,OAAO,gBAAgB,IAAI,EAAE,MAAM,CAAC;GACtC;GACA,OAAO,gBAAgB,IAAI,QAAQ;EACrC;EACA,cAAc,iBAAiB;CACjC;AACF;AAEA,MAAa,qBAAqB,SAAS,qBAAqB;AAEhE,sBAAsB,wBAAwB,QAAQ,WAAW;CAC/D,OAAO,WAAW,QAAQ;EACxB,QAAQ;EACR,OAAO,EAAE,MAAM,OAAO;EACtB,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC,OAAO,MAAM;CAC3C,CAAC;CACD,OAAO,mBAAmB,QAAQ;EAChC,QAAQ;EACR,OAAO,EAAE,MAAM,OAAO;EACtB,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,MAAM;CACzC,CAAC;CACD,OAAO,aAAa,QAAQ;EAC1B,QAAQ;EACR,OAAO,CAAC;EACR,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS;CACtD,CAAC;CAED,IAAI,CAAC,OAAO,gBAAgB,OAAO,aAAa,WAAW,MACzD,OAAO,eAAe,aAAa;CAErC,IAAI,CAAC,OAAO,SAAS,OAAO,MAAM,WAAW,MAC3C,OAAO,QAAQ,MAAM,CAAC,CAAC;CAEzB,IAAI,CAAC,OAAO,iBAAiB,OAAO,cAAc,WAAW,MAC3D,OAAO,gBAAgB,cAAc;CAEvC,IAAI,CAAC,OAAO,eAAe,OAAO,YAAY,WAAW,MACvD,OAAO,cAAc,YAAY;AAErC,CAAC"}
|
|
1
|
+
{"version":3,"file":"InMemoryThreadList.js","names":["useState","useMemo","resource","withKey","ResourceElement","ClientOutput","useClientLookup","Derived","attachTransformScopes","useClientResource","ModelContext","Suggestions","Tools","DataRenderers","RESOLVED_PROMISE","Promise","resolve","InMemoryThreadListProps","thread","threadId","onSwitchToThread","onSwitchToNewThread","ThreadData","id","title","status","custom","Record","useThreadListItemClient","props","$","_c","data","onSwitchTo","onUpdateCustom","onArchive","onUnarchive","onDelete","t0","remoteId","undefined","externalId","state","t1","t2","t3","getState","switchTo","rename","_temp","updateCustom","archive","unarchive","delete","generateTitle","_temp2","initialize","detach","_temp3","ThreadListItemClient","useInMemoryThreadList","threadFactory","mainThreadId","setMainThreadId","threads","setThreads","_temp4","handleSwitchToThread","Symbol","for","threadId_0","prev","map","t","const","handleArchive","threadId_1","prev_0","t_0","handleUnarchive","threadId_2","prev_1","t_1","handleUpdateCustom","t4","threadId_3","prev_2","filter","t_2","remaining","t_3","handleDelete","t5","newId","Date","now","prev_3","handleSwitchToNewThread","t6","t7","t_4","custom_0","threadListItems","mainThreadClient","t10","t11","t12","t13","t14","t8","t9","regularThreads","_temp5","archivedThreads","_temp6","_temp7","_temp8","t15","newThreadId","isLoading","isLoadingMore","hasMore","threadIds","archivedThreadIds","threadItems","main","t16","t17","selector","index","findIndex","t_9","get","index_0","t_10","t18","methods","t19","switchToThread","switchToNewThread","getLoadThreadsPromise","_temp9","reload","_temp0","loadMore","_temp1","item","InMemoryThreadList","scopes","parent","source","query","type","aui","threadListItem","composer","modelContext","tools","dataRenderers","suggestions","t_5","t_6","t_7","t_8"],"sources":["../../src/client/InMemoryThreadList.ts"],"sourcesContent":["import { useState, useMemo } from \"react\";\nimport { resource, withKey, type ResourceElement } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useClientLookup,\n Derived,\n attachTransformScopes,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\n\nexport type InMemoryThreadListProps = {\n thread: (threadId: string) => ResourceElement<ClientOutput<\"thread\">>;\n onSwitchToThread?: (threadId: string) => void;\n onSwitchToNewThread?: () => void;\n};\n\ntype ThreadData = {\n id: string;\n title?: string;\n status: \"regular\" | \"archived\";\n custom?: Record<string, unknown> | undefined;\n};\n\n// ThreadListItem Client\nconst useThreadListItemClient = (props: {\n data: ThreadData;\n onSwitchTo: () => void;\n onUpdateCustom: (custom: Record<string, unknown> | undefined) => void;\n onArchive: () => void;\n onUnarchive: () => void;\n onDelete: () => void;\n}): ClientOutput<\"threadListItem\"> => {\n const { data, onSwitchTo, onUpdateCustom, onArchive, onUnarchive, onDelete } =\n props;\n const state = useMemo(\n () => ({\n id: data.id,\n remoteId: undefined,\n externalId: undefined,\n title: data.title,\n status: data.status,\n custom: data.custom,\n }),\n [data.id, data.title, data.status, data.custom],\n );\n\n return {\n getState: () => state,\n switchTo: onSwitchTo,\n rename: () => {},\n updateCustom: onUpdateCustom,\n archive: onArchive,\n unarchive: onUnarchive,\n delete: onDelete,\n generateTitle: () => {},\n initialize: async () => ({ remoteId: data.id, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst ThreadListItemClient = resource(useThreadListItemClient);\n\n// InMemoryThreadList Client\nconst useInMemoryThreadList = (\n props: InMemoryThreadListProps,\n): ClientOutput<\"threads\"> => {\n const {\n thread: threadFactory,\n onSwitchToThread,\n onSwitchToNewThread,\n } = props;\n\n const [mainThreadId, setMainThreadId] = useState(\"main\");\n const [threads, setThreads] = useState<readonly ThreadData[]>(() => [\n { id: \"main\", title: \"Main Thread\", status: \"regular\" },\n ]);\n\n const handleSwitchToThread = (threadId: string) => {\n setMainThreadId(threadId);\n onSwitchToThread?.(threadId);\n };\n\n const handleArchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"archived\" as const } : t,\n ),\n );\n };\n\n const handleUnarchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"regular\" as const } : t,\n ),\n );\n };\n\n const handleUpdateCustom = (\n threadId: string,\n custom: Record<string, unknown> | undefined,\n ) => {\n setThreads((prev) =>\n prev.map((t) => (t.id === threadId ? { ...t, custom } : t)),\n );\n };\n\n const handleDelete = (threadId: string) => {\n setThreads((prev) => prev.filter((t) => t.id !== threadId));\n if (mainThreadId === threadId) {\n const remaining = threads.filter((t) => t.id !== threadId);\n setMainThreadId(remaining[0]?.id || \"main\");\n }\n };\n\n const handleSwitchToNewThread = () => {\n const newId = `thread-${Date.now()}`;\n setThreads((prev) => [\n ...prev,\n { id: newId, title: \"New Thread\", status: \"regular\" },\n ]);\n setMainThreadId(newId);\n onSwitchToNewThread?.();\n };\n\n const threadListItems = useClientLookup(\n threads.map((t) =>\n withKey(\n t.id,\n ThreadListItemClient({\n data: t,\n onSwitchTo: () => handleSwitchToThread(t.id),\n onUpdateCustom: (custom) => handleUpdateCustom(t.id, custom),\n onArchive: () => handleArchive(t.id),\n onUnarchive: () => handleUnarchive(t.id),\n onDelete: () => handleDelete(t.id),\n }),\n ),\n ),\n );\n\n // Create the main thread\n const mainThreadClient = useClientResource(threadFactory(mainThreadId));\n\n const state = useMemo(() => {\n const regularThreads = threads.filter((t) => t.status === \"regular\");\n const archivedThreads = threads.filter((t) => t.status === \"archived\");\n\n return {\n mainThreadId,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: regularThreads.map((t) => t.id),\n archivedThreadIds: archivedThreads.map((t) => t.id),\n threadItems: threadListItems.state,\n main: mainThreadClient.state,\n };\n }, [mainThreadId, threads, threadListItems.state, mainThreadClient.state]);\n\n return {\n getState: () => state,\n switchToThread: handleSwitchToThread,\n switchToNewThread: handleSwitchToNewThread,\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (selector === \"main\") {\n const index = threads.findIndex((t) => t.id === mainThreadId);\n return threadListItems.get({ index: index === -1 ? 0 : index });\n }\n if (\"id\" in selector) {\n const index = threads.findIndex((t) => t.id === selector.id);\n return threadListItems.get({ index });\n }\n return threadListItems.get(selector);\n },\n thread: () => mainThreadClient.methods,\n };\n};\n\nexport const InMemoryThreadList = resource(useInMemoryThreadList);\n\nattachTransformScopes(useInMemoryThreadList, (scopes, parent) => {\n scopes.thread ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n scopes.threadListItem ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.threads().thread(\"main\").composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
|
|
@@ -1,33 +1,38 @@
|
|
|
1
1
|
import { useClientResource } from "@assistant-ui/store";
|
|
2
|
-
import {
|
|
2
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
3
|
+
import { useState } from "@assistant-ui/tap/react-shim";
|
|
3
4
|
import { resource } from "@assistant-ui/tap";
|
|
4
5
|
//#region src/client/SingleThreadList.ts
|
|
5
6
|
const RESOLVED_PROMISE = Promise.resolve();
|
|
6
7
|
const THREAD_ID = "default";
|
|
7
8
|
const useSingleThreadListItem = () => {
|
|
9
|
+
const $ = c(2);
|
|
8
10
|
const [custom, setCustom] = useState();
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
11
|
+
let t0;
|
|
12
|
+
if ($[0] !== custom) {
|
|
13
|
+
t0 = {
|
|
14
|
+
getState: () => ({
|
|
15
|
+
id: THREAD_ID,
|
|
16
|
+
remoteId: void 0,
|
|
17
|
+
externalId: void 0,
|
|
18
|
+
title: void 0,
|
|
19
|
+
status: "regular",
|
|
20
|
+
custom
|
|
21
|
+
}),
|
|
22
|
+
switchTo: _temp,
|
|
23
|
+
rename: _temp2,
|
|
24
|
+
updateCustom: setCustom,
|
|
25
|
+
archive: _temp3,
|
|
26
|
+
unarchive: _temp4,
|
|
27
|
+
delete: _temp5,
|
|
28
|
+
generateTitle: _temp6,
|
|
29
|
+
initialize: _temp7,
|
|
30
|
+
detach: _temp8
|
|
31
|
+
};
|
|
32
|
+
$[0] = custom;
|
|
33
|
+
$[1] = t0;
|
|
34
|
+
} else t0 = $[1];
|
|
35
|
+
return t0;
|
|
31
36
|
};
|
|
32
37
|
const SingleThreadListItem = resource(useSingleThreadListItem);
|
|
33
38
|
/**
|
|
@@ -35,42 +40,123 @@ const SingleThreadListItem = resource(useSingleThreadListItem);
|
|
|
35
40
|
* Automatically provided by ExternalThread when no threads scope exists.
|
|
36
41
|
* Mounts the provided thread resource element.
|
|
37
42
|
*/
|
|
38
|
-
const useSingleThreadList = (
|
|
39
|
-
const
|
|
43
|
+
const useSingleThreadList = (t0) => {
|
|
44
|
+
const $ = c(18);
|
|
45
|
+
const { thread } = t0;
|
|
46
|
+
let t1;
|
|
47
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
48
|
+
t1 = SingleThreadListItem();
|
|
49
|
+
$[0] = t1;
|
|
50
|
+
} else t1 = $[0];
|
|
51
|
+
const itemClient = useClientResource(t1);
|
|
40
52
|
const threadClient = useClientResource(thread);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
let t2;
|
|
54
|
+
let t3;
|
|
55
|
+
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
56
|
+
t2 = [THREAD_ID];
|
|
57
|
+
t3 = [];
|
|
58
|
+
$[1] = t2;
|
|
59
|
+
$[2] = t3;
|
|
60
|
+
} else {
|
|
61
|
+
t2 = $[1];
|
|
62
|
+
t3 = $[2];
|
|
63
|
+
}
|
|
64
|
+
let t4;
|
|
65
|
+
if ($[3] !== itemClient.state) {
|
|
66
|
+
t4 = [itemClient.state];
|
|
67
|
+
$[3] = itemClient.state;
|
|
68
|
+
$[4] = t4;
|
|
69
|
+
} else t4 = $[4];
|
|
70
|
+
let t5;
|
|
71
|
+
if ($[5] !== t4 || $[6] !== threadClient.state) {
|
|
72
|
+
t5 = {
|
|
73
|
+
mainThreadId: THREAD_ID,
|
|
74
|
+
newThreadId: null,
|
|
75
|
+
isLoading: false,
|
|
76
|
+
isLoadingMore: false,
|
|
77
|
+
hasMore: false,
|
|
78
|
+
threadIds: t2,
|
|
79
|
+
archivedThreadIds: t3,
|
|
80
|
+
threadItems: t4,
|
|
81
|
+
main: threadClient.state
|
|
82
|
+
};
|
|
83
|
+
$[5] = t4;
|
|
84
|
+
$[6] = threadClient.state;
|
|
85
|
+
$[7] = t5;
|
|
86
|
+
} else t5 = $[7];
|
|
87
|
+
const state = t5;
|
|
88
|
+
let t6;
|
|
89
|
+
if ($[8] !== state) {
|
|
90
|
+
t6 = () => state;
|
|
91
|
+
$[8] = state;
|
|
92
|
+
$[9] = t6;
|
|
93
|
+
} else t6 = $[9];
|
|
94
|
+
let t7;
|
|
95
|
+
if ($[10] !== itemClient.methods) {
|
|
96
|
+
t7 = (selector) => {
|
|
64
97
|
if (selector !== "main" && !(typeof selector === "object" && "id" in selector && selector.id === THREAD_ID) && !(typeof selector === "object" && "index" in selector && selector.index === 0)) throw new Error(`SingleThreadList: unknown item selector ${JSON.stringify(selector)}`);
|
|
65
98
|
return itemClient.methods;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
99
|
+
};
|
|
100
|
+
$[10] = itemClient.methods;
|
|
101
|
+
$[11] = t7;
|
|
102
|
+
} else t7 = $[11];
|
|
103
|
+
let t8;
|
|
104
|
+
if ($[12] !== threadClient.methods) {
|
|
105
|
+
t8 = (selector_0) => {
|
|
106
|
+
if (selector_0 !== "main" && selector_0 !== THREAD_ID) throw new Error(`SingleThreadList: unknown thread selector ${JSON.stringify(selector_0)}`);
|
|
69
107
|
return threadClient.methods;
|
|
70
|
-
}
|
|
71
|
-
|
|
108
|
+
};
|
|
109
|
+
$[12] = threadClient.methods;
|
|
110
|
+
$[13] = t8;
|
|
111
|
+
} else t8 = $[13];
|
|
112
|
+
let t9;
|
|
113
|
+
if ($[14] !== t6 || $[15] !== t7 || $[16] !== t8) {
|
|
114
|
+
t9 = {
|
|
115
|
+
getState: t6,
|
|
116
|
+
switchToThread: _temp9,
|
|
117
|
+
switchToNewThread: _temp0,
|
|
118
|
+
getLoadThreadsPromise: _temp1,
|
|
119
|
+
reload: _temp10,
|
|
120
|
+
loadMore: _temp11,
|
|
121
|
+
item: t7,
|
|
122
|
+
thread: t8
|
|
123
|
+
};
|
|
124
|
+
$[14] = t6;
|
|
125
|
+
$[15] = t7;
|
|
126
|
+
$[16] = t8;
|
|
127
|
+
$[17] = t9;
|
|
128
|
+
} else t9 = $[17];
|
|
129
|
+
return t9;
|
|
72
130
|
};
|
|
73
131
|
const SingleThreadList = resource(useSingleThreadList);
|
|
132
|
+
function _temp() {}
|
|
133
|
+
function _temp2() {}
|
|
134
|
+
function _temp3() {}
|
|
135
|
+
function _temp4() {}
|
|
136
|
+
function _temp5() {}
|
|
137
|
+
function _temp6() {}
|
|
138
|
+
async function _temp7() {
|
|
139
|
+
return {
|
|
140
|
+
remoteId: THREAD_ID,
|
|
141
|
+
externalId: void 0
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function _temp8() {}
|
|
145
|
+
function _temp9() {
|
|
146
|
+
throw new Error("SingleThreadList does not support switchToThread");
|
|
147
|
+
}
|
|
148
|
+
function _temp0() {
|
|
149
|
+
throw new Error("SingleThreadList does not support switchToNewThread");
|
|
150
|
+
}
|
|
151
|
+
function _temp1() {
|
|
152
|
+
return RESOLVED_PROMISE;
|
|
153
|
+
}
|
|
154
|
+
function _temp10() {
|
|
155
|
+
return RESOLVED_PROMISE;
|
|
156
|
+
}
|
|
157
|
+
function _temp11() {
|
|
158
|
+
return RESOLVED_PROMISE;
|
|
159
|
+
}
|
|
74
160
|
//#endregion
|
|
75
161
|
export { SingleThreadList };
|
|
76
162
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleThreadList.js","names":[],"sources":["../../src/client/SingleThreadList.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\nconst THREAD_ID = \"default\";\n\nconst useSingleThreadListItem = (): ClientOutput<\"threadListItem\"> => {\n const [custom, setCustom] = useState<Record<string, unknown> | undefined>();\n\n return {\n getState: () => ({\n id: THREAD_ID,\n remoteId: undefined,\n externalId: undefined,\n title: undefined,\n status: \"regular\",\n custom,\n }),\n switchTo: () => {},\n rename: () => {},\n updateCustom: setCustom,\n archive: () => {},\n unarchive: () => {},\n delete: () => {},\n generateTitle: () => {},\n initialize: async () => ({ remoteId: THREAD_ID, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst SingleThreadListItem = resource(useSingleThreadListItem);\n\ntype SingleThreadListProps = {\n thread: ClientElement<\"thread\">;\n};\n\n/**\n * A minimal threads scope that wraps a single thread.\n * Automatically provided by ExternalThread when no threads scope exists.\n * Mounts the provided thread resource element.\n */\nconst useSingleThreadList = ({\n thread,\n}: SingleThreadListProps): ClientOutput<\"threads\"> => {\n const itemClient = useClientResource(SingleThreadListItem());\n const threadClient = useClientResource(thread);\n\n const state = useMemo(\n () => ({\n mainThreadId: THREAD_ID,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: [THREAD_ID],\n archivedThreadIds: [],\n threadItems: [itemClient.state],\n main: threadClient.state,\n }),\n [itemClient.state, threadClient.state],\n );\n\n return {\n getState: () => state,\n switchToThread: () => {\n throw new Error(\"SingleThreadList does not support switchToThread\");\n },\n switchToNewThread: () => {\n throw new Error(\"SingleThreadList does not support switchToNewThread\");\n },\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (\n selector !== \"main\" &&\n !(\n typeof selector === \"object\" &&\n \"id\" in selector &&\n selector.id === THREAD_ID\n ) &&\n !(\n typeof selector === \"object\" &&\n \"index\" in selector &&\n selector.index === 0\n )\n ) {\n throw new Error(\n `SingleThreadList: unknown item selector ${JSON.stringify(selector)}`,\n );\n }\n return itemClient.methods;\n },\n thread: (selector) => {\n if (selector !== \"main\" && selector !== THREAD_ID) {\n throw new Error(\n `SingleThreadList: unknown thread selector ${JSON.stringify(selector)}`,\n );\n }\n return threadClient.methods;\n },\n };\n};\n\nexport const SingleThreadList = resource(useSingleThreadList);\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SingleThreadList.js","names":["useMemo","useState","resource","ClientElement","ClientOutput","useClientResource","RESOLVED_PROMISE","Promise","resolve","THREAD_ID","useSingleThreadListItem","$","_c","custom","setCustom","t0","getState","id","remoteId","undefined","externalId","title","status","switchTo","_temp","rename","_temp2","updateCustom","archive","_temp3","unarchive","_temp4","delete","_temp5","generateTitle","_temp6","initialize","_temp7","detach","_temp8","SingleThreadListItem","SingleThreadListProps","thread","useSingleThreadList","t1","Symbol","for","itemClient","threadClient","t2","t3","t4","state","t5","mainThreadId","newThreadId","isLoading","isLoadingMore","hasMore","threadIds","archivedThreadIds","threadItems","main","t6","t7","methods","selector","index","Error","JSON","stringify","t8","selector_0","t9","switchToThread","_temp9","switchToNewThread","_temp0","getLoadThreadsPromise","_temp1","reload","_temp10","loadMore","_temp11","item","SingleThreadList"],"sources":["../../src/client/SingleThreadList.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\nconst THREAD_ID = \"default\";\n\nconst useSingleThreadListItem = (): ClientOutput<\"threadListItem\"> => {\n const [custom, setCustom] = useState<Record<string, unknown> | undefined>();\n\n return {\n getState: () => ({\n id: THREAD_ID,\n remoteId: undefined,\n externalId: undefined,\n title: undefined,\n status: \"regular\",\n custom,\n }),\n switchTo: () => {},\n rename: () => {},\n updateCustom: setCustom,\n archive: () => {},\n unarchive: () => {},\n delete: () => {},\n generateTitle: () => {},\n initialize: async () => ({ remoteId: THREAD_ID, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst SingleThreadListItem = resource(useSingleThreadListItem);\n\ntype SingleThreadListProps = {\n thread: ClientElement<\"thread\">;\n};\n\n/**\n * A minimal threads scope that wraps a single thread.\n * Automatically provided by ExternalThread when no threads scope exists.\n * Mounts the provided thread resource element.\n */\nconst useSingleThreadList = ({\n thread,\n}: SingleThreadListProps): ClientOutput<\"threads\"> => {\n const itemClient = useClientResource(SingleThreadListItem());\n const threadClient = useClientResource(thread);\n\n const state = useMemo(\n () => ({\n mainThreadId: THREAD_ID,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: [THREAD_ID],\n archivedThreadIds: [],\n threadItems: [itemClient.state],\n main: threadClient.state,\n }),\n [itemClient.state, threadClient.state],\n );\n\n return {\n getState: () => state,\n switchToThread: () => {\n throw new Error(\"SingleThreadList does not support switchToThread\");\n },\n switchToNewThread: () => {\n throw new Error(\"SingleThreadList does not support switchToNewThread\");\n },\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (\n selector !== \"main\" &&\n !(\n typeof selector === \"object\" &&\n \"id\" in selector &&\n selector.id === THREAD_ID\n ) &&\n !(\n typeof selector === \"object\" &&\n \"index\" in selector &&\n selector.index === 0\n )\n ) {\n throw new Error(\n `SingleThreadList: unknown item selector ${JSON.stringify(selector)}`,\n );\n }\n return itemClient.methods;\n },\n thread: (selector) => {\n if (selector !== \"main\" && selector !== THREAD_ID) {\n throw new Error(\n `SingleThreadList: unknown thread selector ${JSON.stringify(selector)}`,\n );\n }\n return threadClient.methods;\n },\n };\n};\n\nexport const SingleThreadList = resource(useSingleThreadList);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadonlyStore.js","names":[],"sources":["../../src/context/ReadonlyStore.ts"],"sourcesContent":["import type { StoreApi } from \"zustand\";\n\nexport type ReadonlyStore<T> = Omit<StoreApi<T>, \"setState\" | \"destroy\">;\n\nexport const writableStore = <T>(store: ReadonlyStore<T> | undefined) => {\n return store as unknown as StoreApi<T>;\n};\n"],"mappings":";AAIA,
|
|
1
|
+
{"version":3,"file":"ReadonlyStore.js","names":["StoreApi","ReadonlyStore","Omit","T","writableStore","store"],"sources":["../../src/context/ReadonlyStore.ts"],"sourcesContent":["import type { StoreApi } from \"zustand\";\n\nexport type ReadonlyStore<T> = Omit<StoreApi<T>, \"setState\" | \"destroy\">;\n\nexport const writableStore = <T>(store: ReadonlyStore<T> | undefined) => {\n return store as unknown as StoreApi<T>;\n};\n"],"mappings":";AAIA,MAAaI,iBAAoBC,UAAwC;CACvE,OAAOA;AACT"}
|
|
@@ -1,13 +1,46 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { AuiProvider, useAui } from "@assistant-ui/store";
|
|
3
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
3
4
|
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
import { ThreadMessageClient } from "@assistant-ui/core/store";
|
|
5
6
|
//#region src/context/providers/MessageProvider.tsx
|
|
6
|
-
const MessageProvider = (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const MessageProvider = (t0) => {
|
|
8
|
+
const $ = c(9);
|
|
9
|
+
let children;
|
|
10
|
+
let t1;
|
|
11
|
+
let t2;
|
|
12
|
+
if ($[0] !== t0) {
|
|
13
|
+
const { children: t3, ...props } = t0;
|
|
14
|
+
children = t3;
|
|
15
|
+
t2 = useAui;
|
|
16
|
+
t1 = ThreadMessageClient(props);
|
|
17
|
+
$[0] = t0;
|
|
18
|
+
$[1] = children;
|
|
19
|
+
$[2] = t1;
|
|
20
|
+
$[3] = t2;
|
|
21
|
+
} else {
|
|
22
|
+
children = $[1];
|
|
23
|
+
t1 = $[2];
|
|
24
|
+
t2 = $[3];
|
|
25
|
+
}
|
|
26
|
+
let t3;
|
|
27
|
+
if ($[4] !== t1) {
|
|
28
|
+
t3 = { message: t1 };
|
|
29
|
+
$[4] = t1;
|
|
30
|
+
$[5] = t3;
|
|
31
|
+
} else t3 = $[5];
|
|
32
|
+
const aui = t2(t3);
|
|
33
|
+
let t4;
|
|
34
|
+
if ($[6] !== aui || $[7] !== children) {
|
|
35
|
+
t4 = /* @__PURE__ */ jsx(AuiProvider, {
|
|
36
|
+
value: aui,
|
|
37
|
+
children
|
|
38
|
+
});
|
|
39
|
+
$[6] = aui;
|
|
40
|
+
$[7] = children;
|
|
41
|
+
$[8] = t4;
|
|
42
|
+
} else t4 = $[8];
|
|
43
|
+
return t4;
|
|
11
44
|
};
|
|
12
45
|
//#endregion
|
|
13
46
|
export { MessageProvider };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageProvider.js","names":[],"sources":["../../../src/context/providers/MessageProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC, PropsWithChildren } from \"react\";\nimport { useAui, AuiProvider } from \"@assistant-ui/store\";\nimport {\n type ThreadMessageClientProps,\n ThreadMessageClient,\n} from \"@assistant-ui/core/store\";\n\nexport const MessageProvider: FC<\n PropsWithChildren<ThreadMessageClientProps>\n> = ({ children, ...props }) => {\n const aui = useAui({\n message: ThreadMessageClient(props),\n });\n\n return <AuiProvider value={aui}>{children}</AuiProvider>;\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MessageProvider.js","names":["c","_c","FC","PropsWithChildren","useAui","AuiProvider","ThreadMessageClientProps","ThreadMessageClient","MessageProvider","t0","$","children","t1","t2","t3","props","message","aui","t4"],"sources":["../../../src/context/providers/MessageProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC, PropsWithChildren } from \"react\";\nimport { useAui, AuiProvider } from \"@assistant-ui/store\";\nimport {\n type ThreadMessageClientProps,\n ThreadMessageClient,\n} from \"@assistant-ui/core/store\";\n\nexport const MessageProvider: FC<\n PropsWithChildren<ThreadMessageClientProps>\n> = ({ children, ...props }) => {\n const aui = useAui({\n message: ThreadMessageClient(props),\n });\n\n return <AuiProvider value={aui}>{children}</AuiProvider>;\n};\n"],"mappings":";;;;;;AASA,MAAaQ,mBAETC,OAAA;CAAA,MAAAC,IAAAT,EAAA,CAAA;CAAA,IAAAU;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAH,EAAA,OAAAD,IAAA;EAAC,MAAA,EAAAE,UAAAG,IAAA,GAAAC,UAAAN;EAAAE,WAAAG;EACSV,KAAAA;EACDQ,KAAAL,oBAAoBQ,KAAK;EAACL,EAAA,KAAAD;EAAAC,EAAA,KAAAC;EAAAD,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAA;EAAAF,WAAAD,EAAA;EAAAE,KAAAF,EAAA;EAAAG,KAAAH,EAAA;CAAA;CAAA,IAAAI;CAAA,IAAAJ,EAAA,OAAAE,IAAA;EADlBE,KAAA,EAAAE,SACRJ,GACX;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAFD,MAAAO,MAAYb,GAAOU,EAElB;CAAE,IAAAI;CAAA,IAAAR,EAAA,OAAAO,OAAAP,EAAA,OAAAC,UAAA;EAEIO,KAAA,oBAAC,aAAD;GAAoBD,OAAAA;GAAMN;EAAd,CAAA;EAAqCD,EAAA,KAAAO;EAAAP,EAAA,KAAAC;EAAAD,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAAjDQ;AAAiD"}
|
|
@@ -2,34 +2,90 @@
|
|
|
2
2
|
import { makeThreadViewportStore } from "../stores/ThreadViewport.js";
|
|
3
3
|
import { ThreadViewportContext, useThreadViewportStore } from "../react/ThreadViewportContext.js";
|
|
4
4
|
import { writableStore } from "../ReadonlyStore.js";
|
|
5
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
6
|
import { useEffect, useState } from "@assistant-ui/tap/react-shim";
|
|
6
7
|
import { jsx } from "react/jsx-runtime";
|
|
7
8
|
//#region src/context/providers/ThreadViewportProvider.tsx
|
|
8
9
|
const useThreadViewportStoreValue = (options) => {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const $ = c(11);
|
|
11
|
+
let t0;
|
|
12
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
13
|
+
t0 = { optional: true };
|
|
14
|
+
$[0] = t0;
|
|
15
|
+
} else t0 = $[0];
|
|
16
|
+
const outerViewport = useThreadViewportStore(t0);
|
|
17
|
+
let t1;
|
|
18
|
+
if ($[1] !== options) {
|
|
19
|
+
t1 = () => makeThreadViewportStore(options);
|
|
20
|
+
$[1] = options;
|
|
21
|
+
$[2] = t1;
|
|
22
|
+
} else t1 = $[2];
|
|
23
|
+
const [store] = useState(t1);
|
|
24
|
+
let t2;
|
|
25
|
+
let t3;
|
|
26
|
+
if ($[3] !== outerViewport || $[4] !== store) {
|
|
27
|
+
t2 = () => outerViewport?.getState().onScrollToBottom(() => {
|
|
13
28
|
store.getState().scrollToBottom();
|
|
14
29
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
30
|
+
t3 = [outerViewport, store];
|
|
31
|
+
$[3] = outerViewport;
|
|
32
|
+
$[4] = store;
|
|
33
|
+
$[5] = t2;
|
|
34
|
+
$[6] = t3;
|
|
35
|
+
} else {
|
|
36
|
+
t2 = $[5];
|
|
37
|
+
t3 = $[6];
|
|
38
|
+
}
|
|
39
|
+
useEffect(t2, t3);
|
|
40
|
+
let t4;
|
|
41
|
+
let t5;
|
|
42
|
+
if ($[7] !== outerViewport || $[8] !== store) {
|
|
43
|
+
t4 = () => {
|
|
44
|
+
if (!outerViewport) return;
|
|
45
|
+
return store.subscribe((state) => {
|
|
46
|
+
if (outerViewport.getState().isAtBottom !== state.isAtBottom) writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom });
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
t5 = [store, outerViewport];
|
|
50
|
+
$[7] = outerViewport;
|
|
51
|
+
$[8] = store;
|
|
52
|
+
$[9] = t4;
|
|
53
|
+
$[10] = t5;
|
|
54
|
+
} else {
|
|
55
|
+
t4 = $[9];
|
|
56
|
+
t5 = $[10];
|
|
57
|
+
}
|
|
58
|
+
useEffect(t4, t5);
|
|
22
59
|
return store;
|
|
23
60
|
};
|
|
24
|
-
const ThreadPrimitiveViewportProvider = (
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
61
|
+
const ThreadPrimitiveViewportProvider = (t0) => {
|
|
62
|
+
const $ = c(7);
|
|
63
|
+
const { children, options: t1 } = t0;
|
|
64
|
+
let t2;
|
|
65
|
+
if ($[0] !== t1) {
|
|
66
|
+
t2 = t1 === void 0 ? {} : t1;
|
|
67
|
+
$[0] = t1;
|
|
68
|
+
$[1] = t2;
|
|
69
|
+
} else t2 = $[1];
|
|
70
|
+
const useThreadViewport = useThreadViewportStoreValue(t2);
|
|
71
|
+
let t3;
|
|
72
|
+
if ($[2] !== useThreadViewport) {
|
|
73
|
+
t3 = () => ({ useThreadViewport });
|
|
74
|
+
$[2] = useThreadViewport;
|
|
75
|
+
$[3] = t3;
|
|
76
|
+
} else t3 = $[3];
|
|
77
|
+
const [context] = useState(t3);
|
|
78
|
+
let t4;
|
|
79
|
+
if ($[4] !== children || $[5] !== context) {
|
|
80
|
+
t4 = /* @__PURE__ */ jsx(ThreadViewportContext.Provider, {
|
|
81
|
+
value: context,
|
|
82
|
+
children
|
|
83
|
+
});
|
|
84
|
+
$[4] = children;
|
|
85
|
+
$[5] = context;
|
|
86
|
+
$[6] = t4;
|
|
87
|
+
} else t4 = $[6];
|
|
88
|
+
return t4;
|
|
33
89
|
};
|
|
34
90
|
//#endregion
|
|
35
91
|
export { ThreadPrimitiveViewportProvider };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadViewportProvider.js","names":[],"sources":["../../../src/context/providers/ThreadViewportProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { type FC, type PropsWithChildren, useEffect, useState } from \"react\";\n\nimport {\n makeThreadViewportStore,\n type ThreadViewportStoreOptions,\n} from \"../stores/ThreadViewport\";\nimport {\n ThreadViewportContext,\n type ThreadViewportContextValue,\n useThreadViewportStore,\n} from \"../react/ThreadViewportContext\";\nimport { writableStore } from \"../ReadonlyStore\";\n\nexport type ThreadViewportProviderProps = PropsWithChildren<{\n options?: ThreadViewportStoreOptions;\n}>;\n\nconst useThreadViewportStoreValue = (options: ThreadViewportStoreOptions) => {\n const outerViewport = useThreadViewportStore({ optional: true });\n // Viewport options are initial configuration. Keeping them non-reactive avoids\n // fanout through every message in long threads when anchoring config changes.\n const [store] = useState(() => makeThreadViewportStore(options));\n\n // Forward scrollToBottom from outer viewport to inner viewport\n useEffect(() => {\n return outerViewport?.getState().onScrollToBottom(() => {\n store.getState().scrollToBottom();\n });\n }, [outerViewport, store]);\n\n useEffect(() => {\n if (!outerViewport) return;\n return store.subscribe((state) => {\n if (outerViewport.getState().isAtBottom !== state.isAtBottom) {\n writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom });\n }\n });\n }, [store, outerViewport]);\n\n return store;\n};\n\nexport const ThreadPrimitiveViewportProvider: FC<\n ThreadViewportProviderProps\n> = ({ children, options = {} }) => {\n const useThreadViewport = useThreadViewportStoreValue(options);\n\n const [context] = useState<ThreadViewportContextValue>(() => {\n return {\n useThreadViewport,\n };\n });\n\n return (\n <ThreadViewportContext.Provider value={context}>\n {children}\n </ThreadViewportContext.Provider>\n );\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ThreadViewportProvider.js","names":["c","_c","FC","PropsWithChildren","useEffect","useState","makeThreadViewportStore","ThreadViewportStoreOptions","ThreadViewportContext","ThreadViewportContextValue","useThreadViewportStore","writableStore","ThreadViewportProviderProps","options","useThreadViewportStoreValue","$","t0","Symbol","for","optional","outerViewport","t1","store","t2","t3","getState","onScrollToBottom","scrollToBottom","t4","t5","subscribe","state","isAtBottom","setState","ThreadPrimitiveViewportProvider","children","undefined","useThreadViewport","context"],"sources":["../../../src/context/providers/ThreadViewportProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { type FC, type PropsWithChildren, useEffect, useState } from \"react\";\n\nimport {\n makeThreadViewportStore,\n type ThreadViewportStoreOptions,\n} from \"../stores/ThreadViewport\";\nimport {\n ThreadViewportContext,\n type ThreadViewportContextValue,\n useThreadViewportStore,\n} from \"../react/ThreadViewportContext\";\nimport { writableStore } from \"../ReadonlyStore\";\n\nexport type ThreadViewportProviderProps = PropsWithChildren<{\n options?: ThreadViewportStoreOptions;\n}>;\n\nconst useThreadViewportStoreValue = (options: ThreadViewportStoreOptions) => {\n const outerViewport = useThreadViewportStore({ optional: true });\n // Viewport options are initial configuration. Keeping them non-reactive avoids\n // fanout through every message in long threads when anchoring config changes.\n const [store] = useState(() => makeThreadViewportStore(options));\n\n // Forward scrollToBottom from outer viewport to inner viewport\n useEffect(() => {\n return outerViewport?.getState().onScrollToBottom(() => {\n store.getState().scrollToBottom();\n });\n }, [outerViewport, store]);\n\n useEffect(() => {\n if (!outerViewport) return;\n return store.subscribe((state) => {\n if (outerViewport.getState().isAtBottom !== state.isAtBottom) {\n writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom });\n }\n });\n }, [store, outerViewport]);\n\n return store;\n};\n\nexport const ThreadPrimitiveViewportProvider: FC<\n ThreadViewportProviderProps\n> = ({ children, options = {} }) => {\n const useThreadViewport = useThreadViewportStoreValue(options);\n\n const [context] = useState<ThreadViewportContextValue>(() => {\n return {\n useThreadViewport,\n };\n });\n\n return (\n <ThreadViewportContext.Provider value={context}>\n {children}\n </ThreadViewportContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;AAmBA,MAAMc,+BAA8BD,YAAA;CAAA,MAAAE,IAAAd,EAAA,EAAA;CAAA,IAAAe;CAAA,IAAAD,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EACWF,KAAA,EAAAG,UAAY,KAAK;EAACJ,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAA/D,MAAAK,gBAAsBV,uBAAuBM,EAAkB;CAAE,IAAAK;CAAA,IAAAN,EAAA,OAAAF,SAAA;EAGxCQ,WAAMf,wBAAwBO,OAAO;EAACE,EAAA,KAAAF;EAAAE,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAA/D,MAAA,CAAAO,SAAgBjB,SAASgB,EAAsC;CAAE,IAAAE;CAAA,IAAAC;CAAA,IAAAT,EAAA,OAAAK,iBAAAL,EAAA,OAAAO,OAAA;EAGvDC,WACDH,eAAaK,SAA4B,CAAC,CAAAC,uBAAC;GAChDJ,MAAKG,SAAU,CAAC,CAAAE,eAAgB;EAAC,CAClC;EACAH,KAAA,CAACJ,eAAeE,KAAK;EAACP,EAAA,KAAAK;EAAAL,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;CAAA,OAAA;EAAAD,KAAAR,EAAA;EAAAS,KAAAT,EAAA;CAAA;CAJzBX,UAAUmB,IAIPC,EAAsB;CAAC,IAAAI;CAAA,IAAAC;CAAA,IAAAd,EAAA,OAAAK,iBAAAL,EAAA,OAAAO,OAAA;EAEhBM,WAAA;GACR,IAAI,CAACR,eAAa;GAAS,OACpBE,MAAKQ,WAAWC,UAAA;IACrB,IAAIX,cAAaK,SAAU,CAAC,CAAAO,eAAgBD,MAAKC,YAC/CrB,cAAcS,aAAa,CAAC,CAAAa,SAAU,EAAAD,YAAcD,MAAKC,WAAY,CAAC;GACvE,CACF;EAAC;EACDH,KAAA,CAACP,OAAOF,aAAa;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAO;EAAAP,EAAA,KAAAa;EAAAb,EAAA,MAAAc;CAAA,OAAA;EAAAD,KAAAb,EAAA;EAAAc,KAAAd,EAAA;CAAA;CAPzBX,UAAUwB,IAOPC,EAAsB;CAAC,OAEnBP;AAAK;AAGd,MAAaY,mCAETlB,OAAA;CAAA,MAAAD,IAAAd,EAAA,CAAA;CAAC,MAAA,EAAAkC,UAAAtB,SAAAQ,OAAAL;CAA0B,IAAAO;CAAA,IAAAR,EAAA,OAAAM,IAAA;EAAdE,KAAAF,OAAAe,KAAAA,IAAA,CAAW,IAAXf;EAAYN,EAAA,KAAAM;EAAAN,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAC3B,MAAAsB,oBAA0BvB,4BAA4BD,EAAO;CAAE,IAAAW;CAAA,IAAAT,EAAA,OAAAsB,mBAAA;EAERb,YAC9C,EAAAa,kBAEP;EACDtB,EAAA,KAAAsB;EAAAtB,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAJD,MAAA,CAAAuB,WAAkBjC,SAAqCmB,EAItD;CAAE,IAAAI;CAAA,IAAAb,EAAA,OAAAoB,YAAApB,EAAA,OAAAuB,SAAA;EAGDV,KAAA,oBAAA,sBAAA,UAAA;GAAuCU,OAAAA;GACpCH;EACH,CAAA;EAAiCpB,EAAA,KAAAoB;EAAApB,EAAA,KAAAuB;EAAAvB,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OAFjCa;AAEiC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadViewportContext.js","names":[],"sources":["../../../src/context/react/ThreadViewportContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext } from \"react\";\nimport type { ReadonlyStore } from \"../ReadonlyStore\";\nimport type { UseBoundStore } from \"zustand\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { createContextStoreHook } from \"./utils/createContextStoreHook\";\nimport type { ThreadViewportState } from \"../stores/ThreadViewport\";\n\nexport type ThreadViewportContextValue = {\n useThreadViewport: UseBoundStore<ReadonlyStore<ThreadViewportState>>;\n};\n\nexport const ThreadViewportContext =\n createContext<ThreadViewportContextValue | null>(null);\n\nconst useThreadViewportContext = createContextHook(\n ThreadViewportContext,\n \"ThreadPrimitive.Viewport\",\n);\n\nexport const { useThreadViewport, useThreadViewportStore } =\n createContextStoreHook(useThreadViewportContext, \"useThreadViewport\");\n"],"mappings":";;;;;AAaA,
|
|
1
|
+
{"version":3,"file":"ThreadViewportContext.js","names":["createContext","ReadonlyStore","UseBoundStore","createContextHook","createContextStoreHook","ThreadViewportState","ThreadViewportContextValue","useThreadViewport","ThreadViewportContext","useThreadViewportContext","useThreadViewportStore"],"sources":["../../../src/context/react/ThreadViewportContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext } from \"react\";\nimport type { ReadonlyStore } from \"../ReadonlyStore\";\nimport type { UseBoundStore } from \"zustand\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { createContextStoreHook } from \"./utils/createContextStoreHook\";\nimport type { ThreadViewportState } from \"../stores/ThreadViewport\";\n\nexport type ThreadViewportContextValue = {\n useThreadViewport: UseBoundStore<ReadonlyStore<ThreadViewportState>>;\n};\n\nexport const ThreadViewportContext =\n createContext<ThreadViewportContextValue | null>(null);\n\nconst useThreadViewportContext = createContextHook(\n ThreadViewportContext,\n \"ThreadPrimitive.Viewport\",\n);\n\nexport const { useThreadViewport, useThreadViewportStore } =\n createContextStoreHook(useThreadViewportContext, \"useThreadViewport\");\n"],"mappings":";;;;;AAaA,MAAaQ,wBACXR,cAAiD,IAAI;AAOvD,MAAa,EAAEO,mBAAmBG,2BAChCN,uBAN+BD,kBAC/BK,uBACA,0BAIuBC,GAA0B,mBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createContextHook.js","names":[],"sources":["../../../../src/context/react/utils/createContextHook.ts"],"sourcesContent":["\"use client\";\n\nimport { useContext, type Context } from \"react\";\n\n/**\n * Creates a context hook with optional support.\n * @param context - The React context to consume.\n * @param providerName - The name of the provider for error messages.\n * @returns A hook function that provides the context value.\n */\nexport function createContextHook<T>(\n context: Context<T | null>,\n providerName: string,\n) {\n function useContextHook(options?: {\n optional?: boolean | undefined;\n }): T | null {\n const contextValue = useContext(context);\n if (!options?.optional && !contextValue) {\n throw new Error(`This component must be used within ${providerName}.`);\n }\n return contextValue;\n }\n\n return useContextHook;\n}\n"],"mappings":";;;;;;;;;AAUA,
|
|
1
|
+
{"version":3,"file":"createContextHook.js","names":["useContext","Context","createContextHook","context","T","providerName","useContextHook","options","contextValue","optional","Error"],"sources":["../../../../src/context/react/utils/createContextHook.ts"],"sourcesContent":["\"use client\";\n\nimport { useContext, type Context } from \"react\";\n\n/**\n * Creates a context hook with optional support.\n * @param context - The React context to consume.\n * @param providerName - The name of the provider for error messages.\n * @returns A hook function that provides the context value.\n */\nexport function createContextHook<T>(\n context: Context<T | null>,\n providerName: string,\n) {\n function useContextHook(options?: {\n optional?: boolean | undefined;\n }): T | null {\n const contextValue = useContext(context);\n if (!options?.optional && !contextValue) {\n throw new Error(`This component must be used within ${providerName}.`);\n }\n return contextValue;\n }\n\n return useContextHook;\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgBE,kBACdC,SACAE,cACA;CACA,SAAAC,eAAAC,SAAA;EAGE,MAAAC,eAAqBR,WAAWG,OAAO;EACvC,IAAI,CAACI,SAAOE,YAAR,CAAuBD,cACzB,MAAM,IAAIE,MAAM,sCAAsCL,aAAY,EAAG;EACtE,OACMG;CAAY;CAGrB,OAAOF;AACT"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
1
2
|
//#region src/context/react/utils/createContextStoreHook.ts
|
|
2
3
|
/**
|
|
3
4
|
* Creates hooks for accessing a store within a context.
|
|
@@ -12,6 +13,7 @@ function createContextStoreHook(contextHook, contextKey) {
|
|
|
12
13
|
return context[contextKey];
|
|
13
14
|
}
|
|
14
15
|
function useStoreHook(param) {
|
|
16
|
+
const $ = c(5);
|
|
15
17
|
let optional = false;
|
|
16
18
|
let selector;
|
|
17
19
|
if (typeof param === "function") selector = param;
|
|
@@ -19,9 +21,22 @@ function createContextStoreHook(contextHook, contextKey) {
|
|
|
19
21
|
optional = !!param.optional;
|
|
20
22
|
selector = param.selector;
|
|
21
23
|
}
|
|
22
|
-
|
|
24
|
+
let t0;
|
|
25
|
+
if ($[0] !== optional) {
|
|
26
|
+
t0 = { optional };
|
|
27
|
+
$[0] = optional;
|
|
28
|
+
$[1] = t0;
|
|
29
|
+
} else t0 = $[1];
|
|
30
|
+
const store = useStoreStoreHook(t0);
|
|
23
31
|
if (!store) return null;
|
|
24
|
-
|
|
32
|
+
let t1;
|
|
33
|
+
if ($[2] !== selector || $[3] !== store) {
|
|
34
|
+
t1 = selector ? store(selector) : store();
|
|
35
|
+
$[2] = selector;
|
|
36
|
+
$[3] = store;
|
|
37
|
+
$[4] = t1;
|
|
38
|
+
} else t1 = $[4];
|
|
39
|
+
return t1;
|
|
25
40
|
}
|
|
26
41
|
return {
|
|
27
42
|
[contextKey]: useStoreHook,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createContextStoreHook.js","names":[],"sources":["../../../../src/context/react/utils/createContextStoreHook.ts"],"sourcesContent":["import type { UseBoundStore } from \"zustand\";\nimport type { ReadonlyStore } from \"../../ReadonlyStore\";\n\n/**\n * Creates hooks for accessing a store within a context.\n * @param contextHook - The hook to access the context.\n * @param contextKey - The key of the store in the context.\n * @returns An object containing the hooks: `use...` and `use...Store`.\n */\nexport function createContextStoreHook<T, K extends keyof T & string>(\n contextHook: (options?: { optional?: boolean }) => T | null,\n contextKey: K,\n) {\n type StoreType = T[K];\n type StateType = StoreType extends ReadonlyStore<infer S> ? S : never;\n\n // Define useStoreStoreHook with overloads\n function useStoreStoreHook(): ReadonlyStore<StateType>;\n function useStoreStoreHook(options: {\n optional: true;\n }): ReadonlyStore<StateType> | null;\n function useStoreStoreHook(options?: {\n optional?: boolean;\n }): ReadonlyStore<StateType> | null {\n const context = contextHook(options);\n if (!context) return null;\n return context[contextKey] as ReadonlyStore<StateType>;\n }\n\n // Define useStoreHook with overloads\n function useStoreHook(): StateType;\n function useStoreHook<TSelected>(\n selector: (state: StateType) => TSelected,\n ): TSelected;\n function useStoreHook(options: { optional: true }): StateType | null;\n function useStoreHook<TSelected>(options: {\n optional: true;\n selector?: (state: StateType) => TSelected;\n }): TSelected | null;\n function useStoreHook<TSelected>(\n param?:\n | ((state: StateType) => TSelected)\n | {\n optional?: boolean;\n selector?: (state: StateType) => TSelected;\n },\n ): TSelected | StateType | null {\n let optional = false;\n let selector: ((state: StateType) => TSelected) | undefined;\n\n if (typeof param === \"function\") {\n selector = param;\n } else if (param && typeof param === \"object\") {\n optional = !!param.optional;\n selector = param.selector;\n }\n\n const store = useStoreStoreHook({\n optional,\n } as any) as UseBoundStore<ReadonlyStore<StateType>>;\n if (!store) return null;\n return selector ? store(selector) : store();\n }\n\n // Return an object with keys based on contextKey\n return {\n [contextKey]: useStoreHook,\n [`${contextKey}Store`]: useStoreStoreHook,\n } as {\n [P in K]: typeof useStoreHook;\n } & {\n [P in `${K}Store`]: typeof useStoreStoreHook;\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createContextStoreHook.js","names":["UseBoundStore","ReadonlyStore","createContextStoreHook","T","contextHook","options","optional","contextKey","K","StoreType","StateType","S","useStoreStoreHook","context","useStoreHook","selector","state","TSelected","param","$","_c","t0","store","t1"],"sources":["../../../../src/context/react/utils/createContextStoreHook.ts"],"sourcesContent":["import type { UseBoundStore } from \"zustand\";\nimport type { ReadonlyStore } from \"../../ReadonlyStore\";\n\n/**\n * Creates hooks for accessing a store within a context.\n * @param contextHook - The hook to access the context.\n * @param contextKey - The key of the store in the context.\n * @returns An object containing the hooks: `use...` and `use...Store`.\n */\nexport function createContextStoreHook<T, K extends keyof T & string>(\n contextHook: (options?: { optional?: boolean }) => T | null,\n contextKey: K,\n) {\n type StoreType = T[K];\n type StateType = StoreType extends ReadonlyStore<infer S> ? S : never;\n\n // Define useStoreStoreHook with overloads\n function useStoreStoreHook(): ReadonlyStore<StateType>;\n function useStoreStoreHook(options: {\n optional: true;\n }): ReadonlyStore<StateType> | null;\n function useStoreStoreHook(options?: {\n optional?: boolean;\n }): ReadonlyStore<StateType> | null {\n const context = contextHook(options);\n if (!context) return null;\n return context[contextKey] as ReadonlyStore<StateType>;\n }\n\n // Define useStoreHook with overloads\n function useStoreHook(): StateType;\n function useStoreHook<TSelected>(\n selector: (state: StateType) => TSelected,\n ): TSelected;\n function useStoreHook(options: { optional: true }): StateType | null;\n function useStoreHook<TSelected>(options: {\n optional: true;\n selector?: (state: StateType) => TSelected;\n }): TSelected | null;\n function useStoreHook<TSelected>(\n param?:\n | ((state: StateType) => TSelected)\n | {\n optional?: boolean;\n selector?: (state: StateType) => TSelected;\n },\n ): TSelected | StateType | null {\n let optional = false;\n let selector: ((state: StateType) => TSelected) | undefined;\n\n if (typeof param === \"function\") {\n selector = param;\n } else if (param && typeof param === \"object\") {\n optional = !!param.optional;\n selector = param.selector;\n }\n\n const store = useStoreStoreHook({\n optional,\n } as any) as UseBoundStore<ReadonlyStore<StateType>>;\n if (!store) return null;\n return selector ? store(selector) : store();\n }\n\n // Return an object with keys based on contextKey\n return {\n [contextKey]: useStoreHook,\n [`${contextKey}Store`]: useStoreStoreHook,\n } as {\n [P in K]: typeof useStoreHook;\n } & {\n [P in `${K}Store`]: typeof useStoreStoreHook;\n };\n}\n"],"mappings":";;;;;;;;AASA,SAAgBE,uBACdE,aACAG,YACA;CASA,SAASK,kBAAkBP,SAES;EAClC,MAAMQ,UAAUT,YAAYC,OAAO;EACnC,IAAI,CAACQ,SAAS,OAAO;EACrB,OAAOA,QAAQN;CACjB;CAYA,SAAAO,aAAAI,OAAA;EAAA,MAAAC,IAAAC,EAAA,CAAA;EAQE,IAAAd,WAAe;EACXS,IAAAA;EAEJ,IAAI,OAAOG,UAAU,YACnBH,WAAWG;OACN,IAAIA,SAAS,OAAOA,UAAU,UAAQ;GAC3CZ,WAAWA,CAACA,CAACY,MAAKZ;GAClBS,WAAWG,MAAKH;EAAR;EACT,IAAAM;EAAA,IAAAF,EAAA,OAAAb,UAAA;GAE+Be,KAAA,EAAAf,SAEhC;GAACa,EAAA,KAAAb;GAAAa,EAAA,KAAAE;EAAA,OAAAA,KAAAF,EAAA;EAFD,MAAAG,QAAcV,kBAAkBS,EAExB;EACR,IAAI,CAACC,OAAK,OAAS;EAAK,IAAAC;EAAA,IAAAJ,EAAA,OAAAJ,YAAAI,EAAA,OAAAG,OAAA;GACjBC,KAAAR,WAAWO,MAAMP,QAAkB,IAANO,MAAM;GAACH,EAAA,KAAAJ;GAAAI,EAAA,KAAAG;GAAAH,EAAA,KAAAI;EAAA,OAAAA,KAAAJ,EAAA;EAAA,OAApCI;CAAoC;CAI7C,OAAO;GACJhB,aAAaO;GACb,GAAGP,WAAU,SAAUK;CAC1B;AAKF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStateHookForRuntime.js","names":[],"sources":["../../../../src/context/react/utils/createStateHookForRuntime.ts"],"sourcesContent":["import {\n type SubscribableRuntime,\n useRuntimeStateInternal,\n} from \"./useRuntimeState\";\n\nexport function createStateHookForRuntime<TState>(\n useRuntime: (options: {\n optional: boolean | undefined;\n }) => SubscribableRuntime<TState> | null,\n) {\n // empty\n function useStoreHook(): TState;\n\n // selector\n function useStoreHook<TSelected>(\n selector: (state: TState) => TSelected,\n ): TSelected;\n\n // selector?\n function useStoreHook<TSelected>(\n selector: ((state: TState) => TSelected) | undefined,\n ): TSelected | TState;\n\n // optional=false\n function useStoreHook(options: { optional?: false | undefined }): TState;\n\n // optional?\n function useStoreHook(options: {\n optional?: boolean | undefined;\n }): TState | null;\n\n // optional=false, selector\n function useStoreHook<TSelected>(options: {\n optional?: false | undefined;\n selector: (state: TState) => TSelected;\n }): TSelected;\n\n // optional=false, selector?\n function useStoreHook<TSelected>(options: {\n optional?: false | undefined;\n selector: ((state: TState) => TSelected) | undefined;\n }): TSelected | TState;\n\n // optional?, selector\n function useStoreHook<TSelected>(options: {\n optional?: boolean | undefined;\n selector: (state: TState) => TSelected;\n }): TSelected | null;\n\n // optional?, selector?\n function useStoreHook<TSelected>(options: {\n optional?: boolean | undefined;\n selector: ((state: TState) => TSelected) | undefined;\n }): TSelected | TState | null;\n\n function useStoreHook<TSelected>(\n param?:\n | ((state: TState) => TSelected)\n | {\n optional?: boolean | undefined;\n selector?: ((state: TState) => TSelected) | undefined;\n },\n ): TSelected | TState | null {\n let optional = false;\n let selector: ((state: TState) => TSelected) | undefined;\n\n if (typeof param === \"function\") {\n selector = param;\n } else if (param) {\n optional = !!param.optional;\n selector = param.selector;\n }\n\n const store = useRuntime({ optional });\n if (!store) return null;\n\n // it is ok to call useRuntimeStateInternal conditionally because it will never become null if its available\n return useRuntimeStateInternal(store, selector);\n }\n\n return useStoreHook;\n}\n"],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"createStateHookForRuntime.js","names":["SubscribableRuntime","useRuntimeStateInternal","createStateHookForRuntime","useRuntime","options","optional","TState","useStoreHook","selector","state","TSelected","param","store"],"sources":["../../../../src/context/react/utils/createStateHookForRuntime.ts"],"sourcesContent":["import {\n type SubscribableRuntime,\n useRuntimeStateInternal,\n} from \"./useRuntimeState\";\n\nexport function createStateHookForRuntime<TState>(\n useRuntime: (options: {\n optional: boolean | undefined;\n }) => SubscribableRuntime<TState> | null,\n) {\n // empty\n function useStoreHook(): TState;\n\n // selector\n function useStoreHook<TSelected>(\n selector: (state: TState) => TSelected,\n ): TSelected;\n\n // selector?\n function useStoreHook<TSelected>(\n selector: ((state: TState) => TSelected) | undefined,\n ): TSelected | TState;\n\n // optional=false\n function useStoreHook(options: { optional?: false | undefined }): TState;\n\n // optional?\n function useStoreHook(options: {\n optional?: boolean | undefined;\n }): TState | null;\n\n // optional=false, selector\n function useStoreHook<TSelected>(options: {\n optional?: false | undefined;\n selector: (state: TState) => TSelected;\n }): TSelected;\n\n // optional=false, selector?\n function useStoreHook<TSelected>(options: {\n optional?: false | undefined;\n selector: ((state: TState) => TSelected) | undefined;\n }): TSelected | TState;\n\n // optional?, selector\n function useStoreHook<TSelected>(options: {\n optional?: boolean | undefined;\n selector: (state: TState) => TSelected;\n }): TSelected | null;\n\n // optional?, selector?\n function useStoreHook<TSelected>(options: {\n optional?: boolean | undefined;\n selector: ((state: TState) => TSelected) | undefined;\n }): TSelected | TState | null;\n\n function useStoreHook<TSelected>(\n param?:\n | ((state: TState) => TSelected)\n | {\n optional?: boolean | undefined;\n selector?: ((state: TState) => TSelected) | undefined;\n },\n ): TSelected | TState | null {\n let optional = false;\n let selector: ((state: TState) => TSelected) | undefined;\n\n if (typeof param === \"function\") {\n selector = param;\n } else if (param) {\n optional = !!param.optional;\n selector = param.selector;\n }\n\n const store = useRuntime({ optional });\n if (!store) return null;\n\n // it is ok to call useRuntimeStateInternal conditionally because it will never become null if its available\n return useRuntimeStateInternal(store, selector);\n }\n\n return useStoreHook;\n}\n"],"mappings":";;AAKA,SAAgBE,0BACdC,YAGA;CA8CA,SAASI,aACPI,OAM2B;EAC3B,IAAIN,WAAW;EACf,IAAIG;EAEJ,IAAI,OAAOG,UAAU,YACnBH,WAAWG;OACN,IAAIA,OAAO;GAChBN,WAAW,CAAC,CAACM,MAAMN;GACnBG,WAAWG,MAAMH;EACnB;EAEA,MAAMI,QAAQT,WAAW,EAAEE,SAAS,CAAC;EACrC,IAAI,CAACO,OAAO,OAAO;EAGnB,OAAOX,wBAAwBW,OAAOJ,QAAQ;CAChD;CAEA,OAAOD;AACT"}
|