@assistant-ui/react 0.15.23 → 0.15.25
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/README.md +44 -23
- package/dist/assistant-transport.js.map +1 -1
- package/dist/cloud-renderer/CloudRendererHost.js.map +1 -1
- package/dist/context/providers/MessageProvider.js.map +1 -1
- package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
- package/dist/hooks/useToolCallElapsed.d.ts +3 -1
- package/dist/hooks/useToolCallElapsed.d.ts.map +1 -1
- package/dist/hooks/useToolCallElapsed.js +7 -8
- package/dist/hooks/useToolCallElapsed.js.map +1 -1
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/mcp-apps/app-frame.js.map +1 -1
- package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.d.ts +1 -0
- package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +31 -12
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
- package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
- package/dist/primitives/actionBarMore/scope.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
- package/dist/primitives/assistantModal/popoverRenderPrimitives.js.map +1 -1
- package/dist/primitives/assistantModal/scope.js.map +1 -1
- package/dist/primitives/attachment/AttachmentName.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.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.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +4 -3
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -1
- package/dist/primitives/composer/ComposerQuote.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts +11 -11
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.js +62 -60
- package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts +8 -8
- package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js +6 -6
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +3 -3
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts +9 -9
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js +7 -7
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +5 -5
- package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +8 -8
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +8 -8
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
- package/dist/primitives/composer/trigger/index.d.ts +1 -1
- package/dist/primitives/composer/trigger/index.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
- package/dist/primitives/composer/useComposerInputState.js.map +1 -1
- package/dist/primitives/composer.d.ts +20 -1
- package/dist/primitives/composer.d.ts.map +1 -1
- package/dist/primitives/composer.js +8 -1
- package/dist/primitives/composer.js.map +1 -1
- package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -1
- package/dist/primitives/error/ErrorMessage.js.map +1 -1
- package/dist/primitives/error/ErrorRoot.js.map +1 -1
- package/dist/primitives/message/MessageIf.js.map +1 -1
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +42 -17
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
- package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
- package/dist/primitives/thread/ThreadIf.js.map +1 -1
- package/dist/primitives/thread/ThreadLoadEarlier.d.ts +19 -0
- package/dist/primitives/thread/ThreadLoadEarlier.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadLoadEarlier.js +36 -0
- package/dist/primitives/thread/ThreadLoadEarlier.js.map +1 -0
- package/dist/primitives/thread/ThreadMessages.d.ts +1 -1
- package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadMessages.js +2 -2
- package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadRoot.js +2 -0
- package/dist/primitives/thread/ThreadRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +111 -2
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/thread.d.ts +2 -0
- package/dist/primitives/thread.d.ts.map +1 -1
- package/dist/primitives/thread.js +5 -2
- package/dist/primitives/thread.js.map +1 -1
- package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.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.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
- package/dist/primitives/threadListItemMore/scope.js.map +1 -1
- package/dist/sandbox-host/SandboxHost.d.ts.map +1 -1
- package/dist/sandbox-host/SandboxHost.js +6 -1
- package/dist/sandbox-host/SandboxHost.js.map +1 -1
- package/dist/unstable/useMessageStallDetection.d.ts.map +1 -1
- package/dist/unstable/useMessageStallDetection.js +10 -6
- package/dist/unstable/useMessageStallDetection.js.map +1 -1
- package/dist/unstable/useModelContextSnapshot.js.map +1 -1
- package/dist/unstable/webmcp/WebMcpRegistrationResource.js.map +1 -1
- package/dist/unstable/webmcp/useWebMcpProvider.js.map +1 -1
- package/dist/utils/Primitive.js.map +1 -1
- package/dist/utils/createActionButton.js.map +1 -1
- package/dist/utils/hooks/useManagedRef.js.map +1 -1
- package/dist/utils/hooks/useMediaQuery.js.map +1 -1
- package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
- package/dist/utils/hooks/useSizeHandle.js.map +1 -1
- package/dist/utils/isCompositionKey.d.ts +2 -0
- package/dist/utils/isCompositionKey.d.ts.map +1 -0
- package/dist/utils/isCompositionKey.js +6 -0
- package/dist/utils/isCompositionKey.js.map +1 -0
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/useSmooth.js +6 -6
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/package.json +12 -11
- package/src/hooks/useToolCallElapsed.test.tsx +35 -0
- package/src/hooks/useToolCallElapsed.ts +9 -7
- package/src/index.ts +28 -3
- package/src/model-context/makeAssistantVisible.test.tsx +315 -5
- package/src/model-context/makeAssistantVisible.tsx +43 -7
- package/src/primitives/composer/ComposerInput.test.tsx +33 -1
- package/src/primitives/composer/ComposerInput.tsx +4 -3
- package/src/primitives/composer/trigger/TriggerPopover.tsx +11 -11
- package/src/primitives/composer/trigger/TriggerPopoverAction.tsx +10 -13
- package/src/primitives/composer/trigger/TriggerPopoverCategories.tsx +2 -2
- package/src/primitives/composer/trigger/TriggerPopoverDirective.tsx +11 -14
- package/src/primitives/composer/trigger/TriggerPopoverExports.test.ts +61 -0
- package/src/primitives/composer/trigger/TriggerPopoverItems.tsx +3 -3
- package/src/primitives/composer/trigger/TriggerPopoverRootContext.tsx +8 -8
- package/src/primitives/composer.ts +21 -1
- package/src/primitives/message/MessagePartsGrouped.test.tsx +271 -1
- package/src/primitives/message/MessagePartsGrouped.tsx +14 -6
- package/src/primitives/message/MessageRoot.test.tsx +125 -2
- package/src/primitives/thread/ThreadLoadEarlier.tsx +35 -0
- package/src/primitives/thread/ThreadMessages.tsx +1 -0
- package/src/primitives/thread/ThreadRoot.test.tsx +33 -0
- package/src/primitives/thread/ThreadRoot.tsx +3 -0
- package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +256 -5
- package/src/primitives/thread/useThreadViewportAutoScroll.ts +147 -1
- package/src/primitives/thread.ts +2 -0
- package/src/sandbox-host/SandboxHost.test.tsx +34 -0
- package/src/sandbox-host/SandboxHost.tsx +8 -4
- package/src/tests/toolCallTiming.test.tsx +19 -2
- package/src/unstable/useMessageStallDetection.test.tsx +40 -0
- package/src/unstable/useMessageStallDetection.ts +10 -6
- package/src/utils/isCompositionKey.ts +5 -0
- package/src/utils/smooth/useSmooth.test.tsx +16 -5
- package/src/utils/smooth/useSmooth.ts +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerSelectionResource.js","names":["useEffectEvent","useRef","resource","Unstable_DirectiveFormatter","Unstable_TriggerItem","AssistantClient","DetectedTrigger","SelectItemOverride","item","TriggerBehavior","kind","formatter","onInserted","onExecute","removeOnExecute","TriggerSelectionResourceOutput","selectItem","close","registerSelectItemOverride","fn","useTriggerSelectionResource","t0","$","_c","behavior","trigger","aui","setCursorPosition","onSelected","selectItemOverrideRef","t1","Symbol","for","current","t2","currentText","composer","getState","text","before","slice","offset","after","endOffset","insertDirective","directive","serialize","setText","startsWith","length","t3","t4","TriggerSelectionResource"],"sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"sourcesContent":["import { useEffectEvent, useRef } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type {\n Unstable_DirectiveFormatter,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport type { DetectedTrigger } from \"./triggerDetectionResource\";\n\n/** External override for selection (used by Lexical's DirectivePlugin). */\nexport type SelectItemOverride = (item: Unstable_TriggerItem) => 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 if (selectItemOverrideRef.current?.(item)) {\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 );\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 );\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":";;;;;AAmCA,MAAMoB,+BAA8BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,UAAAC,SAAAC,KAAAC,mBAAAC,eAAAP;CAiBnC,MAAAQ,wBAA8B5B,OAAkC,IAAI;CAAE,IAAA6B;CAAA,IAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,GAAA;EAGpEF,MAAAX,OAAA;GACEU,sBAAqBI,UAAWd;GAAH,aACtB;IACL,IAAIU,sBAAqBI,YAAad,IACpCU,sBAAqBI,UAAW;GACjC;EACF;EACFX,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CARH,MAAAJ,6BAAmClB,eACjC8B,EAQF;CAAE,IAAAI;CAAA,IAAAZ,EAAA,OAAAI,OAAAJ,EAAA,OAAAE,YAAAF,EAAA,OAAAM,cAAAN,EAAA,OAAAK,qBAAAL,EAAA,OAAAG,SAAA;EAEgCS,MAAA1B,SAAA;GAChC,IAAI,CAACiB,WAAD,CAAaD,UAAQ;GAEzB,IAAIK,sBAAqBI,UAAWzB,IAAI,GAAC;IACvCoB,WAAW;IAAC;GAAA;GAId,MAAAO,cAAoBT,IAAGU,SAASC,SAAU,CAAC,CAAAC;GAC3C,MAAAC,SAAeJ,YAAWK,MAAO,GAAGf,QAAOgB,MAAO;GAClD,MAAAC,QAAcP,YAAWK,MAAOf,QAAOkB,SAAU;GAEjD,MAAAC,wBAAwB;IACtB,MAAAC,YAAkBrB,SAAQb,UAAUmC,UAAWtC,IAAI;IACnDkB,IAAGU,SAASW,QACVR,SAASM,aAAaH,MAAKM,WAAY,GAAyB,IAA1CN,QAAA,IAAoCA,QAC5D;IACAf,kBAAkBY,OAAMU,SAAUJ,UAASI,SAAU,CAAC;GAAC;GAGzD,IAAIzB,SAAQd,SAAU,aAAW;IAC/BkC,gBAAgB;IAChBpB,SAAQZ,aAAcJ,IAAI;GAAC,OAAA;IAE3B,IAAIgB,SAAQV,iBAAgB;KAC1BY,IAAGU,SAASW,QACVR,UAAUG,MAAKM,WAAY,GAA4B,IAArBN,MAAKF,MAAO,CAAS,IAA7CE,MACZ;KACAf,kBAAkBY,OAAMU,MAAO;IAAC,OAGhCL,gBAAgB;IAElBpB,SAAQX,UAAWL,IAAI;GAAC;GAG1BoB,WAAW;EAAC;EACbN,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAM;EAAAN,EAAA,KAAAK;EAAAL,EAAA,KAAAG;EAAAH,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CArCD,MAAAN,aAAmBhB,eAAekC,EAqCjC;CAAE,IAAAgB;CAAA,IAAA5B,EAAA,OAAAM,cAAAN,EAAA,OAAAK,qBAAAL,EAAA,OAAAG,SAAA;EAE0ByB,WAAA;GAC3BtB,WAAW;GAEX,IAAIH,SACFE,kBAAkBF,QAAOgB,MAAO;EACjC;EACFnB,EAAA,KAAAM;EAAAN,EAAA,KAAAK;EAAAL,EAAA,KAAAG;EAAAH,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAND,MAAAL,QAAcjB,eAAekD,EAM5B;CAAE,IAAAC;CAAA,IAAA7B,EAAA,QAAAL,SAAAK,EAAA,QAAAJ,8BAAAI,EAAA,QAAAN,YAAA;EAEImC,KAAA;GAAAnC;GAAAC;GAAAC;EAIP;EAACI,EAAA,MAAAL;EAAAK,EAAA,MAAAJ;EAAAI,EAAA,MAAAN;EAAAM,EAAA,MAAA6B;CAAA,OAAAA,KAAA7B,EAAA;CAAA,OAJM6B;AAIN;AAGH,MAAaC,2BAA2BlD,SAASkB,2BAA2B"}
|
|
1
|
+
{"version":3,"file":"triggerSelectionResource.js","names":["useEffectEvent","useRef","resource","Unstable_DirectiveFormatter","Unstable_TriggerItem","AssistantClient","DetectedTrigger","SelectItemOverride","item","TriggerBehavior","kind","formatter","onInserted","onExecute","removeOnExecute","TriggerSelectionResourceOutput","selectItem","close","registerSelectItemOverride","fn","useTriggerSelectionResource","t0","$","_c","behavior","trigger","aui","setCursorPosition","onSelected","selectItemOverrideRef","t1","Symbol","for","current","t2","currentText","composer","getState","text","before","slice","offset","after","endOffset","insertDirective","directive","serialize","setText","startsWith","length","t3","t4","TriggerSelectionResource","_c"],"sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"sourcesContent":["import { useEffectEvent, useRef } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type {\n Unstable_DirectiveFormatter,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport type { DetectedTrigger } from \"./triggerDetectionResource\";\n\n/** External override for selection (used by Lexical's DirectivePlugin). */\nexport type SelectItemOverride = (item: Unstable_TriggerItem) => 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 if (selectItemOverrideRef.current?.(item)) {\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 );\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 );\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":";;;;;AAmCA,MAAMoB,+BAA8BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,UAAAC,SAAAC,KAAAC,mBAAAC,eAAAP;CAiBnC,MAAAQ,wBAA8B5B,OAAkC,IAAI;CAAE,IAAA6B;CAAA,IAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,GAAA;EAGpEF,MAAAX,OAAA;GACEU,sBAAqBI,UAAWd;GAAH,aACtB;IACL,IAAIU,sBAAqBI,YAAad,IACpCU,sBAAqBI,UAAW;GACjC;EACF;EACFX,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CARH,MAAAJ,6BAAmClB,eACjC8B,EAQF;CAAE,IAAAI;CAAA,IAAAZ,EAAA,OAAAI,OAAAJ,EAAA,OAAAE,YAAAF,EAAA,OAAAM,cAAAN,EAAA,OAAAK,qBAAAL,EAAA,OAAAG,SAAA;EAEgCS,MAAA1B,SAAA;GAChC,IAAI,CAACiB,WAAD,CAAaD,UAAQ;GAEzB,IAAIK,sBAAqBI,UAAWzB,IAAI,GAAC;IACvCoB,WAAW;IAAC;GAAA;GAId,MAAAO,cAAoBT,IAAGU,SAASC,SAAU,CAAC,CAAAC;GAC3C,MAAAC,SAAeJ,YAAWK,MAAO,GAAGf,QAAOgB,MAAO;GAClD,MAAAC,QAAcP,YAAWK,MAAOf,QAAOkB,SAAU;GAEjD,MAAAC,wBAAwB;IACtB,MAAAC,YAAkBrB,SAAQb,UAAUmC,UAAWtC,IAAI;IACnDkB,IAAGU,SAASW,QACVR,SAASM,aAAaH,MAAKM,WAAY,GAAyB,IAA1CN,QAAA,IAAoCA,QAC5D;IACAf,kBAAkBY,OAAMU,SAAUJ,UAASI,SAAU,CAAC;GAAC;GAGzD,IAAIzB,SAAQd,SAAU,aAAW;IAC/BkC,gBAAgB;IAChBpB,SAAQZ,aAAcJ,IAAI;GAAC,OAAA;IAE3B,IAAIgB,SAAQV,iBAAgB;KAC1BY,IAAGU,SAASW,QACVR,UAAUG,MAAKM,WAAY,GAA4B,IAArBN,MAAKF,MAAO,CAAS,IAA7CE,MACZ;KACAf,kBAAkBY,OAAMU,MAAO;IAAC,OAGhCL,gBAAgB;IAElBpB,SAAQX,UAAWL,IAAI;GAAC;GAG1BoB,WAAW;EAAC;EACbN,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAM;EAAAN,EAAA,KAAAK;EAAAL,EAAA,KAAAG;EAAAH,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CArCD,MAAAN,aAAmBhB,eAAekC,EAqCjC;CAAE,IAAAgB;CAAA,IAAA5B,EAAA,OAAAM,cAAAN,EAAA,OAAAK,qBAAAL,EAAA,OAAAG,SAAA;EAE0ByB,WAAA;GAC3BtB,WAAW;GAEX,IAAIH,SACFE,kBAAkBF,QAAOgB,MAAO;EACjC;EACFnB,EAAA,KAAAM;EAAAN,EAAA,KAAAK;EAAAL,EAAA,KAAAG;EAAAH,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAND,MAAAL,QAAcjB,eAAekD,EAM5B;CAAE,IAAAC;CAAA,IAAA7B,EAAA,QAAAL,SAAAK,EAAA,QAAAJ,8BAAAI,EAAA,QAAAN,YAAA;EAEImC,KAAA;GAAAnC;GAAAC;GAAAC;EAIP;EAACI,EAAA,MAAAL;EAAAK,EAAA,MAAAJ;EAAAI,EAAA,MAAAN;EAAAM,EAAA,MAAA6B;CAAA,OAAAA,KAAA7B,EAAA;CAAA,OAJM6B;AAIN;AAGH,MAAaC,2BAA2BlD,SAASkB,2BAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComposerInputState.js","names":["c","_c","useAuiState","useTriggerPopoverActiveAriaOptional","TriggerPopoverAriaProps","useComposerInputValue","_temp","s","composer","isEditing","text","useComposerInputDisabled","disabled","composerDisabled","_temp2","Boolean","thread","isDisabled","dictation","inputDisabled","useTriggerPopoverAriaProps","$","activeAria","t0","Symbol","for","highlightedItemId","popoverId"],"sources":["../../../src/primitives/composer/useComposerInputState.ts"],"sourcesContent":["\"use client\";\n\nimport { useAuiState } from \"@assistant-ui/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(disabled?: boolean | undefined) {\n const composerDisabled = useAuiState(\n (s) => s.thread.isDisabled || s.composer.dictation?.inputDisabled,\n );\n return Boolean(composerDisabled) || Boolean(disabled);\n}\n\nexport function useTriggerPopoverAriaProps(): TriggerPopoverAriaProps {\n const activeAria = useTriggerPopoverActiveAriaOptional();\n if (!activeAria) return {};\n\n return {\n \"aria-controls\": activeAria.popoverId,\n \"aria-expanded\": true,\n \"aria-haspopup\": \"listbox\",\n \"aria-activedescendant\": activeAria.highlightedItemId,\n };\n}\n"],"mappings":";;;;;AAYA,SAAOK,wBAAA;CAAA,OACEH,YAAYI,KAAoD;AAAC;AADnE,SAAAA,MAAAC,GAAA;CAAA,OACsBA,EAACC,SAASC,YAAaF,EAACC,SAASE,OAAjC;AAA2C;AAGxE,SAAOC,yBAAAC,UAAA;CACL,MAAAC,mBAAyBX,YACvBY,MACF;CAAE,OACKC,QAAQF,gBAAqC,KAAhBE,QAAQH,QAAQ;AAAC;AAJhD,SAAAE,OAAAP,GAAA;CAAA,OAEIA,EAACS,OAAOC,cAAeV,EAACC,SAASU,WAAyBC;AAAA;AAKrE,SAAOC,6BAAA;CAAA,MAAAC,IAAApB,EAAA,CAAA;CACL,MAAAqB,aAAmBnB,oCAAoC;CACvD,IAAI,CAACmB,YAAU;EAAA,IAAAC;EAAA,IAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;GAASF,KAAA,CAAC;GAACF,EAAA,KAAAE;EAAA,OAAAA,KAAAF,EAAA;EAAA,OAAFE;CAAE;CAAC,IAAAA;CAAA,IAAAF,EAAA,OAAAC,WAAAI,qBAAAL,EAAA,OAAAC,WAAAK,WAAA;EAEpBJ,KAAA;GAAA,iBACYD,WAAUK;GAAU,iBACpB;GAAI,iBACJ;GAAS,yBACDL,WAAUI;EACrC;EAACL,EAAA,KAAAC,WAAAI;EAAAL,EAAA,KAAAC,WAAAK;EAAAN,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAA,OALME;AAKN"}
|
|
1
|
+
{"version":3,"file":"useComposerInputState.js","names":["c","_c","useAuiState","useTriggerPopoverActiveAriaOptional","TriggerPopoverAriaProps","useComposerInputValue","_temp","s","composer","isEditing","text","useComposerInputDisabled","disabled","composerDisabled","_temp2","Boolean","thread","isDisabled","dictation","inputDisabled","useTriggerPopoverAriaProps","$","activeAria","t0","Symbol","for","highlightedItemId","popoverId","_c"],"sources":["../../../src/primitives/composer/useComposerInputState.ts"],"sourcesContent":["\"use client\";\n\nimport { useAuiState } from \"@assistant-ui/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(disabled?: boolean | undefined) {\n const composerDisabled = useAuiState(\n (s) => s.thread.isDisabled || s.composer.dictation?.inputDisabled,\n );\n return Boolean(composerDisabled) || Boolean(disabled);\n}\n\nexport function useTriggerPopoverAriaProps(): TriggerPopoverAriaProps {\n const activeAria = useTriggerPopoverActiveAriaOptional();\n if (!activeAria) return {};\n\n return {\n \"aria-controls\": activeAria.popoverId,\n \"aria-expanded\": true,\n \"aria-haspopup\": \"listbox\",\n \"aria-activedescendant\": activeAria.highlightedItemId,\n };\n}\n"],"mappings":";;;;;AAYA,SAAOK,wBAAA;CAAA,OACEH,YAAYI,KAAoD;AAAC;AADnE,SAAAA,MAAAC,GAAA;CAAA,OACsBA,EAACC,SAASC,YAAaF,EAACC,SAASE,OAAjC;AAA2C;AAGxE,SAAOC,yBAAAC,UAAA;CACL,MAAAC,mBAAyBX,YACvBY,MACF;CAAE,OACKC,QAAQF,gBAAqC,KAAhBE,QAAQH,QAAQ;AAAC;AAJhD,SAAAE,OAAAP,GAAA;CAAA,OAEIA,EAACS,OAAOC,cAAeV,EAACC,SAASU,WAAyBC;AAAA;AAKrE,SAAOC,6BAAA;CAAA,MAAAC,IAAApB,EAAA,CAAA;CACL,MAAAqB,aAAmBnB,oCAAoC;CACvD,IAAI,CAACmB,YAAU;EAAA,IAAAC;EAAA,IAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;GAASF,KAAA,CAAC;GAACF,EAAA,KAAAE;EAAA,OAAAA,KAAAF,EAAA;EAAA,OAAFE;CAAE;CAAC,IAAAA;CAAA,IAAAF,EAAA,OAAAC,WAAAI,qBAAAL,EAAA,OAAAC,WAAAK,WAAA;EAEpBJ,KAAA;GAAA,iBACYD,WAAUK;GAAU,iBACpB;GAAI,iBACJ;GAAS,yBACDL,WAAUI;EACrC;EAACL,EAAA,KAAAC,WAAAI;EAAAL,EAAA,KAAAC,WAAAK;EAAAN,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAA,OALME;AAKN"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TriggerMatch, TriggerMatcher } from "./composer/trigger/index.js";
|
|
1
2
|
export { ComposerPrimitiveRoot as Root } from "./composer/ComposerRoot.js";
|
|
2
3
|
export { ComposerPrimitiveInput as Input } from "./composer/ComposerInput.js";
|
|
3
4
|
export { ComposerPrimitiveSend as Send } from "./composer/ComposerSend.js";
|
|
@@ -14,12 +15,26 @@ export { ComposerPrimitiveQuote as Quote } from "./composer/ComposerQuote.js";
|
|
|
14
15
|
export { ComposerPrimitiveQuoteText as QuoteText } from "./composer/ComposerQuote.js";
|
|
15
16
|
export { ComposerPrimitiveQuoteDismiss as QuoteDismiss } from "./composer/ComposerQuote.js";
|
|
16
17
|
export { ComposerPrimitiveQueue as Queue } from "./composer/ComposerQueue.js";
|
|
18
|
+
export { ComposerPrimitiveTriggerPopover as TriggerPopover } from "./composer/trigger/index.js";
|
|
19
|
+
/** @deprecated Use `ComposerPrimitive.TriggerPopover` instead. */
|
|
17
20
|
export { ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover } from "./composer/trigger/index.js";
|
|
21
|
+
export { ComposerPrimitiveTriggerPopoverRoot as TriggerPopoverRoot } from "./composer/trigger/index.js";
|
|
22
|
+
/** @deprecated Use `ComposerPrimitive.TriggerPopoverRoot` instead. */
|
|
18
23
|
export { ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot } from "./composer/trigger/index.js";
|
|
24
|
+
export { ComposerPrimitiveTriggerPopoverCategories as TriggerPopoverCategories } from "./composer/trigger/index.js";
|
|
25
|
+
/** @deprecated Use `ComposerPrimitive.TriggerPopoverCategories` instead. */
|
|
19
26
|
export { ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories } from "./composer/trigger/index.js";
|
|
27
|
+
export { ComposerPrimitiveTriggerPopoverCategoryItem as TriggerPopoverCategoryItem } from "./composer/trigger/index.js";
|
|
28
|
+
/** @deprecated Use `ComposerPrimitive.TriggerPopoverCategoryItem` instead. */
|
|
20
29
|
export { ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem } from "./composer/trigger/index.js";
|
|
30
|
+
export { ComposerPrimitiveTriggerPopoverItems as TriggerPopoverItems } from "./composer/trigger/index.js";
|
|
31
|
+
/** @deprecated Use `ComposerPrimitive.TriggerPopoverItems` instead. */
|
|
21
32
|
export { ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems } from "./composer/trigger/index.js";
|
|
33
|
+
export { ComposerPrimitiveTriggerPopoverItem as TriggerPopoverItem } from "./composer/trigger/index.js";
|
|
34
|
+
/** @deprecated Use `ComposerPrimitive.TriggerPopoverItem` instead. */
|
|
22
35
|
export { ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem } from "./composer/trigger/index.js";
|
|
36
|
+
export { ComposerPrimitiveTriggerPopoverBack as TriggerPopoverBack } from "./composer/trigger/index.js";
|
|
37
|
+
/** @deprecated Use `ComposerPrimitive.TriggerPopoverBack` instead. */
|
|
23
38
|
export { ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack } from "./composer/trigger/index.js";
|
|
24
39
|
export { useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext } from "./composer/trigger/index.js";
|
|
25
40
|
export { useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional } from "./composer/trigger/index.js";
|
|
@@ -28,5 +43,9 @@ export { useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScop
|
|
|
28
43
|
export { useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers } from "./composer/trigger/index.js";
|
|
29
44
|
export { useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional } from "./composer/trigger/index.js";
|
|
30
45
|
export type { RegisteredTrigger as Unstable_RegisteredTrigger } from "./composer/trigger/index.js";
|
|
31
|
-
export type { TriggerMatcher
|
|
46
|
+
export type { TriggerMatch, TriggerMatcher } from "./composer/trigger/index.js";
|
|
47
|
+
/** @deprecated Use `TriggerMatcher` instead. */
|
|
48
|
+
export type Unstable_TriggerMatcher = TriggerMatcher;
|
|
49
|
+
/** @deprecated Use `TriggerMatch` instead. */
|
|
50
|
+
export type Unstable_TriggerMatch = TriggerMatch;
|
|
32
51
|
//# sourceMappingURL=composer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,uBAAuB,IAAI,MAAM,EAAE,qCAAkC;AAC9E,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,4BAA4B,IAAI,WAAW,EAAE,0CAAuC;AAC7F,OAAO,EAAE,kCAAkC,IAAI,iBAAiB,EAAE,0CAAuC;AACzG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,iDAA8C;AAClH,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AACjF,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,oCAAoC,IAAI,mBAAmB,EAAE,kDAA+C;AACrH,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,iCAA8B;AAClE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,0BAA0B,IAAI,SAAS,EAAE,oCAAiC;AACnF,OAAO,EAAE,6BAA6B,IAAI,YAAY,EAAE,oCAAiC;AACzF,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAE3E,OAAO,EAAE,+BAA+B,IAAI,uBAAuB,EAAE,oCAA2B;AAChG,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,yCAAyC,IAAI,iCAAiC,EAAE,oCAA2B;AACpH,OAAO,EAAE,2CAA2C,IAAI,mCAAmC,EAAE,oCAA2B;AACxH,OAAO,EAAE,oCAAoC,IAAI,4BAA4B,EAAE,oCAA2B;AAC1G,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,4BAA4B,IAAI,qCAAqC,EAAE,oCAA2B;AAC3G,OAAO,EAAE,oCAAoC,IAAI,6CAA6C,EAAE,oCAA2B;AAC3H,OAAO,EAAE,6BAA6B,IAAI,sCAAsC,EAAE,oCAA2B;AAC7G,OAAO,EAAE,qCAAqC,IAAI,8CAA8C,EAAE,oCAA2B;AAC7H,OAAO,EAAE,yBAAyB,IAAI,kCAAkC,EAAE,oCAA2B;AACrG,OAAO,EAAE,iCAAiC,IAAI,0CAA0C,EAAE,oCAA2B;AACrH,YAAY,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,oCAA2B;AAC1F,YAAY,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,oCAA2B;AAEvE,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,uBAAuB,IAAI,MAAM,EAAE,qCAAkC;AAC9E,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,4BAA4B,IAAI,WAAW,EAAE,0CAAuC;AAC7F,OAAO,EAAE,kCAAkC,IAAI,iBAAiB,EAAE,0CAAuC;AACzG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,iDAA8C;AAClH,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AACjF,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,oCAAoC,IAAI,mBAAmB,EAAE,kDAA+C;AACrH,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,iCAA8B;AAClE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,0BAA0B,IAAI,SAAS,EAAE,oCAAiC;AACnF,OAAO,EAAE,6BAA6B,IAAI,YAAY,EAAE,oCAAiC;AACzF,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAE3E,OAAO,EAAE,+BAA+B,IAAI,cAAc,EAAE,oCAA2B;AACvF,kEAAkE;AAClE,OAAO,EAAE,+BAA+B,IAAI,uBAAuB,EAAE,oCAA2B;AAChG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,oCAA2B;AAC/F,sEAAsE;AACtE,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,yCAAyC,IAAI,wBAAwB,EAAE,oCAA2B;AAC3G,4EAA4E;AAC5E,OAAO,EAAE,yCAAyC,IAAI,iCAAiC,EAAE,oCAA2B;AACpH,OAAO,EAAE,2CAA2C,IAAI,0BAA0B,EAAE,oCAA2B;AAC/G,8EAA8E;AAC9E,OAAO,EAAE,2CAA2C,IAAI,mCAAmC,EAAE,oCAA2B;AACxH,OAAO,EAAE,oCAAoC,IAAI,mBAAmB,EAAE,oCAA2B;AACjG,uEAAuE;AACvE,OAAO,EAAE,oCAAoC,IAAI,4BAA4B,EAAE,oCAA2B;AAC1G,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,oCAA2B;AAC/F,sEAAsE;AACtE,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,oCAA2B;AAC/F,sEAAsE;AACtE,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,4BAA4B,IAAI,qCAAqC,EAAE,oCAA2B;AAC3G,OAAO,EAAE,oCAAoC,IAAI,6CAA6C,EAAE,oCAA2B;AAC3H,OAAO,EAAE,6BAA6B,IAAI,sCAAsC,EAAE,oCAA2B;AAC7G,OAAO,EAAE,qCAAqC,IAAI,8CAA8C,EAAE,oCAA2B;AAC7H,OAAO,EAAE,yBAAyB,IAAI,kCAAkC,EAAE,oCAA2B;AACrG,OAAO,EAAE,iCAAiC,IAAI,0CAA0C,EAAE,oCAA2B;AACrH,YAAY,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,oCAA2B;AAC1F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,oCAA2B;AACvE,gDAAgD;AAChD,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC;AACrD,8CAA8C;AAC9C,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC"}
|
|
@@ -36,6 +36,13 @@ var composer_exports = /* @__PURE__ */ __exportAll({
|
|
|
36
36
|
Root: () => ComposerPrimitiveRoot,
|
|
37
37
|
Send: () => ComposerPrimitiveSend,
|
|
38
38
|
StopDictation: () => ComposerPrimitiveStopDictation,
|
|
39
|
+
TriggerPopover: () => ComposerPrimitiveTriggerPopover,
|
|
40
|
+
TriggerPopoverBack: () => ComposerPrimitiveTriggerPopoverBack,
|
|
41
|
+
TriggerPopoverCategories: () => ComposerPrimitiveTriggerPopoverCategories,
|
|
42
|
+
TriggerPopoverCategoryItem: () => ComposerPrimitiveTriggerPopoverCategoryItem,
|
|
43
|
+
TriggerPopoverItem: () => ComposerPrimitiveTriggerPopoverItem,
|
|
44
|
+
TriggerPopoverItems: () => ComposerPrimitiveTriggerPopoverItems,
|
|
45
|
+
TriggerPopoverRoot: () => ComposerPrimitiveTriggerPopoverRoot,
|
|
39
46
|
Unstable_TriggerPopover: () => ComposerPrimitiveTriggerPopover,
|
|
40
47
|
Unstable_TriggerPopoverBack: () => ComposerPrimitiveTriggerPopoverBack,
|
|
41
48
|
Unstable_TriggerPopoverCategories: () => ComposerPrimitiveTriggerPopoverCategories,
|
|
@@ -51,6 +58,6 @@ var composer_exports = /* @__PURE__ */ __exportAll({
|
|
|
51
58
|
unstable_useTriggerPopoverTriggersOptional: () => useTriggerPopoverTriggersOptional
|
|
52
59
|
});
|
|
53
60
|
//#endregion
|
|
54
|
-
export { ComposerPrimitiveAddAttachment as AddAttachment, ComposerPrimitiveAttachmentByIndex as AttachmentByIndex, ComposerPrimitiveAttachmentDropzone as AttachmentDropzone, ComposerPrimitiveAttachments as Attachments, ComposerPrimitiveCancel as Cancel, ComposerPrimitiveDictate as Dictate, ComposerPrimitiveDictationTranscript as DictationTranscript, ComposerPrimitiveIf as If, ComposerPrimitiveInput as Input, ComposerPrimitiveQueue as Queue, ComposerPrimitiveQuote as Quote, ComposerPrimitiveQuoteDismiss as QuoteDismiss, ComposerPrimitiveQuoteText as QuoteText, ComposerPrimitiveRoot as Root, ComposerPrimitiveSend as Send, ComposerPrimitiveStopDictation as StopDictation, ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover, ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot, composer_exports, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional };
|
|
61
|
+
export { ComposerPrimitiveAddAttachment as AddAttachment, ComposerPrimitiveAttachmentByIndex as AttachmentByIndex, ComposerPrimitiveAttachmentDropzone as AttachmentDropzone, ComposerPrimitiveAttachments as Attachments, ComposerPrimitiveCancel as Cancel, ComposerPrimitiveDictate as Dictate, ComposerPrimitiveDictationTranscript as DictationTranscript, ComposerPrimitiveIf as If, ComposerPrimitiveInput as Input, ComposerPrimitiveQueue as Queue, ComposerPrimitiveQuote as Quote, ComposerPrimitiveQuoteDismiss as QuoteDismiss, ComposerPrimitiveQuoteText as QuoteText, ComposerPrimitiveRoot as Root, ComposerPrimitiveSend as Send, ComposerPrimitiveStopDictation as StopDictation, ComposerPrimitiveTriggerPopover as TriggerPopover, ComposerPrimitiveTriggerPopoverBack as TriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories as TriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem as TriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem as TriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems as TriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot as TriggerPopoverRoot, ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover, ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot, composer_exports, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional };
|
|
55
62
|
|
|
56
63
|
//# sourceMappingURL=composer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.js","names":["ComposerPrimitiveRoot","Root","ComposerPrimitiveInput","Input","ComposerPrimitiveSend","Send","ComposerPrimitiveCancel","Cancel","ComposerPrimitiveAddAttachment","AddAttachment","ComposerPrimitiveAttachments","Attachments","ComposerPrimitiveAttachmentByIndex","AttachmentByIndex","ComposerPrimitiveAttachmentDropzone","AttachmentDropzone","ComposerPrimitiveDictate","Dictate","ComposerPrimitiveStopDictation","StopDictation","ComposerPrimitiveDictationTranscript","DictationTranscript","ComposerPrimitiveIf","If","ComposerPrimitiveQuote","Quote","ComposerPrimitiveQuoteText","QuoteText","ComposerPrimitiveQuoteDismiss","QuoteDismiss","ComposerPrimitiveQueue","Queue","ComposerPrimitiveTriggerPopover","Unstable_TriggerPopover","ComposerPrimitiveTriggerPopoverRoot","Unstable_TriggerPopoverRoot","ComposerPrimitiveTriggerPopoverCategories","Unstable_TriggerPopoverCategories","ComposerPrimitiveTriggerPopoverCategoryItem","Unstable_TriggerPopoverCategoryItem","ComposerPrimitiveTriggerPopoverItems","Unstable_TriggerPopoverItems","ComposerPrimitiveTriggerPopoverItem","Unstable_TriggerPopoverItem","ComposerPrimitiveTriggerPopoverBack","Unstable_TriggerPopoverBack","useTriggerPopoverRootContext","unstable_useTriggerPopoverRootContext","useTriggerPopoverRootContextOptional","unstable_useTriggerPopoverRootContextOptional","useTriggerPopoverScopeContext","unstable_useTriggerPopoverScopeContext","useTriggerPopoverScopeContextOptional","unstable_useTriggerPopoverScopeContextOptional","useTriggerPopoverTriggers","unstable_useTriggerPopoverTriggers","useTriggerPopoverTriggersOptional","unstable_useTriggerPopoverTriggersOptional","RegisteredTrigger","Unstable_RegisteredTrigger","
|
|
1
|
+
{"version":3,"file":"composer.js","names":["TriggerMatch","TriggerMatcher","ComposerPrimitiveRoot","Root","ComposerPrimitiveInput","Input","ComposerPrimitiveSend","Send","ComposerPrimitiveCancel","Cancel","ComposerPrimitiveAddAttachment","AddAttachment","ComposerPrimitiveAttachments","Attachments","ComposerPrimitiveAttachmentByIndex","AttachmentByIndex","ComposerPrimitiveAttachmentDropzone","AttachmentDropzone","ComposerPrimitiveDictate","Dictate","ComposerPrimitiveStopDictation","StopDictation","ComposerPrimitiveDictationTranscript","DictationTranscript","ComposerPrimitiveIf","If","ComposerPrimitiveQuote","Quote","ComposerPrimitiveQuoteText","QuoteText","ComposerPrimitiveQuoteDismiss","QuoteDismiss","ComposerPrimitiveQueue","Queue","ComposerPrimitiveTriggerPopover","TriggerPopover","Unstable_TriggerPopover","ComposerPrimitiveTriggerPopoverRoot","TriggerPopoverRoot","Unstable_TriggerPopoverRoot","ComposerPrimitiveTriggerPopoverCategories","TriggerPopoverCategories","Unstable_TriggerPopoverCategories","ComposerPrimitiveTriggerPopoverCategoryItem","TriggerPopoverCategoryItem","Unstable_TriggerPopoverCategoryItem","ComposerPrimitiveTriggerPopoverItems","TriggerPopoverItems","Unstable_TriggerPopoverItems","ComposerPrimitiveTriggerPopoverItem","TriggerPopoverItem","Unstable_TriggerPopoverItem","ComposerPrimitiveTriggerPopoverBack","TriggerPopoverBack","Unstable_TriggerPopoverBack","useTriggerPopoverRootContext","unstable_useTriggerPopoverRootContext","useTriggerPopoverRootContextOptional","unstable_useTriggerPopoverRootContextOptional","useTriggerPopoverScopeContext","unstable_useTriggerPopoverScopeContext","useTriggerPopoverScopeContextOptional","unstable_useTriggerPopoverScopeContextOptional","useTriggerPopoverTriggers","unstable_useTriggerPopoverTriggers","useTriggerPopoverTriggersOptional","unstable_useTriggerPopoverTriggersOptional","RegisteredTrigger","Unstable_RegisteredTrigger","Unstable_TriggerMatcher","Unstable_TriggerMatch"],"sources":["../../src/primitives/composer.ts"],"sourcesContent":["import type { TriggerMatch, TriggerMatcher } from \"./composer/trigger\";\n\nexport { ComposerPrimitiveRoot as Root } from \"./composer/ComposerRoot\";\nexport { ComposerPrimitiveInput as Input } from \"./composer/ComposerInput\";\nexport { ComposerPrimitiveSend as Send } from \"./composer/ComposerSend\";\nexport { ComposerPrimitiveCancel as Cancel } from \"./composer/ComposerCancel\";\nexport { ComposerPrimitiveAddAttachment as AddAttachment } from \"./composer/ComposerAddAttachment\";\nexport { ComposerPrimitiveAttachments as Attachments } from \"./composer/ComposerAttachments\";\nexport { ComposerPrimitiveAttachmentByIndex as AttachmentByIndex } from \"./composer/ComposerAttachments\";\nexport { ComposerPrimitiveAttachmentDropzone as AttachmentDropzone } from \"./composer/ComposerAttachmentDropzone\";\nexport { ComposerPrimitiveDictate as Dictate } from \"./composer/ComposerDictate\";\nexport { ComposerPrimitiveStopDictation as StopDictation } from \"./composer/ComposerStopDictation\";\nexport { ComposerPrimitiveDictationTranscript as DictationTranscript } from \"./composer/ComposerDictationTranscript\";\nexport { ComposerPrimitiveIf as If } from \"./composer/ComposerIf\";\nexport { ComposerPrimitiveQuote as Quote } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQuoteText as QuoteText } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQuoteDismiss as QuoteDismiss } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQueue as Queue } from \"./composer/ComposerQueue\";\n\nexport { ComposerPrimitiveTriggerPopover as TriggerPopover } from \"./composer/trigger\";\n/** @deprecated Use `ComposerPrimitive.TriggerPopover` instead. */\nexport { ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover } from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverRoot as TriggerPopoverRoot } from \"./composer/trigger\";\n/** @deprecated Use `ComposerPrimitive.TriggerPopoverRoot` instead. */\nexport { ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot } from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverCategories as TriggerPopoverCategories } from \"./composer/trigger\";\n/** @deprecated Use `ComposerPrimitive.TriggerPopoverCategories` instead. */\nexport { ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories } from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverCategoryItem as TriggerPopoverCategoryItem } from \"./composer/trigger\";\n/** @deprecated Use `ComposerPrimitive.TriggerPopoverCategoryItem` instead. */\nexport { ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem } from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverItems as TriggerPopoverItems } from \"./composer/trigger\";\n/** @deprecated Use `ComposerPrimitive.TriggerPopoverItems` instead. */\nexport { ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems } from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverItem as TriggerPopoverItem } from \"./composer/trigger\";\n/** @deprecated Use `ComposerPrimitive.TriggerPopoverItem` instead. */\nexport { ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem } from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverBack as TriggerPopoverBack } from \"./composer/trigger\";\n/** @deprecated Use `ComposerPrimitive.TriggerPopoverBack` instead. */\nexport { ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack } from \"./composer/trigger\";\nexport { useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext } from \"./composer/trigger\";\nexport { useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional } from \"./composer/trigger\";\nexport { useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext } from \"./composer/trigger\";\nexport { useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional } from \"./composer/trigger\";\nexport { useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers } from \"./composer/trigger\";\nexport { useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional } from \"./composer/trigger\";\nexport type { RegisteredTrigger as Unstable_RegisteredTrigger } from \"./composer/trigger\";\nexport type { TriggerMatch, TriggerMatcher } from \"./composer/trigger\";\n/** @deprecated Use `TriggerMatcher` instead. */\nexport type Unstable_TriggerMatcher = TriggerMatcher;\n/** @deprecated Use `TriggerMatch` instead. */\nexport type Unstable_TriggerMatch = TriggerMatch;\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdownMenuRenderPrimitives.js","names":["DropdownMenu","DropdownMenuPrimitive","withRenderProp","DropdownMenuRenderTrigger","Trigger","DropdownMenuRenderContent","Content","DropdownMenuRenderItem","Item","DropdownMenuRenderSeparator","Separator"],"sources":["../../src/primitives/dropdownMenuRenderPrimitives.ts"],"sourcesContent":["import { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport { withRenderProp } from \"../utils/Primitive\";\n\nexport const DropdownMenuRenderTrigger = withRenderProp(\n DropdownMenuPrimitive.Trigger,\n);\nexport const DropdownMenuRenderContent = withRenderProp(\n DropdownMenuPrimitive.Content,\n);\nexport const DropdownMenuRenderItem = withRenderProp(\n DropdownMenuPrimitive.Item,\n);\nexport const DropdownMenuRenderSeparator = withRenderProp(\n DropdownMenuPrimitive.Separator,\n);\n"],"mappings":";;;AAGA,MAAaG,4BAA4BD,eACvCD,aAAsBG,OACxB;AACA,MAAaC,4BAA4BH,eACvCD,aAAsBK,OACxB;AACA,MAAaC,yBAAyBL,eACpCD,aAAsBO,IACxB;AACA,MAAaC,8BAA8BP,eACzCD,aAAsBS,SACxB"}
|
|
1
|
+
{"version":3,"file":"dropdownMenuRenderPrimitives.js","names":["DropdownMenu","DropdownMenuPrimitive","withRenderProp","DropdownMenuRenderTrigger","Trigger","DropdownMenuRenderContent","Content","DropdownMenuRenderItem","Item","DropdownMenuRenderSeparator","Separator","DropdownMenuPrimitive"],"sources":["../../src/primitives/dropdownMenuRenderPrimitives.ts"],"sourcesContent":["import { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport { withRenderProp } from \"../utils/Primitive\";\n\nexport const DropdownMenuRenderTrigger = withRenderProp(\n DropdownMenuPrimitive.Trigger,\n);\nexport const DropdownMenuRenderContent = withRenderProp(\n DropdownMenuPrimitive.Content,\n);\nexport const DropdownMenuRenderItem = withRenderProp(\n DropdownMenuPrimitive.Item,\n);\nexport const DropdownMenuRenderSeparator = withRenderProp(\n DropdownMenuPrimitive.Separator,\n);\n"],"mappings":";;;AAGA,MAAaG,4BAA4BD,eACvCD,aAAsBG,OACxB;AACA,MAAaC,4BAA4BH,eACvCD,aAAsBK,OACxB;AACA,MAAaC,yBAAyBL,eACpCD,aAAsBO,IACxB;AACA,MAAaC,8BAA8BP,eACzCD,aAAsBS,SACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorMessage.js","names":["c","_c","Primitive","ComponentRef","forwardRef","ComponentPropsWithoutRef","useMessageError","ErrorPrimitiveMessage","Element","span","Props","t0","$","children","props","error","undefined","t1","String","t2","displayName"],"sources":["../../../src/primitives/error/ErrorMessage.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport { useMessageError } from \"@assistant-ui/core/react\";\n\nexport namespace ErrorPrimitiveMessage {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.span>;\n}\n\nexport const ErrorPrimitiveMessage = forwardRef<\n ErrorPrimitiveMessage.Element,\n ErrorPrimitiveMessage.Props\n>(({ children, ...props }, forwardRef) => {\n const error = useMessageError();\n\n if (error === undefined) return null;\n\n return (\n <Primitive.span {...props} ref={forwardRef}>\n {children ?? String(error)}\n </Primitive.span>\n );\n});\n\nErrorPrimitiveMessage.displayName = \"ErrorPrimitive.Message\";\n"],"mappings":";;;;;;;AAeA,MAAaO,wBAAwBH,YAGnCO,IAAAP,eAAA;CAAA,MAAAQ,IAAAX,EAAA,CAAA;CAAA,IAAAY;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAE,UAAA,GAAAC,SAAAH;EAAsBC,EAAA,KAAAD;EAAAC,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,WAAAD,EAAA;EAAAE,QAAAF,EAAA;CAAA;CACvB,MAAAG,QAAcT,gBAAgB;CAE9B,IAAIS,UAAUC,KAAAA,GAAS,OAAS;CAI3B,MAAAC,KAAAJ,YAAYK,OAAOH,KAAK;CAAC,IAAAI;CAAA,IAAAP,EAAA,OAAAR,cAAAQ,EAAA,OAAAE,SAAAF,EAAA,OAAAK,IAAA;EAD5BE,KAAA,oBAAA,UAAA,MAAA;GAAA,GAAoBL;GAAYV,KAAAA;GAC7Ba,UAAAA;EACH,CAAA;EAAiBL,EAAA,KAAAR;EAAAQ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;EAAAL,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAFjBO;AAEiB,CAEpB;AAEDZ,sBAAsBa,cAAc"}
|
|
1
|
+
{"version":3,"file":"ErrorMessage.js","names":["c","_c","Primitive","ComponentRef","forwardRef","ComponentPropsWithoutRef","useMessageError","ErrorPrimitiveMessage","Element","span","Props","t0","$","children","props","error","undefined","t1","String","t2","displayName","_c"],"sources":["../../../src/primitives/error/ErrorMessage.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport { useMessageError } from \"@assistant-ui/core/react\";\n\nexport namespace ErrorPrimitiveMessage {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.span>;\n}\n\nexport const ErrorPrimitiveMessage = forwardRef<\n ErrorPrimitiveMessage.Element,\n ErrorPrimitiveMessage.Props\n>(({ children, ...props }, forwardRef) => {\n const error = useMessageError();\n\n if (error === undefined) return null;\n\n return (\n <Primitive.span {...props} ref={forwardRef}>\n {children ?? String(error)}\n </Primitive.span>\n );\n});\n\nErrorPrimitiveMessage.displayName = \"ErrorPrimitive.Message\";\n"],"mappings":";;;;;;;AAeA,MAAaO,wBAAwBH,YAGnCO,IAAAP,eAAA;CAAA,MAAAQ,IAAAX,EAAA,CAAA;CAAA,IAAAY;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAE,UAAA,GAAAC,SAAAH;EAAsBC,EAAA,KAAAD;EAAAC,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,WAAAD,EAAA;EAAAE,QAAAF,EAAA;CAAA;CACvB,MAAAG,QAAcT,gBAAgB;CAE9B,IAAIS,UAAUC,KAAAA,GAAS,OAAS;CAI3B,MAAAC,KAAAJ,YAAYK,OAAOH,KAAK;CAAC,IAAAI;CAAA,IAAAP,EAAA,OAAAR,cAAAQ,EAAA,OAAAE,SAAAF,EAAA,OAAAK,IAAA;EAD5BE,KAAA,oBAAA,UAAA,MAAA;GAAA,GAAoBL;GAAYV,KAAAA;GAC7Ba,UAAAA;EACH,CAAA;EAAiBL,EAAA,KAAAR;EAAAQ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;EAAAL,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAFjBO;AAEiB,CAEpB;AAEDZ,sBAAsBa,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorRoot.js","names":["c","_c","Primitive","ComponentRef","forwardRef","ComponentPropsWithoutRef","ErrorPrimitiveRoot","Element","div","Props","props","$","t0","displayName"],"sources":["../../../src/primitives/error/ErrorRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n type ComponentPropsWithoutRef,\n} from \"react\";\n\nexport namespace ErrorPrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\nexport const ErrorPrimitiveRoot = forwardRef<\n ErrorPrimitiveRoot.Element,\n ErrorPrimitiveRoot.Props\n>((props, forwardRef) => {\n return <Primitive.div role=\"alert\" {...props} ref={forwardRef} />;\n});\n\nErrorPrimitiveRoot.displayName = \"ErrorPrimitive.Root\";\n"],"mappings":";;;;;;AAcA,MAAaM,qBAAqBF,YAGhCM,OAAAN,eAAA;CAAA,MAAAO,IAAAV,EAAA,CAAA;CAAA,IAAAW;CAAA,IAAAD,EAAA,OAAAP,cAAAO,EAAA,OAAAD,OAAA;EACOE,KAAA,oBAAA,UAAA,KAAA;GAAoB,MAAA;GAAO,GAAKF;GAAYN,KAAAA;EAAU,CAAA;EAAIO,EAAA,KAAAP;EAAAO,EAAA,KAAAD;EAAAC,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAAA,OAA1DC;AAA0D,CAClE;AAEDN,mBAAmBO,cAAc"}
|
|
1
|
+
{"version":3,"file":"ErrorRoot.js","names":["c","_c","Primitive","ComponentRef","forwardRef","ComponentPropsWithoutRef","ErrorPrimitiveRoot","Element","div","Props","props","$","t0","displayName","_c"],"sources":["../../../src/primitives/error/ErrorRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n type ComponentPropsWithoutRef,\n} from \"react\";\n\nexport namespace ErrorPrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.div>;\n}\n\nexport const ErrorPrimitiveRoot = forwardRef<\n ErrorPrimitiveRoot.Element,\n ErrorPrimitiveRoot.Props\n>((props, forwardRef) => {\n return <Primitive.div role=\"alert\" {...props} ref={forwardRef} />;\n});\n\nErrorPrimitiveRoot.displayName = \"ErrorPrimitive.Root\";\n"],"mappings":";;;;;;AAcA,MAAaM,qBAAqBF,YAGhCM,OAAAN,eAAA;CAAA,MAAAO,IAAAV,EAAA,CAAA;CAAA,IAAAW;CAAA,IAAAD,EAAA,OAAAP,cAAAO,EAAA,OAAAD,OAAA;EACOE,KAAA,oBAAA,UAAA,KAAA;GAAoB,MAAA;GAAO,GAAKF;GAAYN,KAAAA;EAAU,CAAA;EAAIO,EAAA,KAAAP;EAAAO,EAAA,KAAAD;EAAAC,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAAA,OAA1DC;AAA0D,CAClE;AAEDN,mBAAmBO,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageIf.js","names":["c","_c","FC","PropsWithChildren","useAuiState","RequireAtLeastOne","MessageIfFilters","user","assistant","system","hasBranches","copied","lastOrHover","last","speaking","hasAttachments","hasContent","submittedFeedback","UseMessageIfProps","useMessageIf","props","$","t0","s","role","attachments","parts","branchCount","isLast","speech","isCopied","isHovering","message","undefined","length","metadata","type","MessagePrimitiveIf","Props","children","query","result","displayName"],"sources":["../../../src/primitives/message/MessageIf.ts"],"sourcesContent":["\"use client\";\n\nimport type { FC, PropsWithChildren } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport type { RequireAtLeastOne } from \"../../utils/RequireAtLeastOne\";\n\ntype MessageIfFilters = {\n user: boolean | undefined;\n assistant: boolean | undefined;\n system: boolean | undefined;\n hasBranches: boolean | undefined;\n copied: boolean | undefined;\n lastOrHover: boolean | undefined;\n last: boolean | undefined;\n speaking: boolean | undefined;\n hasAttachments: boolean | undefined;\n hasContent: boolean | undefined;\n submittedFeedback: \"positive\" | \"negative\" | null | undefined;\n};\ntype UseMessageIfProps = RequireAtLeastOne<MessageIfFilters>;\n\nconst useMessageIf = (props: UseMessageIfProps) => {\n return useAuiState((s) => {\n const {\n role,\n attachments,\n parts,\n branchCount,\n isLast,\n speech,\n isCopied,\n isHovering,\n } = s.message;\n\n if (props.hasBranches === true && branchCount < 2) return false;\n\n if (props.user === true && role !== \"user\") return false;\n if (props.user === false && role === \"user\") return false;\n\n if (props.assistant === true && role !== \"assistant\") return false;\n if (props.assistant === false && role === \"assistant\") return false;\n\n if (props.system === true && role !== \"system\") return false;\n if (props.system === false && role === \"system\") return false;\n\n if (props.lastOrHover === true && !isHovering && !isLast) return false;\n if (props.last !== undefined && props.last !== isLast) return false;\n\n if (props.copied === true && !isCopied) return false;\n if (props.copied === false && isCopied) return false;\n\n if (props.speaking === true && speech == null) return false;\n if (props.speaking === false && speech != null) return false;\n\n if (\n props.hasAttachments === true &&\n (role !== \"user\" || !attachments?.length)\n )\n return false;\n if (\n props.hasAttachments === false &&\n role === \"user\" &&\n attachments?.length\n )\n return false;\n\n if (props.hasContent === true && parts.length === 0) return false;\n if (props.hasContent === false && parts.length > 0) return false;\n\n if (\n props.submittedFeedback !== undefined &&\n (s.message.metadata.submittedFeedback?.type ?? null) !==\n props.submittedFeedback\n )\n return false;\n\n return true;\n });\n};\n\nexport namespace MessagePrimitiveIf {\n export type Props = PropsWithChildren<UseMessageIfProps>;\n}\n\n/**\n * @deprecated Use `<AuiIf condition={(s) => s.message...} />` instead.\n */\nexport const MessagePrimitiveIf: FC<MessagePrimitiveIf.Props> = ({\n children,\n ...query\n}) => {\n const result = useMessageIf(query);\n return result ? children : null;\n};\n\nMessagePrimitiveIf.displayName = \"MessagePrimitive.If\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageIf.js","names":["c","_c","FC","PropsWithChildren","useAuiState","RequireAtLeastOne","MessageIfFilters","user","assistant","system","hasBranches","copied","lastOrHover","last","speaking","hasAttachments","hasContent","submittedFeedback","UseMessageIfProps","useMessageIf","props","$","t0","s","role","attachments","parts","branchCount","isLast","speech","isCopied","isHovering","message","undefined","length","metadata","type","MessagePrimitiveIf","Props","children","query","result","displayName","_c"],"sources":["../../../src/primitives/message/MessageIf.ts"],"sourcesContent":["\"use client\";\n\nimport type { FC, PropsWithChildren } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport type { RequireAtLeastOne } from \"../../utils/RequireAtLeastOne\";\n\ntype MessageIfFilters = {\n user: boolean | undefined;\n assistant: boolean | undefined;\n system: boolean | undefined;\n hasBranches: boolean | undefined;\n copied: boolean | undefined;\n lastOrHover: boolean | undefined;\n last: boolean | undefined;\n speaking: boolean | undefined;\n hasAttachments: boolean | undefined;\n hasContent: boolean | undefined;\n submittedFeedback: \"positive\" | \"negative\" | null | undefined;\n};\ntype UseMessageIfProps = RequireAtLeastOne<MessageIfFilters>;\n\nconst useMessageIf = (props: UseMessageIfProps) => {\n return useAuiState((s) => {\n const {\n role,\n attachments,\n parts,\n branchCount,\n isLast,\n speech,\n isCopied,\n isHovering,\n } = s.message;\n\n if (props.hasBranches === true && branchCount < 2) return false;\n\n if (props.user === true && role !== \"user\") return false;\n if (props.user === false && role === \"user\") return false;\n\n if (props.assistant === true && role !== \"assistant\") return false;\n if (props.assistant === false && role === \"assistant\") return false;\n\n if (props.system === true && role !== \"system\") return false;\n if (props.system === false && role === \"system\") return false;\n\n if (props.lastOrHover === true && !isHovering && !isLast) return false;\n if (props.last !== undefined && props.last !== isLast) return false;\n\n if (props.copied === true && !isCopied) return false;\n if (props.copied === false && isCopied) return false;\n\n if (props.speaking === true && speech == null) return false;\n if (props.speaking === false && speech != null) return false;\n\n if (\n props.hasAttachments === true &&\n (role !== \"user\" || !attachments?.length)\n )\n return false;\n if (\n props.hasAttachments === false &&\n role === \"user\" &&\n attachments?.length\n )\n return false;\n\n if (props.hasContent === true && parts.length === 0) return false;\n if (props.hasContent === false && parts.length > 0) return false;\n\n if (\n props.submittedFeedback !== undefined &&\n (s.message.metadata.submittedFeedback?.type ?? null) !==\n props.submittedFeedback\n )\n return false;\n\n return true;\n });\n};\n\nexport namespace MessagePrimitiveIf {\n export type Props = PropsWithChildren<UseMessageIfProps>;\n}\n\n/**\n * @deprecated Use `<AuiIf condition={(s) => s.message...} />` instead.\n */\nexport const MessagePrimitiveIf: FC<MessagePrimitiveIf.Props> = ({\n children,\n ...query\n}) => {\n const result = useMessageIf(query);\n return result ? children : null;\n};\n\nMessagePrimitiveIf.displayName = \"MessagePrimitive.If\";\n"],"mappings":";;;;AAqBA,MAAMmB,gBAAeC,UAAA;CAAA,MAAAC,IAAApB,EAAA,EAAA;CAAA,IAAAqB;CAAA,IAAAD,EAAA,OAAAD,MAAAZ,aAAAa,EAAA,OAAAD,MAAAT,UAAAU,EAAA,OAAAD,MAAAL,kBAAAM,EAAA,OAAAD,MAAAV,eAAAW,EAAA,OAAAD,MAAAJ,cAAAK,EAAA,OAAAD,MAAAP,QAAAQ,EAAA,OAAAD,MAAAR,eAAAS,EAAA,OAAAD,MAAAN,YAAAO,EAAA,OAAAD,MAAAH,qBAAAI,EAAA,OAAAD,MAAAX,UAAAY,EAAA,QAAAD,MAAAb,MAAA;EACAe,MAAAC,MAAA;GACjB,MAAA,EAAAC,MAAAC,aAAAC,OAAAC,aAAAC,QAAAC,QAAAC,UAAAC,eASIR,EAACS;GAEL,IAAIZ,MAAKV,gBAAiB,QAAQiB,cAAc,GAAC,OAAS;GAE1D,IAAIP,MAAKb,SAAU,QAAQiB,SAAS,QAAM,OAAS;GACnD,IAAIJ,MAAKb,SAAU,SAASiB,SAAS,QAAM,OAAS;GAEpD,IAAIJ,MAAKZ,cAAe,QAAQgB,SAAS,aAAW,OAAS;GAC7D,IAAIJ,MAAKZ,cAAe,SAASgB,SAAS,aAAW,OAAS;GAE9D,IAAIJ,MAAKX,WAAY,QAAQe,SAAS,UAAQ,OAAS;GACvD,IAAIJ,MAAKX,WAAY,SAASe,SAAS,UAAQ,OAAS;GAExD,IAAIJ,MAAKR,gBAAiB,QAAtB,CAA+BmB,cAA/B,CAA8CH,QAAM,OAAS;GACjE,IAAIR,MAAKP,SAAUoB,KAAAA,KAAab,MAAKP,SAAUe,QAAM,OAAS;GAE9D,IAAIR,MAAKT,WAAY,QAAjB,CAA0BmB,UAAQ,OAAS;GAC/C,IAAIV,MAAKT,WAAY,SAAjBmB,UAAkC,OAAS;GAE/C,IAAIV,MAAKN,aAAc,QAAQe,UAAU,MAAI,OAAS;GACtD,IAAIT,MAAKN,aAAc,SAASe,UAAU,MAAI,OAAS;GAEvD,IACET,MAAKL,mBAAoB,SACxBS,SAAS,UAAT,CAAoBC,aAAWS,SAAS,OAElC;GACT,IACEd,MAAKL,mBAAoB,SACzBS,SAAS,UACTC,aAAWS,QAAQ,OAEZ;GAET,IAAId,MAAKJ,eAAgB,QAAQU,MAAKQ,WAAY,GAAC,OAAS;GAC5D,IAAId,MAAKJ,eAAgB,SAASU,MAAKQ,SAAU,GAAC,OAAS;GAE3D,IACEd,MAAKH,sBAAuBgB,KAAAA,MAC3BV,EAACS,QAAQG,SAASlB,mBAAwBmB,QAA1C,UACChB,MAAKH,mBAAkB,OAElB;GAAM,OAER;EAAI;EACZI,EAAA,KAAAD,MAAAZ;EAAAa,EAAA,KAAAD,MAAAT;EAAAU,EAAA,KAAAD,MAAAL;EAAAM,EAAA,KAAAD,MAAAV;EAAAW,EAAA,KAAAD,MAAAJ;EAAAK,EAAA,KAAAD,MAAAP;EAAAQ,EAAA,KAAAD,MAAAR;EAAAS,EAAA,KAAAD,MAAAN;EAAAO,EAAA,KAAAD,MAAAH;EAAAI,EAAA,KAAAD,MAAAX;EAAAY,EAAA,MAAAD,MAAAb;EAAAc,EAAA,MAAAC;CAAA,OAAAA,KAAAD,EAAA;CAAA,OAvDMjB,YAAYkB,EAuDlB;AAAC;;;;AAUJ,MAAae,sBAAmDf,OAAA;CAAA,MAAAD,IAAApB,EAAA,CAAA;CAAA,IAAAsC;CAAA,IAAAC;CAAA,IAAAnB,EAAA,OAAAC,IAAA;EAAC,CAAA,CAAAiB,UAAA,GAAAC,SAAAlB;EAGhED,EAAA,KAAAC;EAAAD,EAAA,KAAAkB;EAAAlB,EAAA,KAAAmB;CAAA,OAAA;EAAAD,WAAAlB,EAAA;EAAAmB,QAAAnB,EAAA;CAAA;CACoC,OAApBF,aAAaqB,KACrBC,IAAAF,WAAA;AAAwB;AAGjCF,mBAAmBK,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageParts.js","names":["c","_c","FC","MessagePrimitiveParts","MessagePrimitivePartsBase","MessagePartComponent","MessagePartComponentBase","MessagePrimitivePartByIndex","MessagePrimitivePartByIndexBase","messagePartsDefaultComponents","MessagePartPrimitiveText","MessagePartPrimitiveImage","MessagePartPrimitiveInProgress","webDefaultComponents","Text","whiteSpace","fontFamily","Image","Props","props","$","t0","children","components","rest","merged","t1","t2","displayName"],"sources":["../../../src/primitives/message/MessageParts.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC } from \"react\";\nimport {\n MessagePrimitiveParts as MessagePrimitivePartsBase,\n MessagePartComponent as MessagePartComponentBase,\n MessagePrimitivePartByIndex as MessagePrimitivePartByIndexBase,\n messagePartsDefaultComponents,\n} from \"@assistant-ui/core/react\";\nimport { MessagePartPrimitiveText } from \"../messagePart/MessagePartText\";\nimport { MessagePartPrimitiveImage } from \"../messagePart/MessagePartImage\";\nimport { MessagePartPrimitiveInProgress } from \"../messagePart/MessagePartInProgress\";\n\nconst webDefaultComponents = {\n ...messagePartsDefaultComponents,\n Text: () => (\n <p style={{ whiteSpace: \"pre-line\" }}>\n <MessagePartPrimitiveText />\n <MessagePartPrimitiveInProgress>\n <span style={{ fontFamily: \"revert\" }}>{\" \\u25CF\"}</span>\n </MessagePartPrimitiveInProgress>\n </p>\n ),\n Image: () => <MessagePartPrimitiveImage />,\n} satisfies MessagePrimitiveParts.Props[\"components\"];\n\nexport namespace MessagePrimitiveParts {\n export type Props = MessagePrimitivePartsBase.Props;\n}\n\n/**\n * Renders the parts of a message with web-specific default components.\n */\nexport const MessagePrimitiveParts: FC<MessagePrimitiveParts.Props> = (\n props,\n) => {\n if (\"children\" in props) {\n return (\n <MessagePrimitivePartsBase>{props.children}</MessagePrimitivePartsBase>\n );\n }\n\n const { components, ...rest } = props;\n const merged = components\n ? {\n ...components,\n Text: components.Text ?? webDefaultComponents.Text,\n Image: components.Image ?? webDefaultComponents.Image,\n }\n : webDefaultComponents;\n\n return <MessagePrimitivePartsBase components={merged as any} {...rest} />;\n};\n\nMessagePrimitiveParts.displayName = \"MessagePrimitive.Parts\";\n\n// Re-export everything else unchanged\nexport {\n MessagePartComponentBase as MessagePartComponent,\n MessagePrimitivePartByIndexBase as MessagePrimitivePartByIndex,\n};\n"],"mappings":";;;;;;;;AAaA,MAAMa,uBAAuB;CAC3B,GAAGJ;CACHK,YACE,qBAAC,KAAD;EAAG,OAAO,EAAEC,YAAY,WAAW;EAAnC,UAAA,CACE,oBAAC,0BAAD,CAAyB,CAAA,GACzB,oBAAC,gCAAD,EAAA,UACE,oBAAC,QAAD;GAAM,OAAO,EAAEC,YAAY,SAAS;GAAI,UAAA;EAAgB,CAAA,EAC1B,CAAA,CAC/B;;CAELC,aAAa,oBAAC,2BAAD,CAA0B,CAAA;AACzC;;;;AASA,MAAad,yBAAyDgB,UAAA;CAAA,MAAAC,IAAAnB,EAAA,EAAA;CAGpE,IAAI,cAAckB,OAAK;EAAA,IAAAE;EAAA,IAAAD,EAAA,OAAAD,MAAAG,UAAA;GAEnBD,KAAA,
|
|
1
|
+
{"version":3,"file":"MessageParts.js","names":["c","_c","FC","MessagePrimitiveParts","MessagePrimitivePartsBase","MessagePartComponent","MessagePartComponentBase","MessagePrimitivePartByIndex","MessagePrimitivePartByIndexBase","messagePartsDefaultComponents","MessagePartPrimitiveText","MessagePartPrimitiveImage","MessagePartPrimitiveInProgress","webDefaultComponents","Text","whiteSpace","fontFamily","Image","Props","props","$","t0","children","components","rest","merged","t1","t2","displayName","_c","MessagePrimitivePartsBase","merged"],"sources":["../../../src/primitives/message/MessageParts.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC } from \"react\";\nimport {\n MessagePrimitiveParts as MessagePrimitivePartsBase,\n MessagePartComponent as MessagePartComponentBase,\n MessagePrimitivePartByIndex as MessagePrimitivePartByIndexBase,\n messagePartsDefaultComponents,\n} from \"@assistant-ui/core/react\";\nimport { MessagePartPrimitiveText } from \"../messagePart/MessagePartText\";\nimport { MessagePartPrimitiveImage } from \"../messagePart/MessagePartImage\";\nimport { MessagePartPrimitiveInProgress } from \"../messagePart/MessagePartInProgress\";\n\nconst webDefaultComponents = {\n ...messagePartsDefaultComponents,\n Text: () => (\n <p style={{ whiteSpace: \"pre-line\" }}>\n <MessagePartPrimitiveText />\n <MessagePartPrimitiveInProgress>\n <span style={{ fontFamily: \"revert\" }}>{\" \\u25CF\"}</span>\n </MessagePartPrimitiveInProgress>\n </p>\n ),\n Image: () => <MessagePartPrimitiveImage />,\n} satisfies MessagePrimitiveParts.Props[\"components\"];\n\nexport namespace MessagePrimitiveParts {\n export type Props = MessagePrimitivePartsBase.Props;\n}\n\n/**\n * Renders the parts of a message with web-specific default components.\n */\nexport const MessagePrimitiveParts: FC<MessagePrimitiveParts.Props> = (\n props,\n) => {\n if (\"children\" in props) {\n return (\n <MessagePrimitivePartsBase>{props.children}</MessagePrimitivePartsBase>\n );\n }\n\n const { components, ...rest } = props;\n const merged = components\n ? {\n ...components,\n Text: components.Text ?? webDefaultComponents.Text,\n Image: components.Image ?? webDefaultComponents.Image,\n }\n : webDefaultComponents;\n\n return <MessagePrimitivePartsBase components={merged as any} {...rest} />;\n};\n\nMessagePrimitiveParts.displayName = \"MessagePrimitive.Parts\";\n\n// Re-export everything else unchanged\nexport {\n MessagePartComponentBase as MessagePartComponent,\n MessagePrimitivePartByIndexBase as MessagePrimitivePartByIndex,\n};\n"],"mappings":";;;;;;;;AAaA,MAAMa,uBAAuB;CAC3B,GAAGJ;CACHK,YACE,qBAAC,KAAD;EAAG,OAAO,EAAEC,YAAY,WAAW;EAAnC,UAAA,CACE,oBAAC,0BAAD,CAAyB,CAAA,GACzB,oBAAC,gCAAD,EAAA,UACE,oBAAC,QAAD;GAAM,OAAO,EAAEC,YAAY,SAAS;GAAI,UAAA;EAAgB,CAAA,EAC1B,CAAA,CAC/B;;CAELC,aAAa,oBAAC,2BAAD,CAA0B,CAAA;AACzC;;;;AASA,MAAad,yBAAyDgB,UAAA;CAAA,MAAAC,IAAAnB,EAAA,EAAA;CAGpE,IAAI,cAAckB,OAAK;EAAA,IAAAE;EAAA,IAAAD,EAAA,OAAAD,MAAAG,UAAA;GAEnBD,KAAA,oBAACS,yBAAD,EAAA,UAA4BX,MAAKG,SAAP,CAAA;GAA6CF,EAAA,KAAAD,MAAAG;GAAAF,EAAA,KAAAC;EAAA,OAAAA,KAAAD,EAAA;EAAA,OAAvEC;CAAuE;CAE1E,IAAAE;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAD,OAAA;EAED,CAAA,CAAAI,YAAA,GAAAC,QAAgCL;EAAMC,EAAA,KAAAD;EAAAC,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,aAAAH,EAAA;EAAAI,OAAAJ,EAAA;CAAA;CAAA,IAAAC;CAAA,IAAAD,EAAA,OAAAG,YAAA;EACvBF,KAAAE,aAAA;GAAA,GAENA;GAAUT,MACPS,WAAUT,QAASD,qBAAoBC;GAAKG,OAC3CM,WAAUN,SAAUJ,qBAAoBI;EAE9B,IANRJ;EAMSO,EAAA,KAAAG;EAAAH,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAEsB,MAAAM,KAAAD;CAAa,IAAAE;CAAA,IAAAP,EAAA,OAAAI,QAAAJ,EAAA,OAAAM,IAAA;EAApDC,KAAA,oBAACG,yBAAD;GAAuC,YAAAJ;GAAa,GAAMF;EAAI,CAAA;EAAIJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAAlEO;AAAkE;AAG3ExB,sBAAsByB,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessagePartsGrouped.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessagePartsGrouped.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EAEP,KAAK,iBAAiB,EAEvB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EACV,kCAAkC,EAClC,wBAAwB,EAExB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"MessagePartsGrouped.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessagePartsGrouped.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EAEP,KAAK,iBAAiB,EAEvB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EACV,kCAAkC,EAClC,wBAAwB,EAExB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;AAKlC,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,KAAK,gBAAgB,EAAE,CAAC;AAoD7E,yBAAiB,qCAAqC,CAAC;IACrD,KAAY,KAAK,GAAG;QAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0CG;QACH,gBAAgB,EAAE,gBAAgB,CAAC;QAEnC;;;;;WAKG;QACH,UAAU,EACN;YACE,6CAA6C;YAC7C,KAAK,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;YAC9C,2CAA2C;YAC3C,IAAI,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;YAC5C,mEAAmE;YACnE,SAAS,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;YACtD,6CAA6C;YAC7C,MAAM,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;YAChD,4CAA4C;YAC5C,KAAK,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;YAC9C,2CAA2C;YAC3C,IAAI,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;YAC5C;;;;;eAKG;YACH,cAAc,CAAC,EAAE,kCAAkC,GAAG,SAAS,CAAC;YAChE,4CAA4C;YAC5C,IAAI,CAAC,EACD;gBACE,kDAAkD;gBAClD,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,GACpD,SAAS,CAAC;gBACd,mDAAmD;gBACnD,QAAQ,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;aACjD,GACD,SAAS,CAAC;YACd,4CAA4C;YAC5C,KAAK,CAAC,EACF;gBACE,qDAAqD;gBACrD,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,4BAA4B,GAAG,SAAS,CAAC,GACxD,SAAS,CAAC;gBACd,gDAAgD;gBAChD,QAAQ,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;aAChE,GACD;gBACE,qDAAqD;gBACrD,QAAQ,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;aACnD,GACD,SAAS,CAAC;YAEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAgCG;YACH,KAAK,CAAC,EAAE,aAAa,CACnB,iBAAiB,CAAC;gBAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;gBAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;aACnB,CAAC,CACH,CAAC;SACH,GACD,SAAS,CAAC;KACf,CAAC;CACH;AAuMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,qCAAqC,EAAE,EAAE,CACpD,qCAAqC,CAAC,KAAK,CAsC5C,CAAC;AAKF;;;;;GAKG;AACH,eAAO,MAAM,+CAA+C,EAAE,EAAE,CAC9D,IAAI,CAAC,qCAAqC,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAStE,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { MessagePartPrimitiveInProgress } from "../messagePart/MessagePartInProg
|
|
|
7
7
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
8
8
|
import { memo } from "@assistant-ui/tap/react-shim";
|
|
9
9
|
import { useAui, useAuiState } from "@assistant-ui/store";
|
|
10
|
+
import { getMessagePartKeys } from "@assistant-ui/core/internal";
|
|
10
11
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
11
12
|
//#region src/primitives/message/MessagePartsGrouped.tsx
|
|
12
13
|
/**
|
|
@@ -33,7 +34,7 @@ const groupMessagePartsByParentId = (parts) => {
|
|
|
33
34
|
return groups;
|
|
34
35
|
};
|
|
35
36
|
const useMessagePartsGrouped = (groupingFunction) => {
|
|
36
|
-
const $ = c(
|
|
37
|
+
const $ = c(9);
|
|
37
38
|
const parts = useAuiState(_temp);
|
|
38
39
|
let t0;
|
|
39
40
|
bb0: {
|
|
@@ -55,7 +56,24 @@ const useMessagePartsGrouped = (groupingFunction) => {
|
|
|
55
56
|
} else t1 = $[3];
|
|
56
57
|
t0 = t1;
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
+
const groups = t0;
|
|
60
|
+
let t1;
|
|
61
|
+
if ($[4] !== parts) {
|
|
62
|
+
t1 = getMessagePartKeys(parts);
|
|
63
|
+
$[4] = parts;
|
|
64
|
+
$[5] = t1;
|
|
65
|
+
} else t1 = $[5];
|
|
66
|
+
let t2;
|
|
67
|
+
if ($[6] !== groups || $[7] !== t1) {
|
|
68
|
+
t2 = {
|
|
69
|
+
groups,
|
|
70
|
+
partKeys: t1
|
|
71
|
+
};
|
|
72
|
+
$[6] = groups;
|
|
73
|
+
$[7] = t1;
|
|
74
|
+
$[8] = t2;
|
|
75
|
+
} else t2 = $[8];
|
|
76
|
+
return t2;
|
|
59
77
|
};
|
|
60
78
|
const ToolUIDisplay = (t0) => {
|
|
61
79
|
const $ = c(9);
|
|
@@ -431,10 +449,10 @@ const EmptyParts = memo(EmptyPartsImpl, (prev, next) => prev.components?.Empty =
|
|
|
431
449
|
* ```
|
|
432
450
|
*/
|
|
433
451
|
const MessagePrimitiveUnstable_PartsGrouped = (t0) => {
|
|
434
|
-
const $ = c(
|
|
452
|
+
const $ = c(11);
|
|
435
453
|
const { groupingFunction, components } = t0;
|
|
436
454
|
const contentLength = useAuiState(_temp4);
|
|
437
|
-
const messageGroups = useMessagePartsGrouped(groupingFunction);
|
|
455
|
+
const { groups: messageGroups, partKeys } = useMessagePartsGrouped(groupingFunction);
|
|
438
456
|
let t1;
|
|
439
457
|
bb0: {
|
|
440
458
|
if (contentLength === 0) {
|
|
@@ -448,37 +466,44 @@ const MessagePrimitiveUnstable_PartsGrouped = (t0) => {
|
|
|
448
466
|
break bb0;
|
|
449
467
|
}
|
|
450
468
|
let t2;
|
|
451
|
-
if ($[2] !== components || $[3] !== messageGroups) {
|
|
469
|
+
if ($[2] !== components || $[3] !== messageGroups || $[4] !== partKeys) {
|
|
452
470
|
let t3;
|
|
453
|
-
if ($[
|
|
471
|
+
if ($[6] !== components || $[7] !== partKeys) {
|
|
454
472
|
t3 = (group, groupIndex) => {
|
|
455
473
|
const GroupComponent = components?.Group ?? defaultComponents.Group;
|
|
474
|
+
const identity = partKeys[group.indices[0]];
|
|
456
475
|
return /* @__PURE__ */ jsx(GroupComponent, {
|
|
457
476
|
groupKey: group.groupKey,
|
|
458
477
|
indices: group.indices,
|
|
459
478
|
children: group.indices.map((partIndex) => /* @__PURE__ */ jsx(MessagePart, {
|
|
460
479
|
partIndex,
|
|
461
480
|
components
|
|
462
|
-
}, partIndex))
|
|
463
|
-
},
|
|
481
|
+
}, partKeys[partIndex]))
|
|
482
|
+
}, JSON.stringify([
|
|
483
|
+
"group",
|
|
484
|
+
group.groupKey ?? null,
|
|
485
|
+
identity?.includes(":") ? `id:${identity}` : groupIndex
|
|
486
|
+
]));
|
|
464
487
|
};
|
|
465
|
-
$[
|
|
466
|
-
$[
|
|
467
|
-
|
|
488
|
+
$[6] = components;
|
|
489
|
+
$[7] = partKeys;
|
|
490
|
+
$[8] = t3;
|
|
491
|
+
} else t3 = $[8];
|
|
468
492
|
t2 = messageGroups.map(t3);
|
|
469
493
|
$[2] = components;
|
|
470
494
|
$[3] = messageGroups;
|
|
471
|
-
$[4] =
|
|
472
|
-
|
|
495
|
+
$[4] = partKeys;
|
|
496
|
+
$[5] = t2;
|
|
497
|
+
} else t2 = $[5];
|
|
473
498
|
t1 = t2;
|
|
474
499
|
}
|
|
475
500
|
const partsElements = t1;
|
|
476
501
|
let t2;
|
|
477
|
-
if ($[
|
|
502
|
+
if ($[9] !== partsElements) {
|
|
478
503
|
t2 = /* @__PURE__ */ jsx(Fragment, { children: partsElements });
|
|
479
|
-
$[
|
|
480
|
-
$[
|
|
481
|
-
} else t2 = $[
|
|
504
|
+
$[9] = partsElements;
|
|
505
|
+
$[10] = t2;
|
|
506
|
+
} else t2 = $[10];
|
|
482
507
|
return t2;
|
|
483
508
|
};
|
|
484
509
|
MessagePrimitiveUnstable_PartsGrouped.displayName = "MessagePrimitive.Unstable_PartsGrouped";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessagePartsGrouped.js","names":["c","_c","ComponentType","FC","memo","PropsWithChildren","useMemo","useAuiState","useAui","PartByIndexProvider","TextMessagePartProvider","MessagePartPrimitiveText","MessagePartPrimitiveImage","Unstable_AudioMessagePartComponent","DataMessagePartComponent","DataMessagePartProps","EmptyMessagePartComponent","TextMessagePartComponent","ImageMessagePartComponent","SourceMessagePartComponent","ToolCallMessagePartComponent","ToolCallMessagePartProps","FileMessagePartComponent","ReasoningMessagePartComponent","MessagePartPrimitiveInProgress","MessagePartStatus","MessagePartGroup","groupKey","indices","GroupingFunction","parts","groupMessagePartsByParentId","groupMap","Map","i","length","part","parentId","groupId","get","push","set","groups","undefined","useMessagePartsGrouped","groupingFunction","$","_temp","t0","bb0","t1","Symbol","for","MessagePrimitiveUnstable_PartsGrouped","Props","components","Empty","Text","Reasoning","Source","Image","File","Unstable_Audio","data","by_name","Record","Fallback","tools","Override","Group","ToolUIDisplay","props","toolName","s","toolUIs","render","Render","t2","DataUIDisplay","name","named","dataRenderers","renderers","fallbacks","defaultComponents","whiteSpace","fontFamily","children","MessagePartComponentProps","MessagePartComponent","t3","t4","t5","t6","t7","t8","t9","Audio","t10","aui","_temp2","type","addResult","addToolResult","resume","resumeToolCall","respondToApproval","respondToToolApproval","unstable_recordInteraction","t11","t12","Object","hasOwn","Tool","t13","status","Error","Data","console","warn","MessagePartProps","partIndex","MessagePartImpl","MessagePart","prev","next","EmptyPartFallback","component","Component","COMPLETE_STATUS","freeze","EmptyPartsImpl","_temp3","EmptyParts","contentLength","_temp4","messageGroups","group","groupIndex","GroupComponent","map","partsElements","displayName","MessagePrimitiveUnstable_PartsGroupedByParentId","Omit","message"],"sources":["../../../src/primitives/message/MessagePartsGrouped.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentType,\n type FC,\n memo,\n type PropsWithChildren,\n useMemo,\n} from \"react\";\nimport { useAuiState, useAui } from \"@assistant-ui/store\";\nimport { PartByIndexProvider } from \"../../context/providers/PartByIndexProvider\";\nimport { TextMessagePartProvider } from \"../../context/providers/TextMessagePartProvider\";\nimport { MessagePartPrimitiveText } from \"../messagePart/MessagePartText\";\nimport { MessagePartPrimitiveImage } from \"../messagePart/MessagePartImage\";\nimport type {\n Unstable_AudioMessagePartComponent,\n DataMessagePartComponent,\n DataMessagePartProps,\n EmptyMessagePartComponent,\n TextMessagePartComponent,\n ImageMessagePartComponent,\n SourceMessagePartComponent,\n ToolCallMessagePartComponent,\n ToolCallMessagePartProps,\n FileMessagePartComponent,\n ReasoningMessagePartComponent,\n} from \"@assistant-ui/core/react\";\nimport { MessagePartPrimitiveInProgress } from \"../messagePart/MessagePartInProgress\";\nimport type { MessagePartStatus } from \"@assistant-ui/core\";\n\ntype MessagePartGroup = {\n groupKey: string | undefined;\n indices: number[];\n};\n\nexport type GroupingFunction = (parts: readonly any[]) => MessagePartGroup[];\n\n/**\n * Groups message parts by their parent ID.\n * Parts without a parent ID appear in their chronological position as individual groups.\n * Parts with the same parent ID are grouped together at the position of their first occurrence.\n */\nconst groupMessagePartsByParentId: GroupingFunction = (\n parts: readonly any[],\n): MessagePartGroup[] => {\n // Map maintains insertion order, so groups appear in order of first occurrence\n const groupMap = new Map<string | number, number[]>();\n\n // Process each part in order\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const parentId = part?.parentId as string | undefined;\n\n // For parts without parentId, assign a unique group ID to maintain their position\n const groupId = parentId ?? i;\n\n // Get or create the indices array for this group\n const indices = groupMap.get(groupId) ?? [];\n indices.push(i);\n groupMap.set(groupId, indices);\n }\n\n // Convert map to array of groups\n const groups: MessagePartGroup[] = [];\n for (const [groupId, indices] of groupMap) {\n // Extract parentId (undefined for ungrouped parts)\n const groupKey = typeof groupId === \"string\" ? groupId : undefined;\n groups.push({ groupKey, indices });\n }\n\n return groups;\n};\n\nconst useMessagePartsGrouped = (\n groupingFunction: GroupingFunction,\n): MessagePartGroup[] => {\n const parts = useAuiState((s) => s.message.parts);\n\n return useMemo(() => {\n if (parts.length === 0) {\n return [];\n }\n return groupingFunction(parts);\n }, [parts, groupingFunction]);\n};\n\nexport namespace MessagePrimitiveUnstable_PartsGrouped {\n export type Props = {\n /**\n * Function that takes an array of message parts and returns an array of groups.\n * Each group contains a key (for identification) and an array of indices.\n *\n * @example\n * ```tsx\n * // Group by parent ID (default behavior)\n * groupingFunction={(parts) => {\n * const groups = new Map<string | number, number[]>();\n * parts.forEach((part, i) => {\n * const key = part.parentId ?? i;\n * const indices = groups.get(key) ?? [];\n * indices.push(i);\n * groups.set(key, indices);\n * });\n * return Array.from(groups.entries()).map(([key, indices]) => ({\n * groupKey: typeof key === \"string\" ? key : undefined,\n * indices\n * }));\n * }}\n * ```\n *\n * @example\n * ```tsx\n * // Group by tool name\n * import { groupMessagePartsByToolName } from \"@assistant-ui/react\";\n *\n * <MessagePrimitive.Unstable_PartsGrouped\n * groupingFunction={groupMessagePartsByToolName}\n * components={{\n * Group: ({ key, indices, children }) => {\n * if (!key) return <>{children}</>;\n * return (\n * <div className=\"tool-group\">\n * <h4>Tool: {key}</h4>\n * {children}\n * </div>\n * );\n * }\n * }}\n * />\n * ```\n */\n groupingFunction: GroupingFunction;\n\n /**\n * Component configuration for rendering different types of message content.\n *\n * You can provide custom components for each content type (text, image, file, etc.)\n * and configure tool rendering behavior. If not provided, default components will be used.\n */\n components:\n | {\n /** Component for rendering empty messages */\n Empty?: EmptyMessagePartComponent | undefined;\n /** Component for rendering text content */\n Text?: TextMessagePartComponent | undefined;\n /** Component for rendering reasoning content (typically hidden) */\n Reasoning?: ReasoningMessagePartComponent | undefined;\n /** Component for rendering source content */\n Source?: SourceMessagePartComponent | undefined;\n /** Component for rendering image content */\n Image?: ImageMessagePartComponent | undefined;\n /** Component for rendering file content */\n File?: FileMessagePartComponent | undefined;\n /**\n * Component for rendering audio content.\n *\n * @deprecated Render audio through the `File` slot instead, branching\n * on an `audio/*` mime type.\n */\n Unstable_Audio?: Unstable_AudioMessagePartComponent | undefined;\n /** Configuration for data part rendering */\n data?:\n | {\n /** Map data event names to specific components */\n by_name?:\n | Record<string, DataMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unmatched data events */\n Fallback?: DataMessagePartComponent | undefined;\n }\n | undefined;\n /** Configuration for tool call rendering */\n tools?:\n | {\n /** Map of tool names to their specific components */\n by_name?:\n | Record<string, ToolCallMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unregistered tools */\n Fallback?: ComponentType<ToolCallMessagePartProps> | undefined;\n }\n | {\n /** Override component that handles all tool calls */\n Override: ComponentType<ToolCallMessagePartProps>;\n }\n | undefined;\n\n /**\n * Component for rendering grouped message parts.\n *\n * When provided, this component will automatically wrap message parts that share\n * the same group key as determined by the groupingFunction.\n *\n * The component receives:\n * - `groupKey`: The group key (or undefined for ungrouped parts)\n * - `indices`: Array of indices for the parts in this group\n * - `children`: The rendered message part components\n *\n * @example\n * ```tsx\n * // Collapsible group\n * Group: ({ groupKey, indices, children }) => {\n * if (!groupKey) return <>{children}</>;\n * return (\n * <details className=\"message-group\">\n * <summary>\n * Group {groupKey} ({indices.length} parts)\n * </summary>\n * <div className=\"group-content\">\n * {children}\n * </div>\n * </details>\n * );\n * }\n * ```\n *\n * @param groupKey - The group key (undefined for ungrouped parts)\n * @param indices - Array of indices for the parts in this group\n * @param children - Rendered message part components to display within the group\n */\n Group?: ComponentType<\n PropsWithChildren<{\n groupKey: string | undefined;\n indices: number[];\n }>\n >;\n }\n | undefined;\n };\n}\n\nconst ToolUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: ToolCallMessagePartComponent | undefined;\n} & ToolCallMessagePartProps) => {\n const Render = useAuiState(\n (s) => s.tools.toolUIs[props.toolName]?.[0]?.render ?? Fallback,\n );\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst DataUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: DataMessagePartComponent | undefined;\n} & DataMessagePartProps) => {\n const Render = useAuiState((s) => {\n const named = s.dataRenderers.renderers[props.name]?.[0];\n if (named) return named;\n return s.dataRenderers.fallbacks[0] ?? Fallback;\n });\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst defaultComponents = {\n Text: () => (\n <p style={{ whiteSpace: \"pre-line\" }}>\n <MessagePartPrimitiveText />\n <MessagePartPrimitiveInProgress>\n <span style={{ fontFamily: \"revert\" }}>{\" \\u25CF\"}</span>\n </MessagePartPrimitiveInProgress>\n </p>\n ),\n Reasoning: () => null,\n Source: () => null,\n Image: () => <MessagePartPrimitiveImage />,\n File: () => null,\n Unstable_Audio: () => null,\n Group: ({ children }) => children,\n} satisfies MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n\ntype MessagePartComponentProps = {\n components: MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n};\n\nconst MessagePartComponent: FC<MessagePartComponentProps> = ({\n components: {\n Text = defaultComponents.Text,\n Reasoning = defaultComponents.Reasoning,\n Image = defaultComponents.Image,\n Source = defaultComponents.Source,\n File = defaultComponents.File,\n Unstable_Audio: Audio = defaultComponents.Unstable_Audio,\n tools = {},\n data,\n } = {},\n}) => {\n const aui = useAui();\n const part = useAuiState((s) => s.part);\n\n const type = part.type;\n if (type === \"tool-call\") {\n const addResult = aui.part.addToolResult;\n const resume = aui.part.resumeToolCall;\n const respondToApproval = aui.part.respondToToolApproval;\n const unstable_recordInteraction = aui.part.unstable_recordInteraction;\n if (\"Override\" in tools)\n return (\n <tools.Override\n {...part}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n {...(unstable_recordInteraction && { unstable_recordInteraction })}\n />\n );\n const Tool =\n (tools.by_name && Object.hasOwn(tools.by_name, part.toolName)\n ? tools.by_name[part.toolName]\n : undefined) ?? tools.Fallback;\n return (\n <ToolUIDisplay\n {...part}\n Fallback={Tool}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n {...(unstable_recordInteraction && { unstable_recordInteraction })}\n />\n );\n }\n\n if (part.status?.type === \"requires-action\")\n throw new Error(\"Encountered unexpected requires-action status\");\n\n switch (type) {\n case \"text\":\n return <Text {...part} />;\n\n case \"reasoning\":\n return <Reasoning {...part} />;\n\n case \"source\":\n return <Source {...part} />;\n\n case \"image\":\n return <Image {...part} />;\n\n case \"file\":\n return <File {...part} />;\n\n case \"audio\":\n return <Audio {...part} />;\n\n case \"data\": {\n const Data =\n (data?.by_name && Object.hasOwn(data.by_name, part.name)\n ? data.by_name[part.name]\n : undefined) ?? data?.Fallback;\n return <DataUIDisplay {...part} Fallback={Data} />;\n }\n\n default:\n console.warn(`Unknown message part type: ${type}`);\n return null;\n }\n};\n\ntype MessagePartProps = {\n partIndex: number;\n components: MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n};\n\nconst MessagePartImpl: FC<MessagePartProps> = ({ partIndex, components }) => {\n return (\n <PartByIndexProvider index={partIndex}>\n <MessagePartComponent components={components} />\n </PartByIndexProvider>\n );\n};\n\nconst MessagePart = memo(\n MessagePartImpl,\n (prev, next) =>\n prev.partIndex === next.partIndex &&\n prev.components?.Text === next.components?.Text &&\n prev.components?.Reasoning === next.components?.Reasoning &&\n prev.components?.Source === next.components?.Source &&\n prev.components?.Image === next.components?.Image &&\n prev.components?.File === next.components?.File &&\n prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&\n prev.components?.tools === next.components?.tools &&\n prev.components?.data === next.components?.data &&\n prev.components?.Group === next.components?.Group,\n);\n\nconst EmptyPartFallback: FC<{\n status: MessagePartStatus;\n component: TextMessagePartComponent;\n}> = ({ status, component: Component }) => {\n return (\n <TextMessagePartProvider text=\"\" isRunning={status.type === \"running\"}>\n <Component type=\"text\" text=\"\" status={status} />\n </TextMessagePartProvider>\n );\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst EmptyPartsImpl: FC<MessagePartComponentProps> = ({ components }) => {\n const status = useAuiState(\n (s) => (s.message.status ?? COMPLETE_STATUS) as MessagePartStatus,\n );\n\n if (components?.Empty) return <components.Empty status={status} />;\n\n return (\n <EmptyPartFallback\n status={status}\n component={components?.Text ?? defaultComponents.Text}\n />\n );\n};\n\nconst EmptyParts = memo(\n EmptyPartsImpl,\n (prev, next) =>\n prev.components?.Empty === next.components?.Empty &&\n prev.components?.Text === next.components?.Text,\n);\n\n/**\n * Renders the parts of a message grouped by a custom grouping function.\n *\n * This component allows you to group message parts based on any criteria you define.\n * The grouping function receives all message parts and returns an array of groups,\n * where each group has a key and an array of part indices.\n *\n * @deprecated Prefer `<MessagePrimitive.GroupedParts>` for adjacent\n * grouping — it dispatches all rendering through one `switch (part.type)`\n * and supports nested group paths. Keep this primitive only for\n * non-adjacent clustering (e.g., gathering parts with the same parent-id\n * across the message).\n *\n * @example\n * ```tsx\n * // Group by parent ID (default behavior)\n * <MessagePrimitive.Unstable_PartsGrouped\n * components={{\n * Text: ({ text }) => <p className=\"message-text\">{text}</p>,\n * Image: ({ image }) => <img src={image} alt=\"Message image\" />,\n * Group: ({ groupKey, indices, children }) => {\n * if (!groupKey) return <>{children}</>;\n * return (\n * <div className=\"parent-group border rounded p-4\">\n * <h4>Parent ID: {groupKey}</h4>\n * {children}\n * </div>\n * );\n * }\n * }}\n * />\n * ```\n */\nexport const MessagePrimitiveUnstable_PartsGrouped: FC<\n MessagePrimitiveUnstable_PartsGrouped.Props\n> = ({ groupingFunction, components }) => {\n const contentLength = useAuiState((s) => s.message.parts.length);\n const messageGroups = useMessagePartsGrouped(groupingFunction);\n\n const partsElements = useMemo(() => {\n if (contentLength === 0) {\n return <EmptyParts components={components} />;\n }\n\n return messageGroups.map((group, groupIndex) => {\n const GroupComponent = components?.Group ?? defaultComponents.Group;\n\n return (\n <GroupComponent\n key={`group-${groupIndex}-${group.groupKey ?? \"ungrouped\"}`}\n groupKey={group.groupKey}\n indices={group.indices}\n >\n {group.indices.map((partIndex) => (\n <MessagePart\n key={partIndex}\n partIndex={partIndex}\n components={components}\n />\n ))}\n </GroupComponent>\n );\n });\n }, [messageGroups, components, contentLength]);\n\n return <>{partsElements}</>;\n};\n\nMessagePrimitiveUnstable_PartsGrouped.displayName =\n \"MessagePrimitive.Unstable_PartsGrouped\";\n\n/**\n * Renders the parts of a message grouped by their parent ID.\n * This is a convenience wrapper around Unstable_PartsGrouped with parent ID grouping.\n *\n * @deprecated Use MessagePrimitive.Unstable_PartsGrouped instead for more flexibility\n */\nexport const MessagePrimitiveUnstable_PartsGroupedByParentId: FC<\n Omit<MessagePrimitiveUnstable_PartsGrouped.Props, \"groupingFunction\">\n> = ({ components, ...props }) => {\n return (\n <MessagePrimitiveUnstable_PartsGrouped\n {...props}\n components={components}\n groupingFunction={groupMessagePartsByParentId}\n />\n );\n};\n\nMessagePrimitiveUnstable_PartsGroupedByParentId.displayName =\n \"MessagePrimitive.Unstable_PartsGroupedByParentId\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessagePartsGrouped.js","names":["c","_c","ComponentType","FC","memo","PropsWithChildren","useMemo","useAuiState","useAui","PartByIndexProvider","TextMessagePartProvider","MessagePartPrimitiveText","MessagePartPrimitiveImage","Unstable_AudioMessagePartComponent","DataMessagePartComponent","DataMessagePartProps","EmptyMessagePartComponent","TextMessagePartComponent","ImageMessagePartComponent","SourceMessagePartComponent","ToolCallMessagePartComponent","ToolCallMessagePartProps","FileMessagePartComponent","ReasoningMessagePartComponent","MessagePartPrimitiveInProgress","MessagePartStatus","getMessagePartKeys","MessagePartGroup","groupKey","indices","GroupingFunction","parts","groupMessagePartsByParentId","groupMap","Map","i","length","part","parentId","groupId","get","push","set","groups","undefined","useMessagePartsGrouped","groupingFunction","$","_temp","t0","bb0","t1","Symbol","for","t2","partKeys","MessagePrimitiveUnstable_PartsGrouped","Props","components","Empty","Text","Reasoning","Source","Image","File","Unstable_Audio","data","by_name","Record","Fallback","tools","Override","Group","ToolUIDisplay","props","toolName","s","toolUIs","render","Render","DataUIDisplay","name","named","dataRenderers","renderers","fallbacks","defaultComponents","whiteSpace","fontFamily","children","MessagePartComponentProps","MessagePartComponent","t3","t4","t5","t6","t7","t8","t9","Audio","t10","aui","_temp2","type","addResult","addToolResult","resume","resumeToolCall","respondToApproval","respondToToolApproval","unstable_recordInteraction","t11","t12","Object","hasOwn","Tool","t13","status","Error","Data","console","warn","MessagePartProps","partIndex","MessagePartImpl","MessagePart","prev","next","EmptyPartFallback","component","Component","COMPLETE_STATUS","freeze","EmptyPartsImpl","_temp3","EmptyParts","contentLength","_temp4","messageGroups","group","groupIndex","GroupComponent","identity","JSON","stringify","includes","map","partsElements","displayName","MessagePrimitiveUnstable_PartsGroupedByParentId","Omit","message","_c"],"sources":["../../../src/primitives/message/MessagePartsGrouped.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentType,\n type FC,\n memo,\n type PropsWithChildren,\n useMemo,\n} from \"react\";\nimport { useAuiState, useAui } from \"@assistant-ui/store\";\nimport { PartByIndexProvider } from \"../../context/providers/PartByIndexProvider\";\nimport { TextMessagePartProvider } from \"../../context/providers/TextMessagePartProvider\";\nimport { MessagePartPrimitiveText } from \"../messagePart/MessagePartText\";\nimport { MessagePartPrimitiveImage } from \"../messagePart/MessagePartImage\";\nimport type {\n Unstable_AudioMessagePartComponent,\n DataMessagePartComponent,\n DataMessagePartProps,\n EmptyMessagePartComponent,\n TextMessagePartComponent,\n ImageMessagePartComponent,\n SourceMessagePartComponent,\n ToolCallMessagePartComponent,\n ToolCallMessagePartProps,\n FileMessagePartComponent,\n ReasoningMessagePartComponent,\n} from \"@assistant-ui/core/react\";\nimport { MessagePartPrimitiveInProgress } from \"../messagePart/MessagePartInProgress\";\nimport type { MessagePartStatus } from \"@assistant-ui/core\";\nimport { getMessagePartKeys } from \"@assistant-ui/core/internal\";\n\ntype MessagePartGroup = {\n groupKey: string | undefined;\n indices: number[];\n};\n\nexport type GroupingFunction = (parts: readonly any[]) => MessagePartGroup[];\n\n/**\n * Groups message parts by their parent ID.\n * Parts without a parent ID appear in their chronological position as individual groups.\n * Parts with the same parent ID are grouped together at the position of their first occurrence.\n */\nconst groupMessagePartsByParentId: GroupingFunction = (\n parts: readonly any[],\n): MessagePartGroup[] => {\n // Map maintains insertion order, so groups appear in order of first occurrence\n const groupMap = new Map<string | number, number[]>();\n\n // Process each part in order\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const parentId = part?.parentId as string | undefined;\n\n // For parts without parentId, assign a unique group ID to maintain their position\n const groupId = parentId ?? i;\n\n // Get or create the indices array for this group\n const indices = groupMap.get(groupId) ?? [];\n indices.push(i);\n groupMap.set(groupId, indices);\n }\n\n // Convert map to array of groups\n const groups: MessagePartGroup[] = [];\n for (const [groupId, indices] of groupMap) {\n // Extract parentId (undefined for ungrouped parts)\n const groupKey = typeof groupId === \"string\" ? groupId : undefined;\n groups.push({ groupKey, indices });\n }\n\n return groups;\n};\n\nconst useMessagePartsGrouped = (\n groupingFunction: GroupingFunction,\n): { groups: MessagePartGroup[]; partKeys: string[] } => {\n const parts = useAuiState((s) => s.message.parts);\n\n const groups = useMemo(() => {\n if (parts.length === 0) {\n return [];\n }\n return groupingFunction(parts);\n }, [parts, groupingFunction]);\n return { groups, partKeys: getMessagePartKeys(parts) };\n};\n\nexport namespace MessagePrimitiveUnstable_PartsGrouped {\n export type Props = {\n /**\n * Function that takes an array of message parts and returns an array of groups.\n * Each group contains a key (for identification) and an array of indices.\n *\n * @example\n * ```tsx\n * // Group by parent ID (default behavior)\n * groupingFunction={(parts) => {\n * const groups = new Map<string | number, number[]>();\n * parts.forEach((part, i) => {\n * const key = part.parentId ?? i;\n * const indices = groups.get(key) ?? [];\n * indices.push(i);\n * groups.set(key, indices);\n * });\n * return Array.from(groups.entries()).map(([key, indices]) => ({\n * groupKey: typeof key === \"string\" ? key : undefined,\n * indices\n * }));\n * }}\n * ```\n *\n * @example\n * ```tsx\n * // Group by tool name\n * import { groupMessagePartsByToolName } from \"@assistant-ui/react\";\n *\n * <MessagePrimitive.Unstable_PartsGrouped\n * groupingFunction={groupMessagePartsByToolName}\n * components={{\n * Group: ({ key, indices, children }) => {\n * if (!key) return <>{children}</>;\n * return (\n * <div className=\"tool-group\">\n * <h4>Tool: {key}</h4>\n * {children}\n * </div>\n * );\n * }\n * }}\n * />\n * ```\n */\n groupingFunction: GroupingFunction;\n\n /**\n * Component configuration for rendering different types of message content.\n *\n * You can provide custom components for each content type (text, image, file, etc.)\n * and configure tool rendering behavior. If not provided, default components will be used.\n */\n components:\n | {\n /** Component for rendering empty messages */\n Empty?: EmptyMessagePartComponent | undefined;\n /** Component for rendering text content */\n Text?: TextMessagePartComponent | undefined;\n /** Component for rendering reasoning content (typically hidden) */\n Reasoning?: ReasoningMessagePartComponent | undefined;\n /** Component for rendering source content */\n Source?: SourceMessagePartComponent | undefined;\n /** Component for rendering image content */\n Image?: ImageMessagePartComponent | undefined;\n /** Component for rendering file content */\n File?: FileMessagePartComponent | undefined;\n /**\n * Component for rendering audio content.\n *\n * @deprecated Render audio through the `File` slot instead, branching\n * on an `audio/*` mime type.\n */\n Unstable_Audio?: Unstable_AudioMessagePartComponent | undefined;\n /** Configuration for data part rendering */\n data?:\n | {\n /** Map data event names to specific components */\n by_name?:\n | Record<string, DataMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unmatched data events */\n Fallback?: DataMessagePartComponent | undefined;\n }\n | undefined;\n /** Configuration for tool call rendering */\n tools?:\n | {\n /** Map of tool names to their specific components */\n by_name?:\n | Record<string, ToolCallMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unregistered tools */\n Fallback?: ComponentType<ToolCallMessagePartProps> | undefined;\n }\n | {\n /** Override component that handles all tool calls */\n Override: ComponentType<ToolCallMessagePartProps>;\n }\n | undefined;\n\n /**\n * Component for rendering grouped message parts.\n *\n * When provided, this component will automatically wrap message parts that share\n * the same group key as determined by the groupingFunction.\n *\n * The component receives:\n * - `groupKey`: The group key (or undefined for ungrouped parts)\n * - `indices`: Array of indices for the parts in this group\n * - `children`: The rendered message part components\n *\n * @example\n * ```tsx\n * // Collapsible group\n * Group: ({ groupKey, indices, children }) => {\n * if (!groupKey) return <>{children}</>;\n * return (\n * <details className=\"message-group\">\n * <summary>\n * Group {groupKey} ({indices.length} parts)\n * </summary>\n * <div className=\"group-content\">\n * {children}\n * </div>\n * </details>\n * );\n * }\n * ```\n *\n * @param groupKey - The group key (undefined for ungrouped parts)\n * @param indices - Array of indices for the parts in this group\n * @param children - Rendered message part components to display within the group\n */\n Group?: ComponentType<\n PropsWithChildren<{\n groupKey: string | undefined;\n indices: number[];\n }>\n >;\n }\n | undefined;\n };\n}\n\nconst ToolUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: ToolCallMessagePartComponent | undefined;\n} & ToolCallMessagePartProps) => {\n const Render = useAuiState(\n (s) => s.tools.toolUIs[props.toolName]?.[0]?.render ?? Fallback,\n );\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst DataUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: DataMessagePartComponent | undefined;\n} & DataMessagePartProps) => {\n const Render = useAuiState((s) => {\n const named = s.dataRenderers.renderers[props.name]?.[0];\n if (named) return named;\n return s.dataRenderers.fallbacks[0] ?? Fallback;\n });\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst defaultComponents = {\n Text: () => (\n <p style={{ whiteSpace: \"pre-line\" }}>\n <MessagePartPrimitiveText />\n <MessagePartPrimitiveInProgress>\n <span style={{ fontFamily: \"revert\" }}>{\" \\u25CF\"}</span>\n </MessagePartPrimitiveInProgress>\n </p>\n ),\n Reasoning: () => null,\n Source: () => null,\n Image: () => <MessagePartPrimitiveImage />,\n File: () => null,\n Unstable_Audio: () => null,\n Group: ({ children }) => children,\n} satisfies MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n\ntype MessagePartComponentProps = {\n components: MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n};\n\nconst MessagePartComponent: FC<MessagePartComponentProps> = ({\n components: {\n Text = defaultComponents.Text,\n Reasoning = defaultComponents.Reasoning,\n Image = defaultComponents.Image,\n Source = defaultComponents.Source,\n File = defaultComponents.File,\n Unstable_Audio: Audio = defaultComponents.Unstable_Audio,\n tools = {},\n data,\n } = {},\n}) => {\n const aui = useAui();\n const part = useAuiState((s) => s.part);\n\n const type = part.type;\n if (type === \"tool-call\") {\n const addResult = aui.part.addToolResult;\n const resume = aui.part.resumeToolCall;\n const respondToApproval = aui.part.respondToToolApproval;\n const unstable_recordInteraction = aui.part.unstable_recordInteraction;\n if (\"Override\" in tools)\n return (\n <tools.Override\n {...part}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n {...(unstable_recordInteraction && { unstable_recordInteraction })}\n />\n );\n const Tool =\n (tools.by_name && Object.hasOwn(tools.by_name, part.toolName)\n ? tools.by_name[part.toolName]\n : undefined) ?? tools.Fallback;\n return (\n <ToolUIDisplay\n {...part}\n Fallback={Tool}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n {...(unstable_recordInteraction && { unstable_recordInteraction })}\n />\n );\n }\n\n if (part.status?.type === \"requires-action\")\n throw new Error(\"Encountered unexpected requires-action status\");\n\n switch (type) {\n case \"text\":\n return <Text {...part} />;\n\n case \"reasoning\":\n return <Reasoning {...part} />;\n\n case \"source\":\n return <Source {...part} />;\n\n case \"image\":\n return <Image {...part} />;\n\n case \"file\":\n return <File {...part} />;\n\n case \"audio\":\n return <Audio {...part} />;\n\n case \"data\": {\n const Data =\n (data?.by_name && Object.hasOwn(data.by_name, part.name)\n ? data.by_name[part.name]\n : undefined) ?? data?.Fallback;\n return <DataUIDisplay {...part} Fallback={Data} />;\n }\n\n default:\n console.warn(`Unknown message part type: ${type}`);\n return null;\n }\n};\n\ntype MessagePartProps = {\n partIndex: number;\n components: MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n};\n\nconst MessagePartImpl: FC<MessagePartProps> = ({ partIndex, components }) => {\n return (\n <PartByIndexProvider index={partIndex}>\n <MessagePartComponent components={components} />\n </PartByIndexProvider>\n );\n};\n\nconst MessagePart = memo(\n MessagePartImpl,\n (prev, next) =>\n prev.partIndex === next.partIndex &&\n prev.components?.Text === next.components?.Text &&\n prev.components?.Reasoning === next.components?.Reasoning &&\n prev.components?.Source === next.components?.Source &&\n prev.components?.Image === next.components?.Image &&\n prev.components?.File === next.components?.File &&\n prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&\n prev.components?.tools === next.components?.tools &&\n prev.components?.data === next.components?.data &&\n prev.components?.Group === next.components?.Group,\n);\n\nconst EmptyPartFallback: FC<{\n status: MessagePartStatus;\n component: TextMessagePartComponent;\n}> = ({ status, component: Component }) => {\n return (\n <TextMessagePartProvider text=\"\" isRunning={status.type === \"running\"}>\n <Component type=\"text\" text=\"\" status={status} />\n </TextMessagePartProvider>\n );\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst EmptyPartsImpl: FC<MessagePartComponentProps> = ({ components }) => {\n const status = useAuiState(\n (s) => (s.message.status ?? COMPLETE_STATUS) as MessagePartStatus,\n );\n\n if (components?.Empty) return <components.Empty status={status} />;\n\n return (\n <EmptyPartFallback\n status={status}\n component={components?.Text ?? defaultComponents.Text}\n />\n );\n};\n\nconst EmptyParts = memo(\n EmptyPartsImpl,\n (prev, next) =>\n prev.components?.Empty === next.components?.Empty &&\n prev.components?.Text === next.components?.Text,\n);\n\n/**\n * Renders the parts of a message grouped by a custom grouping function.\n *\n * This component allows you to group message parts based on any criteria you define.\n * The grouping function receives all message parts and returns an array of groups,\n * where each group has a key and an array of part indices.\n *\n * @deprecated Prefer `<MessagePrimitive.GroupedParts>` for adjacent\n * grouping — it dispatches all rendering through one `switch (part.type)`\n * and supports nested group paths. Keep this primitive only for\n * non-adjacent clustering (e.g., gathering parts with the same parent-id\n * across the message).\n *\n * @example\n * ```tsx\n * // Group by parent ID (default behavior)\n * <MessagePrimitive.Unstable_PartsGrouped\n * components={{\n * Text: ({ text }) => <p className=\"message-text\">{text}</p>,\n * Image: ({ image }) => <img src={image} alt=\"Message image\" />,\n * Group: ({ groupKey, indices, children }) => {\n * if (!groupKey) return <>{children}</>;\n * return (\n * <div className=\"parent-group border rounded p-4\">\n * <h4>Parent ID: {groupKey}</h4>\n * {children}\n * </div>\n * );\n * }\n * }}\n * />\n * ```\n */\nexport const MessagePrimitiveUnstable_PartsGrouped: FC<\n MessagePrimitiveUnstable_PartsGrouped.Props\n> = ({ groupingFunction, components }) => {\n const contentLength = useAuiState((s) => s.message.parts.length);\n const { groups: messageGroups, partKeys } =\n useMessagePartsGrouped(groupingFunction);\n\n const partsElements = useMemo(() => {\n if (contentLength === 0) {\n return <EmptyParts components={components} />;\n }\n\n return messageGroups.map((group, groupIndex) => {\n const GroupComponent = components?.Group ?? defaultComponents.Group;\n const identity = partKeys[group.indices[0]!];\n\n return (\n <GroupComponent\n key={JSON.stringify([\n \"group\",\n group.groupKey ?? null,\n identity?.includes(\":\") ? `id:${identity}` : groupIndex,\n ])}\n groupKey={group.groupKey}\n indices={group.indices}\n >\n {group.indices.map((partIndex) => (\n <MessagePart\n key={partKeys[partIndex]}\n partIndex={partIndex}\n components={components}\n />\n ))}\n </GroupComponent>\n );\n });\n }, [messageGroups, components, contentLength, partKeys]);\n\n return <>{partsElements}</>;\n};\n\nMessagePrimitiveUnstable_PartsGrouped.displayName =\n \"MessagePrimitive.Unstable_PartsGrouped\";\n\n/**\n * Renders the parts of a message grouped by their parent ID.\n * This is a convenience wrapper around Unstable_PartsGrouped with parent ID grouping.\n *\n * @deprecated Use MessagePrimitive.Unstable_PartsGrouped instead for more flexibility\n */\nexport const MessagePrimitiveUnstable_PartsGroupedByParentId: FC<\n Omit<MessagePrimitiveUnstable_PartsGrouped.Props, \"groupingFunction\">\n> = ({ components, ...props }) => {\n return (\n <MessagePrimitiveUnstable_PartsGrouped\n {...props}\n components={components}\n groupingFunction={groupMessagePartsByParentId}\n />\n );\n};\n\nMessagePrimitiveUnstable_PartsGroupedByParentId.displayName =\n \"MessagePrimitive.Unstable_PartsGroupedByParentId\";\n"],"mappings":"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"}
|